package com.unitreactnativecomponents.nativeModules.security import java.io.File import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod class UNSecurityHelperModule(var reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { @ReactMethod fun isDeviceJailbroke(promise: Promise) { promise.resolve(findBinary("su")) } // https://stackoverflow.com/a/23953248 private fun findBinary(binaryName: String): Boolean { var found = false val places = arrayOf( "/sbin/", "/system/bin/", "/system/xbin/", "/data/local/xbin/", "/data/local/bin/", "/system/sd/xbin/", "/system/bin/failsafe/", "/data/local/" ) for (where in places) { if (File(where + binaryName).exists()) { found = true break } } return found } override fun getName() = MODULE_NAME companion object { const val MODULE_NAME = "UNSecurityHelperModule" } }