ProxyService.java revision 602b232a06ede86999aa362a12eb28cbc782dc1d
1602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkpackage com.android.proxyhandler; 2602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 3602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkimport android.app.Service; 4602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkimport android.content.Intent; 5602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkimport android.net.Proxy; 6602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkimport android.net.ProxyProperties; 7602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkimport android.os.Bundle; 8602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkimport android.os.IBinder; 9602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkimport android.text.TextUtils; 10602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 11602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk/** 12602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk * @hide 13602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk */ 14602b232a06ede86999aa362a12eb28cbc782dc1dJason Monkpublic class ProxyService extends Service { 15602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 16602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk private static ProxyServer server = null; 17602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 18602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk /** Keep these values up-to-date with PacManager.java */ 19602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk public static final String KEY_PROXY = "keyProxy"; 20602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk public static final String HOST = "localhost"; 21602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk public static final int PORT = 8182; 22602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk public static final String EXCL_LIST = ""; 23602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 24602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk @Override 25602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk public int onStartCommand(Intent intent, int flags, int startId) { 26602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk if (intent != null) { 27602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk handleCommand(intent); 28602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 29602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk return START_STICKY; 30602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 31602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 32602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk private void handleCommand(Intent intent) { 33602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk Bundle bundle = intent.getExtras(); 34602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk ProxyProperties proxy = null; 35602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk if ((bundle != null) && bundle.containsKey(Proxy.EXTRA_PROXY_INFO)) { 36602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk proxy = bundle.getParcelable(Proxy.EXTRA_PROXY_INFO); 37602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk if ((proxy != null) && !TextUtils.isEmpty(proxy.getPacFileUrl())) { 38602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk startProxy(proxy); 39602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } else { 40602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk stopSelf(); 41602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 42602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } else { 43602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk stopSelf(); 44602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 45602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 46602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 47602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 48602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk private void startProxy(ProxyProperties proxy) { 49602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk if (server == null) { 50602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk server = new ProxyServer(); 51602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk server.startServer(); 52602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 53602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk server.setProxy(proxy); 54602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 55602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 56602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk @Override 57602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk public void onDestroy() { 58602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk if (server != null) { 59602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk server.stopServer(); 60602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk server = null; 61602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 62602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 63602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk 64602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk @Override 65602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk public IBinder onBind(Intent intent) { 66602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk return null; 67602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk } 68602b232a06ede86999aa362a12eb28cbc782dc1dJason Monk}