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