From 54775641bbcf4d0e2d505ca46a8ee14c38fa8257 Mon Sep 17 00:00:00 2001 From: rdkartono Date: Tue, 30 Sep 2025 16:03:28 +0700 Subject: [PATCH] Commit 30/09/2025 --- .../TCP_Android_Command_Server.kt | 27 +++++++++++++++---- src/commandServer/userLogin.kt | 3 +++ 2 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 src/commandServer/userLogin.kt diff --git a/src/commandServer/TCP_Android_Command_Server.kt b/src/commandServer/TCP_Android_Command_Server.kt index 04f5aa5..993fb4c 100644 --- a/src/commandServer/TCP_Android_Command_Server.kt +++ b/src/commandServer/TCP_Android_Command_Server.kt @@ -1,6 +1,7 @@ package commandServer import codes.Somecodes.Companion.ValidString +import db import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -20,6 +21,7 @@ class TCP_Android_Command_Server { private var job: Job? = null private val socketMap = mutableMapOf() lateinit var logcb: Consumer + private val listUserLogin = mutableListOf() /** * Start TCP Command Server @@ -54,7 +56,7 @@ class TCP_Android_Command_Server { val str = String(bb, 4, bb.size - 4) str.split("@").map { it.trim() }.filter { ValidString(it) } .map { it.uppercase() }.forEach { - process_command(it) { reply -> + process_command(key,it) { reply -> try { socket.getOutputStream().write(String_to_Byte_Android(reply)) } catch (e: Exception) { @@ -106,16 +108,31 @@ class TCP_Android_Command_Server { return ByteArray(0) } - private fun process_command(cmd: String, cb: Consumer) { - Logger.info { "Command from Android: $cmd" } + private fun process_command(key: String, cmd: String, cb: Consumer) { + Logger.info { "Command from $key : $cmd" } val parts = cmd.split(";").map { it.trim() }.filter { it.isNotBlank() }.map { it.uppercase() } when (parts[0]) { "GETLOGIN" -> { val username = parts.getOrElse(1) { "" } val password = parts.getOrElse(2) { "" } if (ValidString(username) && ValidString(password)) { - //TODO handle login here - } else cb.accept("LOGIN;FALSE@") + if (db.userDB.List.any{it.username==username && it.password==password}) { + cb.accept("LOGIN;TRUE@") + val existing = listUserLogin.find { it.ip == key} + if (existing!=null){ + existing.username = username + } else{ + listUserLogin.add(userLogin(key, username)) + } + logcb.accept("Android Login success from $key as $username") + } else { + logcb.accept("Android Login failed from $key as $username") + cb.accept("LOGIN;FALSE@") + } + } else { + logcb.accept("Android Login failed from $key with empty username or password") + cb.accept("LOGIN;FALSE@") + } } "PCMFILE_START" -> { diff --git a/src/commandServer/userLogin.kt b/src/commandServer/userLogin.kt new file mode 100644 index 0000000..fd277b0 --- /dev/null +++ b/src/commandServer/userLogin.kt @@ -0,0 +1,3 @@ +package commandServer + +data class userLogin(val ip : String, var username: String)