71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/spf13/viper"
|
|
"gitlab.iwarma.ru/iwa/dev/license/license_lib/api"
|
|
"gitlab.iwarma.ru/iwa/dev/license/license_lib/config"
|
|
)
|
|
|
|
const (
|
|
VERSION = "1.7.0"
|
|
)
|
|
|
|
var (
|
|
configFile = flag.String("config", "config.json", "Path to config file")
|
|
versionFlag = flag.Bool("version", false, "Show version and exit")
|
|
)
|
|
|
|
func main() {
|
|
cl := log.WithFields(log.Fields{"part": "main", "ver": VERSION})
|
|
|
|
flag.Parse()
|
|
|
|
if *versionFlag {
|
|
cl.Infof("License client version %v", VERSION)
|
|
return
|
|
}
|
|
|
|
//##############################
|
|
// Read and parse config
|
|
//##############################
|
|
|
|
// Viper config
|
|
err := config.ReadCfg(*configFile)
|
|
if err != nil {
|
|
cl.Fatalf("%v", err)
|
|
}
|
|
|
|
//##############################
|
|
// Init logging
|
|
//##############################
|
|
err = initLogging()
|
|
if err != nil {
|
|
cl.Fatalf("%v", err)
|
|
}
|
|
|
|
cl.Infof("Starting")
|
|
defer cl.Infof("Stopping")
|
|
|
|
//##############################
|
|
// Api
|
|
//##############################
|
|
cl.Infof("Starting API on port %v", viper.GetInt(config.ApiPort))
|
|
router := mux.NewRouter()
|
|
router.HandleFunc("/token/", api.GetActivationToken).Methods("GET")
|
|
router.HandleFunc("/activate/", api.ActivateLicense).Methods("POST")
|
|
router.HandleFunc("/license/", api.GetLicenseInfo).Methods("GET")
|
|
router.HandleFunc("/auto/", api.AutoLicenseActivation).Methods("GET")
|
|
router.Use(api.LogUrlMiddleware)
|
|
|
|
cl.Infof("API server starting on port %v", viper.GetInt(config.ApiPort))
|
|
err = http.ListenAndServe(fmt.Sprintf(":%v", viper.GetInt(config.ApiPort)), router)
|
|
if err != nil {
|
|
cl.Fatalf("Can't start api: %v", err)
|
|
}
|
|
}
|