commit 21/01/2026
This commit is contained in:
@@ -2,6 +2,7 @@ package Web
|
||||
|
||||
import config
|
||||
import io.javalin.Javalin
|
||||
import io.javalin.apibuilder.ApiBuilder.before
|
||||
import io.javalin.apibuilder.ApiBuilder.get
|
||||
import io.javalin.apibuilder.ApiBuilder.path
|
||||
import io.javalin.apibuilder.ApiBuilder.post
|
||||
@@ -14,49 +15,99 @@ import org.tinylog.Logger
|
||||
*/
|
||||
class WebUI{
|
||||
private var app : Javalin = Javalin.create { cfg ->
|
||||
cfg.staticFiles.add("/html")
|
||||
cfg.staticFiles.add("/")
|
||||
cfg.router.apiBuilder {
|
||||
path("/"){
|
||||
get {
|
||||
if (config.WebUsername==it.cookie("username")){
|
||||
Logger.info{"${it.ip()} logged in as ${it.cookie("username")}, forward to home.html"}
|
||||
it.redirect("home.html")
|
||||
} else{
|
||||
Logger.info{"${it.ip()} have not logged in, forward to login.html"}
|
||||
it.redirect("login.html")
|
||||
}
|
||||
}
|
||||
}
|
||||
path("login"){
|
||||
path("login.html"){
|
||||
post{
|
||||
val username = it.formParam("username")
|
||||
val password = it.formParam("password")
|
||||
if (config.WebUsername==username && config.WebPassword==password) {
|
||||
Logger.info { "${it.ip()} login successful for user $username" }
|
||||
it.cookie("username", username)
|
||||
it.redirect("home.html")
|
||||
} else {
|
||||
Logger.info { "${it.ip()} Login failed for user $username" }
|
||||
it.redirect("/login.html?error=1")
|
||||
}
|
||||
}
|
||||
}
|
||||
path("logout"){
|
||||
get {
|
||||
Logger.info{"${it.ip()} User ${it.cookie("username")} logged out"}
|
||||
it.removeCookie("username")
|
||||
it.redirect("login.html")
|
||||
}
|
||||
}
|
||||
path("login.html"){
|
||||
get {
|
||||
it.removeCookie("username")
|
||||
|
||||
get("getSetting"){
|
||||
val fd = farmData(config.ActiveMQ_BrokerURL, config.ActiveMQ_Username, config.ActiveMQ_Password, config.ActiveMQ_QueueName)
|
||||
val aas1 = aasData(config.MySQL_AAS1, config.MySQL_AAS1_Username, config.MySQL_AAS1_Password)
|
||||
val aas2 = aasData(config.MySQL_AAS2, config.MySQL_AAS2_Username, config.MySQL_AAS2_Password)
|
||||
val aas3 = aasData(config.MySQL_AAS3, config.MySQL_AAS3_Username, config.MySQL_AAS3_Password)
|
||||
val setting = getSetting(fd, aas1, aas2, aas3)
|
||||
it.json(setting)
|
||||
}
|
||||
post("saveFARM"){
|
||||
|
||||
try{
|
||||
val fd = it.bodyAsClass(saveFARM::class.java)
|
||||
config.ActiveMQ_BrokerURL = fd.farm.url
|
||||
config.ActiveMQ_Username = fd.farm.username
|
||||
config.ActiveMQ_Password = fd.farm.password
|
||||
config.ActiveMQ_QueueName = fd.farm.queue
|
||||
config.Save()
|
||||
it.json(webReply("success"))
|
||||
} catch (e: Exception){
|
||||
val str = "Error saving FARM settings: ${e.message}"
|
||||
Logger.error { str }
|
||||
it.status(500).json(webReply(str))
|
||||
}
|
||||
}
|
||||
path("home.html"){
|
||||
post("saveAAS"){
|
||||
|
||||
get {
|
||||
if (config.WebUsername!=it.cookie("username")){
|
||||
it.redirect("login.html")
|
||||
return@get
|
||||
}
|
||||
try {
|
||||
val ax = it.bodyAsClass(saveAAS::class.java)
|
||||
config.MySQL_AAS1 = ax.aas1.url
|
||||
config.MySQL_AAS1_Username = ax.aas1.username
|
||||
config.MySQL_AAS1_Password = ax.aas1.password
|
||||
config.MySQL_AAS2 = ax.aas2.url
|
||||
config.MySQL_AAS2_Username = ax.aas2.username
|
||||
config.MySQL_AAS2_Password = ax.aas2.password
|
||||
config.MySQL_AAS3 = ax.aas3.url
|
||||
config.MySQL_AAS3_Username = ax.aas3.username
|
||||
config.MySQL_AAS3_Password = ax.aas3.password
|
||||
config.Save()
|
||||
it.json(webReply("success"))
|
||||
|
||||
} catch (e: Exception){
|
||||
val str = "Error saving AAS settings: ${e.message}"
|
||||
Logger.error { str }
|
||||
it.status(500).json(webReply(str))
|
||||
}
|
||||
}
|
||||
|
||||
path("home.html"){
|
||||
before{
|
||||
if (config.WebUsername!=it.cookie("username")){
|
||||
Logger.info {"${it.ip()} Have not logged in, forward to login.html"}
|
||||
it.redirect("login.html")
|
||||
return@before
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
ws("/ws"){ ws ->
|
||||
ws.onConnect { wsconnectcontext -> Logger.info { "WebSocket connected: ${wsconnectcontext.sessionId()}"; wsconnectcontext.enableAutomaticPings() } }
|
||||
ws.onClose { wsclosecontext -> Logger.info { "WebSocket closed: ${wsclosecontext.sessionId()}" } }
|
||||
@@ -68,27 +119,26 @@ class WebUI{
|
||||
|
||||
}
|
||||
path("log.html"){
|
||||
get {
|
||||
before{
|
||||
if (config.WebUsername!=it.cookie("username")){
|
||||
Logger.info{"${it.ip()} Have not logged in, forward to login.html"}
|
||||
it.redirect("login.html")
|
||||
return@get
|
||||
return@before
|
||||
}
|
||||
val logdate = it.queryParam("logdate")
|
||||
if (logdate.isNullOrEmpty()) return@get
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
path("setting.html"){
|
||||
get {
|
||||
before{
|
||||
if (config.WebUsername!=it.cookie("username")){
|
||||
Logger.info{"${it.ip()} Have not logged in, forward to login.html"}
|
||||
it.redirect("login.html")
|
||||
return@get
|
||||
return@before
|
||||
}
|
||||
// TODO send config values in JSON format
|
||||
}
|
||||
post {
|
||||
// TODO save config values from form parameters
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user