Files
AILab/ktor/src/main/kotlin/ink/snowflake/server/Application.kt
T
2026-05-25 14:52:45 +08:00

84 lines
2.4 KiB
Kotlin

package ink.snowflake.server
import com.google.gson.Gson
import ink.snowflake.server.controller.User
import ink.snowflake.server.controller.chat
import ink.snowflake.server.utils.plugins.configureSockets
import ink.snowflake.server.controller.ImageAnalytics
import ink.snowflake.server.controller.Public
import ink.snowflake.server.controller.RemoteDebug
import ink.snowflake.server.controller.Traceability
import ink.snowflake.server.controller.VideoAnalytics
import ink.snowflake.server.controller.VideoAnalyticsJetson
import ink.snowflake.server.utils.AppConfig
import ink.snowflake.server.utils.OSSUtils
import ink.snowflake.server.utils.plugins.configureCORS
import ink.snowflake.server.utils.plugins.configureDatabases
import ink.snowflake.server.utils.plugins.configureSecurity
import ink.snowflake.server.utils.plugins.configureSerialization
import ink.snowflake.server.utils.plugins.configureStaticPath
import ink.snowflake.server.utils.plugins.configureStatusPages
import ink.snowflake.server.utils.plugins.configureTemplating
import io.ktor.http.CacheControl
import io.ktor.server.application.*
import io.ktor.server.tomcat.jakarta.*
//const val VIDEO_INPUT_PATH = "./tmp/"
const val VIDEO_INPUT_PATH = "C:/tmp/"
/**
* 服务器地址
* ADB 秦朗FRP地址
*/
const val SERVER_PATH_FRP = "s3.ronsunny.cn" // 171.212.101.201
/**
* 局域网IP 用于连接PostgreSQL和Radis
*/
const val LOCAL_IP = "10.10.12.101"
val gson = Gson()
fun main(args: Array<String>): Unit = EngineMain.main(args)
fun Application.module() {
// 使用 appConfig 进行配置
val appConfig = AppConfig(environment.config)
// 序列化
configureSerialization()
// Thymeleaf
configureTemplating()
// 设置-身份验证
configureSecurity(appConfig)
// 路径
configureStaticPath()
// 跨域
configureCORS()
// 设置数据库
configureDatabases(appConfig)
// OSS / MinIO
OSSUtils.init(appConfig)
// 状态拦截
configureStatusPages()
// 设置-WebSocket
configureSockets()
// 业务-用户信息相关操作
User(appConfig)
// 业务-聊天
chat()
// 业务-远程控制
RemoteDebug()
// 业务-视频分析
VideoAnalytics()
// 业务-视频分析-Jetson本地
VideoAnalyticsJetson()
// 业务-图片分析
ImageAnalytics()
Traceability(appConfig)
// 业务-公开接口
Public()
}