68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"net/url"
|
|
|
|
con "ServiceUpdater/cconsole"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
var (
|
|
verboseMode bool
|
|
portainerURI string
|
|
webhookToken string
|
|
updateURI string
|
|
)
|
|
|
|
func init() {
|
|
viper.AutomaticEnv()
|
|
viper.SetEnvPrefix("PLUGIN")
|
|
|
|
if viper.IsSet("VERBOSE") {
|
|
verboseMode = viper.GetBool("VERBOSE")
|
|
}
|
|
|
|
if viper.IsSet("URI") {
|
|
portainerURI = viper.GetString("uri")
|
|
} else {
|
|
log.Fatal(con.Warn("Missing URI variable!"))
|
|
}
|
|
|
|
if viper.IsSet("TOKEN") {
|
|
webhookToken = viper.GetString("token")
|
|
} else {
|
|
log.Fatal(con.Warn("Missing TOKEN variable!"))
|
|
}
|
|
|
|
updateURI = fmt.Sprintf("%v/api/webhooks/%v", portainerURI, webhookToken)
|
|
|
|
_, err := url.ParseRequestURI(updateURI)
|
|
if err != nil {
|
|
log.Fatal(con.Fata("Could not parse final post URL!\n", err))
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
if verboseMode {
|
|
log.Println(con.Magenta("==== Verbose Mode ===="))
|
|
log.Println(con.Info("PortainerURI : ", portainerURI))
|
|
log.Println(con.Info("WebhookToken : ", webhookToken))
|
|
log.Println(con.Info("updateURI : ", updateURI))
|
|
}
|
|
|
|
resp, err := http.Post(updateURI, "application/json", nil)
|
|
if err != nil {
|
|
log.Fatalln(con.Fata("Portainer service update error: ", err))
|
|
}
|
|
|
|
if resp.StatusCode != 204 {
|
|
log.Fatal(con.Fata("Update Failed!\n", resp))
|
|
} else {
|
|
log.Println(con.Warn("Service updated!"))
|
|
}
|
|
}
|