|
|
@@ -0,0 +1,41 @@
|
|
|
+/*******************************************************************************
|
|
|
+ * *
|
|
|
+ * Copyright (C) 2019 by Max Lv <[email protected]> *
|
|
|
+ * Copyright (C) 2019 by Mygod Studio <[email protected]> *
|
|
|
+ * *
|
|
|
+ * This program is free software: you can redistribute it and/or modify *
|
|
|
+ * it under the terms of the GNU General Public License as published by *
|
|
|
+ * the Free Software Foundation, either version 3 of the License, or *
|
|
|
+ * (at your option) any later version. *
|
|
|
+ * *
|
|
|
+ * This program is distributed in the hope that it will be useful, *
|
|
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
|
+ * GNU General Public License for more details. *
|
|
|
+ * *
|
|
|
+ * You should have received a copy of the GNU General Public License *
|
|
|
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
|
|
+ * *
|
|
|
+ *******************************************************************************/
|
|
|
+
|
|
|
+package io.nekohasekai.sagernet.plugin.xray
|
|
|
+
|
|
|
+import android.net.Uri
|
|
|
+import android.os.ParcelFileDescriptor
|
|
|
+import io.nekohasekai.sagernet.plugin.NativePluginProvider
|
|
|
+import io.nekohasekai.sagernet.plugin.PathProvider
|
|
|
+import java.io.File
|
|
|
+import java.io.FileNotFoundException
|
|
|
+
|
|
|
+class BinaryProvider : NativePluginProvider() {
|
|
|
+ override fun populateFiles(provider: PathProvider) {
|
|
|
+ provider.addPath("xray", 0b111101101)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun getExecutable() = context!!.applicationInfo.nativeLibraryDir + "/libxrayexec.so"
|
|
|
+ override fun openFile(uri: Uri): ParcelFileDescriptor = when (uri.path) {
|
|
|
+ "/xray" -> ParcelFileDescriptor.open(File(getExecutable()),
|
|
|
+ ParcelFileDescriptor.MODE_READ_ONLY)
|
|
|
+ else -> throw FileNotFoundException()
|
|
|
+ }
|
|
|
+}
|