104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh/* 204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * Copyright (C) 2011 The Android Open Source Project 304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * 404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * Licensed under the Apache License, Version 2.0 (the "License"); 504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * you may not use this file except in compliance with the License. 604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * You may obtain a copy of the License at 704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * 804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * http://www.apache.org/licenses/LICENSE-2.0 904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * 1004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * Unless required by applicable law or agreed to in writing, software 1104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * distributed under the License is distributed on an "AS IS" BASIS, 1204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * See the License for the specific language governing permissions and 1404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * limitations under the License. 1504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh */ 1604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 1704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yehpackage com.android.internal.net; 1804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 197b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yehimport android.app.PendingIntent; 207b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yehimport android.content.Context; 217b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yehimport android.content.Intent; 2204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yehimport android.os.Parcel; 2304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yehimport android.os.Parcelable; 2404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 258909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yehimport java.util.List; 268909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh 2704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh/** 2804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * A simple container used to carry information in VpnBuilder, VpnDialogs, 2904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * and com.android.server.connectivity.Vpn. Internal use only. 3004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * 3104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * @hide 3204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh */ 3304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yehpublic class VpnConfig implements Parcelable { 3404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 35fcc1b41b663c1a0cb551344c4a16a5ad9ce36d60Chia-chi Yeh public static final String SERVICE_INTERFACE = "android.net.VpnService"; 367b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 37e9107901ae264de4ff5603d3cfc63a03ca4117d4Chia-chi Yeh public static final String LEGACY_VPN = "[Legacy VPN]"; 38e9107901ae264de4ff5603d3cfc63a03ca4117d4Chia-chi Yeh 397b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh public static Intent getIntentForConfirmation() { 407b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent intent = new Intent(); 417b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.setClassName("com.android.vpndialogs", "com.android.vpndialogs.ConfirmDialog"); 427b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh return intent; 437b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh } 447b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 452e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh public static PendingIntent getIntentForStatusPanel(Context context, VpnConfig config) { 467b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent intent = new Intent(); 477b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.setClassName("com.android.vpndialogs", "com.android.vpndialogs.ManageDialog"); 487b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.putExtra("config", config); 497b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY | 507b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 512e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh return PendingIntent.getActivity(context, 0, intent, (config == null) ? 522e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh PendingIntent.FLAG_NO_CREATE : PendingIntent.FLAG_CANCEL_CURRENT); 537b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh } 547b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 55fcc1b41b663c1a0cb551344c4a16a5ad9ce36d60Chia-chi Yeh public String user; 5634e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh public String interfaze; 5734e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh public String session; 5804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public int mtu = -1; 5904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String addresses; 6004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String routes; 618909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh public List<String> dnsServers; 628909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh public List<String> searchDomains; 6334e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh public PendingIntent configureIntent; 6404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public long startTime = -1; 6504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 6604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 6704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public int describeContents() { 6804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh return 0; 6904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 7004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 7104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 7204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public void writeToParcel(Parcel out, int flags) { 73fcc1b41b663c1a0cb551344c4a16a5ad9ce36d60Chia-chi Yeh out.writeString(user); 7434e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh out.writeString(interfaze); 7534e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh out.writeString(session); 7604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeInt(mtu); 7704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(addresses); 7804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(routes); 798909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh out.writeStringList(dnsServers); 808909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh out.writeStringList(searchDomains); 8134e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh out.writeParcelable(configureIntent, flags); 8204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeLong(startTime); 8304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 8404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 8504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public static final Parcelable.Creator<VpnConfig> CREATOR = 8604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh new Parcelable.Creator<VpnConfig>() { 8704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 8804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public VpnConfig createFromParcel(Parcel in) { 8904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh VpnConfig config = new VpnConfig(); 90fcc1b41b663c1a0cb551344c4a16a5ad9ce36d60Chia-chi Yeh config.user = in.readString(); 9134e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh config.interfaze = in.readString(); 9234e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh config.session = in.readString(); 9304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.mtu = in.readInt(); 9404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.addresses = in.readString(); 9504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.routes = in.readString(); 968909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh config.dnsServers = in.createStringArrayList(); 978909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh config.searchDomains = in.createStringArrayList(); 9834e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh config.configureIntent = in.readParcelable(null); 9904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.startTime = in.readLong(); 10004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh return config; 10104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 10204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 10304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 10404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public VpnConfig[] newArray(int size) { 10504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh return new VpnConfig[size]; 10604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 10704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh }; 10804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh} 109