diff --git a/app/src/main/java/com/github/catvod/utils/ktorServer.kt b/app/src/main/java/com/github/catvod/utils/ktorServer.kt index 93d14efd..e437197c 100644 --- a/app/src/main/java/com/github/catvod/utils/ktorServer.kt +++ b/app/src/main/java/com/github/catvod/utils/ktorServer.kt @@ -26,48 +26,57 @@ import java.nio.ByteBuffer import java.nio.charset.Charset object KtorServer { - private const val port = 12345 + private var port = 12345 private val THREAD_NUM = Runtime.getRuntime().availableProcessors() * 2 private val infos = mutableMapOf>() + var ser: io.ktor.server.engine.ApplicationEngine? = null //每个片1MB private val partSize = 1024 * 1024 * 1 - private val server by lazy { - embeddedServer(CIO, port) { - install(CallLogging) + fun init() { + do { + try { + ser = embeddedServer(CIO, port) { + install(CallLogging) - routing { - get("/") { - call.respondText("ktor running on $port", ContentType.Text.Plain) - } - get("/proxy") { + routing { + get("/") { + call.respondText("ktor running on $port", ContentType.Text.Plain) + } + get("/proxy") { + SpiderDebug.log("代理中: ${call.parameters["url"]}") - val url = Util.base64Decode(call.parameters["url"]) - val header: Map = Gson().fromJson>( - Util.base64Decode(call.parameters["headers"]), MutableMap::class.java - ) - proxyAsync( - url, header, call - ) - - - } + val url = Util.base64Decode(call.parameters["url"]) + val header: Map = Gson().fromJson>( + Util.base64Decode(call.parameters["headers"]), + MutableMap::class.java + ) + proxyAsync( + url, header, call + ) + } + } + }.start(wait = false) + } catch (e: Exception) { + SpiderDebug.log("start server e:" + e.message) + ++port + ser?.stop() } - } + } while (port < 13000) } /** 启动服务器 */ fun start() { SpiderDebug.log("ktorServer start on $port") - CoroutineScope(Dispatchers.IO).launch { server.start(true) } + CoroutineScope(Dispatchers.IO).launch { init() } } /** 停止服务器 */ fun stop() { - server.stop(1_000, 2_000) + ser?.stop(1_000, 2_000) } fun buildProxyUrl(url: String, headers: Map): String { diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index e6fd051c..40e019ba 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index 9146389a..1b1c52b7 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -68e6ce9893966f1b033d592e0f93b2ea +7610a4d16212252a8db5108551e7c9a7 diff --git a/json/test.json b/json/test.json index d9537923..1a04e2b9 100644 --- a/json/test.json +++ b/json/test.json @@ -1,5 +1,5 @@ { - "spider": "https://gh.llkk.cc/https://raw.githubusercontent.com/lushunming/AndroidCatVodSpider/multiThreadNew/jar/custom_spider.jar;md5;5d41a155e40f64b26b514ec52a1c6ab9", + "spider": "https://gh.llkk.cc/https://raw.githubusercontent.com/lushunming/AndroidCatVodSpider/multiThreadNew/jar/custom_spider.jar;md5;7610a4d16212252a8db5108551e7c9a7", "lives": [ { "name": "电视直播",