11package org .csploit .android .services ;
22
33import android .app .Activity ;
4+ import android .content .Context ;
45import android .view .MenuItem ;
5- import android .widget .BaseAdapter ;
66
77import org .csploit .android .R ;
88import org .csploit .android .core .Logger ;
1111import org .csploit .android .net .Target ;
1212
1313import java .net .InetAddress ;
14- import java .util .LinkedList ;
15- import java .util .List ;
1614
1715/**
1816 * network-radar process manager
1917 */
2018public class NetworkRadar extends NativeService implements MenuControllableService {
19+ public static final String NRDR_CHANGED = "NetworkRadar.action.TARGET_CHANGED" ;
2120 public static final String NRDR_STOPPED = "NetworkRadar.action.STOPPED" ;
2221 public static final String NRDR_STARTED = "NetworkRadar.action.STARTED" ;
2322 public static final String NRDR_START_FAILED = "NetworkRadar.action.START_FAILED" ;
2423
25- private final List <TargetTask > taskList = new LinkedList <>();
26- private final TargetSubmitter submitter = new TargetSubmitter ();
27- private BaseAdapter adapter ;
28-
29- public NetworkRadar (Activity context ) {
24+ public NetworkRadar (Context context ) {
3025 this .context = context ;
3126 }
3227
33- public void setAdapter (BaseAdapter adapter ) {
34- this .adapter = adapter ;
35- }
36-
3728 public boolean start () {
3829 stop ();
3930 try {
@@ -78,48 +69,41 @@ private class Receiver extends org.csploit.android.tools.NetworkRadar.HostReceiv
7869 @ Override
7970 public void onHostFound (byte [] macAddress , InetAddress ipAddress , String name ) {
8071 Target t ;
81- TargetTask task = null ;
72+ boolean notify = false ;
8273
8374 t = System .getTargetByAddress (ipAddress );
8475
8576 if (t ==null ) {
8677 t = new Target (ipAddress , macAddress );
87- t .setAlias (name );
8878
89- task = new TargetTask (t , true , null , true );
90- } else {
91- boolean aliasChanged = name != null && !name .equals (t .getAlias ());
79+ System .addOrderedTarget (t );
9280
93- if (aliasChanged || !t .isConnected ()) {
94- task = new TargetTask (t , false , (aliasChanged ? name : t .getAlias ()), true );
95- }
81+ notify = true ;
9682 }
9783
98- if (task == null )
99- return ;
84+ if ( !t .isConnected () ) {
85+ t .setConneced (true );
86+ notify = true ;
87+ }
10088
101- synchronized (taskList ) {
102- taskList .add (task );
89+ if (name != null && !name .equals (t .getAlias ())) {
90+ t .setAlias (name );
91+ notify = true ;
10392 }
10493
105- ((Activity )context ).runOnUiThread (submitter );
94+ if (notify ) {
95+ sendIntent (NRDR_CHANGED );
96+ }
10697 }
10798
10899 @ Override
109100 public void onHostLost (InetAddress ipAddress ) {
110101 Target t = System .getTargetByAddress (ipAddress );
111102
112- if (t == null ) {
113- return ;
114- }
115-
116- synchronized (taskList ) {
117- taskList .add (
118- new TargetTask (t , false , t .getAlias (), false )
119- );
103+ if (t != null ) {
104+ t .setConneced (false );
105+ sendIntent (NRDR_CHANGED );
120106 }
121-
122- ((Activity )context ).runOnUiThread (submitter );
123107 }
124108
125109 @ Override
@@ -136,45 +120,4 @@ public void onDeath(int signal) {
136120 sendIntent (NRDR_STOPPED );
137121 }
138122 }
139-
140- private class TargetTask {
141- final Target target ;
142- final boolean add ;
143- final String name ;
144- final boolean connected ;
145-
146- public TargetTask (Target target , boolean add , String name , boolean connected ) {
147- this .target = target ;
148- this .add = add ;
149- this .name = name ;
150- this .connected = connected ;
151- }
152- }
153-
154- private class TargetSubmitter implements Runnable {
155- @ Override
156- public void run () {
157- synchronized (taskList ) {
158- if (!taskList .isEmpty ()) {
159- for (TargetTask task : taskList ) {
160- processTask (task );
161- }
162- if (adapter != null )
163- adapter .notifyDataSetChanged ();
164- }
165- }
166- }
167-
168- private void processTask (final TargetTask task ) {
169- if (task .add ) {
170- System .addOrderedTarget (task .target );
171- } else {
172- task .target .setConneced (task .connected );
173- task .target .setAlias (task .name );
174- }
175- }
176-
177- }
178-
179-
180123}
0 commit comments