19ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh/* 29ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * Copyright (C) 2011 The Android Open Source Project 39ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * 49ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 59ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * you may not use this file except in compliance with the License. 69ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * You may obtain a copy of the License at 79ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * 89ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * http://www.apache.org/licenses/LICENSE-2.0 99ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * 109ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * Unless required by applicable law or agreed to in writing, software 119ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS, 129ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * See the License for the specific language governing permissions and 149ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh * limitations under the License. 159ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh */ 169ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh 179ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehpackage com.example.android.toyvpn; 189ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh 199ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehimport android.app.Activity; 209ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehimport android.content.Intent; 219ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehimport android.net.VpnService; 229ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehimport android.os.Bundle; 239ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehimport android.util.Log; 249ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehimport android.view.View; 259ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehimport android.widget.TextView; 269ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehimport android.widget.Button; 279ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh 289ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yehpublic class ToyVpnClient extends Activity implements View.OnClickListener { 299ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh private TextView mServerAddress; 309ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh private TextView mServerPort; 319ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh private TextView mSharedSecret; 329ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh 339ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh @Override 349ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh public void onCreate(Bundle savedInstanceState) { 359ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh super.onCreate(savedInstanceState); 369ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh setContentView(R.layout.form); 379ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh 389ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh mServerAddress = (TextView) findViewById(R.id.address); 399ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh mServerPort = (TextView) findViewById(R.id.port); 409ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh mSharedSecret = (TextView) findViewById(R.id.secret); 419ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh 429ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh findViewById(R.id.connect).setOnClickListener(this); 439ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh } 449ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh 459ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh @Override 469ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh public void onClick(View v) { 479ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh Intent intent = VpnService.prepare(this); 489ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh if (intent != null) { 499ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh startActivityForResult(intent, 0); 509ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh } else { 519ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh onActivityResult(0, RESULT_OK, null); 529ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh } 539ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh } 549ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh 559ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh @Override 569ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh protected void onActivityResult(int request, int result, Intent data) { 579ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh if (result == RESULT_OK) { 589ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh String prefix = getPackageName(); 599ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh Intent intent = new Intent(this, ToyVpnService.class) 609ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh .putExtra(prefix + ".ADDRESS", mServerAddress.getText().toString()) 619ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh .putExtra(prefix + ".PORT", mServerPort.getText().toString()) 629ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh .putExtra(prefix + ".SECRET", mSharedSecret.getText().toString()); 639ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh startService(intent); 649ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh } 659ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh } 669ad3f40880fa998063e6d3bcb994e918b44272bcChia-chi Yeh} 67