🔥 Removes useless crap
This commit is contained in:
parent
1d4db39b2a
commit
f10ce92627
2
backend/.gitignore
vendored
2
backend/.gitignore
vendored
@ -34,3 +34,5 @@ out/
|
|||||||
|
|
||||||
### VS Code ###
|
### VS Code ###
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
|
**/src/main/resources/.env*
|
||||||
|
@ -38,6 +38,7 @@ dependencies {
|
|||||||
implementation("io.ktor:ktor-server-compression")
|
implementation("io.ktor:ktor-server-compression")
|
||||||
implementation("io.ktor:ktor-server-netty")
|
implementation("io.ktor:ktor-server-netty")
|
||||||
implementation("ch.qos.logback:logback-classic:$logback_version")
|
implementation("ch.qos.logback:logback-classic:$logback_version")
|
||||||
|
implementation("io.github.cdimascio:dotenv-kotlin:6.5.1")
|
||||||
testImplementation("io.ktor:ktor-server-test-host")
|
testImplementation("io.ktor:ktor-server-test-host")
|
||||||
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
|
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
|
||||||
}
|
}
|
||||||
|
@ -1,35 +1,16 @@
|
|||||||
package svitan.dev
|
package svitan.dev
|
||||||
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.*
|
import io.github.flaxoos.ktor.server.plugins.ratelimiter.RateLimiting
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.*
|
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.TokenBucket
|
||||||
import io.ktor.http.*
|
|
||||||
import io.ktor.serialization.kotlinx.json.*
|
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.auth.*
|
|
||||||
import io.ktor.server.plugins.calllogging.*
|
|
||||||
import io.ktor.server.plugins.compression.*
|
|
||||||
import io.ktor.server.plugins.contentnegotiation.*
|
|
||||||
import io.ktor.server.plugins.cors.routing.*
|
|
||||||
import io.ktor.server.plugins.requestvalidation.RequestValidation
|
|
||||||
import io.ktor.server.plugins.requestvalidation.ValidationResult
|
|
||||||
import io.ktor.server.plugins.statuspages.*
|
|
||||||
import io.ktor.server.request.*
|
|
||||||
import io.ktor.server.response.*
|
|
||||||
import io.ktor.server.routing.*
|
|
||||||
import kotlin.time.Duration.Companion.seconds
|
import kotlin.time.Duration.Companion.seconds
|
||||||
import org.jetbrains.exposed.sql.*
|
|
||||||
import org.slf4j.event.*
|
|
||||||
|
|
||||||
fun Application.configureAdministration() {
|
fun Application.configureAdministration() {
|
||||||
routing {
|
install(RateLimiting) {
|
||||||
route("/") {
|
rateLimiter {
|
||||||
install(RateLimiting) {
|
type = TokenBucket::class
|
||||||
rateLimiter {
|
capacity = 100
|
||||||
type = TokenBucket::class
|
rate = 10.seconds
|
||||||
capacity = 100
|
|
||||||
rate = 10.seconds
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,26 @@
|
|||||||
package svitan.dev
|
package svitan.dev
|
||||||
|
|
||||||
|
import io.github.cdimascio.dotenv.dotenv
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.engine.*
|
import io.ktor.server.engine.*
|
||||||
import io.ktor.server.netty.*
|
import io.ktor.server.netty.*
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
embeddedServer(Netty, port = 8080, host = "0.0.0.0", module = Application::module)
|
embeddedServer(
|
||||||
.start(wait = true)
|
Netty,
|
||||||
|
port = 8080,
|
||||||
|
host = "0.0.0.0",
|
||||||
|
module = Application::module
|
||||||
|
).start(wait = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Application.module() {
|
fun Application.module() {
|
||||||
|
val dotenv = dotenv()
|
||||||
|
|
||||||
configureHTTP()
|
configureHTTP()
|
||||||
configureSecurity()
|
|
||||||
configureMonitoring()
|
|
||||||
configureSerialization()
|
|
||||||
configureDatabases()
|
|
||||||
configureAdministration()
|
|
||||||
configureRouting()
|
configureRouting()
|
||||||
|
configureDatabases()
|
||||||
|
configureMonitoring()
|
||||||
|
configureAdministration()
|
||||||
|
configureSecurity(dotenv)
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,11 @@
|
|||||||
package svitan.dev
|
package svitan.dev
|
||||||
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.*
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.*
|
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
import io.ktor.serialization.kotlinx.json.*
|
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.auth.*
|
|
||||||
import io.ktor.server.plugins.calllogging.*
|
|
||||||
import io.ktor.server.plugins.compression.*
|
|
||||||
import io.ktor.server.plugins.contentnegotiation.*
|
|
||||||
import io.ktor.server.plugins.cors.routing.*
|
|
||||||
import io.ktor.server.plugins.requestvalidation.RequestValidation
|
|
||||||
import io.ktor.server.plugins.requestvalidation.ValidationResult
|
|
||||||
import io.ktor.server.plugins.statuspages.*
|
|
||||||
import io.ktor.server.request.*
|
import io.ktor.server.request.*
|
||||||
import io.ktor.server.response.*
|
import io.ktor.server.response.*
|
||||||
import io.ktor.server.routing.*
|
import io.ktor.server.routing.*
|
||||||
import kotlin.time.Duration.Companion.seconds
|
import org.jetbrains.exposed.sql.Database
|
||||||
import org.jetbrains.exposed.sql.*
|
|
||||||
import org.slf4j.event.*
|
|
||||||
|
|
||||||
fun Application.configureDatabases() {
|
fun Application.configureDatabases() {
|
||||||
val database = Database.connect(
|
val database = Database.connect(
|
||||||
|
@ -1,24 +1,9 @@
|
|||||||
package svitan.dev
|
package svitan.dev
|
||||||
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.*
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.*
|
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
import io.ktor.serialization.kotlinx.json.*
|
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.auth.*
|
|
||||||
import io.ktor.server.plugins.calllogging.*
|
|
||||||
import io.ktor.server.plugins.compression.*
|
import io.ktor.server.plugins.compression.*
|
||||||
import io.ktor.server.plugins.contentnegotiation.*
|
|
||||||
import io.ktor.server.plugins.cors.routing.*
|
import io.ktor.server.plugins.cors.routing.*
|
||||||
import io.ktor.server.plugins.requestvalidation.RequestValidation
|
|
||||||
import io.ktor.server.plugins.requestvalidation.ValidationResult
|
|
||||||
import io.ktor.server.plugins.statuspages.*
|
|
||||||
import io.ktor.server.request.*
|
|
||||||
import io.ktor.server.response.*
|
|
||||||
import io.ktor.server.routing.*
|
|
||||||
import kotlin.time.Duration.Companion.seconds
|
|
||||||
import org.jetbrains.exposed.sql.*
|
|
||||||
import org.slf4j.event.*
|
|
||||||
|
|
||||||
fun Application.configureHTTP() {
|
fun Application.configureHTTP() {
|
||||||
install(CORS) {
|
install(CORS) {
|
||||||
|
@ -1,24 +1,9 @@
|
|||||||
package svitan.dev
|
package svitan.dev
|
||||||
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.*
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.*
|
|
||||||
import io.ktor.http.*
|
|
||||||
import io.ktor.serialization.kotlinx.json.*
|
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.auth.*
|
|
||||||
import io.ktor.server.plugins.calllogging.*
|
import io.ktor.server.plugins.calllogging.*
|
||||||
import io.ktor.server.plugins.compression.*
|
|
||||||
import io.ktor.server.plugins.contentnegotiation.*
|
|
||||||
import io.ktor.server.plugins.cors.routing.*
|
|
||||||
import io.ktor.server.plugins.requestvalidation.RequestValidation
|
|
||||||
import io.ktor.server.plugins.requestvalidation.ValidationResult
|
|
||||||
import io.ktor.server.plugins.statuspages.*
|
|
||||||
import io.ktor.server.request.*
|
import io.ktor.server.request.*
|
||||||
import io.ktor.server.response.*
|
import org.slf4j.event.Level
|
||||||
import io.ktor.server.routing.*
|
|
||||||
import kotlin.time.Duration.Companion.seconds
|
|
||||||
import org.jetbrains.exposed.sql.*
|
|
||||||
import org.slf4j.event.*
|
|
||||||
|
|
||||||
fun Application.configureMonitoring() {
|
fun Application.configureMonitoring() {
|
||||||
install(CallLogging) {
|
install(CallLogging) {
|
||||||
|
@ -1,24 +1,10 @@
|
|||||||
package svitan.dev
|
package svitan.dev
|
||||||
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.*
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.*
|
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
import io.ktor.serialization.kotlinx.json.*
|
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.auth.*
|
import io.ktor.server.plugins.requestvalidation.*
|
||||||
import io.ktor.server.plugins.calllogging.*
|
|
||||||
import io.ktor.server.plugins.compression.*
|
|
||||||
import io.ktor.server.plugins.contentnegotiation.*
|
|
||||||
import io.ktor.server.plugins.cors.routing.*
|
|
||||||
import io.ktor.server.plugins.requestvalidation.RequestValidation
|
|
||||||
import io.ktor.server.plugins.requestvalidation.ValidationResult
|
|
||||||
import io.ktor.server.plugins.statuspages.*
|
import io.ktor.server.plugins.statuspages.*
|
||||||
import io.ktor.server.request.*
|
|
||||||
import io.ktor.server.response.*
|
import io.ktor.server.response.*
|
||||||
import io.ktor.server.routing.*
|
|
||||||
import kotlin.time.Duration.Companion.seconds
|
|
||||||
import org.jetbrains.exposed.sql.*
|
|
||||||
import org.slf4j.event.*
|
|
||||||
|
|
||||||
fun Application.configureRouting() {
|
fun Application.configureRouting() {
|
||||||
install(RequestValidation) {
|
install(RequestValidation) {
|
||||||
@ -28,14 +14,10 @@ fun Application.configureRouting() {
|
|||||||
else ValidationResult.Valid
|
else ValidationResult.Valid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
install(StatusPages) {
|
install(StatusPages) {
|
||||||
exception<Throwable> { call, cause ->
|
exception<Throwable> { call, cause ->
|
||||||
call.respondText(text = "500: $cause", status = HttpStatusCode.InternalServerError)
|
call.respondText(text = "500: $cause", status = HttpStatusCode.InternalServerError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
routing {
|
|
||||||
get("/") {
|
|
||||||
call.respondText("Hello World!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,58 +1,22 @@
|
|||||||
package svitan.dev
|
package svitan.dev
|
||||||
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.*
|
import io.github.cdimascio.dotenv.Dotenv
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.*
|
|
||||||
import io.ktor.http.*
|
|
||||||
import io.ktor.serialization.kotlinx.json.*
|
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.auth.*
|
import io.ktor.server.auth.*
|
||||||
import io.ktor.server.plugins.calllogging.*
|
|
||||||
import io.ktor.server.plugins.compression.*
|
|
||||||
import io.ktor.server.plugins.contentnegotiation.*
|
|
||||||
import io.ktor.server.plugins.cors.routing.*
|
|
||||||
import io.ktor.server.plugins.requestvalidation.RequestValidation
|
|
||||||
import io.ktor.server.plugins.requestvalidation.ValidationResult
|
|
||||||
import io.ktor.server.plugins.statuspages.*
|
|
||||||
import io.ktor.server.request.*
|
|
||||||
import io.ktor.server.response.*
|
|
||||||
import io.ktor.server.routing.*
|
|
||||||
import kotlin.time.Duration.Companion.seconds
|
|
||||||
import org.jetbrains.exposed.sql.*
|
|
||||||
import org.slf4j.event.*
|
|
||||||
|
|
||||||
fun Application.configureSecurity() {
|
fun Application.configureSecurity(dotenv: Dotenv) {
|
||||||
|
val apiKey = dotenv["API_KEY"] ?: throw Exception("API_KEY not found")
|
||||||
|
|
||||||
authentication {
|
authentication {
|
||||||
basic(name = "myauth1") {
|
basic {
|
||||||
realm = "Ktor Server"
|
realm = "Ktor Server"
|
||||||
validate { credentials ->
|
validate { credentials ->
|
||||||
if (credentials.name == credentials.password) {
|
if (credentials.name == "admin" && credentials.password == apiKey) {
|
||||||
UserIdPrincipal(credentials.name)
|
UserIdPrincipal(credentials.name)
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
form(name = "myauth2") {
|
|
||||||
userParamName = "user"
|
|
||||||
passwordParamName = "password"
|
|
||||||
challenge {
|
|
||||||
/**/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
routing {
|
|
||||||
authenticate("myauth1") {
|
|
||||||
get("/protected/route/basic") {
|
|
||||||
val principal = call.principal<UserIdPrincipal>()!!
|
|
||||||
call.respondText("Hello ${principal.name}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
authenticate("myauth2") {
|
|
||||||
get("/protected/route/form") {
|
|
||||||
val principal = call.principal<UserIdPrincipal>()!!
|
|
||||||
call.respondText("Hello ${principal.name}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
package svitan.dev
|
|
||||||
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.*
|
|
||||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.*
|
|
||||||
import io.ktor.http.*
|
|
||||||
import io.ktor.serialization.kotlinx.json.*
|
|
||||||
import io.ktor.server.application.*
|
|
||||||
import io.ktor.server.auth.*
|
|
||||||
import io.ktor.server.plugins.calllogging.*
|
|
||||||
import io.ktor.server.plugins.compression.*
|
|
||||||
import io.ktor.server.plugins.contentnegotiation.*
|
|
||||||
import io.ktor.server.plugins.cors.routing.*
|
|
||||||
import io.ktor.server.plugins.requestvalidation.RequestValidation
|
|
||||||
import io.ktor.server.plugins.requestvalidation.ValidationResult
|
|
||||||
import io.ktor.server.plugins.statuspages.*
|
|
||||||
import io.ktor.server.request.*
|
|
||||||
import io.ktor.server.response.*
|
|
||||||
import io.ktor.server.routing.*
|
|
||||||
import kotlin.time.Duration.Companion.seconds
|
|
||||||
import org.jetbrains.exposed.sql.*
|
|
||||||
import org.slf4j.event.*
|
|
||||||
|
|
||||||
fun Application.configureSerialization() {
|
|
||||||
routing {
|
|
||||||
get("/json/kotlinx-serialization") {
|
|
||||||
call.respond(mapOf("hello" to "world"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user