moved ip lookup into asynctask and also added some extra checking before the external ip is updated
This commit is contained in:
parent
43eac85644
commit
ff8bf0bddf
|
@ -87,8 +87,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
||||||
private static final int HS_NOTIFY_ID = 4;
|
private static final int HS_NOTIFY_ID = 4;
|
||||||
|
|
||||||
private boolean prefPersistNotifications = true;
|
private boolean prefPersistNotifications = true;
|
||||||
String IPADDRESS_PATTERN =
|
private String IPADDRESS_PATTERN =
|
||||||
"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
|
"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
|
||||||
|
private long exitIPTime = 0;
|
||||||
|
|
||||||
private static final int MAX_START_TRIES = 3;
|
private static final int MAX_START_TRIES = 3;
|
||||||
|
|
||||||
|
@ -1378,27 +1379,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
||||||
sb.append(nodeName);
|
sb.append(nodeName);
|
||||||
|
|
||||||
if(status.equals("BUILT") && currentStatus==STATUS_ON){
|
if(status.equals("BUILT") && currentStatus==STATUS_ON){
|
||||||
Thread thread = new Thread()
|
new getExternalIP().execute(nodeName);
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
String nodeDetails = conn.getInfo("ns/name/"+nodeName);
|
|
||||||
Pattern pattern = Pattern.compile(IPADDRESS_PATTERN);
|
|
||||||
Matcher matcher = pattern.matcher(nodeDetails);
|
|
||||||
if (matcher.find()) {
|
|
||||||
Log.d(TAG, "ip: "+matcher.group());
|
|
||||||
exitIP = matcher.group();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
thread.start();
|
|
||||||
|
|
||||||
Log.d(TAG ,"Node name: "+nodeName+"IP: "+exitIP);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (st.hasMoreTokens())
|
if (st.hasMoreTokens())
|
||||||
|
@ -1428,6 +1409,48 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class getExternalIP extends AsyncTask<String, Void, Void>{
|
||||||
|
|
||||||
|
private long time;
|
||||||
|
private String nodeDetails;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Void doInBackground(String... params) {
|
||||||
|
time = System.nanoTime();
|
||||||
|
try {
|
||||||
|
nodeDetails = conn.getInfo("ns/name/"+params[0]);
|
||||||
|
if (ENABLE_DEBUG_LOG)
|
||||||
|
{
|
||||||
|
Log.d(TAG,"Node Details: "+nodeDetails);
|
||||||
|
sendCallbackLogMessage("Node Details: "+nodeDetails);
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Void result) {
|
||||||
|
// check if we need to update the exit IP
|
||||||
|
if(time > exitIPTime) {
|
||||||
|
exitIPTime = time;
|
||||||
|
|
||||||
|
Pattern pattern = Pattern.compile(IPADDRESS_PATTERN);
|
||||||
|
Matcher matcher = null;
|
||||||
|
if(nodeDetails!=null)
|
||||||
|
matcher = pattern.matcher(nodeDetails);
|
||||||
|
if (matcher!=null && matcher.find()) {
|
||||||
|
Log.d(TAG, "ip: "+matcher.group());
|
||||||
|
exitIP = matcher.group();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private String parseNodeName(String node)
|
private String parseNodeName(String node)
|
||||||
{
|
{
|
||||||
if (node.indexOf('=')!=-1)
|
if (node.indexOf('=')!=-1)
|
||||||
|
|
Loading…
Reference in New Issue