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