package nl.astraeus.vst.chip import com.zaxxer.hikari.HikariConfig import io.undertow.Undertow import io.undertow.UndertowOptions import io.undertow.server.session.InMemorySessionManager import io.undertow.server.session.SessionAttachmentHandler import io.undertow.server.session.SessionCookieConfig import nl.astraeus.vst.chip.db.Database import nl.astraeus.vst.chip.logger.LogLevel import nl.astraeus.vst.chip.logger.Logger import nl.astraeus.vst.chip.web.RequestHandler fun main() { Logger.level = LogLevel.DEBUG Thread.setDefaultUncaughtExceptionHandler { _, e -> e.printStackTrace() } Class.forName("nl.astraeus.jdbc.Driver") Database.initialize(HikariConfig().apply { driverClassName = "nl.astraeus.jdbc.Driver" jdbcUrl = "jdbc:stat:webServerPort=6002:jdbc:sqlite:data/chip.db" username = "sa" password = "" maximumPoolSize = 25 isAutoCommit = false validate() }) val sessionHandler = SessionAttachmentHandler( InMemorySessionManager("vst-session-manager"), SessionCookieConfig() ) sessionHandler.setNext(RequestHandler) val server = Undertow.builder() .addHttpListener(Settings.port, "localhost") .setIoThreads(4) .setHandler(sessionHandler) .setServerOption(UndertowOptions.SHUTDOWN_TIMEOUT, 1000) .build() println("Starting server at port ${Settings.port}...") server?.start() }