suka macos ebani

This commit is contained in:
2026-05-25 01:06:40 +03:00
parent aebee266b7
commit 3e52278e53
5 changed files with 49 additions and 30 deletions

View File

@ -3,53 +3,66 @@ package su.sonoma
import kotlinx.coroutines.*
import java.net.ServerSocket
import java.net.Socket
import java.io.InputStream
import java.io.DataInputStream
fun startServer() = runBlocking {
val server = ServerSocket(9093)
fun startServer(port: Int) = runBlocking {
val tun = TunDevice("10.1.0.1")
val server = ServerSocket(port)
println("Server started")
while (true) {
val client = server.accept()
println("${client.inetAddress} Client pairing")
launch {
handle(client)
launch(Dispatchers.IO) {
println("${client.inetAddress} Client connected")
try {
handle(client)
} catch (e: Exception) {
println("${client.inetAddress} Client disconnected: ${e.message}")
}
}
}
}
suspend fun handle(socket: Socket) {
val input = socket.getInputStream()
val output = socket.getOutputStream()
val input = withContext(Dispatchers.IO) {
socket.getInputStream()
}
val output = withContext(Dispatchers.IO) {
socket.getOutputStream()
}
val buffer = ByteArray(32768)
while (true) {
withContext(Dispatchers.IO) {
while (true) {
val hi = input.read()
val lo = input.read()
val len = (hi shl 8) or lo
val hi = input.read()
DataInputStream(input).readFully(buffer, 0, len)
val lo = input.read()
val packet = buffer.copyOf(len)
val len = (hi shl 8) or lo
val response = forwardPacket(packet)
DataInputStream(input).readFully(buffer, 0, len)
output.write(response.size shr 8)
output.write(response.size)
val packet = buffer.copyOf(len)
output.write(response)
val response = forwardPacket(packet)
output.write(response.size shr 8)
output.write(response.size)
output.write(response)
}
}
}
fun forwardPacket(packet: ByteArray): ByteArray {
val host = "example.com"
val port = 80
val host = "localhost"
val port = 1080
val socket = Socket(host, port)