4 changed files with 49 additions and 10 deletions
			
			
		@ -0,0 +1,8 @@
				@@ -0,0 +1,8 @@
					 | 
				
			||||
# Backend | 
				
			||||
 | 
				
			||||
This module manages all backend services, i.e.: | 
				
			||||
 | 
				
			||||
* it loads the configuration | 
				
			||||
* starts a webserver | 
				
			||||
* binds all other api modules to the webserver | 
				
			||||
* binds the web module to the webserver | 
				
			||||
@ -1,39 +1,58 @@
				@@ -1,39 +1,58 @@
					 | 
				
			||||
/* © SRSoftware 2025 */ | 
				
			||||
package de.srsoftware.umbrella.backend; | 
				
			||||
 | 
				
			||||
import static de.srsoftware.umbrella.core.Constants.UMBRELLA; | 
				
			||||
import static de.srsoftware.umbrella.core.Util.mapLogLevel; | 
				
			||||
import static java.lang.System.Logger.Level.DEBUG; | 
				
			||||
import static java.lang.System.Logger.Level.INFO; | 
				
			||||
 | 
				
			||||
import com.sun.net.httpserver.HttpServer; | 
				
			||||
import de.srsoftware.configuration.JsonConfig; | 
				
			||||
import de.srsoftware.tools.ColorLogger; | 
				
			||||
import de.srsoftware.umbrella.core.ConnectionProvider; | 
				
			||||
import de.srsoftware.umbrella.translations.Translations; | 
				
			||||
import de.srsoftware.umbrella.user.UserModule; | 
				
			||||
import de.srsoftware.umbrella.user.sqlite.SqliteDB; | 
				
			||||
import de.srsoftware.umbrella.web.WebHandler; | 
				
			||||
import org.json.JSONObject; | 
				
			||||
 | 
				
			||||
import java.io.IOException; | 
				
			||||
import java.net.InetSocketAddress; | 
				
			||||
import java.util.concurrent.Executors; | 
				
			||||
 | 
				
			||||
public class Application { | 
				
			||||
	private static final System.Logger LOG       = System.getLogger("Umbrella"); | 
				
			||||
	private static final String USER_DB          = "/home/srichter/workspace/umbrella/data/umbrella.db"; | 
				
			||||
	private static final String LOGIN_SERVICE_DB = "/home/srichter/workspace/umbrella/data/umbrella.db"; | 
				
			||||
 | 
				
			||||
	private static void configureLogging(JsonConfig jsonConfig) { | 
				
			||||
		var rootLevel = jsonConfig.get("umbrella.logging.rootLevel", "INFO"); | 
				
			||||
		ColorLogger.setRootLogLevel(mapLogLevel(rootLevel)); | 
				
			||||
 | 
				
			||||
		var loggers = jsonConfig.get("umbrella.logging.loggers").orElse(null); | 
				
			||||
		if (loggers instanceof JSONObject json){ | 
				
			||||
			json.keySet().forEach(key -> { | 
				
			||||
				var lvl = mapLogLevel(json.getString(key)); | 
				
			||||
				ColorLogger.setLogLevel(key,lvl); | 
				
			||||
			}); | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	public static void main(String[] args) throws IOException { | 
				
			||||
		ColorLogger.setRootLogLevel(DEBUG); | 
				
			||||
		LOG.log(INFO, "Starting Umbrella:"); | 
				
			||||
		var	 port              = 8080; | 
				
			||||
		var threads            = 16; | 
				
			||||
		var jsonConfig = new JsonConfig(UMBRELLA); | 
				
			||||
		configureLogging(jsonConfig); | 
				
			||||
		var	port               = jsonConfig.get("umbrella.http.port", 8080); | 
				
			||||
		var	threads            = jsonConfig.get("umbrella.threads", 16); | 
				
			||||
		var userDB             = jsonConfig.get("umbrella.database.user",          jsonConfig.file().getParent()+"/umbrella.db"); | 
				
			||||
		var loginDB            = jsonConfig.get("umbrella.database.login_services",jsonConfig.file().getParent()+"/umbrella.db"); | 
				
			||||
		var connectionProvider = new ConnectionProvider(); | 
				
			||||
		var userDb             = new SqliteDB(connectionProvider.get(USER_DB)); | 
				
			||||
		var loginServicedb     = new SqliteDB(connectionProvider.get(LOGIN_SERVICE_DB)); | 
				
			||||
		HttpServer server      = HttpServer.create(new InetSocketAddress(port), 0); | 
				
			||||
		var userDb             = new SqliteDB(connectionProvider.get(userDB)); | 
				
			||||
		var loginServicedb     = new SqliteDB(connectionProvider.get(loginDB)); | 
				
			||||
		var server             = HttpServer.create(new InetSocketAddress(port), 0); | 
				
			||||
		server.setExecutor(Executors.newFixedThreadPool(threads)); | 
				
			||||
		new WebHandler().bindPath("/").on(server); | 
				
			||||
		new UserModule(userDb,loginServicedb).bindPath("/api/user").on(server); | 
				
			||||
		new Translations().bindPath("/api/translations").on(server); | 
				
			||||
		LOG.log(INFO,"Started web server at {0}",port); | 
				
			||||
		server.start(); | 
				
			||||
		LOG.log(INFO,"Started web server at {0}",port); | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
				 
					 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue