cowr_upgram/src/main/java/Main.kt

111 lines
4.0 KiB
Kotlin

import com.jfinal.plugin.activerecord.ActiveRecordPlugin
import com.jfinal.plugin.druid.DruidPlugin
import model.JFinalModelMenu
import model.JFinalModelUser
import model.JSONResponse
import org.slf4j.LoggerFactory
import ro.pippo.controller.ControllerApplication
import ro.pippo.core.Pippo
import ro.pippo.core.RequestResponseFactory
import ro.pippo.session.SessionManager
import ro.pippo.session.SessionRequestResponseFactory
import ro.pippo.session.cookie.CookieSessionDataStorage
import route.*
import service.Service
import util.md5
object Main {
@JvmStatic
fun main(args: Array<String>) {
// System.setProperty("user.timezone","Asia/Shanghai");
val pippo = Pippo(BasicApplication())
pippo.start()
}
}
class BasicApplication : ControllerApplication() {
private val log = LoggerFactory.getLogger(BasicApplication::class.java)
// private val druidDataSource: DruidDataSource = DruidDataSource()
override fun onInit() {
getRouter().ignorePaths("/favicon.ico")
// send files from a local folder (try a request like 'src/main/java/ro/pippo/demo/basic/BasicApplication.java')
addFileResourceRoute("/src", "src")
// register a custom ExceptionHandler
errorHandler.setExceptionHandler(ForbiddenException::class.java) { e, routeContext ->
log.info("Called custom exception handler")
routeContext.setLocal<String>("message", e.message)
errorHandler.handle(403, routeContext)
}
// register a request logger
routePreDispatchListeners.add { request, _ ->
println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
println("requestPath = " + request.path)
println("requestUri = " + request.uri)
println("requestUrl = " + request.url)
println("contextPath = " + request.contextPath)
println("applicationPath = " + request.applicationPath)
println("applicationUri = " + request.applicationUri)
println("applicationUriWithQuery = " + request.applicationUriWithQuery)
println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
}
ANY("/.*") { routeContext ->
if (routeContext.requestUri.contains("user/auth")) {
routeContext.next()
return@ANY
} else {
val token = routeContext.getSession<String?>("token")
val name = routeContext.getSession<String?>("name")
if (token != null && name != null) {
val user = Service().getUserByName(name)
if (user != null) {
if (token == md5(user.name + ":" + user.passwd)) {
routeContext.next()
return@ANY
}
}
}
}
// routeContext.status(403)
routeContext.json().send(JSONResponse(410,"",null))
}.runAsFinally()
addControllers(CtrlUser::class.java)
addControllers(CrtlGroup::class.java)
addControllers(CtrlMenu::class.java)
addControllers(CtrlPerm::class.java)
addControllers(CtrlRole::class.java)
val dp = DruidPlugin(
"jdbc:mysql://rm-wz9n28sq10rz5b0u2o.mysql.rds.aliyuncs.com:3306/sh-upgram?serverTimezone=Asia/Shanghai",
"shzhyjxy",
"Admin111")
val arp = ActiveRecordPlugin(dp)
arp.addMapping("menu", JFinalModelMenu::class.java)
arp.addMapping("user", JFinalModelUser::class.java)
dp.start()
arp.start()
PUT("/test") { context ->
context.send("ok")
}
}
override fun createRequestResponseFactory(): RequestResponseFactory {
val sessionDataStorage = CookieSessionDataStorage(pippoSettings)
val sessionManager = SessionManager(sessionDataStorage)
return SessionRequestResponseFactory(this, sessionManager)
}
}
class ForbiddenException(message: String) : RuntimeException(message)