freerasp-react-native 4.3.2 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -1
- package/android/build.gradle +8 -2
- package/android/gradle.properties +2 -2
- package/android/src/main/java/com/freeraspreactnative/FreeraspReactNativeModule.kt +61 -22
- package/android/src/main/java/com/freeraspreactnative/PluginThreatHandler.kt +121 -0
- package/android/src/main/java/com/freeraspreactnative/dispatchers/ExecutionStateDispatcher.kt +38 -0
- package/android/src/main/java/com/freeraspreactnative/dispatchers/ThreatDispatcher.kt +61 -0
- package/android/src/main/java/com/freeraspreactnative/events/ThreatEvent.kt +3 -1
- package/android/src/main/java/com/freeraspreactnative/interfaces/PluginExecutionStateListener.kt +7 -0
- package/android/src/main/java/com/freeraspreactnative/interfaces/PluginThreatListener.kt +9 -0
- package/example/src/App.tsx +10 -0
- package/example/src/DemoApp.tsx +32 -0
- package/example/src/checks.ts +1 -0
- package/freerasp-react-native.podspec +5 -1
- package/ios/FreeraspReactNative.m +5 -0
- package/ios/FreeraspReactNative.swift +39 -10
- package/ios/dispatchers/ExecutionStateDispatcher.swift +35 -0
- package/ios/dispatchers/ThreatDispatcher.swift +36 -0
- package/lib/commonjs/api/listeners/raspExecutionState.js +28 -8
- package/lib/commonjs/api/listeners/raspExecutionState.js.map +1 -1
- package/lib/commonjs/api/listeners/threat.js +34 -10
- package/lib/commonjs/api/listeners/threat.js.map +1 -1
- package/lib/commonjs/api/methods/native.js +9 -1
- package/lib/commonjs/api/methods/native.js.map +1 -1
- package/lib/commonjs/api/methods/reactNative.js +13 -8
- package/lib/commonjs/api/methods/reactNative.js.map +1 -1
- package/lib/commonjs/channels/threat.js +1 -3
- package/lib/commonjs/channels/threat.js.map +1 -1
- package/lib/commonjs/models/threat.js +2 -1
- package/lib/commonjs/models/threat.js.map +1 -1
- package/lib/module/api/listeners/raspExecutionState.js +29 -9
- package/lib/module/api/listeners/raspExecutionState.js.map +1 -1
- package/lib/module/api/listeners/threat.js +35 -11
- package/lib/module/api/listeners/threat.js.map +1 -1
- package/lib/module/api/methods/native.js +6 -0
- package/lib/module/api/methods/native.js.map +1 -1
- package/lib/module/api/methods/reactNative.js +13 -7
- package/lib/module/api/methods/reactNative.js.map +1 -1
- package/lib/module/channels/threat.js +1 -3
- package/lib/module/channels/threat.js.map +1 -1
- package/lib/module/models/threat.js +2 -1
- package/lib/module/models/threat.js.map +1 -1
- package/lib/typescript/src/api/listeners/raspExecutionState.d.ts +1 -1
- package/lib/typescript/src/api/listeners/raspExecutionState.d.ts.map +1 -1
- package/lib/typescript/src/api/listeners/threat.d.ts +1 -1
- package/lib/typescript/src/api/listeners/threat.d.ts.map +1 -1
- package/lib/typescript/src/api/methods/native.d.ts +2 -0
- package/lib/typescript/src/api/methods/native.d.ts.map +1 -1
- package/lib/typescript/src/api/methods/reactNative.d.ts.map +1 -1
- package/lib/typescript/src/channels/threat.d.ts.map +1 -1
- package/lib/typescript/src/models/threat.d.ts +1 -0
- package/lib/typescript/src/models/threat.d.ts.map +1 -1
- package/lib/typescript/src/types/types.d.ts +1 -0
- package/lib/typescript/src/types/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api/listeners/raspExecutionState.ts +39 -11
- package/src/api/listeners/threat.ts +41 -10
- package/src/api/methods/native.ts +8 -0
- package/src/api/methods/reactNative.ts +17 -8
- package/src/channels/threat.ts +1 -3
- package/src/models/threat.ts +2 -0
- package/src/types/types.ts +1 -0
- package/android/src/main/java/com/freeraspreactnative/FreeraspThreatHandler.kt +0 -103
|
@@ -11,6 +11,30 @@ class FreeraspReactNative: RCTEventEmitter {
|
|
|
11
11
|
FreeraspReactNative.shared = self
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
@objc(addListener:)
|
|
15
|
+
override func addListener(_ eventName: String!) {
|
|
16
|
+
super.addListener(eventName)
|
|
17
|
+
if eventName == EventIdentifiers.threatChannelName {
|
|
18
|
+
ThreatDispatcher.shared.listener = { [weak self] threat in
|
|
19
|
+
self?.dispatchThreatEvent(threat: threat)
|
|
20
|
+
}
|
|
21
|
+
} else if eventName == EventIdentifiers.raspExecutionStateChannelName {
|
|
22
|
+
ExecutionStateDispatcher.shared.listener = { [weak self] event in
|
|
23
|
+
self?.dispatchRaspExecutionStateEvent(event: event)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@objc(removeListenerForEvent:withResolver:withRejecter:)
|
|
29
|
+
func removeListenerForEvent(eventName: String, resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
|
|
30
|
+
if eventName == EventIdentifiers.threatChannelName {
|
|
31
|
+
ThreatDispatcher.shared.listener = nil
|
|
32
|
+
} else if eventName == EventIdentifiers.raspExecutionStateChannelName {
|
|
33
|
+
ExecutionStateDispatcher.shared.listener = nil
|
|
34
|
+
}
|
|
35
|
+
resolve("Listener unregistered")
|
|
36
|
+
}
|
|
37
|
+
|
|
14
38
|
@objc(talsecStart:withResolver:withRejecter:)
|
|
15
39
|
func talsecStart(options: NSDictionary, resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
|
|
16
40
|
do {
|
|
@@ -72,12 +96,18 @@ class FreeraspReactNative: RCTEventEmitter {
|
|
|
72
96
|
resolve("OK - Store external ID")
|
|
73
97
|
}
|
|
74
98
|
|
|
99
|
+
@objc(removeExternalId:withRejecter:)
|
|
100
|
+
private func removeExternalId(resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
|
|
101
|
+
UserDefaults.standard.removeObject(forKey: "app.talsec.externalid")
|
|
102
|
+
resolve("OK - External ID removed")
|
|
103
|
+
}
|
|
104
|
+
|
|
75
105
|
/**
|
|
76
106
|
* Method to setup the message passing between native and React Native
|
|
77
107
|
*/
|
|
78
108
|
@objc(getThreatChannelData:withRejecter:)
|
|
79
109
|
private func getThreatChannelData(resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
|
|
80
|
-
resolve([EventIdentifiers.threatChannelName, EventIdentifiers.threatChannelKey])
|
|
110
|
+
resolve([EventIdentifiers.threatChannelName, EventIdentifiers.threatChannelKey, "0"])
|
|
81
111
|
}
|
|
82
112
|
|
|
83
113
|
/**
|
|
@@ -88,16 +118,16 @@ class FreeraspReactNative: RCTEventEmitter {
|
|
|
88
118
|
resolve([EventIdentifiers.raspExecutionStateChannelName, EventIdentifiers.raspExecutionStateChannelKey])
|
|
89
119
|
}
|
|
90
120
|
|
|
91
|
-
func
|
|
121
|
+
func dispatchThreatEvent(threat: SecurityThreat) {
|
|
92
122
|
FreeraspReactNative.shared!.sendEvent(withName: EventIdentifiers.threatChannelName, body: [
|
|
93
|
-
|
|
123
|
+
EventIdentifiers.threatChannelKey: threat.callbackIdentifier
|
|
94
124
|
])
|
|
95
125
|
}
|
|
96
126
|
|
|
97
|
-
func dispatchRaspExecutionStateEvent(event: RaspExecutionStates)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
127
|
+
func dispatchRaspExecutionStateEvent(event: RaspExecutionStates) {
|
|
128
|
+
FreeraspReactNative.shared!.sendEvent(withName: EventIdentifiers.raspExecutionStateChannelName, body: [
|
|
129
|
+
EventIdentifiers.raspExecutionStateChannelKey: event.callbackIdentifier,
|
|
130
|
+
])
|
|
101
131
|
}
|
|
102
132
|
|
|
103
133
|
/**
|
|
@@ -139,12 +169,11 @@ extension SecurityThreatCenter: @retroactive SecurityThreatHandler, @retroactive
|
|
|
139
169
|
if (securityThreat.rawValue == "passcodeChange") {
|
|
140
170
|
return
|
|
141
171
|
}
|
|
142
|
-
|
|
172
|
+
ThreatDispatcher.shared.dispatch(threat: securityThreat)
|
|
143
173
|
}
|
|
144
174
|
|
|
145
175
|
public func onAllChecksFinished() {
|
|
146
|
-
|
|
147
|
-
FreeraspReactNative.shared!.dispatchRaspExecutionStateEvent(event: RaspExecutionStates.allChecksFinished)
|
|
176
|
+
ExecutionStateDispatcher.shared.dispatch(event: RaspExecutionStates.allChecksFinished)
|
|
148
177
|
}
|
|
149
178
|
}
|
|
150
179
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
class ExecutionStateDispatcher {
|
|
4
|
+
static let shared = ExecutionStateDispatcher()
|
|
5
|
+
private var cache: Set<RaspExecutionStates> = []
|
|
6
|
+
private let lock = NSLock()
|
|
7
|
+
|
|
8
|
+
var listener: ((RaspExecutionStates) -> Void)? {
|
|
9
|
+
didSet {
|
|
10
|
+
if listener != nil {
|
|
11
|
+
flushCache()
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
func dispatch(event: RaspExecutionStates) {
|
|
17
|
+
lock.lock()
|
|
18
|
+
defer { lock.unlock() }
|
|
19
|
+
|
|
20
|
+
if let listener = listener {
|
|
21
|
+
listener(event)
|
|
22
|
+
} else {
|
|
23
|
+
cache.insert(event)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private func flushCache() {
|
|
28
|
+
lock.lock()
|
|
29
|
+
let events = cache
|
|
30
|
+
cache.removeAll()
|
|
31
|
+
lock.unlock()
|
|
32
|
+
|
|
33
|
+
events.forEach { listener?($0) }
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import TalsecRuntime
|
|
3
|
+
|
|
4
|
+
class ThreatDispatcher {
|
|
5
|
+
static let shared = ThreatDispatcher()
|
|
6
|
+
private var threatCache: Set<SecurityThreat> = []
|
|
7
|
+
private let lock = NSLock()
|
|
8
|
+
|
|
9
|
+
var listener: ((SecurityThreat) -> Void)? {
|
|
10
|
+
didSet {
|
|
11
|
+
if listener != nil {
|
|
12
|
+
flushCache()
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
func dispatch(threat: SecurityThreat) {
|
|
18
|
+
lock.lock()
|
|
19
|
+
defer { lock.unlock() }
|
|
20
|
+
|
|
21
|
+
if let listener = listener {
|
|
22
|
+
listener(threat)
|
|
23
|
+
} else {
|
|
24
|
+
threatCache.insert(threat)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private func flushCache() {
|
|
29
|
+
lock.lock()
|
|
30
|
+
let threats = threatCache
|
|
31
|
+
threatCache.removeAll()
|
|
32
|
+
lock.unlock()
|
|
33
|
+
|
|
34
|
+
threats.forEach { listener?($0) }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -10,16 +10,31 @@ var _native = require("../methods/native");
|
|
|
10
10
|
var _raspExecutionState = require("../../channels/raspExecutionState");
|
|
11
11
|
var _raspExecutionState2 = require("../../models/raspExecutionState");
|
|
12
12
|
const eventEmitter = new _reactNative.NativeEventEmitter(_nativeModules.FreeraspReactNative);
|
|
13
|
-
let eventsListener;
|
|
13
|
+
let eventsListener = null;
|
|
14
|
+
let executionStateChannel = null;
|
|
15
|
+
let executionStateKey = null;
|
|
16
|
+
let isMappingPrepared = false;
|
|
17
|
+
let isInitializing = false;
|
|
14
18
|
const setRaspExecutionStateListener = async config => {
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
if (isInitializing) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
isInitializing = true;
|
|
23
|
+
await removeRaspExecutionStateEventListener();
|
|
24
|
+
if (!executionStateChannel || !executionStateKey) {
|
|
25
|
+
[executionStateChannel, executionStateKey] = await (0, _raspExecutionState.getRaspExecutionStateChannelData)();
|
|
26
|
+
}
|
|
27
|
+
if (!isMappingPrepared) {
|
|
28
|
+
await (0, _raspExecutionState.prepareRaspExecutionStateMapping)();
|
|
29
|
+
isMappingPrepared = true;
|
|
30
|
+
}
|
|
17
31
|
const listener = async event => {
|
|
18
32
|
var _config$allChecksFini;
|
|
19
|
-
if (
|
|
33
|
+
if (!executionStateKey) {
|
|
20
34
|
(0, _native.onInvalidCallback)();
|
|
35
|
+
return;
|
|
21
36
|
}
|
|
22
|
-
switch (event[
|
|
37
|
+
switch (event[executionStateKey]) {
|
|
23
38
|
case _raspExecutionState2.RaspExecutionState.AllChecksFinished.value:
|
|
24
39
|
(_config$allChecksFini = config.allChecksFinished) === null || _config$allChecksFini === void 0 || _config$allChecksFini.call(config);
|
|
25
40
|
break;
|
|
@@ -28,13 +43,18 @@ const setRaspExecutionStateListener = async config => {
|
|
|
28
43
|
break;
|
|
29
44
|
}
|
|
30
45
|
};
|
|
31
|
-
eventsListener = eventEmitter.addListener(
|
|
46
|
+
eventsListener = eventEmitter.addListener(executionStateChannel, listener);
|
|
47
|
+
isInitializing = false;
|
|
32
48
|
};
|
|
33
49
|
exports.setRaspExecutionStateListener = setRaspExecutionStateListener;
|
|
34
|
-
const removeRaspExecutionStateEventListener = () => {
|
|
50
|
+
const removeRaspExecutionStateEventListener = async () => {
|
|
35
51
|
var _eventsListener;
|
|
52
|
+
if (!eventsListener || !executionStateChannel) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
await (0, _native.removeListenerForEvent)(executionStateChannel);
|
|
36
56
|
(_eventsListener = eventsListener) === null || _eventsListener === void 0 || _eventsListener.remove();
|
|
37
|
-
eventsListener =
|
|
57
|
+
eventsListener = null;
|
|
38
58
|
};
|
|
39
59
|
exports.removeRaspExecutionStateEventListener = removeRaspExecutionStateEventListener;
|
|
40
60
|
//# sourceMappingURL=raspExecutionState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_nativeModules","_native","_raspExecutionState","_raspExecutionState2","eventEmitter","NativeEventEmitter","FreeraspReactNative","eventsListener","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_nativeModules","_native","_raspExecutionState","_raspExecutionState2","eventEmitter","NativeEventEmitter","FreeraspReactNative","eventsListener","executionStateChannel","executionStateKey","isMappingPrepared","isInitializing","setRaspExecutionStateListener","config","removeRaspExecutionStateEventListener","getRaspExecutionStateChannelData","prepareRaspExecutionStateMapping","listener","event","_config$allChecksFini","onInvalidCallback","RaspExecutionState","AllChecksFinished","value","allChecksFinished","call","addListener","exports","_eventsListener","removeListenerForEvent","remove"],"sourceRoot":"../../../../src","sources":["api/listeners/raspExecutionState.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAKA,IAAAG,mBAAA,GAAAH,OAAA;AAIA,IAAAI,oBAAA,GAAAJ,OAAA;AAEA,MAAMK,YAAY,GAAG,IAAIC,+BAAkB,CAACC,kCAAmB,CAAC;AAChE,IAAIC,cAA0C,GAAG,IAAI;AACrD,IAAIC,qBAAoC,GAAG,IAAI;AAC/C,IAAIC,iBAAgC,GAAG,IAAI;AAE3C,IAAIC,iBAAiB,GAAG,KAAK;AAC7B,IAAIC,cAAc,GAAG,KAAK;AAEnB,MAAMC,6BAA6B,GAAG,MAC3CC,MAAsC,IACnC;EACH,IAAIF,cAAc,EAAE;IAClB;EACF;EAEAA,cAAc,GAAG,IAAI;EAErB,MAAMG,qCAAqC,CAAC,CAAC;EAE7C,IAAI,CAACN,qBAAqB,IAAI,CAACC,iBAAiB,EAAE;IAChD,CAACD,qBAAqB,EAAEC,iBAAiB,CAAC,GACxC,MAAM,IAAAM,oDAAgC,EAAC,CAAC;EAC5C;EAEA,IAAI,CAACL,iBAAiB,EAAE;IACtB,MAAM,IAAAM,oDAAgC,EAAC,CAAC;IACxCN,iBAAiB,GAAG,IAAI;EAC1B;EAEA,MAAMO,QAAQ,GAAG,MAAOC,KAAkB,IAAK;IAAA,IAAAC,qBAAA;IAC7C,IAAI,CAACV,iBAAiB,EAAE;MACtB,IAAAW,yBAAiB,EAAC,CAAC;MACnB;IACF;IAEA,QAAQF,KAAK,CAACT,iBAAiB,CAAC;MAC9B,KAAKY,uCAAkB,CAACC,iBAAiB,CAACC,KAAK;QAC7C,CAAAJ,qBAAA,GAAAN,MAAM,CAACW,iBAAiB,cAAAL,qBAAA,eAAxBA,qBAAA,CAAAM,IAAA,CAAAZ,MAA2B,CAAC;QAC5B;MACF;QACE,IAAAO,yBAAiB,EAAC,CAAC;QACnB;IACJ;EACF,CAAC;EACDb,cAAc,GAAGH,YAAY,CAACsB,WAAW,CAAClB,qBAAqB,EAAES,QAAQ,CAAC;EAC1EN,cAAc,GAAG,KAAK;AACxB,CAAC;AAACgB,OAAA,CAAAf,6BAAA,GAAAA,6BAAA;AAEK,MAAME,qCAAqC,GAChD,MAAAA,CAAA,KAA2B;EAAA,IAAAc,eAAA;EACzB,IAAI,CAACrB,cAAc,IAAI,CAACC,qBAAqB,EAAE;IAC7C;EACF;EACA,MAAM,IAAAqB,8BAAsB,EAACrB,qBAAqB,CAAC;EACnD,CAAAoB,eAAA,GAAArB,cAAc,cAAAqB,eAAA,eAAdA,eAAA,CAAgBE,MAAM,CAAC,CAAC;EACxBvB,cAAc,GAAG,IAAI;AACvB,CAAC;AAACoB,OAAA,CAAAb,qCAAA,GAAAA,qCAAA","ignoreList":[]}
|
|
@@ -11,16 +11,32 @@ var _threat = require("../../models/threat");
|
|
|
11
11
|
var _malware = require("../../utils/malware");
|
|
12
12
|
var _threat2 = require("../../channels/threat");
|
|
13
13
|
const eventEmitter = new _reactNative.NativeEventEmitter(_nativeModules.FreeraspReactNative);
|
|
14
|
-
let eventsListener;
|
|
14
|
+
let eventsListener = null;
|
|
15
|
+
let threatChannel = null;
|
|
16
|
+
let threatKey = null;
|
|
17
|
+
let threatMalwareKey = null;
|
|
18
|
+
let isMappingPrepared = false;
|
|
19
|
+
let isInitializing = false;
|
|
15
20
|
const setThreatListeners = async config => {
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
if (isInitializing) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
isInitializing = true;
|
|
25
|
+
await removeThreatListener();
|
|
26
|
+
if (!threatChannel || !threatKey || !threatMalwareKey) {
|
|
27
|
+
[threatChannel, threatKey, threatMalwareKey] = await (0, _threat2.getThreatChannelData)();
|
|
28
|
+
}
|
|
29
|
+
if (!isMappingPrepared) {
|
|
30
|
+
await (0, _threat2.prepareThreatMapping)();
|
|
31
|
+
isMappingPrepared = true;
|
|
32
|
+
}
|
|
18
33
|
const listener = async event => {
|
|
19
|
-
var _config$privilegedAcc, _config$debug, _config$simulator, _config$appIntegrity, _config$unofficialSto, _config$hooks, _config$deviceBinding, _config$passcode, _config$secureHardwar, _config$obfuscationIs, _config$deviceID, _config$devMode, _config$systemVPN, _config$malware, _config$adbEnabled, _config$screenshot, _config$screenRecordi, _config$multiInstance, _config$timeSpoofing, _config$locationSpoof, _config$unsecureWifi;
|
|
20
|
-
if (
|
|
34
|
+
var _config$privilegedAcc, _config$debug, _config$simulator, _config$appIntegrity, _config$unofficialSto, _config$hooks, _config$deviceBinding, _config$passcode, _config$secureHardwar, _config$obfuscationIs, _config$deviceID, _config$devMode, _config$systemVPN, _config$malware, _config$adbEnabled, _config$screenshot, _config$screenRecordi, _config$multiInstance, _config$timeSpoofing, _config$locationSpoof, _config$unsecureWifi, _config$automation;
|
|
35
|
+
if (!threatKey || !threatMalwareKey) {
|
|
21
36
|
(0, _native.onInvalidCallback)();
|
|
37
|
+
return;
|
|
22
38
|
}
|
|
23
|
-
switch (event[
|
|
39
|
+
switch (event[threatKey]) {
|
|
24
40
|
case _threat.Threat.PrivilegedAccess.value:
|
|
25
41
|
(_config$privilegedAcc = config.privilegedAccess) === null || _config$privilegedAcc === void 0 || _config$privilegedAcc.call(config);
|
|
26
42
|
break;
|
|
@@ -61,7 +77,7 @@ const setThreatListeners = async config => {
|
|
|
61
77
|
(_config$systemVPN = config.systemVPN) === null || _config$systemVPN === void 0 || _config$systemVPN.call(config);
|
|
62
78
|
break;
|
|
63
79
|
case _threat.Threat.Malware.value:
|
|
64
|
-
const malwareData = event[
|
|
80
|
+
const malwareData = event[threatMalwareKey];
|
|
65
81
|
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, await (0, _malware.parseMalwareData)(Array.isArray(malwareData) ? malwareData : []));
|
|
66
82
|
break;
|
|
67
83
|
case _threat.Threat.ADBEnabled.value:
|
|
@@ -85,18 +101,26 @@ const setThreatListeners = async config => {
|
|
|
85
101
|
case _threat.Threat.UnsecureWifi.value:
|
|
86
102
|
(_config$unsecureWifi = config.unsecureWifi) === null || _config$unsecureWifi === void 0 || _config$unsecureWifi.call(config);
|
|
87
103
|
break;
|
|
104
|
+
case _threat.Threat.Automation.value:
|
|
105
|
+
(_config$automation = config.automation) === null || _config$automation === void 0 || _config$automation.call(config);
|
|
106
|
+
break;
|
|
88
107
|
default:
|
|
89
108
|
(0, _native.onInvalidCallback)();
|
|
90
109
|
break;
|
|
91
110
|
}
|
|
92
111
|
};
|
|
93
|
-
eventsListener = eventEmitter.addListener(
|
|
112
|
+
eventsListener = eventEmitter.addListener(threatChannel, listener);
|
|
113
|
+
isInitializing = false;
|
|
94
114
|
};
|
|
95
115
|
exports.setThreatListeners = setThreatListeners;
|
|
96
|
-
const removeThreatListener = () => {
|
|
116
|
+
const removeThreatListener = async () => {
|
|
97
117
|
var _eventsListener;
|
|
118
|
+
if (!eventsListener || !threatChannel) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
await (0, _native.removeListenerForEvent)(threatChannel);
|
|
98
122
|
(_eventsListener = eventsListener) === null || _eventsListener === void 0 || _eventsListener.remove();
|
|
99
|
-
eventsListener =
|
|
123
|
+
eventsListener = null;
|
|
100
124
|
};
|
|
101
125
|
exports.removeThreatListener = removeThreatListener;
|
|
102
126
|
//# sourceMappingURL=threat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_nativeModules","_native","_threat","_malware","_threat2","eventEmitter","NativeEventEmitter","FreeraspReactNative","eventsListener","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_nativeModules","_native","_threat","_malware","_threat2","eventEmitter","NativeEventEmitter","FreeraspReactNative","eventsListener","threatChannel","threatKey","threatMalwareKey","isMappingPrepared","isInitializing","setThreatListeners","config","removeThreatListener","getThreatChannelData","prepareThreatMapping","listener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","_config$adbEnabled","_config$screenshot","_config$screenRecordi","_config$multiInstance","_config$timeSpoofing","_config$locationSpoof","_config$unsecureWifi","_config$automation","onInvalidCallback","Threat","PrivilegedAccess","value","privilegedAccess","call","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malwareData","malware","parseMalwareData","Array","isArray","ADBEnabled","adbEnabled","Screenshot","screenshot","ScreenRecording","screenRecording","MultiInstance","multiInstance","TimeSpoofing","timeSpoofing","LocationSpoofing","locationSpoofing","UnsecureWifi","unsecureWifi","Automation","automation","addListener","exports","_eventsListener","removeListenerForEvent","remove"],"sourceRoot":"../../../../src","sources":["api/listeners/threat.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.talsecStart = exports.storeExternalId = exports.onInvalidCallback = exports.isScreenCaptureBlocked = exports.getAppIcon = exports.blockScreenCapture = exports.addToWhitelist = void 0;
|
|
6
|
+
exports.talsecStart = exports.storeExternalId = exports.removeListenerForEvent = exports.removeExternalId = exports.onInvalidCallback = exports.isScreenCaptureBlocked = exports.getAppIcon = exports.blockScreenCapture = exports.addToWhitelist = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _nativeModules = require("../nativeModules");
|
|
9
9
|
const talsecStart = async options => {
|
|
@@ -29,6 +29,10 @@ const storeExternalId = data => {
|
|
|
29
29
|
return _nativeModules.FreeraspReactNative.storeExternalId(data);
|
|
30
30
|
};
|
|
31
31
|
exports.storeExternalId = storeExternalId;
|
|
32
|
+
const removeExternalId = () => {
|
|
33
|
+
return _nativeModules.FreeraspReactNative.removeExternalId();
|
|
34
|
+
};
|
|
35
|
+
exports.removeExternalId = removeExternalId;
|
|
32
36
|
const getAppIcon = packageName => {
|
|
33
37
|
if (_reactNative.Platform.OS === 'ios') {
|
|
34
38
|
return Promise.reject('App icon retrieval for Malware detection not available on iOS');
|
|
@@ -40,4 +44,8 @@ const onInvalidCallback = () => {
|
|
|
40
44
|
_nativeModules.FreeraspReactNative.onInvalidCallback();
|
|
41
45
|
};
|
|
42
46
|
exports.onInvalidCallback = onInvalidCallback;
|
|
47
|
+
const removeListenerForEvent = channel => {
|
|
48
|
+
return _nativeModules.FreeraspReactNative.removeListenerForEvent(channel);
|
|
49
|
+
};
|
|
50
|
+
exports.removeListenerForEvent = removeListenerForEvent;
|
|
43
51
|
//# sourceMappingURL=native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_nativeModules","talsecStart","options","FreeraspReactNative","exports","addToWhitelist","packageName","Platform","OS","Promise","reject","blockScreenCapture","enable","isScreenCaptureBlocked","storeExternalId","data","getAppIcon","onInvalidCallback"],"sourceRoot":"../../../../src","sources":["api/methods/native.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAGO,MAAME,WAAW,GAAG,MAAOC,OAAqB,IAAsB;EAC3E,OAAOC,kCAAmB,CAACF,WAAW,CAACC,OAAO,CAAC;AACjD,CAAC;AAACE,OAAA,CAAAH,WAAA,GAAAA,WAAA;AAEK,MAAMI,cAAc,GAAG,MAAOC,WAAmB,IAAuB;EAC7E,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOC,OAAO,CAACC,MAAM,CAAC,wCAAwC,CAAC;EACjE;EACA,OAAOP,kCAAmB,CAACE,cAAc,CAACC,WAAW,CAAC;AACxD,CAAC;AAACF,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAEK,MAAMM,kBAAkB,GAAIC,MAAe,IAAsB;EACtE,OAAOT,kCAAmB,CAACQ,kBAAkB,CAACC,MAAM,CAAC;AACvD,CAAC;AAACR,OAAA,CAAAO,kBAAA,GAAAA,kBAAA;AAEK,MAAME,sBAAsB,GAAGA,CAAA,KAAwB;EAC5D,OAAOV,kCAAmB,CAACU,sBAAsB,CAAC,CAAC;AACrD,CAAC;AAACT,OAAA,CAAAS,sBAAA,GAAAA,sBAAA;AAEK,MAAMC,eAAe,GAAIC,IAAY,IAAsB;EAChE,OAAOZ,kCAAmB,CAACW,eAAe,CAACC,IAAI,CAAC;AAClD,CAAC;AAACX,OAAA,CAAAU,eAAA,GAAAA,eAAA;AAEK,MAAME,UAAU,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_nativeModules","talsecStart","options","FreeraspReactNative","exports","addToWhitelist","packageName","Platform","OS","Promise","reject","blockScreenCapture","enable","isScreenCaptureBlocked","storeExternalId","data","removeExternalId","getAppIcon","onInvalidCallback","removeListenerForEvent","channel"],"sourceRoot":"../../../../src","sources":["api/methods/native.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAGO,MAAME,WAAW,GAAG,MAAOC,OAAqB,IAAsB;EAC3E,OAAOC,kCAAmB,CAACF,WAAW,CAACC,OAAO,CAAC;AACjD,CAAC;AAACE,OAAA,CAAAH,WAAA,GAAAA,WAAA;AAEK,MAAMI,cAAc,GAAG,MAAOC,WAAmB,IAAuB;EAC7E,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOC,OAAO,CAACC,MAAM,CAAC,wCAAwC,CAAC;EACjE;EACA,OAAOP,kCAAmB,CAACE,cAAc,CAACC,WAAW,CAAC;AACxD,CAAC;AAACF,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAEK,MAAMM,kBAAkB,GAAIC,MAAe,IAAsB;EACtE,OAAOT,kCAAmB,CAACQ,kBAAkB,CAACC,MAAM,CAAC;AACvD,CAAC;AAACR,OAAA,CAAAO,kBAAA,GAAAA,kBAAA;AAEK,MAAME,sBAAsB,GAAGA,CAAA,KAAwB;EAC5D,OAAOV,kCAAmB,CAACU,sBAAsB,CAAC,CAAC;AACrD,CAAC;AAACT,OAAA,CAAAS,sBAAA,GAAAA,sBAAA;AAEK,MAAMC,eAAe,GAAIC,IAAY,IAAsB;EAChE,OAAOZ,kCAAmB,CAACW,eAAe,CAACC,IAAI,CAAC;AAClD,CAAC;AAACX,OAAA,CAAAU,eAAA,GAAAA,eAAA;AAEK,MAAME,gBAAgB,GAAGA,CAAA,KAAuB;EACrD,OAAOb,kCAAmB,CAACa,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAACZ,OAAA,CAAAY,gBAAA,GAAAA,gBAAA;AAEK,MAAMC,UAAU,GAAIX,WAAmB,IAAsB;EAClE,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOC,OAAO,CAACC,MAAM,CACnB,+DACF,CAAC;EACH;EACA,OAAOP,kCAAmB,CAACc,UAAU,CAACX,WAAW,CAAC;AACpD,CAAC;AAACF,OAAA,CAAAa,UAAA,GAAAA,UAAA;AAEK,MAAMC,iBAAiB,GAAGA,CAAA,KAAY;EAC3Cf,kCAAmB,CAACe,iBAAiB,CAAC,CAAC;AACzC,CAAC;AAACd,OAAA,CAAAc,iBAAA,GAAAA,iBAAA;AAEK,MAAMC,sBAAsB,GAAIC,OAAe,IAAsB;EAC1E,OAAOjB,kCAAmB,CAACgB,sBAAsB,CAACC,OAAO,CAAC;AAC5D,CAAC;AAAChB,OAAA,CAAAe,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -4,30 +4,35 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useFreeRasp = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _native = require("./native");
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _raspExecutionState = require("../listeners/raspExecutionState");
|
|
10
10
|
var _threat = require("../listeners/threat");
|
|
11
|
-
|
|
11
|
+
let isRaspStarted = false;
|
|
12
12
|
const useFreeRasp = (config, actions, raspExecutionStateActions) => {
|
|
13
13
|
(0, _react.useEffect)(() => {
|
|
14
14
|
(async () => {
|
|
15
15
|
await (0, _threat.setThreatListeners)(actions);
|
|
16
16
|
raspExecutionStateActions && (await (0, _raspExecutionState.setRaspExecutionStateListener)(raspExecutionStateActions));
|
|
17
|
+
if (isRaspStarted) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
17
20
|
try {
|
|
18
|
-
|
|
21
|
+
const response = await (0, _native.talsecStart)(config);
|
|
19
22
|
if (response !== 'freeRASP started') {
|
|
20
23
|
(0, _native.onInvalidCallback)();
|
|
21
24
|
}
|
|
22
|
-
|
|
25
|
+
isRaspStarted = true;
|
|
23
26
|
} catch (e) {
|
|
24
27
|
console.error(`${e.code}: ${e.message}`);
|
|
25
28
|
}
|
|
26
|
-
return () => {
|
|
27
|
-
(0, _threat.removeThreatListener)();
|
|
28
|
-
(0, _raspExecutionState.removeRaspExecutionStateEventListener)();
|
|
29
|
-
};
|
|
30
29
|
})();
|
|
30
|
+
return () => {
|
|
31
|
+
(async () => {
|
|
32
|
+
await (0, _threat.removeThreatListener)();
|
|
33
|
+
await (0, _raspExecutionState.removeRaspExecutionStateEventListener)();
|
|
34
|
+
})();
|
|
35
|
+
};
|
|
31
36
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32
37
|
}, []);
|
|
33
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_native","require","_react","_raspExecutionState","_threat","isRaspStarted","useFreeRasp","config","actions","raspExecutionStateActions","useEffect","setThreatListeners","setRaspExecutionStateListener","response","talsecStart","onInvalidCallback","e","console","error","code","message","removeThreatListener","removeRaspExecutionStateEventListener","exports"],"sourceRoot":"../../../../src","sources":["api/methods/reactNative.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAIA,IAAAG,OAAA,GAAAH,OAAA;AAQA,IAAII,aAAa,GAAG,KAAK;AAElB,MAAMC,WAAW,GAAGA,CACzBC,MAAoB,EACpBC,OAA2B,EAC3BC,yBAA0D,KACvD;EACH,IAAAC,gBAAS,EAAC,MAAM;IACd,CAAC,YAAY;MACX,MAAM,IAAAC,0BAAkB,EAACH,OAAO,CAAC;MACjCC,yBAAyB,KACtB,MAAM,IAAAG,iDAA6B,EAACH,yBAAyB,CAAC,CAAC;MAElE,IAAIJ,aAAa,EAAE;QACjB;MACF;MAEA,IAAI;QACF,MAAMQ,QAAQ,GAAG,MAAM,IAAAC,mBAAW,EAACP,MAAM,CAAC;QAC1C,IAAIM,QAAQ,KAAK,kBAAkB,EAAE;UACnC,IAAAE,yBAAiB,EAAC,CAAC;QACrB;QACAV,aAAa,GAAG,IAAI;MACtB,CAAC,CAAC,OAAOW,CAAM,EAAE;QACfC,OAAO,CAACC,KAAK,CAAE,GAAEF,CAAC,CAACG,IAAK,KAAIH,CAAC,CAACI,OAAQ,EAAC,CAAC;MAC1C;IACF,CAAC,EAAE,CAAC;IAEJ,OAAO,MAAM;MACX,CAAC,YAAY;QACX,MAAM,IAAAC,4BAAoB,EAAC,CAAC;QAC5B,MAAM,IAAAC,yDAAqC,EAAC,CAAC;MAC/C,CAAC,EAAE,CAAC;IACN,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAACC,OAAA,CAAAjB,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.prepareThreatMapping = exports.getThreatIdentifiers = exports.getThreatChannelData = void 0;
|
|
7
|
-
var _reactNative = require("react-native");
|
|
8
7
|
var _utils = require("../utils/utils");
|
|
9
8
|
var _nativeModules = require("../api/nativeModules");
|
|
10
9
|
var _threat = require("../models/threat");
|
|
@@ -18,9 +17,8 @@ const getThreatIdentifiers = async () => {
|
|
|
18
17
|
};
|
|
19
18
|
exports.getThreatIdentifiers = getThreatIdentifiers;
|
|
20
19
|
const getThreatChannelData = async () => {
|
|
21
|
-
const dataLength = _reactNative.Platform.OS === 'ios' ? 2 : 3;
|
|
22
20
|
const data = await _nativeModules.FreeraspReactNative.getThreatChannelData();
|
|
23
|
-
if (data.length !==
|
|
21
|
+
if (data.length !== 3 || !(0, _utils.itemsHaveType)(data, 'string')) {
|
|
24
22
|
(0, _native.onInvalidCallback)();
|
|
25
23
|
}
|
|
26
24
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_utils","require","_nativeModules","_threat","_native","getThreatIdentifiers","identifiers","FreeraspReactNative","length","getThreatCount","itemsHaveType","onInvalidCallback","exports","getThreatChannelData","data","prepareThreatMapping","newValues","threats","Threat","getValues","map","threat","index","value"],"sourceRoot":"../../../src","sources":["channels/threat.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAEO,MAAMI,oBAAoB,GAAG,MAAAA,CAAA,KAA+B;EACjE,MAAMC,WAAW,GAAG,MAAMC,kCAAmB,CAACF,oBAAoB,CAAC,CAAC;EACpE,IACEC,WAAW,CAACE,MAAM,KAAK,IAAAC,qBAAc,EAAC,CAAC,IACvC,CAAC,IAAAC,oBAAa,EAACJ,WAAW,EAAE,QAAQ,CAAC,EACrC;IACA,IAAAK,yBAAiB,EAAC,CAAC;EACrB;EACA,OAAOL,WAAW;AACpB,CAAC;AAACM,OAAA,CAAAP,oBAAA,GAAAA,oBAAA;AAEK,MAAMQ,oBAAoB,GAAG,MAAAA,CAAA,KAE/B;EACH,MAAMC,IAAI,GAAG,MAAMP,kCAAmB,CAACM,oBAAoB,CAAC,CAAC;EAC7D,IAAIC,IAAI,CAACN,MAAM,KAAK,CAAC,IAAI,CAAC,IAAAE,oBAAa,EAACI,IAAI,EAAE,QAAQ,CAAC,EAAE;IACvD,IAAAH,yBAAiB,EAAC,CAAC;EACrB;EACA,OAAOG,IAAI;AACb,CAAC;AAACF,OAAA,CAAAC,oBAAA,GAAAA,oBAAA;AAEK,MAAME,oBAAoB,GAAG,MAAAA,CAAA,KAA2B;EAC7D,MAAMC,SAAS,GAAG,MAAMX,oBAAoB,CAAC,CAAC;EAC9C,MAAMY,OAAO,GAAGC,cAAM,CAACC,SAAS,CAAC,CAAC;EAClCF,OAAO,CAACG,GAAG,CAAC,CAACC,MAAM,EAAEC,KAAK,KAAK;IAC7BD,MAAM,CAACE,KAAK,GAAGP,SAAS,CAACM,KAAK,CAAE;EAClC,CAAC,CAAC;AACJ,CAAC;AAACV,OAAA,CAAAG,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
@@ -27,11 +27,12 @@ class Threat {
|
|
|
27
27
|
static TimeSpoofing = new Threat(0);
|
|
28
28
|
static LocationSpoofing = new Threat(0);
|
|
29
29
|
static UnsecureWifi = new Threat(0);
|
|
30
|
+
static Automation = new Threat(0);
|
|
30
31
|
constructor(value) {
|
|
31
32
|
this.value = value;
|
|
32
33
|
}
|
|
33
34
|
static getValues() {
|
|
34
|
-
return _reactNative.Platform.OS === 'android' ? [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.UnofficialStore, this.ObfuscationIssues, this.DevMode, this.Malware, this.ADBEnabled, this.Screenshot, this.ScreenRecording, this.MultiInstance, this.TimeSpoofing, this.LocationSpoofing, this.UnsecureWifi] : [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.DeviceID, this.UnofficialStore, this.Screenshot, this.ScreenRecording];
|
|
35
|
+
return _reactNative.Platform.OS === 'android' ? [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.UnofficialStore, this.ObfuscationIssues, this.DevMode, this.Malware, this.ADBEnabled, this.Screenshot, this.ScreenRecording, this.MultiInstance, this.TimeSpoofing, this.LocationSpoofing, this.UnsecureWifi, this.Automation] : [this.AppIntegrity, this.PrivilegedAccess, this.Debug, this.Hooks, this.Passcode, this.Simulator, this.SecureHardwareNotAvailable, this.SystemVPN, this.DeviceBinding, this.DeviceID, this.UnofficialStore, this.Screenshot, this.ScreenRecording];
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
exports.Threat = Threat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","Threat","AppIntegrity","PrivilegedAccess","Debug","Hooks","Passcode","Simulator","SecureHardwareNotAvailable","SystemVPN","DeviceBinding","DeviceID","UnofficialStore","ObfuscationIssues","DevMode","Malware","ADBEnabled","Screenshot","ScreenRecording","MultiInstance","TimeSpoofing","LocationSpoofing","UnsecureWifi","constructor","value","getValues","Platform","OS","exports"],"sourceRoot":"../../../src","sources":["models/threat.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,MAAM,CAAC;EAGlB,OAAOC,YAAY,GAAG,IAAID,MAAM,CAAC,CAAC,CAAC;EACnC,OAAOE,gBAAgB,GAAG,IAAIF,MAAM,CAAC,CAAC,CAAC;EACvC,OAAOG,KAAK,GAAG,IAAIH,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOI,KAAK,GAAG,IAAIJ,MAAM,CAAC,CAAC,CAAC;EAC5B,OAAOK,QAAQ,GAAG,IAAIL,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOM,SAAS,GAAG,IAAIN,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOO,0BAA0B,GAAG,IAAIP,MAAM,CAAC,CAAC,CAAC;EACjD,OAAOQ,SAAS,GAAG,IAAIR,MAAM,CAAC,CAAC,CAAC;EAChC,OAAOS,aAAa,GAAG,IAAIT,MAAM,CAAC,CAAC,CAAC;EACpC,OAAOU,QAAQ,GAAG,IAAIV,MAAM,CAAC,CAAC,CAAC;EAC/B,OAAOW,eAAe,GAAG,IAAIX,MAAM,CAAC,CAAC,CAAC;EACtC,OAAOY,iBAAiB,GAAG,IAAIZ,MAAM,CAAC,CAAC,CAAC;EACxC,OAAOa,OAAO,GAAG,IAAIb,MAAM,CAAC,CAAC,CAAC;EAC9B,OAAOc,OAAO,GAAG,IAAId,MAAM,CAAC,CAAC,CAAC;EAC9B,OAAOe,UAAU,GAAG,IAAIf,MAAM,CAAC,CAAC,CAAC;EACjC,OAAOgB,UAAU,GAAG,IAAIhB,MAAM,CAAC,CAAC,CAAC;EACjC,OAAOiB,eAAe,GAAG,IAAIjB,MAAM,CAAC,CAAC,CAAC;EACtC,OAAOkB,aAAa,GAAG,IAAIlB,MAAM,CAAC,CAAC,CAAC;EACpC,OAAOmB,YAAY,GAAG,IAAInB,MAAM,CAAC,CAAC,CAAC;EACnC,OAAOoB,gBAAgB,GAAG,IAAIpB,MAAM,CAAC,CAAC,CAAC;EACvC,OAAOqB,YAAY,GAAG,IAAIrB,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","Threat","AppIntegrity","PrivilegedAccess","Debug","Hooks","Passcode","Simulator","SecureHardwareNotAvailable","SystemVPN","DeviceBinding","DeviceID","UnofficialStore","ObfuscationIssues","DevMode","Malware","ADBEnabled","Screenshot","ScreenRecording","MultiInstance","TimeSpoofing","LocationSpoofing","UnsecureWifi","Automation","constructor","value","getValues","Platform","OS","exports"],"sourceRoot":"../../../src","sources":["models/threat.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
import { NativeEventEmitter } from 'react-native';
|
|
2
2
|
import { FreeraspReactNative } from '../nativeModules';
|
|
3
|
-
import { onInvalidCallback } from '../methods/native';
|
|
3
|
+
import { onInvalidCallback, removeListenerForEvent } from '../methods/native';
|
|
4
4
|
import { getRaspExecutionStateChannelData, prepareRaspExecutionStateMapping } from '../../channels/raspExecutionState';
|
|
5
5
|
import { RaspExecutionState } from '../../models/raspExecutionState';
|
|
6
6
|
const eventEmitter = new NativeEventEmitter(FreeraspReactNative);
|
|
7
|
-
let eventsListener;
|
|
7
|
+
let eventsListener = null;
|
|
8
|
+
let executionStateChannel = null;
|
|
9
|
+
let executionStateKey = null;
|
|
10
|
+
let isMappingPrepared = false;
|
|
11
|
+
let isInitializing = false;
|
|
8
12
|
export const setRaspExecutionStateListener = async config => {
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
if (isInitializing) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
isInitializing = true;
|
|
17
|
+
await removeRaspExecutionStateEventListener();
|
|
18
|
+
if (!executionStateChannel || !executionStateKey) {
|
|
19
|
+
[executionStateChannel, executionStateKey] = await getRaspExecutionStateChannelData();
|
|
20
|
+
}
|
|
21
|
+
if (!isMappingPrepared) {
|
|
22
|
+
await prepareRaspExecutionStateMapping();
|
|
23
|
+
isMappingPrepared = true;
|
|
24
|
+
}
|
|
11
25
|
const listener = async event => {
|
|
12
26
|
var _config$allChecksFini;
|
|
13
|
-
if (
|
|
27
|
+
if (!executionStateKey) {
|
|
14
28
|
onInvalidCallback();
|
|
29
|
+
return;
|
|
15
30
|
}
|
|
16
|
-
switch (event[
|
|
31
|
+
switch (event[executionStateKey]) {
|
|
17
32
|
case RaspExecutionState.AllChecksFinished.value:
|
|
18
33
|
(_config$allChecksFini = config.allChecksFinished) === null || _config$allChecksFini === void 0 || _config$allChecksFini.call(config);
|
|
19
34
|
break;
|
|
@@ -22,11 +37,16 @@ export const setRaspExecutionStateListener = async config => {
|
|
|
22
37
|
break;
|
|
23
38
|
}
|
|
24
39
|
};
|
|
25
|
-
eventsListener = eventEmitter.addListener(
|
|
40
|
+
eventsListener = eventEmitter.addListener(executionStateChannel, listener);
|
|
41
|
+
isInitializing = false;
|
|
26
42
|
};
|
|
27
|
-
export const removeRaspExecutionStateEventListener = () => {
|
|
43
|
+
export const removeRaspExecutionStateEventListener = async () => {
|
|
28
44
|
var _eventsListener;
|
|
45
|
+
if (!eventsListener || !executionStateChannel) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
await removeListenerForEvent(executionStateChannel);
|
|
29
49
|
(_eventsListener = eventsListener) === null || _eventsListener === void 0 || _eventsListener.remove();
|
|
30
|
-
eventsListener =
|
|
50
|
+
eventsListener = null;
|
|
31
51
|
};
|
|
32
52
|
//# sourceMappingURL=raspExecutionState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","FreeraspReactNative","onInvalidCallback","getRaspExecutionStateChannelData","prepareRaspExecutionStateMapping","RaspExecutionState","eventEmitter","eventsListener","
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","FreeraspReactNative","onInvalidCallback","removeListenerForEvent","getRaspExecutionStateChannelData","prepareRaspExecutionStateMapping","RaspExecutionState","eventEmitter","eventsListener","executionStateChannel","executionStateKey","isMappingPrepared","isInitializing","setRaspExecutionStateListener","config","removeRaspExecutionStateEventListener","listener","event","_config$allChecksFini","AllChecksFinished","value","allChecksFinished","call","addListener","_eventsListener","remove"],"sourceRoot":"../../../../src","sources":["api/listeners/raspExecutionState.ts"],"mappings":"AAAA,SAASA,kBAAkB,QAAkC,cAAc;AAC3E,SAASC,mBAAmB,QAAQ,kBAAkB;AACtD,SAASC,iBAAiB,EAAEC,sBAAsB,QAAQ,mBAAmB;AAK7E,SACEC,gCAAgC,EAChCC,gCAAgC,QAC3B,mCAAmC;AAC1C,SAASC,kBAAkB,QAAQ,iCAAiC;AAEpE,MAAMC,YAAY,GAAG,IAAIP,kBAAkB,CAACC,mBAAmB,CAAC;AAChE,IAAIO,cAA0C,GAAG,IAAI;AACrD,IAAIC,qBAAoC,GAAG,IAAI;AAC/C,IAAIC,iBAAgC,GAAG,IAAI;AAE3C,IAAIC,iBAAiB,GAAG,KAAK;AAC7B,IAAIC,cAAc,GAAG,KAAK;AAE1B,OAAO,MAAMC,6BAA6B,GAAG,MAC3CC,MAAsC,IACnC;EACH,IAAIF,cAAc,EAAE;IAClB;EACF;EAEAA,cAAc,GAAG,IAAI;EAErB,MAAMG,qCAAqC,CAAC,CAAC;EAE7C,IAAI,CAACN,qBAAqB,IAAI,CAACC,iBAAiB,EAAE;IAChD,CAACD,qBAAqB,EAAEC,iBAAiB,CAAC,GACxC,MAAMN,gCAAgC,CAAC,CAAC;EAC5C;EAEA,IAAI,CAACO,iBAAiB,EAAE;IACtB,MAAMN,gCAAgC,CAAC,CAAC;IACxCM,iBAAiB,GAAG,IAAI;EAC1B;EAEA,MAAMK,QAAQ,GAAG,MAAOC,KAAkB,IAAK;IAAA,IAAAC,qBAAA;IAC7C,IAAI,CAACR,iBAAiB,EAAE;MACtBR,iBAAiB,CAAC,CAAC;MACnB;IACF;IAEA,QAAQe,KAAK,CAACP,iBAAiB,CAAC;MAC9B,KAAKJ,kBAAkB,CAACa,iBAAiB,CAACC,KAAK;QAC7C,CAAAF,qBAAA,GAAAJ,MAAM,CAACO,iBAAiB,cAAAH,qBAAA,eAAxBA,qBAAA,CAAAI,IAAA,CAAAR,MAA2B,CAAC;QAC5B;MACF;QACEZ,iBAAiB,CAAC,CAAC;QACnB;IACJ;EACF,CAAC;EACDM,cAAc,GAAGD,YAAY,CAACgB,WAAW,CAACd,qBAAqB,EAAEO,QAAQ,CAAC;EAC1EJ,cAAc,GAAG,KAAK;AACxB,CAAC;AAED,OAAO,MAAMG,qCAAqC,GAChD,MAAAA,CAAA,KAA2B;EAAA,IAAAS,eAAA;EACzB,IAAI,CAAChB,cAAc,IAAI,CAACC,qBAAqB,EAAE;IAC7C;EACF;EACA,MAAMN,sBAAsB,CAACM,qBAAqB,CAAC;EACnD,CAAAe,eAAA,GAAAhB,cAAc,cAAAgB,eAAA,eAAdA,eAAA,CAAgBC,MAAM,CAAC,CAAC;EACxBjB,cAAc,GAAG,IAAI;AACvB,CAAC","ignoreList":[]}
|