]>
Commit | Line | Data |
---|---|---|
3d9127da | 1 | /* |
dda8b891 | 2 | * Copyright (C) 2012-2019 Tobias Brunner |
3d9127da TB |
3 | * Copyright (C) 2012 Giuliano Grassi |
4 | * Copyright (C) 2012 Ralf Sager | |
19ef2aec TB |
5 | * |
6 | * Copyright (C) secunet Security Networks AG | |
3d9127da TB |
7 | * |
8 | * This program is free software; you can redistribute it and/or modify it | |
9 | * under the terms of the GNU General Public License as published by the | |
10 | * Free Software Foundation; either version 2 of the License, or (at your | |
11 | * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, but | |
14 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
15 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 | * for more details. | |
17 | */ | |
18 | ||
19 | package org.strongswan.android.data; | |
20 | ||
f3d8da76 | 21 | |
800f881a TB |
22 | import android.text.TextUtils; |
23 | ||
24 | import java.util.Arrays; | |
25 | import java.util.SortedSet; | |
26 | import java.util.TreeSet; | |
c4ab9af7 TB |
27 | import java.util.UUID; |
28 | ||
8d4eea53 | 29 | public class VpnProfile implements Cloneable |
3d9127da | 30 | { |
f3d8da76 TB |
31 | /* While storing this as EnumSet would be nicer this simplifies storing it in a database */ |
32 | public static final int SPLIT_TUNNELING_BLOCK_IPV4 = 1; | |
33 | public static final int SPLIT_TUNNELING_BLOCK_IPV6 = 2; | |
a7060581 TB |
34 | |
35 | public static final int FLAGS_SUPPRESS_CERT_REQS = 1 << 0; | |
36 | public static final int FLAGS_DISABLE_CRL = 1 << 1; | |
37 | public static final int FLAGS_DISABLE_OCSP = 1 << 2; | |
38 | public static final int FLAGS_STRICT_REVOCATION = 1 << 3; | |
205ec47d | 39 | public static final int FLAGS_RSA_PSS = 1 << 4; |
35819143 | 40 | public static final int FLAGS_IPv6_TRANSPORT = 1 << 5; |
f3d8da76 | 41 | |
e09f4120 | 42 | private String mName, mGateway, mUsername, mPassword, mCertificate, mUserCertificate; |
43b33f07 | 43 | private String mRemoteId, mLocalId, mExcludedSubnets, mIncludedSubnets, mSelectedApps; |
dda8b891 | 44 | private String mIkeProposal, mEspProposal, mDnsServers; |
0204374e | 45 | private Integer mMTU, mPort, mSplitTunneling, mNATKeepAlive, mFlags; |
43b33f07 | 46 | private SelectedAppsHandling mSelectedAppsHandling = SelectedAppsHandling.SELECTED_APPS_DISABLE; |
48f51d94 | 47 | private VpnType mVpnType; |
c4ab9af7 | 48 | private UUID mUUID; |
3d9127da TB |
49 | private long mId = -1; |
50 | ||
43b33f07 TB |
51 | public enum SelectedAppsHandling |
52 | { | |
53 | SELECTED_APPS_DISABLE(0), | |
54 | SELECTED_APPS_EXCLUDE(1), | |
55 | SELECTED_APPS_ONLY(2); | |
56 | ||
57 | private Integer mValue; | |
58 | ||
59 | SelectedAppsHandling(int value) | |
60 | { | |
61 | mValue = value; | |
62 | } | |
63 | ||
64 | public Integer getValue() | |
65 | { | |
66 | return mValue; | |
67 | } | |
68 | } | |
69 | ||
c4ab9af7 TB |
70 | public VpnProfile() |
71 | { | |
72 | this.mUUID = UUID.randomUUID(); | |
73 | } | |
74 | ||
3d9127da TB |
75 | public long getId() |
76 | { | |
77 | return mId; | |
78 | } | |
79 | ||
80 | public void setId(long id) | |
81 | { | |
82 | this.mId = id; | |
83 | } | |
84 | ||
c4ab9af7 TB |
85 | public void setUUID(UUID uuid) |
86 | { | |
87 | this.mUUID = uuid; | |
88 | } | |
89 | ||
90 | public UUID getUUID() | |
91 | { | |
92 | return mUUID; | |
93 | } | |
94 | ||
3d9127da TB |
95 | public String getName() |
96 | { | |
97 | return mName; | |
98 | } | |
99 | ||
100 | public void setName(String name) | |
101 | { | |
102 | this.mName = name; | |
103 | } | |
104 | ||
105 | public String getGateway() | |
106 | { | |
107 | return mGateway; | |
108 | } | |
109 | ||
110 | public void setGateway(String gateway) | |
111 | { | |
112 | this.mGateway = gateway; | |
113 | } | |
114 | ||
48f51d94 TB |
115 | public VpnType getVpnType() |
116 | { | |
117 | return mVpnType; | |
118 | } | |
119 | ||
120 | public void setVpnType(VpnType type) | |
121 | { | |
122 | this.mVpnType = type; | |
123 | } | |
124 | ||
24c22a3f TB |
125 | public String getIkeProposal() |
126 | { | |
127 | return mIkeProposal; | |
128 | } | |
129 | ||
130 | public void setIkeProposal(String proposal) | |
131 | { | |
132 | this.mIkeProposal = proposal; | |
133 | } | |
134 | ||
135 | public String getEspProposal() | |
136 | { | |
137 | return mEspProposal; | |
138 | } | |
139 | ||
140 | public void setEspProposal(String proposal) | |
141 | { | |
142 | this.mEspProposal = proposal; | |
143 | } | |
144 | ||
dda8b891 TB |
145 | public String getDnsServers() |
146 | { | |
147 | return mDnsServers; | |
148 | } | |
149 | ||
150 | public void setDnsServers(String dns) | |
151 | { | |
152 | this.mDnsServers = dns; | |
153 | } | |
154 | ||
3d9127da TB |
155 | public String getUsername() |
156 | { | |
157 | return mUsername; | |
158 | } | |
159 | ||
160 | public void setUsername(String username) | |
161 | { | |
162 | this.mUsername = username; | |
163 | } | |
164 | ||
165 | public String getPassword() | |
166 | { | |
167 | return mPassword; | |
168 | } | |
169 | ||
170 | public void setPassword(String password) | |
171 | { | |
172 | this.mPassword = password; | |
173 | } | |
174 | ||
175 | public String getCertificateAlias() | |
176 | { | |
177 | return mCertificate; | |
178 | } | |
179 | ||
e09f4120 | 180 | public void setCertificateAlias(String alias) |
3d9127da | 181 | { |
e09f4120 TB |
182 | this.mCertificate = alias; |
183 | } | |
184 | ||
185 | public String getUserCertificateAlias() | |
186 | { | |
187 | return mUserCertificate; | |
188 | } | |
189 | ||
190 | public void setUserCertificateAlias(String alias) | |
191 | { | |
192 | this.mUserCertificate = alias; | |
3d9127da TB |
193 | } |
194 | ||
89149dbb TB |
195 | public String getLocalId() |
196 | { | |
197 | return mLocalId; | |
198 | } | |
199 | ||
200 | public void setLocalId(String localId) | |
201 | { | |
202 | this.mLocalId = localId; | |
203 | } | |
204 | ||
205 | public String getRemoteId() | |
206 | { | |
207 | return mRemoteId; | |
208 | } | |
209 | ||
210 | public void setRemoteId(String remoteId) | |
211 | { | |
212 | this.mRemoteId = remoteId; | |
213 | } | |
214 | ||
7e2a6c4a TB |
215 | public Integer getMTU() |
216 | { | |
217 | return mMTU; | |
218 | } | |
219 | ||
220 | public void setMTU(Integer mtu) | |
221 | { | |
222 | this.mMTU = mtu; | |
223 | } | |
224 | ||
5b11855f TB |
225 | public Integer getPort() |
226 | { | |
227 | return mPort; | |
228 | } | |
229 | ||
230 | public void setPort(Integer port) | |
231 | { | |
232 | this.mPort = port; | |
233 | } | |
234 | ||
a2830231 TB |
235 | public Integer getNATKeepAlive() |
236 | { | |
237 | return mNATKeepAlive; | |
238 | } | |
239 | ||
240 | public void setNATKeepAlive(Integer keepalive) | |
241 | { | |
242 | this.mNATKeepAlive = keepalive; | |
243 | } | |
244 | ||
13ead876 TB |
245 | public void setExcludedSubnets(String excludedSubnets) |
246 | { | |
247 | this.mExcludedSubnets = excludedSubnets; | |
248 | } | |
249 | ||
250 | public String getExcludedSubnets() | |
251 | { | |
252 | return mExcludedSubnets; | |
253 | } | |
254 | ||
a9875259 TB |
255 | public void setIncludedSubnets(String includedSubnets) |
256 | { | |
257 | this.mIncludedSubnets = includedSubnets; | |
258 | } | |
800f881a | 259 | |
a9875259 TB |
260 | public String getIncludedSubnets() |
261 | { | |
262 | return mIncludedSubnets; | |
263 | } | |
264 | ||
43b33f07 TB |
265 | public void setSelectedApps(String selectedApps) |
266 | { | |
267 | this.mSelectedApps = selectedApps; | |
268 | } | |
269 | ||
800f881a TB |
270 | public void setSelectedApps(SortedSet<String> selectedApps) |
271 | { | |
272 | this.mSelectedApps = selectedApps.size() > 0 ? TextUtils.join(" ", selectedApps) : null; | |
273 | } | |
274 | ||
43b33f07 TB |
275 | public String getSelectedApps() |
276 | { | |
277 | return mSelectedApps; | |
278 | } | |
279 | ||
800f881a TB |
280 | public SortedSet<String> getSelectedAppsSet() |
281 | { | |
282 | TreeSet<String> set = new TreeSet<>(); | |
283 | if (!TextUtils.isEmpty(mSelectedApps)) | |
284 | { | |
285 | set.addAll(Arrays.asList(mSelectedApps.split("\\s+"))); | |
286 | } | |
287 | return set; | |
288 | } | |
289 | ||
43b33f07 TB |
290 | public void setSelectedAppsHandling(SelectedAppsHandling selectedAppsHandling) |
291 | { | |
292 | this.mSelectedAppsHandling = selectedAppsHandling; | |
293 | } | |
294 | ||
295 | public void setSelectedAppsHandling(Integer value) | |
296 | { | |
297 | mSelectedAppsHandling = SelectedAppsHandling.SELECTED_APPS_DISABLE; | |
298 | for (SelectedAppsHandling handling : SelectedAppsHandling.values()) | |
299 | { | |
300 | if (handling.mValue.equals(value)) | |
301 | { | |
302 | mSelectedAppsHandling = handling; | |
303 | break; | |
304 | } | |
305 | } | |
306 | } | |
307 | ||
308 | public SelectedAppsHandling getSelectedAppsHandling() | |
309 | { | |
310 | return mSelectedAppsHandling; | |
311 | } | |
312 | ||
f3d8da76 TB |
313 | public Integer getSplitTunneling() |
314 | { | |
315 | return mSplitTunneling; | |
316 | } | |
317 | ||
318 | public void setSplitTunneling(Integer splitTunneling) | |
319 | { | |
320 | this.mSplitTunneling = splitTunneling; | |
321 | } | |
322 | ||
0204374e TB |
323 | public Integer getFlags() |
324 | { | |
ebf369c4 | 325 | return mFlags == null ? 0 : mFlags; |
0204374e TB |
326 | } |
327 | ||
328 | public void setFlags(Integer flags) | |
329 | { | |
330 | this.mFlags = flags; | |
331 | } | |
332 | ||
3d9127da TB |
333 | @Override |
334 | public String toString() | |
335 | { | |
336 | return mName; | |
337 | } | |
c6b736b9 TB |
338 | |
339 | @Override | |
340 | public boolean equals(Object o) | |
341 | { | |
342 | if (o != null && o instanceof VpnProfile) | |
343 | { | |
c4ab9af7 TB |
344 | VpnProfile other = (VpnProfile)o; |
345 | if (this.mUUID != null && other.getUUID() != null) | |
346 | { | |
347 | return this.mUUID.equals(other.getUUID()); | |
348 | } | |
349 | return this.mId == other.getId(); | |
c6b736b9 TB |
350 | } |
351 | return false; | |
352 | } | |
8d4eea53 TB |
353 | |
354 | @Override | |
355 | public VpnProfile clone() | |
356 | { | |
357 | try | |
358 | { | |
359 | return (VpnProfile)super.clone(); | |
360 | } | |
361 | catch (CloneNotSupportedException e) | |
362 | { | |
363 | throw new AssertionError(); | |
364 | } | |
365 | } | |
3d9127da | 366 | } |