@@ -4,6 +4,7 @@ import android.os.Build
44import android.os.Handler
55import android.os.HandlerThread
66import android.os.Looper
7+ import android.util.Log
78import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo
89import com.aheaditec.talsec_security.security.api.Talsec
910import com.aheaditec.talsec_security.security.api.TalsecConfig
@@ -18,6 +19,9 @@ import com.facebook.react.bridge.ReadableMap
1819import com.facebook.react.bridge.UiThreadUtil.runOnUiThread
1920import com.facebook.react.bridge.WritableArray
2021import com.facebook.react.modules.core.DeviceEventManagerModule
22+ import com.freeraspreactnative.events.BaseRaspEvent
23+ import com.freeraspreactnative.events.RaspExecutionStateEvent
24+ import com.freeraspreactnative.events.ThreatEvent
2125import com.freeraspreactnative.utils.Utils
2226import com.freeraspreactnative.utils.getArraySafe
2327import com.freeraspreactnative.utils.getBooleanSafe
@@ -29,7 +33,7 @@ import com.freeraspreactnative.utils.toEncodedWritableArray
2933class FreeraspReactNativeModule (private val reactContext : ReactApplicationContext ) :
3034 ReactContextBaseJavaModule (reactContext) {
3135
32- private val listener = ThreatListener (FreeraspThreatHandler , FreeraspThreatHandler )
36+ private val listener = ThreatListener (FreeraspThreatHandler , FreeraspThreatHandler , FreeraspThreatHandler )
3337 private val lifecycleListener = object : LifecycleEventListener {
3438 override fun onHostResume () {
3539 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .UPSIDE_DOWN_CAKE ) {
@@ -90,19 +94,39 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
9094 */
9195 @ReactMethod
9296 fun getThreatIdentifiers (promise : Promise ) {
93- promise.resolve(Threat .getThreatValues() )
97+ promise.resolve(ThreatEvent . ALL_EVENTS )
9498 }
9599
96100 /* *
97- * Method to setup the message passing between native and React Native
101+ * Method to get the random identifiers of callbacks
102+ */
103+ @ReactMethod
104+ fun getRaspExecutionStateIdentifiers (promise : Promise ) {
105+ promise.resolve(RaspExecutionStateEvent .ALL_EVENTS )
106+ }
107+
108+ /* *
109+ * Method to setup the threat message passing between native and React Native
98110 * @return list of [THREAT_CHANNEL_NAME, THREAT_CHANNEL_KEY]
99111 */
100112 @ReactMethod
101113 fun getThreatChannelData (promise : Promise ) {
102114 val channelData: WritableArray = Arguments .createArray()
103- channelData.pushString(THREAT_CHANNEL_NAME )
104- channelData.pushString(THREAT_CHANNEL_KEY )
105- channelData.pushString(MALWARE_CHANNEL_KEY )
115+ channelData.pushString(ThreatEvent .CHANNEL_NAME )
116+ channelData.pushString(ThreatEvent .CHANNEL_KEY )
117+ channelData.pushString(ThreatEvent .MALWARE_CHANNEL_KEY )
118+ promise.resolve(channelData)
119+ }
120+
121+ /* *
122+ * Method to setup the execution state message passing between native and React Native
123+ * @return list of [THREAT_CHANNEL_NAME, THREAT_CHANNEL_KEY]
124+ */
125+ @ReactMethod
126+ fun getRaspExecutionStateChannelData (promise : Promise ) {
127+ val channelData: WritableArray = Arguments .createArray()
128+ channelData.pushString(RaspExecutionStateEvent .CHANNEL_NAME )
129+ channelData.pushString(RaspExecutionStateEvent .CHANNEL_KEY )
106130 promise.resolve(channelData)
107131 }
108132
@@ -223,12 +247,6 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
223247
224248 companion object {
225249 const val NAME = " FreeraspReactNative"
226- private val THREAT_CHANNEL_NAME = (10000 .. 999999999 ).random()
227- .toString() // name of the channel over which threat callbacks are sent
228- private val THREAT_CHANNEL_KEY = (10000 .. 999999999 ).random()
229- .toString() // key of the argument map under which threats are expected
230- private val MALWARE_CHANNEL_KEY = (10000 .. 999999999 ).random()
231- .toString() // key of the argument map under which malware data is expected
232250
233251 private val backgroundHandlerThread = HandlerThread (" BackgroundThread" ).apply { start() }
234252 private val backgroundHandler = Handler (backgroundHandlerThread.looper)
@@ -238,11 +256,11 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
238256
239257 internal var talsecStarted = false
240258
241- private fun notifyListeners ( threat : Threat ) {
259+ private fun notifyEvent ( event : BaseRaspEvent ) {
242260 val params = Arguments .createMap()
243- params.putInt(THREAT_CHANNEL_KEY , threat .value)
261+ params.putInt(event.channelKey, event .value)
244262 appReactContext.getJSModule(DeviceEventManagerModule .RCTDeviceEventEmitter ::class .java)
245- .emit(THREAT_CHANNEL_NAME , params)
263+ .emit(event.channelName , params)
246264 }
247265
248266 /* *
@@ -256,25 +274,29 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
256274
257275 mainHandler.post {
258276 val params = Arguments .createMap()
259- params.putInt(THREAT_CHANNEL_KEY , Threat .Malware .value)
277+ params.putInt(ThreatEvent . CHANNEL_KEY , ThreatEvent .Malware .value)
260278 params.putArray(
261- MALWARE_CHANNEL_KEY , encodedSuspiciousApps
279+ ThreatEvent . MALWARE_CHANNEL_KEY , encodedSuspiciousApps
262280 )
263281
264282 appReactContext.getJSModule(DeviceEventManagerModule .RCTDeviceEventEmitter ::class .java)
265- .emit(THREAT_CHANNEL_NAME , params)
283+ .emit(ThreatEvent . CHANNEL_NAME , params)
266284 }
267285 }
268286 }
269287 }
270288
271289 internal object ThreatListener : FreeraspThreatHandler.TalsecReactNative {
272- override fun threatDetected (threatType : Threat ) {
273- notifyListeners(threatType )
290+ override fun threatDetected (threatEventType : ThreatEvent ) {
291+ notifyEvent(threatEventType )
274292 }
275293
276294 override fun malwareDetected (suspiciousApps : MutableList <SuspiciousAppInfo >) {
277295 notifyMalware(suspiciousApps)
278296 }
297+
298+ override fun raspExecutionStateChanged (event : RaspExecutionStateEvent ) {
299+ notifyEvent(event)
300+ }
279301 }
280302}
0 commit comments