summaryrefslogtreecommitdiffhomepage
path: root/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/com/wireguard/config/Profile.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/app/src/main/java/com/wireguard/config/Profile.java b/app/src/main/java/com/wireguard/config/Profile.java
index e6506c45..70781195 100644
--- a/app/src/main/java/com/wireguard/config/Profile.java
+++ b/app/src/main/java/com/wireguard/config/Profile.java
@@ -19,7 +19,7 @@ import java.nio.charset.StandardCharsets;
* Represents a wg-quick profile.
*/
-public class Profile extends BaseObservable implements Observable {
+public class Profile extends BaseObservable implements Copyable<Profile>, Observable {
private final Interface iface = new Interface();
private boolean isConnected;
private final String name;
@@ -30,6 +30,22 @@ public class Profile extends BaseObservable implements Observable {
this.name = name;
}
+ private Profile(Profile original)
+ throws IOException {
+ this(original.getName());
+ final byte configBytes[] = original.toString().getBytes(StandardCharsets.UTF_8);
+ final ByteArrayInputStream configStream = new ByteArrayInputStream(configBytes);
+ parseFrom(configStream);
+ }
+
+ public Profile copy() {
+ try {
+ return new Profile(this);
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
public Interface getInterface() {
return iface;
}