mirror of https://github.com/NekoX-Dev/NekoX.git
52 lines
777 B
Kotlin
52 lines
777 B
Kotlin
package tw.nekomimi.nekogram
|
|
|
|
import java.net.InetSocketAddress
|
|
import java.net.ServerSocket
|
|
import kotlin.random.Random
|
|
|
|
object ProxyManager {
|
|
|
|
@JvmStatic
|
|
fun mkPort(): Int {
|
|
|
|
var port: Int
|
|
|
|
do {
|
|
|
|
port = mkNewPort()
|
|
|
|
} while (!isProxyAvailable(port))
|
|
|
|
return port
|
|
|
|
}
|
|
|
|
private fun mkNewPort() = Random.nextInt(2048, 32768)
|
|
|
|
@JvmStatic
|
|
fun isProxyAvailable(port: Int): Boolean {
|
|
|
|
if (port !in 2048 until 32768) return false
|
|
|
|
runCatching {
|
|
|
|
val server = ServerSocket()
|
|
|
|
server.bind(InetSocketAddress("127.0.0.1",port))
|
|
|
|
server.close()
|
|
|
|
Thread.sleep(1000L)
|
|
|
|
}.onFailure {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|