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