VpnConfig.java revision 34e7813e962de99df9813014678ef5901227c5f1
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; 247b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yehimport android.os.SystemClock; 2504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 268909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yehimport java.util.List; 278909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh 2804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh/** 2904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * A simple container used to carry information in VpnBuilder, VpnDialogs, 3004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * and com.android.server.connectivity.Vpn. Internal use only. 3104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * 3204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * @hide 3304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh */ 3404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yehpublic class VpnConfig implements Parcelable { 3504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 367b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh public static final String ACTION_VPN_REVOKED = "android.net.vpn.action.REVOKED"; 377b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 38e9107901ae264de4ff5603d3cfc63a03ca4117d4Chia-chi Yeh public static final String LEGACY_VPN = "[Legacy VPN]"; 39e9107901ae264de4ff5603d3cfc63a03ca4117d4Chia-chi Yeh 407b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh public static Intent getIntentForConfirmation() { 417b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent intent = new Intent(); 427b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.setClassName("com.android.vpndialogs", "com.android.vpndialogs.ConfirmDialog"); 437b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh return intent; 447b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh } 457b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 467b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh public static PendingIntent getIntentForNotification(Context context, VpnConfig config) { 477b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh config.startTime = SystemClock.elapsedRealtime(); 487b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent intent = new Intent(); 497b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.setClassName("com.android.vpndialogs", "com.android.vpndialogs.ManageDialog"); 507b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.putExtra("config", config); 517b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY | 527b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 537b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 547b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh } 557b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 5634e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh public String packagz; 5734e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh public String interfaze; 5834e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh public String session; 5904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public int mtu = -1; 6004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String addresses; 6104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String routes; 628909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh public List<String> dnsServers; 638909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh public List<String> searchDomains; 6434e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh public PendingIntent configureIntent; 6504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public long startTime = -1; 6604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 6704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 6804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public int describeContents() { 6904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh return 0; 7004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 7104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 7204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 7304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public void writeToParcel(Parcel out, int flags) { 7434e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh out.writeString(packagz); 7534e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh out.writeString(interfaze); 7634e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh out.writeString(session); 7704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeInt(mtu); 7804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(addresses); 7904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(routes); 808909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh out.writeStringList(dnsServers); 818909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh out.writeStringList(searchDomains); 8234e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh out.writeParcelable(configureIntent, flags); 8304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeLong(startTime); 8404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 8504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 8604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public static final Parcelable.Creator<VpnConfig> CREATOR = 8704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh new Parcelable.Creator<VpnConfig>() { 8804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 8904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public VpnConfig createFromParcel(Parcel in) { 9004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh VpnConfig config = new VpnConfig(); 9134e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh config.packagz = in.readString(); 9234e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh config.interfaze = in.readString(); 9334e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh config.session = in.readString(); 9404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.mtu = in.readInt(); 9504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.addresses = in.readString(); 9604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.routes = in.readString(); 978909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh config.dnsServers = in.createStringArrayList(); 988909b10175303bd5e2ca82b7ba12cd0017050ef3Chia-chi Yeh config.searchDomains = in.createStringArrayList(); 9934e7813e962de99df9813014678ef5901227c5f1Chia-chi Yeh config.configureIntent = in.readParcelable(null); 10004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.startTime = in.readLong(); 10104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh return config; 10204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 10304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 10404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 10504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public VpnConfig[] newArray(int size) { 10604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh return new VpnConfig[size]; 10704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 10804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh }; 10904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh} 110