Add the XDG specification for configuration file location.
This commit is contained in:
parent
dfa6cd1b32
commit
88f7537bbd
|
|
@ -24,8 +24,8 @@ Or, in order to build the project you can run the command ``go build main.go``.
|
||||||
It will generate a binary that you can run as any binary file.
|
It will generate a binary that you can run as any binary file.
|
||||||
|
|
||||||
### Configure
|
### Configure
|
||||||
Configure the gateway by editing the ``httpAuth.cfg`` file in order to give all XMPP and HTTP server informations.
|
Configure the gateway by editing the ``httpAuth.conf`` file in order to give all XMPP and HTTP server informations. This configuration file has to be placed following the [XDG specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html).
|
||||||
An example of the config file can be found in [the repos](https://git.kingpenguin.tk/chteufleur/HTTPAuthentificationOverXMPP/src/master/httpAuth.cfg).
|
An example of the config file can be found in [the repos](https://git.kingpenguin.tk/chteufleur/HTTPAuthentificationOverXMPP/src/master/httpAuth.conf).
|
||||||
|
|
||||||
XMPP
|
XMPP
|
||||||
* xmpp_server_address : Component server address connection (default: 127.0.0.1)
|
* xmpp_server_address : Component server address connection (default: 127.0.0.1)
|
||||||
|
|
|
||||||
32
main.go
32
main.go
|
|
@ -10,13 +10,16 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Version = "v0.5-dev"
|
Version = "v0.5-dev"
|
||||||
configurationFilePath = "httpAuth.cfg"
|
configurationFilePath = "httpAuth.conf"
|
||||||
|
PathConfEnvVariable = "XDG_CONFIG_DIRS"
|
||||||
|
DefaultXdgConfigDirs = "/etc/xdg"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
@ -26,9 +29,8 @@ var (
|
||||||
func init() {
|
func init() {
|
||||||
log.Printf("Running HTTP-Auth %v", Version)
|
log.Printf("Running HTTP-Auth %v", Version)
|
||||||
|
|
||||||
err := cfg.Load(configurationFilePath, mapConfig)
|
if !loadConfigFile() {
|
||||||
if err != nil {
|
log.Fatal("Failed to load configuration file.")
|
||||||
log.Fatal("Failed to load configuration file.", err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTP config
|
// HTTP config
|
||||||
|
|
@ -74,6 +76,28 @@ func init() {
|
||||||
xmpp.VerifyCertValidity = mapConfig["xmpp_verify_cert_validity"] != "false" // Default TRUE
|
xmpp.VerifyCertValidity = mapConfig["xmpp_verify_cert_validity"] != "false" // Default TRUE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func loadConfigFile() bool {
|
||||||
|
ret := false
|
||||||
|
envVariable := os.Getenv(PathConfEnvVariable)
|
||||||
|
if envVariable == "" {
|
||||||
|
envVariable = DefaultXdgConfigDirs
|
||||||
|
}
|
||||||
|
for _, path := range strings.Split(envVariable, ":") {
|
||||||
|
log.Println("Try to find configuration file into " + path)
|
||||||
|
configFile := path + "/" + configurationFilePath
|
||||||
|
if _, err := os.Stat(configFile); err == nil {
|
||||||
|
// The config file exist
|
||||||
|
if cfg.Load(configFile, mapConfig) == nil {
|
||||||
|
// And has been loaded succesfully
|
||||||
|
log.Println("Find configuration file at " + configFile)
|
||||||
|
ret = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
go http.Run()
|
go http.Run()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue