|
|
|
|
@ -21,15 +21,17 @@ import ( |
|
|
|
|
"tailscale.com/atomicfile" |
|
|
|
|
"tailscale.com/derp" |
|
|
|
|
"tailscale.com/derp/derphttp" |
|
|
|
|
"tailscale.com/logpolicy" |
|
|
|
|
"tailscale.com/types/key" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
addr = flag.String("a", ":443", "server address") |
|
|
|
|
configPath = flag.String("c", "", "config file path") |
|
|
|
|
certDir = flag.String("certdir", defaultCertDir(), "directory to store LetsEncrypt certs, if addr's port is :443") |
|
|
|
|
hostname = flag.String("hostname", "derp.tailscale.com", "LetsEncrypt host name, if addr's port is :443") |
|
|
|
|
bytesPerSec = flag.Int("mbps", 5, "Mbps (mebibit/s) per-client rate limit; 0 means unlimited") |
|
|
|
|
addr = flag.String("a", ":443", "server address") |
|
|
|
|
configPath = flag.String("c", "", "config file path") |
|
|
|
|
certDir = flag.String("certdir", defaultCertDir(), "directory to store LetsEncrypt certs, if addr's port is :443") |
|
|
|
|
hostname = flag.String("hostname", "derp.tailscale.com", "LetsEncrypt host name, if addr's port is :443") |
|
|
|
|
bytesPerSec = flag.Int("mbps", 5, "Mbps (mebibit/s) per-client rate limit; 0 means unlimited") |
|
|
|
|
logCollection = flag.String("logcollection", "", "If non-empty, logtail collection to log to") |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func defaultCertDir() string { |
|
|
|
|
@ -89,6 +91,12 @@ func writeNewConfig() config { |
|
|
|
|
func main() { |
|
|
|
|
flag.Parse() |
|
|
|
|
|
|
|
|
|
var logPol *logpolicy.Policy |
|
|
|
|
if *logCollection != "" { |
|
|
|
|
logPol = logpolicy.New(*logCollection) |
|
|
|
|
log.SetOutput(logPol.Logtail) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cfg := loadConfig() |
|
|
|
|
|
|
|
|
|
letsEncrypt := false |
|
|
|
|
|