add version info

This commit is contained in:
AJ ONeal 2020-11-17 12:26:48 -07:00
parent 1c43e7a732
commit 43aec3007a
4 changed files with 32 additions and 7 deletions

View File

@ -17,6 +17,7 @@ import (
"github.com/go-acme/lego/v3/providers/dns/duckdns" "github.com/go-acme/lego/v3/providers/dns/duckdns"
"github.com/go-acme/lego/v3/providers/dns/godaddy" "github.com/go-acme/lego/v3/providers/dns/godaddy"
"github.com/go-acme/lego/v3/providers/dns/namedotcom" "github.com/go-acme/lego/v3/providers/dns/namedotcom"
"github.com/go-chi/chi"
_ "github.com/joho/godotenv/autoload" _ "github.com/joho/godotenv/autoload"
) )
@ -28,8 +29,18 @@ var (
version = "v0.0.0-pre0+0000000" version = "v0.0.0-pre0+0000000"
// GitTimestamp refers to the timestamp of the most recent commit // GitTimestamp refers to the timestamp of the most recent commit
date = "0000-00-00T00:00:00+0000" date = "0000-00-00T00:00:00+0000"
// serviceName is the service name
serviceName = "telebit-mgmt"
// serviceDesc
serviceDesc = "Telebit Device Management"
) )
func ver() string {
return fmt.Sprintf("%s v%s (%s) %s", serviceName, version, commit[:7], date)
}
var store authstore.Store var store authstore.Store
var secret string var secret string
@ -152,7 +163,14 @@ func main() {
go func() { go func() {
fmt.Println("Listening for ACME challenges on :" + challengesPort) fmt.Println("Listening for ACME challenges on :" + challengesPort)
if err := http.ListenAndServe(":"+challengesPort, mgmt.RouteStatic()); nil != err { r := chi.NewRouter()
r.Get("/version", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(ver() + "\n"))
})
r.Get("/api/version", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("TODO (json): " + ver() + "\n"))
})
if err := http.ListenAndServe(":"+challengesPort, mgmt.RouteStatic(r)); nil != err {
log.Fatal(err) log.Fatal(err)
os.Exit(1) os.Exit(1)
} }

View File

@ -73,7 +73,7 @@ var (
serviceName = "telebit" serviceName = "telebit"
// serviceDesc // serviceDesc
serviceDesc = "securely relay traffic through telebit.io" serviceDesc = "Telebit Secure Proxy"
// defaultRelay should be set when compiled for the client // defaultRelay should be set when compiled for the client
defaultRelay = "" //"https://telebit.app" defaultRelay = "" //"https://telebit.app"
@ -119,6 +119,10 @@ type Config struct {
var config Config var config Config
func ver() string {
return fmt.Sprintf("%s v%s (%s) %s", serviceName, version, commit[:7], date)
}
func main() { func main() {
parseFlagsAndENVs() parseFlagsAndENVs()
@ -189,7 +193,7 @@ func (p *program) Stop() error {
func parseFlagsAndENVs() { func parseFlagsAndENVs() {
if len(os.Args) >= 2 { if len(os.Args) >= 2 {
if "version" == strings.TrimLeft(os.Args[1], "-") { if "version" == strings.TrimLeft(os.Args[1], "-") {
fmt.Printf("telebit %s (%s) %s\n", version, commit[:7], date) fmt.Printf("%s\n", ver())
os.Exit(exitOk) os.Exit(exitOk)
return return
} }
@ -740,6 +744,10 @@ func muxAll(
if len(config.apiHostname) > 0 { if len(config.apiHostname) > 0 {
// this is a generic net listener // this is a generic net listener
r := chi.NewRouter() r := chi.NewRouter()
r.Get("/version", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(ver() + "\n"))
})
telebit.RouteAdmin(config.authURL, r) telebit.RouteAdmin(config.authURL, r)
apiListener := tunnel.NewListener() apiListener := tunnel.NewListener()
go func() { go func() {

View File

@ -28,9 +28,7 @@ type MgmtClaims struct {
var presenters = make(chan *Challenge) var presenters = make(chan *Challenge)
var cleanups = make(chan *Challenge) var cleanups = make(chan *Challenge)
func RouteStatic() chi.Router { func RouteStatic(r chi.Router) chi.Router {
r := chi.NewRouter()
r.Use(middleware.Logger) r.Use(middleware.Logger)
r.Use(middleware.Timeout(15 * time.Second)) r.Use(middleware.Timeout(15 * time.Second))
r.Use(middleware.Recoverer) r.Use(middleware.Recoverer)

View File

@ -25,6 +25,8 @@ var authorizer Authorizer
// RouteAdmin sets up the API, including the Mgmt proxy and ACME relay // RouteAdmin sets up the API, including the Mgmt proxy and ACME relay
func RouteAdmin(authURL string, r chi.Router) { func RouteAdmin(authURL string, r chi.Router) {
var apiPingContent = []byte("{ \"success\": true, \"error\": \"\" }\n")
authorizer = NewAuthorizer(authURL) authorizer = NewAuthorizer(authURL)
r.Use(middleware.Logger) r.Use(middleware.Logger)
@ -114,7 +116,6 @@ func RouteAdmin(authURL string, r chi.Router) {
}) })
} }
var apiPingContent = []byte("{ \"success\": true, \"error\": \"\" }\n")
var apiNotFoundContent = []byte("{ \"error\": \"not found\" }\n") var apiNotFoundContent = []byte("{ \"error\": \"not found\" }\n")
var apiNotAuthorizedContent = []byte("{ \"error\": \"not authorized\" }\n") var apiNotAuthorizedContent = []byte("{ \"error\": \"not authorized\" }\n")