blob: e806e441186a12b83f2542df8e7391029c9fdbd9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
package se.leap.bitmaskclient.tor;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Observable;
import se.leap.bitmaskclient.R;
public class TorStatusObservable extends Observable {
private static final String TAG = TorStatusObservable.class.getSimpleName();
public enum TorStatus {
ON,
OFF,
STARTING,
STOPPING,
UNKOWN
}
private static TorStatusObservable instance;
private TorStatus status = TorStatus.UNKOWN;
private final TorNotificationManager torNotificationManager;
private String lastError;
private int port = -1;
private TorStatusObservable() {
torNotificationManager = new TorNotificationManager();
}
public static TorStatusObservable getInstance() {
if (instance == null) {
instance = new TorStatusObservable();
}
return instance;
}
public static TorStatus getStatus() {
return getInstance().status;
}
public static void updateState(Context context, String status) {
try {
Log.d(TAG, "update tor state: " + status);
getInstance().status = TorStatus.valueOf(status);
if (getInstance().status == TorStatus.OFF) {
getInstance().torNotificationManager.cancelNotifications(context);
} else {
getInstance().torNotificationManager.buildTorNotification(context, getStringForCurrentStatus(context));
}
instance.setChanged();
instance.notifyObservers();
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
public static void setLastError(String error) {
getInstance().lastError = error;
instance.setChanged();
instance.notifyObservers();
}
public static void setProxyPort(int port) {
getInstance().port = port;
instance.setChanged();
instance.notifyObservers();
}
public static int getProxyPort() {
return getInstance().port;
}
@Nullable
public String getLastError() {
return lastError;
}
public static String getStringForCurrentStatus(Context context) {
switch (getInstance().status) {
case ON:
return context.getString(R.string.tor_started);
case STARTING:
return context.getString(R.string.tor_starting);
case STOPPING:
return context.getString(R.string.tor_stopping);
case OFF:
case UNKOWN:
break;
}
return null;
}
}
|