🔥 Removes useless crap
This commit is contained in:
parent
1d4db39b2a
commit
f10ce92627
4
backend/.gitignore
vendored
4
backend/.gitignore
vendored
@ -33,4 +33,6 @@ out/
|
||||
/.nb-gradle/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
.vscode/
|
||||
|
||||
**/src/main/resources/.env*
|
||||
|
@ -38,6 +38,7 @@ dependencies {
|
||||
implementation("io.ktor:ktor-server-compression")
|
||||
implementation("io.ktor:ktor-server-netty")
|
||||
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("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
|
||||
}
|
||||
|
@ -1,35 +1,16 @@
|
||||
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.github.flaxoos.ktor.server.plugins.ratelimiter.RateLimiting
|
||||
import io.github.flaxoos.ktor.server.plugins.ratelimiter.implementations.TokenBucket
|
||||
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.configureAdministration() {
|
||||
routing {
|
||||
route("/") {
|
||||
install(RateLimiting) {
|
||||
rateLimiter {
|
||||
type = TokenBucket::class
|
||||
capacity = 100
|
||||
rate = 10.seconds
|
||||
}
|
||||
}
|
||||
install(RateLimiting) {
|
||||
rateLimiter {
|
||||
type = TokenBucket::class
|
||||
capacity = 100
|
||||
rate = 10.seconds
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +1,26 @@
|
||||
package svitan.dev
|
||||
|
||||
import io.github.cdimascio.dotenv.dotenv
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.engine.*
|
||||
import io.ktor.server.netty.*
|
||||
|
||||
fun main() {
|
||||
embeddedServer(Netty, port = 8080, host = "0.0.0.0", module = Application::module)
|
||||
.start(wait = true)
|
||||
embeddedServer(
|
||||
Netty,
|
||||
port = 8080,
|
||||
host = "0.0.0.0",
|
||||
module = Application::module
|
||||
).start(wait = true)
|
||||
}
|
||||
|
||||
fun Application.module() {
|
||||
val dotenv = dotenv()
|
||||
|
||||
configureHTTP()
|
||||
configureSecurity()
|
||||
configureMonitoring()
|
||||
configureSerialization()
|
||||
configureDatabases()
|
||||
configureAdministration()
|
||||
configureRouting()
|
||||
configureDatabases()
|
||||
configureMonitoring()
|
||||
configureAdministration()
|
||||
configureSecurity(dotenv)
|
||||
}
|
||||
|
@ -1,24 +1,11 @@
|
||||
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.*
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
|
||||
fun Application.configureDatabases() {
|
||||
val database = Database.connect(
|
||||
|
@ -1,24 +1,9 @@
|
||||
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.configureHTTP() {
|
||||
install(CORS) {
|
||||
|
@ -1,24 +1,9 @@
|
||||
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.*
|
||||
import org.slf4j.event.Level
|
||||
|
||||
fun Application.configureMonitoring() {
|
||||
install(CallLogging) {
|
||||
|
@ -1,24 +1,10 @@
|
||||
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.requestvalidation.*
|
||||
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.configureRouting() {
|
||||
install(RequestValidation) {
|
||||
@ -28,14 +14,10 @@ fun Application.configureRouting() {
|
||||
else ValidationResult.Valid
|
||||
}
|
||||
}
|
||||
|
||||
install(StatusPages) {
|
||||
exception<Throwable> { call, cause ->
|
||||
call.respondText(text = "500: $cause", status = HttpStatusCode.InternalServerError)
|
||||
}
|
||||
}
|
||||
routing {
|
||||
get("/") {
|
||||
call.respondText("Hello World!")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,58 +1,22 @@
|
||||
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.github.cdimascio.dotenv.Dotenv
|
||||
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.configureSecurity() {
|
||||
fun Application.configureSecurity(dotenv: Dotenv) {
|
||||
val apiKey = dotenv["API_KEY"] ?: throw Exception("API_KEY not found")
|
||||
|
||||
authentication {
|
||||
basic(name = "myauth1") {
|
||||
basic {
|
||||
realm = "Ktor Server"
|
||||
validate { credentials ->
|
||||
if (credentials.name == credentials.password) {
|
||||
if (credentials.name == "admin" && credentials.password == apiKey) {
|
||||
UserIdPrincipal(credentials.name)
|
||||
} else {
|
||||
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