blob: bd6c80902ca0d08cfe01792f44c41661fbe1810d [file] [log] [blame]
/*
* 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;
}
}