]> git.ipfire.org Git - people/stevee/ipfire-2.x.git/commitdiff
wireguard.cgi: Implement toggle enable/disable peers
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 25 Apr 2024 18:13:56 +0000 (20:13 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 22 Apr 2025 14:48:32 +0000 (16:48 +0200)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
html/cgi-bin/wireguard.cgi

index 80b793c649a723d4b2643d43aedb50b261ae82bf..e7e324abea96fdaa41c5aa3b96c357c45b95ce1c 100644 (file)
@@ -411,6 +411,26 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{'save'}) {
        } else {
                goto ADD;
        }
+
+# Toggle Enable/Disable
+} elsif ($cgiparams{'ACTION'} eq 'TOGGLE-ENABLE-DISABLE') {
+       my $key = $cgiparams{'KEY'} || 0;
+
+       if (exists $peers{$key}) {
+               if ($peers{$key}[0] eq "on") {
+                       $peers{$key}[0] = "off";
+               } else {
+                       $peers{$key}[0] = "on";
+               }
+       }
+
+       # Store the configuration
+       &General::writehasharray("/var/ipfire/wireguard/peers", \%peers);
+
+       # Reload if enabled
+       if ($settings{'ENABLED'} eq "on") {
+               &General::system("/usr/local/bin/wireguardctrl", "start");
+       }
 }
 
 # The main page starts here
@@ -601,7 +621,7 @@ EOF
                                        <form method='post'>
                                                <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif'
                                                        alt='$Lang::tr{'toggle enable disable'}' title='$Lang::tr{'toggle enable disable'}' />
-                                               <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
+                                               <input type='hidden' name='ACTION' value='TOGGLE-ENABLE-DISABLE' />
                                                <input type='hidden' name='KEY' value='$key' />
                                        </form>
                                </td>