c0b5d8a5fe
* Changes + Add PptpProfile.java, PptpService.java. + Add L2tpIpsecPskProfile.java + Add PPTP and L2TP_IPSEC_PSK entries in VpnType.java. + Add the secret option to L2tpProfile.java and have L2tpIpsecProfile extend it. + Add MtpdHelper to send common PPP options. + Add getGatewayIp() to VpnService(). + Revise VpnService.reallyGetHostIp(). Patch Set 6, 7, 8: + Add L2TP secret flag in L2tpProfile. Patch Set 9: + Add description to VpnType. Patch Set 11: + Pass ipparam to mtpd. Patch Set 12: + Add L2TP secret support + Fix string constants
178 lines
4.8 KiB
Java
178 lines
4.8 KiB
Java
/*
|
|
* Copyright (C) 2009, The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.net.vpn;
|
|
|
|
import android.content.Context;
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
|
|
import java.io.IOException;
|
|
import java.io.Serializable;
|
|
|
|
/**
|
|
* A VPN profile.
|
|
* {@hide}
|
|
*/
|
|
public abstract class VpnProfile implements Parcelable, Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
private String mName; // unique display name
|
|
private String mId; // unique identifier
|
|
private String mServerName; // VPN server name
|
|
private String mDomainSuffices; // space separated list
|
|
private String mRouteList; // space separated list
|
|
private String mSavedUsername;
|
|
private boolean mIsCustomized;
|
|
private transient VpnState mState = VpnState.IDLE;
|
|
|
|
/** Sets a user-friendly name for this profile. */
|
|
public void setName(String name) {
|
|
mName = name;
|
|
}
|
|
|
|
public String getName() {
|
|
return mName;
|
|
}
|
|
|
|
/**
|
|
* Sets an ID for this profile. The caller should make sure the
|
|
* uniqueness of the ID.
|
|
*/
|
|
public void setId(String id) {
|
|
mId = id;
|
|
}
|
|
|
|
public String getId() {
|
|
return mId;
|
|
}
|
|
|
|
/**
|
|
* Sets the name of the VPN server. Used for DNS lookup.
|
|
*/
|
|
public void setServerName(String name) {
|
|
mServerName = name;
|
|
}
|
|
|
|
public String getServerName() {
|
|
return mServerName;
|
|
}
|
|
|
|
/**
|
|
* Sets the domain suffices for DNS resolution.
|
|
*
|
|
* @param entries a comma-separated list of domain suffices
|
|
*/
|
|
public void setDomainSuffices(String entries) {
|
|
mDomainSuffices = entries;
|
|
}
|
|
|
|
public String getDomainSuffices() {
|
|
return mDomainSuffices;
|
|
}
|
|
|
|
/**
|
|
* Sets the routing info for this VPN connection.
|
|
*
|
|
* @param entries a comma-separated list of routes; each entry is in the
|
|
* format of "(network address)/(network mask)"
|
|
*/
|
|
public void setRouteList(String entries) {
|
|
mRouteList = entries;
|
|
}
|
|
|
|
public String getRouteList() {
|
|
return mRouteList;
|
|
}
|
|
|
|
public void setSavedUsername(String name) {
|
|
mSavedUsername = name;
|
|
}
|
|
|
|
public String getSavedUsername() {
|
|
return mSavedUsername;
|
|
}
|
|
|
|
public void setState(VpnState state) {
|
|
mState = state;
|
|
}
|
|
|
|
public VpnState getState() {
|
|
return ((mState == null) ? VpnState.IDLE : mState);
|
|
}
|
|
|
|
public boolean isIdle() {
|
|
return (mState == VpnState.IDLE);
|
|
}
|
|
|
|
/**
|
|
* Returns whether this profile is custom made (as opposed to being
|
|
* created by provided user interface).
|
|
*/
|
|
public boolean isCustomized() {
|
|
return mIsCustomized;
|
|
}
|
|
|
|
/**
|
|
* Returns the VPN type of the profile.
|
|
*/
|
|
public abstract VpnType getType();
|
|
|
|
void setCustomized(boolean customized) {
|
|
mIsCustomized = customized;
|
|
}
|
|
|
|
protected void readFromParcel(Parcel in) {
|
|
mName = in.readString();
|
|
mId = in.readString();
|
|
mServerName = in.readString();
|
|
mDomainSuffices = in.readString();
|
|
mRouteList = in.readString();
|
|
mSavedUsername = in.readString();
|
|
}
|
|
|
|
public static final Parcelable.Creator<VpnProfile> CREATOR =
|
|
new Parcelable.Creator<VpnProfile>() {
|
|
public VpnProfile createFromParcel(Parcel in) {
|
|
VpnType type = Enum.valueOf(VpnType.class, in.readString());
|
|
boolean customized = in.readInt() > 0;
|
|
VpnProfile p = new VpnManager(null).createVpnProfile(type,
|
|
customized);
|
|
if (p == null) return null;
|
|
p.readFromParcel(in);
|
|
return p;
|
|
}
|
|
|
|
public VpnProfile[] newArray(int size) {
|
|
return new VpnProfile[size];
|
|
}
|
|
};
|
|
|
|
public void writeToParcel(Parcel parcel, int flags) {
|
|
parcel.writeString(getType().toString());
|
|
parcel.writeInt(mIsCustomized ? 1 : 0);
|
|
parcel.writeString(mName);
|
|
parcel.writeString(mId);
|
|
parcel.writeString(mServerName);
|
|
parcel.writeString(mDomainSuffices);
|
|
parcel.writeString(mRouteList);
|
|
parcel.writeString(mSavedUsername);
|
|
}
|
|
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
}
|