summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2021-08-27 22:19:18 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2021-08-27 22:19:18 +0300
commit0a4534cd9ee3c37aee98282f401526ad9cc48201 (patch)
treeb5b8681540505e1c0a91b5f65a77a5fb856d2e28 /cmd
parent2f01cc1db51368f36ba6ae664a3b0db9234f683f (diff)
tunneld: add -o command line flag
Diffstat (limited to 'cmd')
-rw-r--r--cmd/tunneld/main.go39
1 files changed, 34 insertions, 5 deletions
diff --git a/cmd/tunneld/main.go b/cmd/tunneld/main.go
index 40d60d8..55783b6 100644
--- a/cmd/tunneld/main.go
+++ b/cmd/tunneld/main.go
@@ -25,6 +25,7 @@ var (
debugFlag = flag.Bool("d", false, "debug: print time and source info")
forceFlag = flag.Bool("f", false, "try start with force")
syslogFlag = flag.Bool("s", false, "write log to syslog instead of stdout")
+ outputFlag = flag.String("o", "", "write log to file instead of stdout")
configFlag = flag.String("c", "", "path to configuration file")
socketFlag = flag.String("S", "", "path to control socket")
versionFlag = flag.Bool("version", false, "print version and exit")
@@ -35,22 +36,45 @@ var BuildVersion string
const trimSize = 32
func initLog() {
- var logFlags int
+ if *outputFlag != "" && *syslogFlag {
+ log.Fatal("bad usage: duplicate log write flag")
+ }
- if *debugFlag {
- logFlags |= log.Ldate | log.Ltime | log.Lshortfile
+ if *debugFlag && *syslogFlag {
+ log.Fatal("bad usage: debug with syslog is out of sense")
}
- log.SetFlags(logFlags)
+ if *outputFlag != "" {
+ const fileFlags = os.O_APPEND | os.O_CREATE | os.O_WRONLY
+
+ f, err := os.OpenFile(*outputFlag, fileFlags, 0644)
+ if err != nil {
+ log.Fatalf("log: %s", err)
+ }
+
+ log.SetOutput(f)
+ }
if *syslogFlag {
sysLog, err := syslog.New(syslog.LOG_INFO, "tunneld")
if err != nil {
- log.Fatal(err)
+ log.Fatalf("log: %s", err)
}
log.SetOutput(sysLog)
}
+
+ var logFlags int
+
+ if *debugFlag {
+ logFlags |= log.Ldate | log.Ltime | log.Lshortfile
+ }
+
+ if *outputFlag != "" {
+ logFlags |= log.Ldate | log.Ltime
+ }
+
+ log.SetFlags(logFlags)
}
func sighandler(c chan os.Signal, s *server.Server) {
@@ -314,6 +338,7 @@ func deconfigure(s *server.Server) error {
}
func main() {
+ log.SetFlags(0)
flag.Parse()
if *versionFlag {
@@ -323,6 +348,10 @@ func main() {
initLog()
+ if flag.NArg() > 0 {
+ log.Fatal("bad usage: extra args")
+ }
+
socket := getSocketPath()
if *forceFlag {
if err := os.Remove(socket); err != nil {