OLD | NEW |
1 /* | 1 /* |
2 * This file is part of the Adblock Plus, | 2 * This file is part of the Adblock Plus, |
3 * Copyright (C) 2006-2012 Eyeo GmbH | 3 * Copyright (C) 2006-2012 Eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 private final static String IPTABLES_RETURN = " -t nat -m owner --uid-owner {{
UID}} -A OUTPUT -p tcp -j RETURN\n"; | 88 private final static String IPTABLES_RETURN = " -t nat -m owner --uid-owner {{
UID}} -A OUTPUT -p tcp -j RETURN\n"; |
89 private final static String IPTABLES_ADD_HTTP = " -t nat -A OUTPUT -p tcp --dp
ort 80 -j REDIRECT --to {{PORT}}\n"; | 89 private final static String IPTABLES_ADD_HTTP = " -t nat -A OUTPUT -p tcp --dp
ort 80 -j REDIRECT --to {{PORT}}\n"; |
90 | 90 |
91 private Notification ongoingNotification; | 91 private Notification ongoingNotification; |
92 private PendingIntent contentIntent; | 92 private PendingIntent contentIntent; |
93 | 93 |
94 private Handler notrafficHandler; | 94 private Handler notrafficHandler; |
95 | 95 |
96 protected ProxyServer proxy = null; | 96 protected ProxyServer proxy = null; |
97 protected int port; | 97 protected int port; |
| 98 private Properties proxyConfiguration = new Properties(); |
98 | 99 |
99 /** | 100 /** |
100 * Indicates that service is working with root privileges. | 101 * Indicates that service is working with root privileges. |
101 */ | 102 */ |
102 private boolean transparent = false; | 103 private boolean transparent = false; |
103 /** | 104 /** |
104 * Indicates that service has autoconfigured Android proxy settings (version | 105 * Indicates that service has autoconfigured Android proxy settings (version |
105 * 3.1+). | 106 * 3.1+). |
106 */ | 107 */ |
107 private boolean nativeProxy = false; | 108 private boolean nativeProxy = false; |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 // TODO Add port travel | 222 // TODO Add port travel |
222 listen = new ServerSocket(port, 1024); | 223 listen = new ServerSocket(port, 1024); |
223 } | 224 } |
224 catch (IOException e) | 225 catch (IOException e) |
225 { | 226 { |
226 sendBroadcast(new Intent(BROADCAST_PROXY_FAILED).putExtra("msg", e.getMe
ssage())); | 227 sendBroadcast(new Intent(BROADCAST_PROXY_FAILED).putExtra("msg", e.getMe
ssage())); |
227 Log.e(TAG, null, e); | 228 Log.e(TAG, null, e); |
228 return; | 229 return; |
229 } | 230 } |
230 | 231 |
231 Properties config = new Properties(); | 232 proxyConfiguration.put("handler", "main"); |
232 config.put("handler", "main"); | 233 proxyConfiguration.put("main.prefix", ""); |
233 config.put("main.prefix", ""); | 234 proxyConfiguration.put("main.class", "sunlabs.brazil.server.ChainHandler")
; |
234 config.put("main.class", "sunlabs.brazil.server.ChainHandler"); | |
235 if (transparent) | 235 if (transparent) |
236 { | 236 { |
237 config.put("main.handlers", "urlmodifier adblock"); | 237 proxyConfiguration.put("main.handlers", "urlmodifier adblock"); |
238 config.put("urlmodifier.class", "org.adblockplus.brazil.TransparentProxy
Handler"); | 238 proxyConfiguration.put("urlmodifier.class", "org.adblockplus.brazil.Tran
sparentProxyHandler"); |
239 } | 239 } |
240 else | 240 else |
241 { | 241 { |
242 config.put("main.handlers", "https adblock"); | 242 proxyConfiguration.put("main.handlers", "https adblock"); |
243 config.put("https.class", "org.adblockplus.brazil.SSLConnectionHandler")
; | 243 proxyConfiguration.put("https.class", "org.adblockplus.brazil.SSLConnect
ionHandler"); |
244 } | 244 } |
245 config.put("adblock.class", "org.adblockplus.brazil.RequestHandler"); | 245 proxyConfiguration.put("adblock.class", "org.adblockplus.brazil.RequestHan
dler"); |
246 if (logRequests) | 246 if (logRequests) |
247 config.put("adblock.proxylog", "yes"); | 247 proxyConfiguration.put("adblock.proxylog", "yes"); |
248 | 248 |
249 configureUserProxy(config, proxyHost, proxyPort, proxyExcl, proxyUser, pro
xyPass); | 249 configureUserProxy(proxyConfiguration, proxyHost, proxyPort, proxyExcl, pr
oxyUser, proxyPass); |
250 | 250 |
251 proxy = new ProxyServer(); | 251 proxy = new ProxyServer(); |
252 proxy.logLevel = Server.LOG_DIAGNOSTIC; | 252 proxy.logLevel = Server.LOG_DIAGNOSTIC; |
253 proxy.setup(listen, config.getProperty("handler"), config); | 253 proxy.setup(listen, proxyConfiguration.getProperty("handler"), proxyConfig
uration); |
254 proxy.start(); | 254 proxy.start(); |
255 } | 255 } |
256 | 256 |
257 prefs.registerOnSharedPreferenceChangeListener(this); | 257 prefs.registerOnSharedPreferenceChangeListener(this); |
258 | 258 |
259 String msg = getString(transparent ? R.string.notif_all : nativeProxy ? R.st
ring.notif_wifi : R.string.notif_waiting); | 259 String msg = getString(transparent ? R.string.notif_all : nativeProxy ? R.st
ring.notif_wifi : R.string.notif_waiting); |
260 if (!transparent && !nativeProxy) | 260 if (!transparent && !nativeProxy) |
261 { | 261 { |
262 // Initiate no traffic check | 262 // Initiate no traffic check |
263 notrafficHandler = new Handler(); | 263 notrafficHandler = new Handler(); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 | 336 |
337 Log.i(TAG, "Service stopped"); | 337 Log.i(TAG, "Service stopped"); |
338 } | 338 } |
339 | 339 |
340 /** | 340 /** |
341 * Restores system proxy settings via native call on Android 3.1+ devices usin
g | 341 * Restores system proxy settings via native call on Android 3.1+ devices usin
g |
342 * Java reflection. | 342 * Java reflection. |
343 */ | 343 */ |
344 private void clearConnectionProxy() | 344 private void clearConnectionProxy() |
345 { | 345 { |
346 String proxyHost = (String) proxy.props.getProperty("adblock.proxyHost"); | 346 String proxyHost = (String) proxyConfiguration.getProperty("adblock.proxyHos
t"); |
347 String proxyPort = (String) proxy.props.getProperty("adblock.proxyPort"); | 347 String proxyPort = (String) proxyConfiguration.getProperty("adblock.proxyPor
t"); |
348 String proxyExcl = (String) proxy.props.getProperty("adblock.proxyExcl"); | 348 String proxyExcl = (String) proxyConfiguration.getProperty("adblock.proxyExc
l"); |
349 int port = 0; | 349 int port = 0; |
350 try | 350 try |
351 { | 351 { |
352 if (proxyHost != null) | 352 if (proxyHost != null) |
353 port = Integer.valueOf(proxyPort); | 353 port = Integer.valueOf(proxyPort); |
354 } | 354 } |
355 catch (NumberFormatException e) | 355 catch (NumberFormatException e) |
356 { | 356 { |
357 Log.e(TAG, "Bad port setting", e); | 357 Log.e(TAG, "Bad port setting", e); |
358 } | 358 } |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 String keyUser = getString(R.string.pref_proxyuser); | 462 String keyUser = getString(R.string.pref_proxyuser); |
463 String keyPass = getString(R.string.pref_proxypass); | 463 String keyPass = getString(R.string.pref_proxypass); |
464 if (key.equals(ketHost) || key.equals(keyPort) || key.equals(keyUser) || k
ey.equals(keyPass)) | 464 if (key.equals(ketHost) || key.equals(keyPort) || key.equals(keyUser) || k
ey.equals(keyPass)) |
465 { | 465 { |
466 String proxyHost = sharedPreferences.getString(ketHost, null); | 466 String proxyHost = sharedPreferences.getString(ketHost, null); |
467 String proxyPort = sharedPreferences.getString(keyPort, null); | 467 String proxyPort = sharedPreferences.getString(keyPort, null); |
468 String proxyUser = sharedPreferences.getString(keyUser, null); | 468 String proxyUser = sharedPreferences.getString(keyUser, null); |
469 String proxyPass = sharedPreferences.getString(keyPass, null); | 469 String proxyPass = sharedPreferences.getString(keyPass, null); |
470 if (proxy != null) | 470 if (proxy != null) |
471 { | 471 { |
472 configureUserProxy(proxy.props, proxyHost, proxyPort, null, proxyUser,
proxyPass); | 472 configureUserProxy(proxyConfiguration, proxyHost, proxyPort, null, pro
xyUser, proxyPass); |
473 proxy.restart(proxy.props.getProperty("handler")); | 473 proxy.restart(proxyConfiguration.getProperty("handler")); |
474 } | 474 } |
475 } | 475 } |
476 } | 476 } |
477 } | 477 } |
478 | 478 |
479 public boolean isTransparent() | 479 public boolean isTransparent() |
480 { | 480 { |
481 return transparent; | 481 return transparent; |
482 } | 482 } |
483 | 483 |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
704 */ | 704 */ |
705 method = lp.getClass().getMethod("getHttpProxy"); | 705 method = lp.getClass().getMethod("getHttpProxy"); |
706 Object pp = method.invoke(lp); | 706 Object pp = method.invoke(lp); |
707 | 707 |
708 String[] userProxy = ProxySettings.getUserProxy(pp); | 708 String[] userProxy = ProxySettings.getUserProxy(pp); |
709 if (userProxy != null && Integer.valueOf(userProxy[1]) != port) | 709 if (userProxy != null && Integer.valueOf(userProxy[1]) != port) |
710 { | 710 { |
711 Log.i(TAG, "User has set new proxy: " + userProxy[0] + ":" + userPro
xy[1] + "(" + userProxy[2] + ")"); | 711 Log.i(TAG, "User has set new proxy: " + userProxy[0] + ":" + userPro
xy[1] + "(" + userProxy[2] + ")"); |
712 if (proxy != null) | 712 if (proxy != null) |
713 { | 713 { |
714 configureUserProxy(proxy.props, userProxy[0], userProxy[1], userPr
oxy[2], null, null); | 714 configureUserProxy(proxyConfiguration, userProxy[0], userProxy[1],
userProxy[2], null, null); |
715 proxy.restart(proxy.props.getProperty("handler")); | 715 proxy.restart(proxyConfiguration.getProperty("handler")); |
716 } | 716 } |
717 } | 717 } |
718 } | 718 } |
719 catch (Exception e) | 719 catch (Exception e) |
720 { | 720 { |
721 // This should not happen | 721 // This should not happen |
722 Log.e(TAG, null, e); | 722 Log.e(TAG, null, e); |
723 } | 723 } |
724 | 724 |
725 } | 725 } |
(...skipping 21 matching lines...) Expand all Loading... |
747 @Override | 747 @Override |
748 public void log(int level, Object obj, String message) | 748 public void log(int level, Object obj, String message) |
749 { | 749 { |
750 if (level <= logLevel) | 750 if (level <= logLevel) |
751 { | 751 { |
752 Log.println(7 - level, obj != null ? obj.toString() : TAG, message); | 752 Log.println(7 - level, obj != null ? obj.toString() : TAG, message); |
753 } | 753 } |
754 } | 754 } |
755 } | 755 } |
756 } | 756 } |
OLD | NEW |