From a485e72ddf3bd95bd32a1fc56c36934bc9a1efcc Mon Sep 17 00:00:00 2001 From: whitechi73 Date: Sun, 28 Jan 2024 15:38:36 +0800 Subject: [PATCH] `Shamrock`: Adjusting the xposed API for KSP --- .../java/moe/fuqiuluo/symbols/XposedHook.kt | 13 ++ app/src/main/cpp/shamrock.cpp | 2 +- .../ui/service/DashboardInitializer.kt | 7 +- .../ksp/impl/OneBotHandlerProcessor.kt | 2 +- .../fuqiuluo/ksp/impl/XposedHookProcessor.kt | 111 ++++++++++++++++++ .../providers/XposedHookProcessorProvider.kt | 14 +++ xposed/src/main/cpp/clover.cpp | 2 +- .../moe/fuqiuluo/shamrock/helper/LogCenter.kt | 3 +- .../shamrock/remote/action/ActionManager.kt | 7 +- .../remote/action/handlers/GetLatestEvents.kt | 6 +- .../remote/action/handlers/GetLoginInfo.kt | 5 +- .../remote/action/handlers/GetProfileCard.kt | 4 +- .../remote/action/handlers/GetSelfInfo.kt | 5 +- .../remote/action/handlers/GetStatus.kt | 5 +- .../action/handlers/GetSupportedActions.kt | 4 +- .../shamrock/remote/action/handlers/GetUid.kt | 4 +- .../remote/action/handlers/GetUinByUid.kt | 4 +- .../remote/action/handlers/TestHandler.kt | 4 +- .../fuqiuluo/shamrock/remote/api/BDHWorker.kt | 2 +- .../shamrock/remote/api/GenerateQSign.kt | 2 +- .../shamrock/remote/api/GetFrameworkInfo.kt | 2 +- .../shamrock/remote/api/GuildAction.kt | 9 +- .../fuqiuluo/shamrock/remote/api/MainRoute.kt | 9 +- .../shamrock/remote/api/MessageAction.kt | 2 +- .../shamrock/remote/api/OtherAction.kt | 5 +- .../shamrock/remote/api/ProfileAction.kt | 6 +- .../shamrock/remote/api/ProtocolAction.kt | 6 +- .../shamrock/remote/api/TicketAction.kt | 2 +- .../shamrock/remote/config/StatusPages.kt | 30 +++-- .../shamrock/remote/service/HttpService.kt | 8 -- .../service/api/WebSocketClientServlet.kt | 9 +- .../service/api/WebSocketTransmitServlet.kt | 6 +- .../{entries => structures}/CommonResult.kt | 4 +- .../{entries => structures}/CurrentAccount.kt | 2 +- .../{entries => structures}/ErrorCatch.kt | 2 +- .../{entries => structures}/IndexData.kt | 2 +- .../{entries => structures}/Protocol.kt | 2 +- .../moe/fuqiuluo/shamrock/tools/KtorServer.kt | 24 ++-- .../fuqiuluo/shamrock/xposed/XposedEntry.kt | 4 +- .../{actions => hooks}/AntiDetection.kt | 9 +- .../xposed/{actions => hooks}/DataReceiver.kt | 4 +- .../xposed/{actions => hooks}/FetchService.kt | 4 +- .../{actions => hooks}/FixLibraryLoad.kt | 4 +- .../xposed/{actions => hooks}/ForceTablet.kt | 6 +- .../xposed/{actions => hooks}/GuidLock.kt | 6 +- .../xposed/{actions => hooks}/HookForDebug.kt | 16 +-- .../{actions => hooks}/HookWrapperCodec.kt | 5 +- .../xposed/{actions => hooks}/IAction.kt | 2 +- .../{actions => hooks}/InitRemoteService.kt | 7 +- .../xposed/{actions => hooks}/IpcService.kt | 5 +- .../ListenShamrockUpdate.kt | 4 +- .../xposed/{actions => hooks}/NoBackGround.kt | 4 +- .../xposed/{actions => hooks}/PullConfig.kt | 8 +- .../shamrock/xposed/ipc/qsign/QSign.kt | 2 +- .../shamrock/xposed/loader/ActionLoader.kt | 49 -------- 55 files changed, 278 insertions(+), 197 deletions(-) create mode 100644 annotations/src/main/java/moe/fuqiuluo/symbols/XposedHook.kt create mode 100644 processor/src/main/java/moe/fuqiuluo/ksp/impl/XposedHookProcessor.kt create mode 100644 processor/src/main/java/moe/fuqiuluo/ksp/providers/XposedHookProcessorProvider.kt rename xposed/src/main/java/moe/fuqiuluo/shamrock/remote/{entries => structures}/CommonResult.kt (89%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/remote/{entries => structures}/CurrentAccount.kt (87%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/remote/{entries => structures}/ErrorCatch.kt (72%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/remote/{entries => structures}/IndexData.kt (82%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/remote/{entries => structures}/Protocol.kt (93%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/AntiDetection.kt (98%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/DataReceiver.kt (95%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/FetchService.kt (92%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/FixLibraryLoad.kt (88%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/ForceTablet.kt (94%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/GuidLock.kt (95%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/HookForDebug.kt (54%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/HookWrapperCodec.kt (98%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/IAction.kt (69%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/InitRemoteService.kt (95%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/IpcService.kt (91%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/ListenShamrockUpdate.kt (92%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/NoBackGround.kt (90%) rename xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/{actions => hooks}/PullConfig.kt (94%) delete mode 100644 xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/loader/ActionLoader.kt diff --git a/annotations/src/main/java/moe/fuqiuluo/symbols/XposedHook.kt b/annotations/src/main/java/moe/fuqiuluo/symbols/XposedHook.kt new file mode 100644 index 0000000..7c23044 --- /dev/null +++ b/annotations/src/main/java/moe/fuqiuluo/symbols/XposedHook.kt @@ -0,0 +1,13 @@ +package moe.fuqiuluo.symbols + +enum class Process { + ALL, + MAIN, + MSF +} + +@Target(AnnotationTarget.CLASS) +annotation class XposedHook( + val process: Process = Process.ALL, + val priority: Int = 10 +) \ No newline at end of file diff --git a/app/src/main/cpp/shamrock.cpp b/app/src/main/cpp/shamrock.cpp index dd1f11d..9e90b5c 100644 --- a/app/src/main/cpp/shamrock.cpp +++ b/app/src/main/cpp/shamrock.cpp @@ -12,7 +12,7 @@ extern "C" JNIEXPORT jstring JNICALL -Java_moe_fuqiuluo_shamrock_xposed_actions_PullConfig_testNativeLibrary(JNIEnv *env, jobject thiz) { +Java_moe_fuqiuluo_shamrock_xposed_hooks_PullConfig_testNativeLibrary(JNIEnv *env, jobject thiz) { return env->NewStringUTF("加载Shamrock库成功~"); } diff --git a/app/src/main/java/moe/fuqiuluo/shamrock/ui/service/DashboardInitializer.kt b/app/src/main/java/moe/fuqiuluo/shamrock/ui/service/DashboardInitializer.kt index e38b0ec..ef906d6 100644 --- a/app/src/main/java/moe/fuqiuluo/shamrock/ui/service/DashboardInitializer.kt +++ b/app/src/main/java/moe/fuqiuluo/shamrock/ui/service/DashboardInitializer.kt @@ -7,7 +7,6 @@ import android.content.Intent import android.os.Bundle import androidx.core.content.ContextCompat.startActivity import io.ktor.client.request.get -import io.ktor.client.request.header import io.ktor.client.request.parameter import io.ktor.client.request.url import io.ktor.client.statement.bodyAsText @@ -17,9 +16,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.serialization.json.Json -import moe.fuqiuluo.shamrock.remote.entries.CommonResult -import moe.fuqiuluo.shamrock.remote.entries.CurrentAccount -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.CommonResult +import moe.fuqiuluo.shamrock.remote.structures.CurrentAccount +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.GlobalClient import moe.fuqiuluo.shamrock.ui.app.AppRuntime.AccountInfo import moe.fuqiuluo.shamrock.ui.app.AppRuntime.log diff --git a/processor/src/main/java/moe/fuqiuluo/ksp/impl/OneBotHandlerProcessor.kt b/processor/src/main/java/moe/fuqiuluo/ksp/impl/OneBotHandlerProcessor.kt index 3452e46..d85d595 100644 --- a/processor/src/main/java/moe/fuqiuluo/ksp/impl/OneBotHandlerProcessor.kt +++ b/processor/src/main/java/moe/fuqiuluo/ksp/impl/OneBotHandlerProcessor.kt @@ -66,7 +66,7 @@ class OneBotHandlerProcessor( }.build()).apply { addImport("moe.fuqiuluo.shamrock.remote.action.ActionManager", "actionMap") actionHandlers.forEach { - addImport("moe.fuqiuluo.shamrock.remote.action.handlers", it.simpleName.asString()) + addImport(it.packageName.asString(), it.simpleName.asString()) } }.build() diff --git a/processor/src/main/java/moe/fuqiuluo/ksp/impl/XposedHookProcessor.kt b/processor/src/main/java/moe/fuqiuluo/ksp/impl/XposedHookProcessor.kt new file mode 100644 index 0000000..cea2db4 --- /dev/null +++ b/processor/src/main/java/moe/fuqiuluo/ksp/impl/XposedHookProcessor.kt @@ -0,0 +1,111 @@ +@file:Suppress("UNCHECKED_CAST", "LocalVariableName", "PrivatePropertyName") +@file:OptIn(KspExperimental::class) + +package moe.fuqiuluo.ksp.impl + +import com.google.devtools.ksp.KspExperimental +import com.google.devtools.ksp.getAnnotationsByType +import com.google.devtools.ksp.getClassDeclarationByName +import com.google.devtools.ksp.processing.CodeGenerator +import com.google.devtools.ksp.processing.Dependencies +import com.google.devtools.ksp.processing.KSPLogger +import com.google.devtools.ksp.processing.Resolver +import com.google.devtools.ksp.processing.SymbolProcessor +import com.google.devtools.ksp.symbol.ClassKind +import com.google.devtools.ksp.symbol.KSAnnotated +import com.google.devtools.ksp.symbol.KSClassDeclaration +import com.google.devtools.ksp.symbol.KSVisitorVoid +import com.google.devtools.ksp.validate +import com.squareup.kotlinpoet.ClassName +import com.squareup.kotlinpoet.FileSpec +import com.squareup.kotlinpoet.FunSpec +import moe.fuqiuluo.symbols.Process +import moe.fuqiuluo.symbols.XposedHook + +class XposedHookProcessor( + private val codeGenerator: CodeGenerator, + private val logger: KSPLogger +): SymbolProcessor { + override fun process(resolver: Resolver): List { + val symbols = resolver.getSymbolsWithAnnotation(XposedHook::class.qualifiedName!!) + val unableToProcess = symbols.filterNot { it.validate() } + val actions = (symbols.filter { + it is KSClassDeclaration && it.validate() && it.classKind == ClassKind.CLASS + } as Sequence).toList() + + if (actions.isNotEmpty()) { + val firstActions = arrayListOf() + val serviceActions = arrayListOf() + actions.forEach { + val priority = it.getAnnotationsByType(XposedHook::class).first().priority + if (priority >= 10) { + serviceActions.add(it) + } else { + firstActions.add(it) + } + } + + val context = ClassName("android.content", "Context") + val packageName = "moe.fuqiuluo.shamrock.xposed.hooks" + val fileSpec = FileSpec.builder(packageName, "AutoActionLoader").addFunction(FunSpec.builder("runFirstActions") + .addParameter("ctx", context) + .apply { + firstActions.forEach { handler -> + val annotation = handler.getAnnotationsByType(XposedHook::class).first() + val process = annotation.process + val className = handler.simpleName.asString() + if (process == Process.MAIN) { + addStatement("if (PlatformUtils.isMainProcess()) ") + } else if (process == Process.MSF) { + addStatement("if (PlatformUtils.isMsfProcess()) ") + } + addStatement("$className().invoke(ctx)") + } + }.build() + ).addFunction(FunSpec.builder("runServiceActions") + .addParameter("ctx", context).apply { + serviceActions.forEach { handler -> + val annotation = handler.getAnnotationsByType(XposedHook::class).first() + val process = annotation.process + val className = handler.simpleName.asString() + if (process == Process.MAIN) { + addStatement("if (PlatformUtils.isMainProcess()) ") + } else if (process == Process.MSF) { + addStatement("if (PlatformUtils.isMsfProcess()) ") + } + addStatement("$className().invoke(ctx)") + } + }.build() + ).apply { + firstActions.forEach { + addImport(it.packageName.asString(), it.simpleName.asString()) + } + serviceActions.forEach { + addImport(it.packageName.asString(), it.simpleName.asString()) + } + addImport("moe.fuqiuluo.shamrock.utils", "PlatformUtils") + }.build() + + codeGenerator.createNewFile( + dependencies = Dependencies(aggregating = false), + packageName = packageName, + fileName = "AutoActionLoader" + ).use { outputStream -> + outputStream.writer().use { + fileSpec.writeTo(it) + } + } + } + + return unableToProcess.toList() + } + + inner class ActionLoaderVisitor( + private val firstActions: List, + private val serviceActions: List, + ): KSVisitorVoid() { + override fun visitClassDeclaration(classDeclaration: KSClassDeclaration, data: Unit) { + + } + } +} \ No newline at end of file diff --git a/processor/src/main/java/moe/fuqiuluo/ksp/providers/XposedHookProcessorProvider.kt b/processor/src/main/java/moe/fuqiuluo/ksp/providers/XposedHookProcessorProvider.kt new file mode 100644 index 0000000..52f8613 --- /dev/null +++ b/processor/src/main/java/moe/fuqiuluo/ksp/providers/XposedHookProcessorProvider.kt @@ -0,0 +1,14 @@ +package moe.fuqiuluo.ksp.providers + +import com.google.auto.service.AutoService +import com.google.devtools.ksp.processing.SymbolProcessor +import com.google.devtools.ksp.processing.SymbolProcessorEnvironment +import com.google.devtools.ksp.processing.SymbolProcessorProvider +import moe.fuqiuluo.ksp.impl.XposedHookProcessor + +@AutoService(SymbolProcessorProvider::class) +class XposedHookProcessorProvider: SymbolProcessorProvider { + override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor { + return XposedHookProcessor(environment.codeGenerator, environment.logger) + } +} \ No newline at end of file diff --git a/xposed/src/main/cpp/clover.cpp b/xposed/src/main/cpp/clover.cpp index def0f8f..7168a46 100644 --- a/xposed/src/main/cpp/clover.cpp +++ b/xposed/src/main/cpp/clover.cpp @@ -165,7 +165,7 @@ NativeOnModuleLoaded native_init(const NativeAPIEntries *entries) { extern "C" JNIEXPORT jboolean JNICALL -Java_moe_fuqiuluo_shamrock_xposed_actions_AntiDetection_antiNativeDetections(JNIEnv *env, +Java_moe_fuqiuluo_shamrock_xposed_hooks_AntiDetection_antiNativeDetections(JNIEnv *env, jobject thiz) { if (hook_function == nullptr) return false; hook_function((void*) __system_property_get, (void *)fake_system_property_get, (void **) &backup_system_property_get); diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/LogCenter.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/LogCenter.kt index d82b26a..469bd9b 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/LogCenter.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/LogCenter.kt @@ -9,8 +9,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import moe.fuqiuluo.shamrock.remote.service.config.ShamrockConfig -import moe.fuqiuluo.shamrock.utils.FileUtils -import moe.fuqiuluo.shamrock.xposed.actions.toast +import moe.fuqiuluo.shamrock.xposed.hooks.toast import moe.fuqiuluo.shamrock.xposed.helper.internal.DataRequester import mqq.app.MobileQQ import java.io.File diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/ActionManager.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/ActionManager.kt index f070610..53a0a3d 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/ActionManager.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/ActionManager.kt @@ -4,10 +4,9 @@ import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive -import moe.fuqiuluo.shamrock.remote.action.handlers.* -import moe.fuqiuluo.shamrock.remote.entries.EmptyObject -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.EmptyObject +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.shamrock.tools.* import moe.fuqiuluo.shamrock.tools.json diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetLatestEvents.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetLatestEvents.kt index 577f3b5..41b1f0d 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetLatestEvents.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetLatestEvents.kt @@ -2,9 +2,9 @@ package moe.fuqiuluo.shamrock.remote.action.handlers import moe.fuqiuluo.shamrock.remote.action.IActionHandler import moe.fuqiuluo.shamrock.remote.action.ActionSession -import moe.fuqiuluo.shamrock.remote.entries.EmptyObject -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.EmptyObject +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.symbols.OneBotHandler @OneBotHandler("get_latest_events") diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetLoginInfo.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetLoginInfo.kt index 5220bcb..1e6e5f6 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetLoginInfo.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetLoginInfo.kt @@ -4,7 +4,7 @@ import com.tencent.mobileqq.app.QQAppInterface import kotlinx.serialization.json.JsonElement import moe.fuqiuluo.shamrock.remote.action.ActionSession import moe.fuqiuluo.shamrock.remote.action.IActionHandler -import moe.fuqiuluo.shamrock.remote.entries.StdAccount +import moe.fuqiuluo.shamrock.remote.structures.StdAccount import moe.fuqiuluo.shamrock.tools.EmptyJsonString import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher import moe.fuqiuluo.symbols.OneBotHandler @@ -24,7 +24,8 @@ internal object GetLoginInfo: IActionHandler() { return if (account == null || !account.isLogined) { error("当前不处于已登录状态", echo = echo) } else { - ok(StdAccount( + ok( + StdAccount( curUin.toLong(),if (runtime is QQAppInterface) runtime.currentNickname else "unknown" ), echo = echo) } diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetProfileCard.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetProfileCard.kt index 97545aa..c421960 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetProfileCard.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetProfileCard.kt @@ -4,8 +4,8 @@ import com.tencent.mobileqq.data.Card import moe.fuqiuluo.qqinterface.servlet.CardSvc import moe.fuqiuluo.shamrock.remote.action.ActionSession import moe.fuqiuluo.shamrock.remote.action.IActionHandler -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.shamrock.remote.service.data.VipInfo import moe.fuqiuluo.shamrock.remote.service.data.VipType import moe.fuqiuluo.shamrock.remote.service.data.profile.Location diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetSelfInfo.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetSelfInfo.kt index 7e9aca0..bea66cc 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetSelfInfo.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetSelfInfo.kt @@ -3,12 +3,11 @@ package moe.fuqiuluo.shamrock.remote.action.handlers import com.tencent.mobileqq.app.QQAppInterface import moe.fuqiuluo.shamrock.remote.action.ActionSession import moe.fuqiuluo.shamrock.remote.action.IActionHandler -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.shamrock.remote.service.data.UserDetail import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher import moe.fuqiuluo.symbols.OneBotHandler -import mqq.app.MobileQQ @OneBotHandler("get_self_info") internal object GetSelfInfo: IActionHandler() { diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetStatus.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetStatus.kt index 454952b..b552483 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetStatus.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetStatus.kt @@ -2,13 +2,12 @@ package moe.fuqiuluo.shamrock.remote.action.handlers import moe.fuqiuluo.shamrock.remote.action.IActionHandler import moe.fuqiuluo.shamrock.remote.action.ActionSession -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.shamrock.remote.service.data.BotStatus import moe.fuqiuluo.shamrock.remote.service.data.Self import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher import moe.fuqiuluo.symbols.OneBotHandler -import mqq.app.MobileQQ @OneBotHandler("get_status", ["status"]) internal object GetStatus: IActionHandler() { diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetSupportedActions.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetSupportedActions.kt index d6d42e7..bd5c9c7 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetSupportedActions.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetSupportedActions.kt @@ -3,8 +3,8 @@ package moe.fuqiuluo.shamrock.remote.action.handlers import moe.fuqiuluo.shamrock.remote.action.ActionManager import moe.fuqiuluo.shamrock.remote.action.IActionHandler import moe.fuqiuluo.shamrock.remote.action.ActionSession -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.symbols.OneBotHandler @OneBotHandler("get_supported_actions") diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetUid.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetUid.kt index bc02af0..eb2ddef 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetUid.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetUid.kt @@ -3,8 +3,8 @@ package moe.fuqiuluo.shamrock.remote.action.handlers import kotlinx.coroutines.suspendCancellableCoroutine import moe.fuqiuluo.shamrock.remote.action.ActionSession import moe.fuqiuluo.shamrock.remote.action.IActionHandler -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.shamrock.tools.asString import moe.fuqiuluo.shamrock.xposed.helper.NTServiceFetcher import moe.fuqiuluo.symbols.OneBotHandler diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetUinByUid.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetUinByUid.kt index bab283d..5bdaf3b 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetUinByUid.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetUinByUid.kt @@ -3,8 +3,8 @@ package moe.fuqiuluo.shamrock.remote.action.handlers import kotlinx.coroutines.suspendCancellableCoroutine import moe.fuqiuluo.shamrock.remote.action.ActionSession import moe.fuqiuluo.shamrock.remote.action.IActionHandler -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.shamrock.tools.asString import moe.fuqiuluo.shamrock.xposed.helper.NTServiceFetcher import moe.fuqiuluo.symbols.OneBotHandler diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/TestHandler.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/TestHandler.kt index 2cdcbea..50b2a6b 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/TestHandler.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/TestHandler.kt @@ -4,8 +4,8 @@ import kotlinx.serialization.Serializable import moe.fuqiuluo.shamrock.remote.action.IActionHandler import moe.fuqiuluo.shamrock.remote.action.ActionSession import de.robv.android.xposed.XposedBridge.log -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.symbols.OneBotHandler @OneBotHandler("test") diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/BDHWorker.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/BDHWorker.kt index 00ec58f..34d55b7 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/BDHWorker.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/BDHWorker.kt @@ -5,7 +5,7 @@ import com.tencent.mobileqq.transfile.TransferRequest import com.tencent.mobileqq.transfile.api.ITransFileController import io.ktor.server.routing.Routing import io.ktor.server.routing.post -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.fetchPost import moe.fuqiuluo.shamrock.tools.respond import moe.fuqiuluo.shamrock.utils.MD5 diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GenerateQSign.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GenerateQSign.kt index fc6d11e..ff7af36 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GenerateQSign.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GenerateQSign.kt @@ -27,7 +27,7 @@ import kotlinx.io.core.BytePacketBuilder import kotlinx.io.core.readBytes import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonElement -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.EMPTY_BYTE_ARRAY import moe.fuqiuluo.shamrock.tools.EmptyJsonObject import moe.fuqiuluo.shamrock.tools.fetchGetOrThrow diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GetFrameworkInfo.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GetFrameworkInfo.kt index 7a33ab4..1e6fa68 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GetFrameworkInfo.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GetFrameworkInfo.kt @@ -3,7 +3,7 @@ package moe.fuqiuluo.shamrock.remote.api import io.ktor.server.routing.Routing import io.ktor.server.routing.get import kotlinx.coroutines.delay -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.getOrPost import moe.fuqiuluo.shamrock.tools.respond import moe.fuqiuluo.shamrock.helper.LogCenter diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GuildAction.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GuildAction.kt index ae65a00..923475b 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GuildAction.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/GuildAction.kt @@ -1,21 +1,14 @@ package moe.fuqiuluo.shamrock.remote.api import com.tencent.mobileqq.qqguildsdk.api.IGPSService -import com.tencent.qqnt.kernel.nativeinterface.GProRetentionGuildListRsp -import com.tencent.qqnt.kernel.nativeinterface.IGProFetchRetentionGuildListCallback -import com.tencent.qqnt.kernel.nativeinterface.IKernelGuildListener import io.ktor.server.application.call import io.ktor.server.response.respondText import io.ktor.server.routing.Routing -import moe.fuqiuluo.shamrock.helper.Level -import moe.fuqiuluo.shamrock.helper.LogCenter -import moe.fuqiuluo.shamrock.remote.entries.EmptyObject -import moe.fuqiuluo.shamrock.remote.service.listener.KernelGuildListener +import moe.fuqiuluo.shamrock.remote.structures.EmptyObject import moe.fuqiuluo.shamrock.tools.getOrPost import moe.fuqiuluo.shamrock.tools.respond import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher import moe.fuqiuluo.shamrock.xposed.helper.NTServiceFetcher -import mqq.app.MobileQQ fun Routing.guildAction() { getOrPost("/get_guild_service_profile") { diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/MainRoute.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/MainRoute.kt index a268a15..59c4645 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/MainRoute.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/MainRoute.kt @@ -19,9 +19,9 @@ import moe.fuqiuluo.shamrock.remote.HTTPServer import moe.fuqiuluo.shamrock.remote.action.ActionManager import moe.fuqiuluo.shamrock.remote.action.ActionSession import moe.fuqiuluo.shamrock.remote.config.ECHO_KEY -import moe.fuqiuluo.shamrock.remote.entries.EmptyObject -import moe.fuqiuluo.shamrock.remote.entries.IndexData -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.EmptyObject +import moe.fuqiuluo.shamrock.remote.structures.IndexData +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.EmptyJsonObject import moe.fuqiuluo.shamrock.tools.EmptyJsonString import moe.fuqiuluo.shamrock.tools.asJsonObjectOrNull @@ -30,12 +30,9 @@ import moe.fuqiuluo.shamrock.tools.fetchOrNull import moe.fuqiuluo.shamrock.tools.fetchOrThrow import moe.fuqiuluo.shamrock.tools.fetchPostJsonElement import moe.fuqiuluo.shamrock.tools.fetchPostJsonElementOrNull -import moe.fuqiuluo.shamrock.tools.fetchPostJsonObject import moe.fuqiuluo.shamrock.tools.fetchPostJsonObjectOrNull import moe.fuqiuluo.shamrock.tools.isJsonArray -import moe.fuqiuluo.shamrock.tools.isJsonData import moe.fuqiuluo.shamrock.tools.isJsonObject -import moe.fuqiuluo.shamrock.tools.isJsonString import moe.fuqiuluo.shamrock.tools.json import moe.fuqiuluo.shamrock.tools.respond import moe.fuqiuluo.shamrock.utils.PlatformUtils diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/MessageAction.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/MessageAction.kt index ebfb568..430ac8e 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/MessageAction.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/MessageAction.kt @@ -11,7 +11,7 @@ import io.ktor.server.routing.post import io.ktor.server.routing.route import moe.fuqiuluo.shamrock.helper.db.MessageDB import moe.fuqiuluo.shamrock.remote.action.handlers.* -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.fetchGetOrNull import moe.fuqiuluo.shamrock.tools.fetchGetOrThrow import moe.fuqiuluo.shamrock.tools.fetchOrNull diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/OtherAction.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/OtherAction.kt index 995a90c..d551a8f 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/OtherAction.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/OtherAction.kt @@ -4,7 +4,6 @@ import io.ktor.http.ContentType import io.ktor.http.content.PartData import io.ktor.http.content.forEachPart import io.ktor.http.content.streamProvider -import io.ktor.server.application.Application import io.ktor.server.application.call import io.ktor.server.request.receiveMultipart import io.ktor.server.response.respondText @@ -12,7 +11,6 @@ import io.ktor.server.routing.Routing import io.ktor.server.routing.post import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import kotlinx.coroutines.withTimeout import kotlinx.coroutines.withTimeoutOrNull import kotlinx.serialization.json.JsonObject import moe.fuqiuluo.shamrock.remote.action.handlers.CleanCache @@ -20,7 +18,7 @@ import moe.fuqiuluo.shamrock.remote.action.handlers.DownloadFile import moe.fuqiuluo.shamrock.remote.action.handlers.GetDeviceBattery import moe.fuqiuluo.shamrock.remote.action.handlers.GetVersionInfo import moe.fuqiuluo.shamrock.remote.action.handlers.RestartMe -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.remote.service.config.ShamrockConfig import moe.fuqiuluo.shamrock.tools.asString import moe.fuqiuluo.shamrock.tools.fetchOrNull @@ -33,7 +31,6 @@ import moe.fuqiuluo.shamrock.tools.respond import moe.fuqiuluo.shamrock.utils.FileUtils import moe.fuqiuluo.shamrock.utils.MD5 import java.io.File -import java.util.concurrent.TimeUnit fun Routing.otherAction() { diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/ProfileAction.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/ProfileAction.kt index 5d7f6c2..0d148e7 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/ProfileAction.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/ProfileAction.kt @@ -9,9 +9,9 @@ import io.ktor.server.routing.Routing import moe.fuqiuluo.shamrock.remote.action.ActionManager import moe.fuqiuluo.shamrock.remote.action.ActionSession import moe.fuqiuluo.shamrock.remote.action.handlers.GetLoginInfo -import moe.fuqiuluo.shamrock.remote.entries.CommonResult -import moe.fuqiuluo.shamrock.remote.entries.CurrentAccount -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.CommonResult +import moe.fuqiuluo.shamrock.remote.structures.CurrentAccount +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.* import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher import mqq.app.MobileQQ diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/ProtocolAction.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/ProtocolAction.kt index 07dc8f4..60e29a9 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/ProtocolAction.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/ProtocolAction.kt @@ -3,9 +3,9 @@ package moe.fuqiuluo.shamrock.remote.api import com.tencent.mobileqq.dt.model.FEBound import io.ktor.server.routing.Routing import moe.fuqiuluo.qqinterface.servlet.BaseSvc -import moe.fuqiuluo.shamrock.remote.entries.Protocol -import moe.fuqiuluo.shamrock.remote.entries.QSignDtConfig -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.Protocol +import moe.fuqiuluo.shamrock.remote.structures.QSignDtConfig +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.* import moe.fuqiuluo.shamrock.utils.MMKVFetcher import moe.fuqiuluo.shamrock.utils.PlatformUtils diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/TicketAction.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/TicketAction.kt index a44c923..e14b229 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/TicketAction.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/api/TicketAction.kt @@ -6,7 +6,7 @@ import io.ktor.server.application.call import io.ktor.server.response.respondText import io.ktor.server.routing.Routing import moe.fuqiuluo.shamrock.remote.action.handlers.* -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.Status import moe.fuqiuluo.shamrock.tools.* fun Routing.ticketActions() { diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/config/StatusPages.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/config/StatusPages.kt index 923a7bc..18b0312 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/config/StatusPages.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/config/StatusPages.kt @@ -12,9 +12,9 @@ import io.ktor.util.AttributeKey import kotlinx.serialization.json.JsonElement import moe.fuqiuluo.shamrock.helper.Level import moe.fuqiuluo.shamrock.helper.LogCenter -import moe.fuqiuluo.shamrock.remote.entries.CommonResult -import moe.fuqiuluo.shamrock.remote.entries.ErrorCatch -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.CommonResult +import moe.fuqiuluo.shamrock.remote.structures.ErrorCatch +import moe.fuqiuluo.shamrock.remote.structures.Status val ECHO_KEY = AttributeKey("echo") @@ -24,46 +24,54 @@ fun Application.statusPages() { val echo = if (call.attributes.contains(ECHO_KEY)) { call.attributes[ECHO_KEY] } else null - call.respond(CommonResult( + call.respond( + CommonResult( status = "failed", retcode = Status.BadParam.code, data = ErrorCatch(call.request.uri, cause.message ?: ""), echo = echo - )) + ) + ) } exception { call, cause -> val echo = if (call.attributes.contains(ECHO_KEY)) { call.attributes[ECHO_KEY] } else null - call.respond(CommonResult( + call.respond( + CommonResult( status = "failed", retcode = Status.LogicError.code, data = ErrorCatch(call.request.uri, cause.message ?: ""), echo = echo - )) + ) + ) } exception { call, cause -> val echo = if (call.attributes.contains(ECHO_KEY)) { call.attributes[ECHO_KEY] } else null - call.respond(CommonResult( + call.respond( + CommonResult( status = "failed", retcode = Status.ErrorToken.code, data = ErrorCatch(call.request.uri, cause.message ?: ""), echo = echo - )) + ) + ) } exception { call, cause -> val echo = if (call.attributes.contains(ECHO_KEY)) { call.attributes[ECHO_KEY] } else null LogCenter.log(cause.stackTraceToString(), Level.ERROR) - call.respond(CommonResult( + call.respond( + CommonResult( status = "failed", retcode = Status.InternalHandlerError.code, data = ErrorCatch(call.request.uri, cause.message ?: ""), echo = echo - )) + ) + ) } } } \ No newline at end of file diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/HttpService.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/HttpService.kt index 3de110a..2083442 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/HttpService.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/HttpService.kt @@ -7,9 +7,6 @@ import com.tencent.qqnt.kernel.nativeinterface.MsgRecord import moe.fuqiuluo.qqinterface.servlet.GroupSvc import moe.fuqiuluo.qqinterface.servlet.MsgSvc import io.ktor.client.statement.bodyAsText -import io.ktor.http.ContentType -import io.ktor.server.application.call -import io.ktor.server.response.respondText import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job @@ -19,18 +16,13 @@ import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive -import moe.fuqiuluo.qqinterface.servlet.msg.* import moe.fuqiuluo.shamrock.remote.service.api.HttpTransmitServlet -import moe.fuqiuluo.shamrock.remote.service.data.push.* import moe.fuqiuluo.shamrock.tools.* import moe.fuqiuluo.shamrock.helper.Level import moe.fuqiuluo.shamrock.helper.LogCenter import moe.fuqiuluo.shamrock.remote.action.ActionManager import moe.fuqiuluo.shamrock.remote.action.ActionSession import moe.fuqiuluo.shamrock.remote.action.handlers.QuickOperation.quicklyReply -import moe.fuqiuluo.shamrock.remote.config.ECHO_KEY -import moe.fuqiuluo.shamrock.remote.entries.EmptyObject -import moe.fuqiuluo.shamrock.remote.entries.Status import moe.fuqiuluo.shamrock.remote.service.api.GlobalEventTransmitter internal object HttpService: HttpTransmitServlet() { diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/WebSocketClientServlet.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/WebSocketClientServlet.kt index 1f82cea..dfce765 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/WebSocketClientServlet.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/WebSocketClientServlet.kt @@ -2,10 +2,8 @@ package moe.fuqiuluo.shamrock.remote.service.api -import io.ktor.client.statement.bodyAsText import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock @@ -13,14 +11,13 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import moe.fuqiuluo.shamrock.remote.action.ActionManager import moe.fuqiuluo.shamrock.remote.action.ActionSession -import moe.fuqiuluo.shamrock.remote.entries.EmptyObject -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.EmptyObject +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.shamrock.remote.service.config.ShamrockConfig import moe.fuqiuluo.shamrock.tools.* import moe.fuqiuluo.shamrock.helper.Level import moe.fuqiuluo.shamrock.helper.LogCenter -import moe.fuqiuluo.shamrock.remote.service.HttpService import moe.fuqiuluo.shamrock.remote.service.data.BotStatus import moe.fuqiuluo.shamrock.remote.service.data.Self import moe.fuqiuluo.shamrock.remote.service.data.push.MetaEventType diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/WebSocketTransmitServlet.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/WebSocketTransmitServlet.kt index 19a15e7..369befa 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/WebSocketTransmitServlet.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/api/WebSocketTransmitServlet.kt @@ -11,9 +11,9 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import moe.fuqiuluo.shamrock.remote.action.ActionManager import moe.fuqiuluo.shamrock.remote.action.ActionSession -import moe.fuqiuluo.shamrock.remote.entries.EmptyObject -import moe.fuqiuluo.shamrock.remote.entries.Status -import moe.fuqiuluo.shamrock.remote.entries.resultToString +import moe.fuqiuluo.shamrock.remote.structures.EmptyObject +import moe.fuqiuluo.shamrock.remote.structures.Status +import moe.fuqiuluo.shamrock.remote.structures.resultToString import moe.fuqiuluo.shamrock.remote.service.config.ShamrockConfig import moe.fuqiuluo.shamrock.remote.service.data.BotStatus import moe.fuqiuluo.shamrock.remote.service.data.Self diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/CommonResult.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/CommonResult.kt similarity index 89% rename from xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/CommonResult.kt rename to xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/CommonResult.kt index 7a4717d..89ece55 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/CommonResult.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/CommonResult.kt @@ -1,12 +1,10 @@ -package moe.fuqiuluo.shamrock.remote.entries +package moe.fuqiuluo.shamrock.remote.structures import kotlinx.serialization.Contextual import kotlinx.serialization.Serializable import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonElement -import moe.fuqiuluo.shamrock.remote.service.config.ShamrockConfig -import moe.fuqiuluo.shamrock.tools.json enum class Status( val code: Int diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/CurrentAccount.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/CurrentAccount.kt similarity index 87% rename from xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/CurrentAccount.kt rename to xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/CurrentAccount.kt index 9d29700..f62c34b 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/CurrentAccount.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/CurrentAccount.kt @@ -1,4 +1,4 @@ -package moe.fuqiuluo.shamrock.remote.entries +package moe.fuqiuluo.shamrock.remote.structures import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/ErrorCatch.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/ErrorCatch.kt similarity index 72% rename from xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/ErrorCatch.kt rename to xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/ErrorCatch.kt index 6435d75..add48fd 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/ErrorCatch.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/ErrorCatch.kt @@ -1,4 +1,4 @@ -package moe.fuqiuluo.shamrock.remote.entries +package moe.fuqiuluo.shamrock.remote.structures import kotlinx.serialization.Serializable diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/IndexData.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/IndexData.kt similarity index 82% rename from xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/IndexData.kt rename to xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/IndexData.kt index 390c16f..6f15f9b 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/IndexData.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/IndexData.kt @@ -1,4 +1,4 @@ -package moe.fuqiuluo.shamrock.remote.entries +package moe.fuqiuluo.shamrock.remote.structures import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/Protocol.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/Protocol.kt similarity index 93% rename from xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/Protocol.kt rename to xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/Protocol.kt index 6161125..b660b46 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/entries/Protocol.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/structures/Protocol.kt @@ -1,4 +1,4 @@ -package moe.fuqiuluo.shamrock.remote.entries +package moe.fuqiuluo.shamrock.remote.structures import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/tools/KtorServer.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/tools/KtorServer.kt index 51099de..a88d101 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/tools/KtorServer.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/tools/KtorServer.kt @@ -24,9 +24,9 @@ import io.ktor.http.parseUrlEncodedParameters import io.ktor.server.request.httpMethod import io.ktor.server.routing.route import kotlinx.serialization.json.JsonElement -import moe.fuqiuluo.shamrock.remote.entries.CommonResult -import moe.fuqiuluo.shamrock.remote.entries.EmptyObject -import moe.fuqiuluo.shamrock.remote.entries.Status +import moe.fuqiuluo.shamrock.remote.structures.CommonResult +import moe.fuqiuluo.shamrock.remote.structures.EmptyObject +import moe.fuqiuluo.shamrock.remote.structures.Status @DslMarker @Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS, AnnotationTarget.TYPEALIAS, AnnotationTarget.TYPE) @@ -316,13 +316,15 @@ internal suspend inline fun PipelineContext.respond( msg: String = "", echo: JsonElement = EmptyJsonString ) { - call.respond(CommonResult( + call.respond( + CommonResult( if (isOk) "ok" else "failed", code.code, EmptyObject, msg, echo - )) + ) + ) } @ShamrockDsl @@ -333,13 +335,15 @@ internal suspend inline fun PipelineContext PipelineContext>( - InitRemoteService::class, // 创建HTTP API - NoBackGround::class, // 反QQ后台模式 - GuidLock::class, - ListenShamrockUpdate::class - ) - - // 先从APP拉取配置文件,再执行其他操作 - fun runFirst(ctx: Context) { - kotlin.runCatching { - ACTION_FIRST_LIST.forEach { - val action = it.createInstance() - action.invoke(ctx) - } - }.onFailure { - XposedBridge.log(it) - } - } - - fun runService(ctx: Context) { - ACTION_LIST.forEach { - if (it.java != DataReceiver::class.java) { - val action = it.createInstance() as IAction - action.invoke(ctx) - } - } - } -} \ No newline at end of file