diff --git a/build.gradle.kts b/build.gradle.kts index 5d08ed2..000a5a1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ plugins { kotlin("jvm") version "2.0.0" application - id("io.ktor.plugin") version "2.3.11" + id("io.ktor.plugin") version "2.3.12" } group = "net.taehui" diff --git a/src/main/kotlin/net/taehui/twilight/Twilight.kt b/src/main/kotlin/net/taehui/twilight/Twilight.kt index 1edd2cc..c710825 100644 --- a/src/main/kotlin/net/taehui/twilight/Twilight.kt +++ b/src/main/kotlin/net/taehui/twilight/Twilight.kt @@ -95,7 +95,6 @@ BannedIP.saveBannedIP() BannedNote.saveBannedNote() Configure.saveConfigure() - PIDClass.dispose() } } } diff --git a/src/main/kotlin/net/taehui/twilight/system/AwilightHandler.kt b/src/main/kotlin/net/taehui/twilight/system/AwilightHandler.kt index 5384b0e..e4bb19c 100644 --- a/src/main/kotlin/net/taehui/twilight/system/AwilightHandler.kt +++ b/src/main/kotlin/net/taehui/twilight/system/AwilightHandler.kt @@ -36,7 +36,7 @@ HttpClients.createDefault().use { UnsafeByteOperations.unsafeWrap( it.execute( - HttpGet("https://source.unsplash.com/random"), + HttpGet("https://picsum.photos/200"), HCDataHandler() ) ) diff --git a/src/main/kotlin/net/taehui/twilight/system/DB.kt b/src/main/kotlin/net/taehui/twilight/system/DB.kt index 448474b..2fe3826 100644 --- a/src/main/kotlin/net/taehui/twilight/system/DB.kt +++ b/src/main/kotlin/net/taehui/twilight/system/DB.kt @@ -3431,12 +3431,12 @@ INNER JOIN tw_note USING(Note_ID) INNER JOIN tn_avatar ON tw_comment.Avatar = tn_avatar.Avatar_ID WHERE Ability_7K > 0.0 AND ${ - getAbilityFilter( - Component.DEFAULT_INPUT_FAVOR_MODE, - Component.MODE_7_INPUT_FAVOR_MODE, - Component.MODE_7_1_INPUT_FAVOR_MODE - ) - } AND Is_Max = true + getAbilityFilter( + Component.DEFAULT_INPUT_FAVOR_MODE, + Component.MODE_7_INPUT_FAVOR_MODE, + Component.MODE_7_1_INPUT_FAVOR_MODE + ) + } AND Is_Max = true ORDER BY Value DESC """.trimIndent() ).use { dbStatement -> @@ -3472,12 +3472,12 @@ INNER JOIN tw_note USING(Note_ID) INNER JOIN tn_avatar ON tw_comment.Avatar = tn_avatar.Avatar_ID WHERE Avatar = ? AND Ability_7K > 0.0 AND ${ - getAbilityFilter( - Component.DEFAULT_INPUT_FAVOR_MODE, - Component.MODE_7_INPUT_FAVOR_MODE, - Component.MODE_7_1_INPUT_FAVOR_MODE - ) - } AND Is_Max = true + getAbilityFilter( + Component.DEFAULT_INPUT_FAVOR_MODE, + Component.MODE_7_INPUT_FAVOR_MODE, + Component.MODE_7_1_INPUT_FAVOR_MODE + ) + } AND Is_Max = true ORDER BY Value DESC LIMIT 50 """.trimIndent() @@ -3504,11 +3504,11 @@ INNER JOIN tw_note USING(Note_ID) INNER JOIN tn_avatar ON tw_comment.Avatar = tn_avatar.Avatar_ID WHERE Ability_9K > 0.0 AND ${ - getAbilityFilter( - Component.DEFAULT_INPUT_FAVOR_MODE, - Component.MODE_9_INPUT_FAVOR_MODE - ) - } AND Is_Max = true + getAbilityFilter( + Component.DEFAULT_INPUT_FAVOR_MODE, + Component.MODE_9_INPUT_FAVOR_MODE + ) + } AND Is_Max = true ORDER BY Value DESC """.trimIndent() ).use { dbStatement -> diff --git a/src/main/kotlin/net/taehui/twilight/system/PIDClass.kt b/src/main/kotlin/net/taehui/twilight/system/PIDClass.kt index 8d6ac15..a2a4f74 100644 --- a/src/main/kotlin/net/taehui/twilight/system/PIDClass.kt +++ b/src/main/kotlin/net/taehui/twilight/system/PIDClass.kt @@ -1,35 +1,21 @@ package net.taehui.twilight.system import net.taehui.twilight.Logger -import java.io.IOException -import java.nio.channels.FileChannel -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.StandardOpenOption +import java.net.BindException +import java.net.InetSocketAddress +import java.nio.channels.DatagramChannel import kotlin.system.exitProcess object PIDClass : Logger { - private val FILE_PATH: Path = Path.of("Twilight.#") - private var fc: FileChannel? = null + private var datagramChannel: DatagramChannel? = null fun doHaveIt() { try { - fc = FileChannel.open( - FILE_PATH, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.READ - ) - try { - fc?.lock() - } catch (e: IOException) { - logFault(e) - } - } catch (e: IOException) { + datagramChannel = DatagramChannel.open() + datagramChannel?.bind(InetSocketAddress("localhost", 6101)) + } catch (e: BindException) { logInfo("Twilight is already running") exitProcess(1) } } - - fun dispose() { - fc?.close() - Files.deleteIfExists(FILE_PATH) - } } \ No newline at end of file diff --git a/src/main/kotlin/net/taehui/twilight/taehui/TaehuiAvatar.kt b/src/main/kotlin/net/taehui/twilight/taehui/TaehuiAvatar.kt index fbf07cb..3f24c7e 100644 --- a/src/main/kotlin/net/taehui/twilight/taehui/TaehuiAvatar.kt +++ b/src/main/kotlin/net/taehui/twilight/taehui/TaehuiAvatar.kt @@ -26,11 +26,13 @@ @Deprecated("hashAMD64") var hash = "" + @Deprecated("hashAMD64") var hashX64 = "" @Deprecated("titleAMD64") var title = "" + @Deprecated("titleAMD64") var titleX64 = "" } @@ -56,8 +58,14 @@ val path = URLDecoder.decode(msg.uri(), StandardCharsets.UTF_8) val mode = msg.method() logInfo("$mode $path") - if (mode == HttpMethod.PATCH) { - when (path) { + when (mode) { + HttpMethod.GET -> when (path) { + "/health" -> { + send204(ctx) + } + } + + HttpMethod.PATCH -> when (path) { "/date/AMD64" -> { val data = ByteBufUtil.getBytes(msg.content()) logFuture { @@ -94,7 +102,8 @@ Configure.saveConfigure() val jm = ObjectMapper() val qwilightDateFilePath = Configure.path.wwwPath.resolve(Configure.path.datePath) - val qwilightDate = jm.readValue(Files.readString(qwilightDateFilePath), QwilightDate::class.java) + val qwilightDate = + jm.readValue(Files.readString(qwilightDateFilePath), QwilightDate::class.java) qwilightDate.date = date qwilightDate.hashAMD64 = hashAMD64 qwilightDate.hashARM64 = hashARM64 @@ -116,16 +125,24 @@ send204(ctx) } - else -> ctx.writeAndFlush(DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND)) - .addListener( - ChannelFutureListener.CLOSE + else -> ctx.writeAndFlush( + DefaultFullHttpResponse( + HttpVersion.HTTP_1_1, + HttpResponseStatus.NOT_FOUND ) - } - } else { - ctx.writeAndFlush(DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.METHOD_NOT_ALLOWED)) - .addListener( + ).addListener( ChannelFutureListener.CLOSE ) + } + + else -> ctx.writeAndFlush( + DefaultFullHttpResponse( + HttpVersion.HTTP_1_1, + HttpResponseStatus.METHOD_NOT_ALLOWED + ) + ).addListener( + ChannelFutureListener.CLOSE + ) } }