1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
package cmd
import (
"github.com/inconshreveable/log15"
"github.com/knqyf263/gost/db"
"github.com/knqyf263/gost/server"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
// serverCmd represents the server command
var serverCmd = &cobra.Command{
Use: "server",
Short: "Start security tracker HTTP server",
Long: `Start security tracker HTTP server`,
RunE: executeServer,
}
func init() {
RootCmd.AddCommand(serverCmd)
serverCmd.PersistentFlags().String("bind", "", "HTTP server bind to IP address (default: loop back interface")
viper.BindPFlag("bind", serverCmd.PersistentFlags().Lookup("bind"))
viper.SetDefault("bind", "127.0.0.1")
serverCmd.PersistentFlags().String("port", "", "HTTP server port number (default: 1325")
viper.BindPFlag("port", serverCmd.PersistentFlags().Lookup("port"))
viper.SetDefault("port", "1325")
}
func executeServer(cmd *cobra.Command, args []string) (err error) {
logDir := viper.GetString("log-dir")
driver, locked, err := db.NewDB(viper.GetString("dbtype"), viper.GetString("dbpath"), viper.GetBool("debug-sql"))
if err != nil {
if locked {
log15.Error("Failed to initialize DB. Close DB connection before fetching", "err", err)
}
return err
}
log15.Info("Starting HTTP Server...")
if err = server.Start(logDir, driver); err != nil {
log15.Error("Failed to start server.", "err", err)
return err
}
return nil
}
|