aboutsummaryrefslogtreecommitdiff
path: root/agent/src/main/java/moe/yuuta/dn42peering/agent/provision/WireGuardLegacyCleanupProvisioner.java
diff options
context:
space:
mode:
Diffstat (limited to 'agent/src/main/java/moe/yuuta/dn42peering/agent/provision/WireGuardLegacyCleanupProvisioner.java')
-rw-r--r--agent/src/main/java/moe/yuuta/dn42peering/agent/provision/WireGuardLegacyCleanupProvisioner.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/agent/src/main/java/moe/yuuta/dn42peering/agent/provision/WireGuardLegacyCleanupProvisioner.java b/agent/src/main/java/moe/yuuta/dn42peering/agent/provision/WireGuardLegacyCleanupProvisioner.java
new file mode 100644
index 0000000..e349cbf
--- /dev/null
+++ b/agent/src/main/java/moe/yuuta/dn42peering/agent/provision/WireGuardLegacyCleanupProvisioner.java
@@ -0,0 +1,37 @@
+package moe.yuuta.dn42peering.agent.provision;
+
+import io.vertx.core.Future;
+import io.vertx.core.Vertx;
+import moe.yuuta.dn42peering.agent.proto.Node;
+import moe.yuuta.dn42peering.agent.proto.WireGuardConfig;
+
+import javax.annotation.Nonnull;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class WireGuardLegacyCleanupProvisioner implements IProvisioner<WireGuardConfig> {
+ private final Vertx vertx;
+
+ public WireGuardLegacyCleanupProvisioner(@Nonnull Vertx vertx) {
+ this.vertx = vertx;
+ }
+
+ @Nonnull
+ @Override
+ public Future<List<Change>> calculateChanges(@Nonnull Node node, @Nonnull List<WireGuardConfig> allDesired) {
+ final String[] actualNamesRaw = new File("/etc/wireguard/").list((dir, name) -> name.matches("wg_.*\\.conf"));
+ final List<String> actualNames = Arrays.stream(actualNamesRaw == null ? new String[]{} : actualNamesRaw)
+ .sorted()
+ .collect(Collectors.toList());
+ return Future.succeededFuture(actualNames.stream()
+ .flatMap(string -> {
+ return Arrays.stream(new Change[]{
+ new CommandChange(new String[]{"systemctl", "disable", "--now", "-q", "wg-quick@" + string.replace(".conf", ".service")}),
+ new FileChange("/etc/wireguard/" + string, null, FileChange.Action.DELETE.toString())
+ });
+ })
+ .collect(Collectors.toList()));
+ }
+}