ComunicRTCProxy/config.go

68 lines
1.2 KiB
Go

package main
import (
"fmt"
"io/ioutil"
"log"
"net/url"
"gopkg.in/yaml.v2"
)
// Config stores application configuration
type Config struct {
Secure bool
Hostname string
Port int
Path string
Token string
// Optional information to inject proxy reachability (can be left empty)
AccessIP string
// Optionaly restrict Ports range (can be left to 0)
PortStart int
PortEnd int
// Amount of time to wait before automatically
//quitting the application when the websocket
// connection was interrupted
Restart int
}
// Get the URL associated with the configuration
func (c *Config) getURL() url.URL {
// Adapt scheme
scheme := "ws"
if c.Secure {
scheme = "wss"
}
return url.URL{
Scheme: scheme,
Host: fmt.Sprintf("%s:%d", c.Hostname, c.Port),
Path: c.Path,
RawQuery: "token=" + c.Token,
}
}
// Load the configuration
func loadConfig(path string) Config {
// Load data
dat, err := ioutil.ReadFile(path)
if err != nil {
log.Fatalf("Could not read configuration: %v", err)
}
// Decode data
conf := Config{}
err = yaml.UnmarshalStrict(dat, &conf)
if err != nil {
log.Fatalf("Could not decode configuration: %v", err)
}
return conf
}