toml config

This commit is contained in:
emile 2015-09-01 22:28:24 +02:00
parent 3680c8dc60
commit c460f3abcd
2 changed files with 66 additions and 8 deletions

View file

@ -5,17 +5,52 @@ import (
"net/http"
"fmt"
"os"
"github.com/wunderlist/moxy"
"github.com/mailgun/oxy/forward"
"github.com/mailgun/oxy/roundrobin"
"github.com/mailgun/oxy/testutils"
"time"
"net"
"os/signal"
"syscall"
"github.com/BurntSushi/toml"
)
type Backend struct {
Name string
Servers []string
}
type Server struct {
Name string
Url string
}
type Rule struct {
Category string
Value string
}
type Route struct {
Name string
Rules map[string]Rule
}
type Config struct {
Backends []Backend
Servers []Server
Routes []Route
}
var srv *graceful.Server
func main() {
fmt.Println("Tortuous loading with pid", os.Getpid())
var config Config
if _, err := toml.DecodeFile("tortuous.toml", &config); err != nil {
fmt.Println(err)
return
}
fmt.Printf("%+v\n", config )
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
@ -23,14 +58,18 @@ func main() {
systemRouter := mux.NewRouter()
systemRouter.Methods("POST").Path("/").HandlerFunc(ReloadHandler)
systemRouter.Methods("GET").Path("/").HandlerFunc(GetPidHandler)
go http.ListenAndServe(":8000", systemRouter)
fwd, _ := forward.New()
lb, _ := roundrobin.New(fwd)
lb.UpsertServer(testutils.ParseURI("http://172.17.0.2:80"))
lb.UpsertServer(testutils.ParseURI("http://172.17.0.3:80"))
userRouter := mux.NewRouter()
hosts := []string{"172.17.0.2"}
filters := []moxy.FilterFunc{}
proxy := moxy.NewReverseProxy(hosts, filters)
userRouter.Host("test.zenika.fr").HandlerFunc(proxy.ServeHTTP)
go http.ListenAndServe(":8000", systemRouter)
userRouter.Host("test.zenika.fr").Handler(lb)
goAway := false
go func() {

19
tortuous.toml Normal file
View file

@ -0,0 +1,19 @@
[[backends]]
name = "backend1"
servers = ["server1", "server2"]
[[servers]]
name = "server1"
url = "http://172.17.0.2:80"
[[servers]]
name = "server2"
url = "http://172.17.0.3:80"
[[routes]]
name = "route1"
backends = ["backend1"]
[[rules]]
[[rules.1]]
category = "Host"
value = "test.zenika.fr"