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, 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; }