@@ -41,6 +41,7 @@ const (
41
41
CredFileFlag = "credentials-file"
42
42
CredContentsFlag = "credentials-contents"
43
43
TunnelTokenFlag = "token"
44
+ TunnelTokenFileFlag = "token-file"
44
45
overwriteDNSFlagName = "overwrite-dns"
45
46
noDiagLogsFlagName = "no-diag-logs"
46
47
noDiagMetricsFlagName = "no-diag-metrics"
@@ -126,9 +127,14 @@ var (
126
127
})
127
128
tunnelTokenFlag = altsrc .NewStringFlag (& cli.StringFlag {
128
129
Name : TunnelTokenFlag ,
129
- Usage : "The Tunnel token. When provided along with credentials, this will take precedence." ,
130
+ Usage : "The Tunnel token. When provided along with credentials, this will take precedence. Also takes precedence over token-file " ,
130
131
EnvVars : []string {"TUNNEL_TOKEN" },
131
132
})
133
+ tunnelTokenFileFlag = altsrc .NewStringFlag (& cli.StringFlag {
134
+ Name : TunnelTokenFileFlag ,
135
+ Usage : "Filepath at which to read the tunnel token. When provided along with credentials, this will take precedence." ,
136
+ EnvVars : []string {"TUNNEL_TOKEN_FILE" },
137
+ })
132
138
forceDeleteFlag = & cli.BoolFlag {
133
139
Name : flags .Force ,
134
140
Aliases : []string {"f" },
@@ -708,6 +714,7 @@ func buildRunCommand() *cli.Command {
708
714
selectProtocolFlag ,
709
715
featuresFlag ,
710
716
tunnelTokenFlag ,
717
+ tunnelTokenFileFlag ,
711
718
icmpv4SrcFlag ,
712
719
icmpv6SrcFlag ,
713
720
maxActiveFlowsFlag ,
@@ -748,12 +755,22 @@ func runCommand(c *cli.Context) error {
748
755
"your origin will not be reachable. You should remove the `hostname` property to avoid this warning." )
749
756
}
750
757
758
+ tokenStr := c .String (TunnelTokenFlag )
759
+ // Check if tokenStr is blank before checking for tokenFile
760
+ if tokenStr == "" {
761
+ if tokenFile := c .String (TunnelTokenFileFlag ); tokenFile != "" {
762
+ data , err := os .ReadFile (tokenFile )
763
+ if err != nil {
764
+ return cliutil .UsageError ("Failed to read token file: " + err .Error ())
765
+ }
766
+ tokenStr = strings .TrimSpace (string (data ))
767
+ }
768
+ }
751
769
// Check if token is provided and if not use default tunnelID flag method
752
- if tokenStr := c . String ( TunnelTokenFlag ); tokenStr != "" {
770
+ if tokenStr != "" {
753
771
if token , err := ParseToken (tokenStr ); err == nil {
754
772
return sc .runWithCredentials (token .Credentials ())
755
773
}
756
-
757
774
return cliutil .UsageError ("Provided Tunnel token is not valid." )
758
775
} else {
759
776
tunnelRef := c .Args ().First ()
0 commit comments