🔥 Removes useless crap

This commit is contained in:
Daniel Svitan 2025-05-11 11:01:48 +02:00
parent 1d4db39b2a
commit f10ce92627
10 changed files with 34 additions and 170 deletions

2
backend/.gitignore vendored
View File

@ -34,3 +34,5 @@ out/
### VS Code ### ### VS Code ###
.vscode/ .vscode/
**/src/main/resources/.env*

View File

@ -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")
} }

View File

@ -1,28 +1,11 @@
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 {
route("/") {
install(RateLimiting) { install(RateLimiting) {
rateLimiter { rateLimiter {
type = TokenBucket::class type = TokenBucket::class
@ -31,5 +14,3 @@ fun Application.configureAdministration() {
} }
} }
} }
}
}

View File

@ -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)
} }

View File

@ -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(

View File

@ -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) {

View File

@ -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) {

View File

@ -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!")
}
}
} }

View File

@ -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}")
}
}
} }
} }

View File

@ -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"))
}
}
}