diff --git a/.gitignore b/.gitignore index a29d5f5..c747ef3 100644 --- a/.gitignore +++ b/.gitignore @@ -47,22 +47,19 @@ /Comment /Default /Edge -/Fault /Level /Note /Site /Title -/Twilight +/Trace /UI /Vote -/Www /src/main/resources/Client.json /Awilight.py /Banned IP.json /Banned Note.json /Configure.json -/History.json +/Traced IP.json /Platform ID.json -/Quality.json /Twilight.jar /Twilight.jks \ No newline at end of file diff --git a/src/main/kotlin/net/taehui/twilight/Twilight.kt b/src/main/kotlin/net/taehui/twilight/Twilight.kt index 2f80b8a..1d32293 100644 --- a/src/main/kotlin/net/taehui/twilight/Twilight.kt +++ b/src/main/kotlin/net/taehui/twilight/Twilight.kt @@ -58,7 +58,7 @@ BannedIP.loadBannedIP() BannedNote.loadBannedNote() EdgeSystem.loadEdge() - History.loadHistory() + TracedIP.loadTracedIP() LevelSystem.loadLevel() TitleSystem.loadTitle() VoteSystem.loadVote() @@ -94,7 +94,7 @@ PlatformSystem.dispose() TVSystem.dispose() AutoSystem.dispose() - History.saveHistory() + TracedIP.saveTracedIP() BannedIP.saveBannedIP() BannedNote.saveBannedNote() Configure.saveConfigure() diff --git a/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt b/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt index 4e5c9ff..5825eb0 100644 --- a/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt +++ b/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt @@ -132,7 +132,7 @@ handler = ctx avatarIP = (handler.channel().remoteAddress() as InetSocketAddress).address isAwilight = avatarIP.isLoopbackAddress - avatarEstimatedID = History.getAvatarID(remote) + avatarEstimatedID = TracedIP.getAvatarID(remote) } override fun channelInactive(ctx: ChannelHandlerContext) { @@ -287,7 +287,7 @@ avatarName, avatarCompetence ) - History.putHistory(this, avatarID) + TracedIP.putTracedIP(this, avatarID) DB.getNotifyUbuntu(avatarID) .forEach { ubuntuID -> AvatarHandler.getAvatar( diff --git a/src/main/kotlin/net/taehui/twilight/site/SiteAvatar.kt b/src/main/kotlin/net/taehui/twilight/site/SiteAvatar.kt index 195d297..93dbfab 100644 --- a/src/main/kotlin/net/taehui/twilight/site/SiteAvatar.kt +++ b/src/main/kotlin/net/taehui/twilight/site/SiteAvatar.kt @@ -18,7 +18,7 @@ import net.taehui.twilight.qwilight.QwilightAvatar import net.taehui.twilight.system.AvatarHandler import net.taehui.twilight.system.Configure -import net.taehui.twilight.system.History +import net.taehui.twilight.system.TracedIP import net.taehui.twilight.system.SiteHandler import org.apache.commons.lang3.RandomStringUtils import org.slf4j.LoggerFactory @@ -115,7 +115,7 @@ (it[2] as String), it[3] as Int ) - History.putHistory(this, avatarID) + TracedIP.putTracedIP(this, avatarID) } } } catch (e: JsonProcessingException) { @@ -129,7 +129,7 @@ it[1] as String, it[2] as Int ) - History.putHistory(this, avatarID) + TracedIP.putTracedIP(this, avatarID) } } } diff --git a/src/main/kotlin/net/taehui/twilight/system/History.kt b/src/main/kotlin/net/taehui/twilight/system/History.kt deleted file mode 100644 index 10f54ae..0000000 --- a/src/main/kotlin/net/taehui/twilight/system/History.kt +++ /dev/null @@ -1,47 +0,0 @@ -package net.taehui.twilight.system - -import com.fasterxml.jackson.core.type.TypeReference -import com.fasterxml.jackson.databind.ObjectMapper -import net.taehui.twilight.Avatar -import net.taehui.twilight.Logger -import java.io.IOException -import java.nio.file.Files -import java.nio.file.Paths -import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.CopyOnWriteArraySet - -object History : Logger { - private var remoteAvatarIDsMap = ConcurrentHashMap>() - - fun loadHistory() { - try { - remoteAvatarIDsMap.putAll( - ObjectMapper().readValue( - Paths.get("History.json").toFile(), - object : TypeReference>>() {}) - ) - logInfo("Loaded History") - saveHistory() - } catch (e: IOException) { - logFault(e) - } - } - - fun saveHistory() { - Files.newOutputStream(Paths.get("History.json")) - .use { ObjectMapper().writerWithDefaultPrettyPrinter().writeValue(it, remoteAvatarIDsMap) } - logInfo("Saved History") - } - - fun putHistory(avatar: Avatar, avatarID: String) { - if (!avatar.isAwilight) { - remoteAvatarIDsMap.computeIfAbsent(avatar.remote) { - CopyOnWriteArraySet() - }.add(avatarID) - } - } - - fun getAvatarID(avatarIP: String): String { - return (remoteAvatarIDsMap[avatarIP] ?: emptyList()).joinToString() - } -} \ No newline at end of file diff --git a/src/main/kotlin/net/taehui/twilight/system/TracedIP.kt b/src/main/kotlin/net/taehui/twilight/system/TracedIP.kt new file mode 100644 index 0000000..14b3738 --- /dev/null +++ b/src/main/kotlin/net/taehui/twilight/system/TracedIP.kt @@ -0,0 +1,47 @@ +package net.taehui.twilight.system + +import com.fasterxml.jackson.core.type.TypeReference +import com.fasterxml.jackson.databind.ObjectMapper +import net.taehui.twilight.Avatar +import net.taehui.twilight.Logger +import java.io.IOException +import java.nio.file.Files +import java.nio.file.Paths +import java.util.concurrent.ConcurrentHashMap +import java.util.concurrent.CopyOnWriteArraySet + +object TracedIP : Logger { + private var tracedIPStore = ConcurrentHashMap>() + + fun loadTracedIP() { + try { + tracedIPStore.putAll( + ObjectMapper().readValue( + Paths.get("Traced IP.json").toFile(), + object : TypeReference>>() {}) + ) + logInfo("Loaded Traced IP") + saveTracedIP() + } catch (e: IOException) { + logFault(e) + } + } + + fun saveTracedIP() { + Files.newOutputStream(Paths.get("Traced IP.json")) + .use { ObjectMapper().writerWithDefaultPrettyPrinter().writeValue(it, tracedIPStore) } + logInfo("Saved Traced IP") + } + + fun putTracedIP(avatar: Avatar, avatarID: String) { + if (!avatar.isAwilight) { + tracedIPStore.computeIfAbsent(avatar.remote) { + CopyOnWriteArraySet() + }.add(avatarID) + } + } + + fun getAvatarID(avatarIP: String): String { + return (tracedIPStore[avatarIP] ?: emptyList()).joinToString() + } +} \ No newline at end of file diff --git a/src/main/kotlin/net/taehui/twilight/www/WwwAvatar.kt b/src/main/kotlin/net/taehui/twilight/www/WwwAvatar.kt index 3866016..ceef656 100644 --- a/src/main/kotlin/net/taehui/twilight/www/WwwAvatar.kt +++ b/src/main/kotlin/net/taehui/twilight/www/WwwAvatar.kt @@ -128,7 +128,7 @@ public override fun channelRead0(ctx: ChannelHandlerContext, msg: FullHttpRequest) { avatarIP = msg.headers()["X-Real-IP"] ?: "localhost" - avatarEstimatedID = History.getAvatarID(avatarIP) + avatarEstimatedID = TracedIP.getAvatarID(avatarIP) val mode = msg.method() if (avatarIP != "localhost") { logInfo("$mode ${URLDecoder.decode(msg.uri(), StandardCharsets.UTF_8)}") diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 069f697..6533c63 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -5,23 +5,23 @@ - - + - + - +