2018-04-17 13:10:21 +00:00
|
|
|
// Command gocron-node
|
2017-05-26 10:09:07 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2017-09-16 09:58:33 +00:00
|
|
|
"flag"
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
"runtime"
|
|
|
|
"strings"
|
2018-02-04 03:28:48 +00:00
|
|
|
|
2018-03-25 05:12:12 +00:00
|
|
|
"github.com/ouqiang/gocron/internal/modules/rpc/auth"
|
|
|
|
"github.com/ouqiang/gocron/internal/modules/rpc/server"
|
|
|
|
"github.com/ouqiang/gocron/internal/modules/utils"
|
2018-05-06 07:15:27 +00:00
|
|
|
"github.com/ouqiang/goutil"
|
2017-05-26 10:09:07 +00:00
|
|
|
)
|
|
|
|
|
2018-05-06 07:15:27 +00:00
|
|
|
var (
|
|
|
|
AppVersion, BuildDate, GitCommit string
|
|
|
|
)
|
2017-08-05 17:00:41 +00:00
|
|
|
|
2017-09-16 09:58:33 +00:00
|
|
|
func main() {
|
2017-08-05 17:00:41 +00:00
|
|
|
var serverAddr string
|
2017-09-16 09:58:33 +00:00
|
|
|
var allowRoot bool
|
|
|
|
var version bool
|
|
|
|
var CAFile string
|
|
|
|
var certFile string
|
|
|
|
var keyFile string
|
|
|
|
var enableTLS bool
|
|
|
|
flag.BoolVar(&allowRoot, "allow-root", false, "./gocron-node -allow-root")
|
|
|
|
flag.StringVar(&serverAddr, "s", "0.0.0.0:5921", "./gocron-node -s ip:port")
|
|
|
|
flag.BoolVar(&version, "v", false, "./gocron-node -v")
|
|
|
|
flag.BoolVar(&enableTLS, "enable-tls", false, "./gocron-node -enable-tls")
|
|
|
|
flag.StringVar(&CAFile, "ca-file", "", "./gocron-node -ca-file path")
|
|
|
|
flag.StringVar(&certFile, "cert-file", "", "./gocron-node -cert-file path")
|
|
|
|
flag.StringVar(&keyFile, "key-file", "", "./gocron-node -key-file path")
|
|
|
|
flag.Parse()
|
2017-08-05 17:00:41 +00:00
|
|
|
|
2017-09-16 09:58:33 +00:00
|
|
|
if version {
|
2018-05-06 07:15:27 +00:00
|
|
|
goutil.PrintAppVersion(AppVersion, GitCommit, BuildDate)
|
2017-09-16 09:58:33 +00:00
|
|
|
return
|
|
|
|
}
|
2017-08-05 17:00:41 +00:00
|
|
|
|
2017-09-16 09:58:33 +00:00
|
|
|
if enableTLS {
|
|
|
|
if !utils.FileExist(CAFile) {
|
|
|
|
fmt.Printf("failed to read ca cert file: %s", CAFile)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if !utils.FileExist(certFile) {
|
|
|
|
fmt.Printf("failed to read server cert file: %s", certFile)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if !utils.FileExist(keyFile) {
|
|
|
|
fmt.Printf("failed to read server key file: %s", keyFile)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
2017-09-07 10:01:48 +00:00
|
|
|
|
2017-09-16 09:58:33 +00:00
|
|
|
certificate := auth.Certificate{
|
|
|
|
CAFile: strings.TrimSpace(CAFile),
|
|
|
|
CertFile: strings.TrimSpace(certFile),
|
|
|
|
KeyFile: strings.TrimSpace(keyFile),
|
|
|
|
}
|
2017-08-05 17:00:41 +00:00
|
|
|
|
2017-09-16 09:58:33 +00:00
|
|
|
if runtime.GOOS != "windows" && os.Getuid() == 0 && !allowRoot {
|
|
|
|
fmt.Println("Do not run gocron-node as root user")
|
|
|
|
return
|
|
|
|
}
|
2017-08-05 17:00:41 +00:00
|
|
|
|
2017-09-07 10:01:48 +00:00
|
|
|
server.Start(serverAddr, enableTLS, certificate)
|
2017-09-16 09:58:33 +00:00
|
|
|
}
|