VpnConfig.java revision 7b0b834c3d12564c44ac134879a6dbc70e74be6e
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 2604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh/** 2704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * A simple container used to carry information in VpnBuilder, VpnDialogs, 2804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * and com.android.server.connectivity.Vpn. Internal use only. 2904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * 3004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh * @hide 3104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh */ 3204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yehpublic class VpnConfig implements Parcelable { 3304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 347b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh public static final String ACTION_VPN_REVOKED = "android.net.vpn.action.REVOKED"; 357b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 367b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh public static void enforceCallingPackage(String packageName) { 377b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh if (!"com.android.vpndialogs".equals(packageName)) { 387b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh throw new SecurityException("Unauthorized Caller"); 397b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh } 407b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh } 417b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 427b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh public static Intent getIntentForConfirmation() { 437b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent intent = new Intent(); 447b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.setClassName("com.android.vpndialogs", "com.android.vpndialogs.ConfirmDialog"); 457b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh return intent; 467b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh } 477b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 487b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh public static PendingIntent getIntentForNotification(Context context, VpnConfig config) { 497b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh config.startTime = SystemClock.elapsedRealtime(); 507b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent intent = new Intent(); 517b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.setClassName("com.android.vpndialogs", "com.android.vpndialogs.ManageDialog"); 527b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.putExtra("config", config); 537b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY | 547b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 557b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 567b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh } 577b0b834c3d12564c44ac134879a6dbc70e74be6eChia-chi Yeh 5804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String packageName; 5904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String sessionName; 6004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String interfaceName; 6104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String configureActivity; 6204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public int mtu = -1; 6304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String addresses; 6404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String routes; 6504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public String dnsServers; 6604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public long startTime = -1; 6704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 6804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 6904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public int describeContents() { 7004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh return 0; 7104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh } 7204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh 7304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh @Override 7404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh public void writeToParcel(Parcel out, int flags) { 7504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(packageName); 7604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(sessionName); 7704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(interfaceName); 7804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(configureActivity); 7904ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeInt(mtu); 8004ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(addresses); 8104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(routes); 8204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh out.writeString(dnsServers); 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(); 9104ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.packageName = in.readString(); 9204ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.sessionName = in.readString(); 9304ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.interfaceName = in.readString(); 9404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.configureActivity = in.readString(); 9504ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.mtu = in.readInt(); 9604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.addresses = in.readString(); 9704ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.routes = in.readString(); 9804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh config.dnsServers = in.readString(); 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