@@ -28,16 +28,33 @@ import (
2828
2929const vpnCheckAddress = "logger.core.zerops"
3030
31+ const (
32+ vpnFlagMtu = "mtu"
33+ vpnFlagAutoDisconnect = "auto-disconnect"
34+ vpnFlagSkipDnsSetup = "skip-dns-setup"
35+ vpnFlagSkipVpnTest = "skip-vpn-test"
36+ vpnFlagSkipCheckInstallation = "skip-check-installation"
37+ vpnFlagSkipConnect = "skip-connect"
38+ vpnFlagOutput = "output"
39+ )
40+
3141func vpnUpCmd () * cmdBuilder.Cmd {
3242 return cmdBuilder .NewCmd ().
3343 Use ("up" ).
3444 Short (i18n .T (i18n .CmdDescVpnUp )).
3545 ScopeLevel (cmdBuilder .ScopeProject ()).
3646 Arg (cmdBuilder .ProjectArgName , cmdBuilder .OptionalArg ()).
37- IntFlag ("mtu" , 1420 , i18n .T (i18n .VpnMtuFlag )).
38- BoolFlag ("auto-disconnect" , false , i18n .T (i18n .VpnAutoDisconnectFlag )).
47+ IntFlag (vpnFlagMtu , 1420 , i18n .T (i18n .VpnMtuFlag )).
48+ BoolFlag (vpnFlagAutoDisconnect , false , i18n .T (i18n .VpnAutoDisconnectFlag )).
49+ BoolFlag (vpnFlagSkipDnsSetup , false , "skip DNS configuration - you will need to use IP addresses to connect to services instead of domain names" ).
50+ BoolFlag (vpnFlagSkipVpnTest , false , "skip VPN connectivity test after connection is established" ).
51+ BoolFlag (vpnFlagSkipCheckInstallation , false , "skip WireGuard installation check" ).
3952 HelpFlag (i18n .T (i18n .CmdHelpVpnUp )).
4053 LoggedUserRunFunc (func (ctx context.Context , cmdData * cmdBuilder.LoggedUserCmdData ) error {
54+ dnsSetup := ! cmdData .Params .GetBool (vpnFlagSkipDnsSetup )
55+ vpnTest := ! cmdData .Params .GetBool (vpnFlagSkipVpnTest )
56+ checkInstallation := ! cmdData .Params .GetBool (vpnFlagSkipCheckInstallation )
57+
4158 uxBlocks := cmdData .UxBlocks
4259 project , err := cmdData .Project .Expect ("project is null" )
4360 if err != nil {
@@ -49,8 +66,8 @@ func vpnUpCmd() *cmdBuilder.Cmd {
4966 return err
5067 }
5168 if vpnActive {
52- if cmdData .Params .GetBool ("auto-disconnect" ) {
53- if err := disconnectVpn (ctx , uxBlocks ); err != nil {
69+ if cmdData .Params .GetBool (vpnFlagAutoDisconnect ) {
70+ if err := disconnectVpn (ctx , uxBlocks , dnsSetup , checkInstallation ); err != nil {
5471 return err
5572 }
5673 } else {
@@ -66,7 +83,7 @@ func vpnUpCmd() *cmdBuilder.Cmd {
6683 return nil
6784 }
6885
69- if err := disconnectVpn (ctx , uxBlocks ); err != nil {
86+ if err := disconnectVpn (ctx , uxBlocks , dnsSetup , checkInstallation ); err != nil {
7087 return err
7188 }
7289 }
@@ -104,8 +121,7 @@ func vpnUpCmd() *cmdBuilder.Cmd {
104121 }
105122 defer f .Close ()
106123
107- err = wg .GenerateConfig (f , privateKey , vpnSettings , cmdData .Params .GetInt ("mtu" ))
108- if err != nil {
124+ if err := wg .GenerateConfig (f , privateKey , vpnSettings , cmdData .Params .GetInt (vpnFlagMtu ), dnsSetup ); err != nil {
109125 return err
110126 }
111127
@@ -127,8 +143,7 @@ func vpnUpCmd() *cmdBuilder.Cmd {
127143 return err
128144 }
129145
130- err = wg .CheckWgInstallation ()
131- if err != nil {
146+ if err := wg .CheckWgInstallation (checkInstallation , dnsSetup ); err != nil {
132147 return err
133148 }
134149
@@ -138,11 +153,13 @@ func vpnUpCmd() *cmdBuilder.Cmd {
138153 return err
139154 }
140155
141- // wait for the vpn to be up
142- if isVpnUp (ctx , uxBlocks , 6 ) {
143- uxBlocks .PrintInfo (styles .SuccessLine (i18n .T (i18n .VpnUp )))
144- } else {
145- uxBlocks .PrintWarning (styles .WarningLine (i18n .T (i18n .VpnPingFailed )))
156+ if vpnTest && dnsSetup {
157+ // wait for the vpn to be up
158+ if isVpnUp (ctx , uxBlocks , 6 ) {
159+ uxBlocks .PrintInfo (styles .SuccessLine (i18n .T (i18n .VpnUp )))
160+ } else {
161+ uxBlocks .PrintWarning (styles .WarningLine (i18n .T (i18n .VpnPingFailed )))
162+ }
146163 }
147164
148165 return nil
0 commit comments