Skip to content

Commit

Permalink
Merge pull request #1551 from BishopFox/v1.6.0/daemon-tailscale-flag
Browse files Browse the repository at this point in the history
Add support for tailscale to daemon mode
  • Loading branch information
moloch-- authored Jan 11, 2024
2 parents a9679e5 + 3c91f8e commit d9705a3
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 7 deletions.
4 changes: 3 additions & 1 deletion server/cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ const (
saveFlagStr = "save"
outputFlagStr = "output"
permissionsFlagStr = "permissions"
tailscaleFlagStr = "tailscale"

// Cert flags
caTypeFlagStr = "type"
Expand Down Expand Up @@ -97,6 +98,7 @@ func init() {
daemonCmd.Flags().StringP(lhostFlagStr, "l", daemon.BlankHost, "multiplayer listener host")
daemonCmd.Flags().Uint16P(lportFlagStr, "p", daemon.BlankPort, "multiplayer listener port")
daemonCmd.Flags().BoolP(forceFlagStr, "f", false, "force unpack and overwrite static assets")
daemonCmd.Flags().BoolP(tailscaleFlagStr, "t", false, "enable tailscale")
rootCmd.AddCommand(daemonCmd)

// Builder
Expand Down Expand Up @@ -143,7 +145,7 @@ var rootCmd = &cobra.Command{
fmt.Println(err)
}
if serverConfig.DaemonMode {
daemon.Start(daemon.BlankHost, daemon.BlankPort)
daemon.Start(daemon.BlankHost, daemon.BlankPort, serverConfig.DaemonConfig.Tailscale)
} else {
os.Args = os.Args[:1] // Hide cli from grumble console
console.Start()
Expand Down
9 changes: 8 additions & 1 deletion server/cli/daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ var daemonCmd = &cobra.Command{
return
}

tailscale, err := cmd.Flags().GetBool(tailscaleFlagStr)
if err != nil {
fmt.Printf("Failed to parse --%s flag %s\n", tailscaleFlagStr, err)
return
}

appDir := assets.GetRootAppDir()
logFile := initConsoleLogging(appDir)
defer logFile.Close()
Expand All @@ -52,6 +58,7 @@ var daemonCmd = &cobra.Command{
}()

assets.Setup(force, false)
c2.SetupDefaultC2Profiles()
certs.SetupCAs()
certs.SetupWGKeys()
cryptography.AgeServerKeyPair()
Expand All @@ -67,7 +74,7 @@ var daemonCmd = &cobra.Command{
fmt.Println(err)
}

daemon.Start(lhost, uint16(lport))
daemon.Start(lhost, uint16(lport), tailscale)
},
}

Expand Down
5 changes: 3 additions & 2 deletions server/configs/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,9 @@ type LogConfig struct {

// DaemonConfig - Configure daemon mode
type DaemonConfig struct {
Host string `json:"host"`
Port int `json:"port"`
Host string `json:"host"`
Port int `json:"port"`
Tailscale bool `json:"tailscale"`
}

// JobConfig - Restart Jobs on Load
Expand Down
14 changes: 11 additions & 3 deletions server/daemon/daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ package daemon

import (
"fmt"
"net"
"os"
"os/signal"
"syscall"
Expand All @@ -40,8 +41,11 @@ var (
)

// Start - Start as daemon process
func Start(host string, port uint16) {

func Start(host string, port uint16, tailscale bool) {
var (
ln net.Listener
err error
)
// cli args take president over config
if host == BlankHost {
daemonLog.Info("No cli lhost, using config file or default value")
Expand All @@ -53,7 +57,11 @@ func Start(host string, port uint16) {
}

daemonLog.Infof("Starting Sliver daemon %s:%d ...", host, port)
_, ln, err := transport.StartMtlsClientListener(host, port)
if tailscale {
_, ln, err = transport.StartTsNetClientListener(host, port)
} else {
_, ln, err = transport.StartMtlsClientListener(host, port)
}
if err != nil {
fmt.Printf("[!] Failed to start daemon %s", err)
daemonLog.Errorf("Error starting client listener %s", err)
Expand Down

0 comments on commit d9705a3

Please sign in to comment.