@@ -7,10 +7,10 @@ import (
77 "log"
88 "net/netip"
99 "os"
10+ "slices"
1011 "strings"
1112 "sync"
1213 "time"
13- "slices"
1414
1515 "github.com/spf13/cobra"
1616 "github.com/spf13/viper"
@@ -39,6 +39,7 @@ type serveCmdConfig struct {
3939 clientAddr6E2EE string
4040 clientAddr4Relay string
4141 clientAddr6Relay string
42+ deleteConfig bool // Add member to struct to delete server config file.
4243 quiet bool
4344 debug bool
4445 simple bool
@@ -75,6 +76,7 @@ var serveCmd = serveCmdConfig{
7576 clientAddr6E2EE : ClientE2EESubnet6 .Addr ().Next ().String (),
7677 clientAddr4Relay : ClientRelaySubnet4 .Addr ().Next ().Next ().String (),
7778 clientAddr6Relay : ClientRelaySubnet6 .Addr ().Next ().Next ().String (),
79+ deleteConfig : false ,
7880 quiet : false ,
7981 debug : false ,
8082 simple : false ,
@@ -122,6 +124,8 @@ func init() {
122124
123125 // Flags.
124126 cmd .Flags ().StringVarP (& serveCmd .configFile , "config-file" , "f" , serveCmd .configFile , "wireguard config file to read from" )
127+ // Add flag to delete server config file.
128+ cmd .Flags ().BoolVarP (& serveCmd .deleteConfig , "delete-config" , "D" , serveCmd .deleteConfig , "delete wireguard config file after ingesting it" )
125129 cmd .Flags ().IntP ("port" , "p" , wiretapDefault .port , "listener port to use for relay connections" )
126130 cmd .Flags ().BoolVarP (& serveCmd .quiet , "quiet" , "q" , serveCmd .quiet , "silence wiretap log messages" )
127131 cmd .Flags ().BoolVarP (& serveCmd .debug , "debug" , "d" , serveCmd .debug , "enable wireguard log messages" )
@@ -279,6 +283,13 @@ func (c serveCmdConfig) Run() {
279283 }
280284 }
281285
286+ // If flag --delete-config is set, delete the server config file.
287+ if c .deleteConfig && c .configFile != "" {
288+ if err := os .Remove (c .configFile ); err != nil {
289+ check ("error deleting config file" , err )
290+ }
291+ }
292+
282293 // Synchronization vars.
283294 var (
284295 wg sync.WaitGroup
@@ -341,7 +352,7 @@ func (c serveCmdConfig) Run() {
341352 AllowedIPs : aips ,
342353 },
343354 },
344- Addresses : relayAddresses ,
355+ Addresses : relayAddresses ,
345356 LocalhostIP : viper .GetString ("Relay.Interface.LocalhostIP" ),
346357 }
347358
@@ -596,8 +607,8 @@ func configureLocalhostForwarding(localhostAddr netip.Addr, s *stack.Stack) {
596607 ipt .ForceReplaceTable (stack .NATID , newTable , false )
597608}
598609
599- // Adds a rule to the start of a table chain.
600- func prependIPtableRule (table stack.Table , newRule stack.Rule , chain stack.Hook ) ( stack.Table ) {
610+ // Adds a rule to the start of a table chain.
611+ func prependIPtableRule (table stack.Table , newRule stack.Rule , chain stack.Hook ) stack.Table {
601612 insertIndex := int (table .BuiltinChains [chain ])
602613 table .Rules = slices .Insert (table .Rules , insertIndex , newRule )
603614
@@ -607,7 +618,7 @@ func prependIPtableRule(table stack.Table, newRule stack.Rule, chain stack.Hook)
607618 //assumes each chain has its own unique starting rule index
608619 if ruleIndex > insertIndex {
609620 table .BuiltinChains [chainHook ] = ruleIndex + 1
610-
621+
611622 }
612623 }
613624 for chainHook , ruleIndex := range table .Underflows {
@@ -617,4 +628,4 @@ func prependIPtableRule(table stack.Table, newRule stack.Rule, chain stack.Hook)
617628 }
618629
619630 return table
620- }
631+ }
0 commit comments