Skip to content

Commit 1d4cd91

Browse files
committed
SocksTun: Add support for overriding the SOCKS5 server UDP address.
1 parent 1c6e6c7 commit 1d4cd91

6 files changed

Lines changed: 33 additions & 0 deletions

File tree

app/src/main/java/hev/sockstun/MainActivity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
public class MainActivity extends Activity implements View.OnClickListener {
2424
private Preferences prefs;
2525
private EditText edittext_socks_addr;
26+
private EditText edittext_socks_udp_addr;
2627
private EditText edittext_socks_port;
2728
private EditText edittext_socks_user;
2829
private EditText edittext_socks_pass;
@@ -45,6 +46,7 @@ public void onCreate(Bundle savedInstanceState) {
4546
setContentView(R.layout.main);
4647

4748
edittext_socks_addr = (EditText) findViewById(R.id.socks_addr);
49+
edittext_socks_udp_addr = (EditText) findViewById(R.id.socks_udp_addr);
4850
edittext_socks_port = (EditText) findViewById(R.id.socks_port);
4951
edittext_socks_user = (EditText) findViewById(R.id.socks_user);
5052
edittext_socks_pass = (EditText) findViewById(R.id.socks_pass);
@@ -109,6 +111,7 @@ public void onClick(View view) {
109111

110112
private void updateUI() {
111113
edittext_socks_addr.setText(prefs.getSocksAddress());
114+
edittext_socks_udp_addr.setText(prefs.getSocksUdpAddress());
112115
edittext_socks_port.setText(Integer.toString(prefs.getSocksPort()));
113116
edittext_socks_user.setText(prefs.getSocksUsername());
114117
edittext_socks_pass.setText(prefs.getSocksPassword());
@@ -122,6 +125,7 @@ private void updateUI() {
122125

123126
boolean editable = !prefs.getEnable();
124127
edittext_socks_addr.setEnabled(editable);
128+
edittext_socks_udp_addr.setEnabled(editable);
125129
edittext_socks_port.setEnabled(editable);
126130
edittext_socks_user.setEnabled(editable);
127131
edittext_socks_pass.setEnabled(editable);
@@ -143,6 +147,7 @@ private void updateUI() {
143147

144148
private void savePrefs() {
145149
prefs.setSocksAddress(edittext_socks_addr.getText().toString());
150+
prefs.setSocksUdpAddress(edittext_socks_udp_addr.getText().toString());
146151
prefs.setSocksPort(Integer.parseInt(edittext_socks_port.getText().toString()));
147152
prefs.setSocksUsername(edittext_socks_user.getText().toString());
148153
prefs.setSocksPassword(edittext_socks_pass.getText().toString());

app/src/main/java/hev/sockstun/Preferences.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class Preferences
1818
{
1919
public static final String PREFS_NAME = "SocksPrefs";
2020
public static final String SOCKS_ADDR = "SocksAddr";
21+
public static final String SOCKS_UDP_ADDR = "SocksUdpAddr";
2122
public static final String SOCKS_PORT = "SocksPort";
2223
public static final String SOCKS_USER = "SocksUser";
2324
public static final String SOCKS_PASS = "SocksPass";
@@ -47,6 +48,16 @@ public void setSocksAddress(String addr) {
4748
editor.commit();
4849
}
4950

51+
public String getSocksUdpAddress() {
52+
return prefs.getString(SOCKS_UDP_ADDR, "");
53+
}
54+
55+
public void setSocksUdpAddress(String addr) {
56+
SharedPreferences.Editor editor = prefs.edit();
57+
editor.putString(SOCKS_UDP_ADDR, addr);
58+
editor.commit();
59+
}
60+
5061
public int getSocksPort() {
5162
return prefs.getInt(SOCKS_PORT, 1080);
5263
}

app/src/main/java/hev/sockstun/TProxyService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@ public void startService() {
142142
" address: '" + prefs.getSocksAddress() + "'\n" +
143143
" udp: '" + (prefs.getUdpInTcp() ? "tcp" : "udp") + "'\n";
144144

145+
if (!prefs.getSocksUdpAddress().isEmpty()) {
146+
tproxy_conf += " udp-address: '" + prefs.getSocksUdpAddress() + "'\n";
147+
}
148+
145149
if (!prefs.getSocksUsername().isEmpty() &&
146150
!prefs.getSocksPassword().isEmpty()) {
147151
tproxy_conf += " username: '" + prefs.getSocksUsername() + "'\n";

app/src/main/res/layout/main.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@
1919
android:layout_width="fill_parent"
2020
android:layout_height="wrap_content"
2121
android:singleLine="true"/>
22+
<TextView
23+
android:layout_width="wrap_content"
24+
android:layout_height="wrap_content"
25+
android:layout_alignParentLeft="true"
26+
android:text="@string/socks_udp_addr"
27+
android:singleLine="true"/>
28+
<EditText
29+
android:id="@+id/socks_udp_addr"
30+
android:layout_width="fill_parent"
31+
android:layout_height="wrap_content"
32+
android:singleLine="true"/>
2233
<TextView
2334
android:layout_width="wrap_content"
2435
android:layout_height="wrap_content"

app/src/main/res/values-ru-rRU/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<resources>
33
<string name="app_name">SocksTun</string>
44
<string name="socks_addr">Адрес Socks:</string>
5+
<string name="socks_udp_addr">UDP-aдрес Socks:</string>
56
<string name="socks_port">Порт Socks:</string>
67
<string name="socks_user">Имя пользователя Socks:</string>
78
<string name="socks_pass">Пароль Socks:</string>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<resources>
33
<string name="app_name">SocksTun</string>
44
<string name="socks_addr">Socks Address:</string>
5+
<string name="socks_udp_addr">Socks UDP Address:</string>
56
<string name="socks_port">Socks Port:</string>
67
<string name="socks_user">Socks Username:</string>
78
<string name="socks_pass">Socks Password:</string>

0 commit comments

Comments
 (0)