50 lines
1.3 KiB
Kotlin
50 lines
1.3 KiB
Kotlin
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()
|
|
}
|