Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions hallpass.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,16 @@ import (
)

var (
secretServer = flag.String("secret-server", "", "setec secret server base URL; if empty, setec is not used")
oauthSecret = flag.String("oauth-secret", keyPath("hallpass-key"), "name of setec secret containing Tailscale OAuth ClientSecret; if --secret-server is empty, ignored and reads from $HOME/keys/hallpass-key; ignored if workload identity federation is used")
webhookSecret = flag.String("webhook-secret", keyPath("hallpass-webhook"), "name of setec secret containing the Slack webhook URL; if --secret-server is empty, ignored and reads from $HOME/keys/hallpass-webhook")
wifClientID = flag.String("wif-client-id", "", "Tailscale OAuth client ID, if using Workload Identity Federation instead of --oauth-secret")
wifAudience = flag.String("wif-audience", "", "OAuth audience, if using Workload Identity Federation instead of --oauth-secret")
configDir = flag.String("tsnet-dir", "", "tsnet server directory; if empty, tsnet uses an automatic config directory based on the binary name")
tls = flag.Bool("tls", true, "serve over TLS using Tailscale Serve")
loginServer = flag.String("login-server", "", "optional alternate URL of the control login server")
apiServer = flag.String("api-server", "", "optional alternate URL of the control API server")
secretServer = flag.String("secret-server", "", "setec secret server base URL; if empty, setec is not used")
secretClientHostNetwork = flag.Bool("secret-client-host-network", false, "access --secret-server using the host networking stack instead of hallpass's tsnet node; this is useful if the host is running tailscaled with different setec access permissions than the tsnet app")
oauthSecret = flag.String("oauth-secret", keyPath("hallpass-key"), "name of setec secret containing Tailscale OAuth ClientSecret; if --secret-server is empty, ignored and reads from $HOME/keys/hallpass-key; ignored if workload identity federation is used")
webhookSecret = flag.String("webhook-secret", keyPath("hallpass-webhook"), "name of setec secret containing the Slack webhook URL; if --secret-server is empty, ignored and reads from $HOME/keys/hallpass-webhook")
wifClientID = flag.String("wif-client-id", "", "Tailscale OAuth client ID, if using Workload Identity Federation instead of --oauth-secret")
wifAudience = flag.String("wif-audience", "", "OAuth audience, if using Workload Identity Federation instead of --oauth-secret")
configDir = flag.String("tsnet-dir", "", "tsnet server directory; if empty, tsnet uses an automatic config directory based on the binary name")
tls = flag.Bool("tls", true, "serve over TLS using Tailscale Serve")
loginServer = flag.String("login-server", "", "optional alternate URL of the control login server")
apiServer = flag.String("api-server", "", "optional alternate URL of the control API server")
)

func main() {
Expand Down Expand Up @@ -125,10 +126,14 @@ func main() {
if *oauthSecret != "" {
secrets = append(secrets, *oauthSecret)
}
doHTTP := ts.HTTPClient().Do
if *secretClientHostNetwork {
doHTTP = nil
}
ss, err := setec.NewStore(context.Background(), setec.StoreConfig{
Client: setec.Client{
Server: *secretServer,
DoHTTP: ts.HTTPClient().Do,
DoHTTP: doHTTP,
},
Secrets: secrets,
})
Expand Down