mirror of
https://github.com/luscis/openlan.git
synced 2025-10-05 16:47:11 +08:00
fea: ceci support tcp proxy.
This commit is contained in:
@@ -1,18 +1,38 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
|
||||
"github.com/luscis/openlan/pkg/config"
|
||||
"github.com/luscis/openlan/pkg/libol"
|
||||
"github.com/luscis/openlan/pkg/proxy"
|
||||
)
|
||||
|
||||
func main() {
|
||||
c := config.NewHttpProxy()
|
||||
if c != nil {
|
||||
libol.PreNotify()
|
||||
h := proxy.NewHttpProxy(c, nil)
|
||||
libol.SdNotify()
|
||||
libol.Go(h.Start)
|
||||
libol.Wait()
|
||||
mode := "http"
|
||||
conf := ""
|
||||
flag.StringVar(&mode, "mode", "http", "Proxy mode for tcp or http")
|
||||
flag.StringVar(&conf, "conf", "ceci.json", "The configuration file")
|
||||
flag.Parse()
|
||||
|
||||
libol.PreNotify()
|
||||
if mode == "http" {
|
||||
c := &config.HttpProxy{Conf: conf}
|
||||
if err := c.Initialize(); err != nil {
|
||||
return
|
||||
}
|
||||
p := proxy.NewHttpProxy(c, nil)
|
||||
libol.Go(p.Start)
|
||||
|
||||
} else {
|
||||
c := &config.TcpProxy{Conf: conf}
|
||||
if err := c.Initialize(); err != nil {
|
||||
return
|
||||
}
|
||||
p := proxy.NewTcpProxy(c)
|
||||
libol.Go(p.Start)
|
||||
|
||||
}
|
||||
libol.SdNotify()
|
||||
libol.Wait()
|
||||
}
|
||||
|
@@ -43,24 +43,9 @@ type HttpProxy struct {
|
||||
Backends []*HttpForward `json:"backends,omitempty" yaml:"backend,omitempty"`
|
||||
}
|
||||
|
||||
func NewHttpProxy() *HttpProxy {
|
||||
h := &HttpProxy{}
|
||||
h.Parse()
|
||||
err := h.Initialize()
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return h
|
||||
}
|
||||
|
||||
func (h *HttpProxy) Parse() {
|
||||
flag.StringVar(&h.Conf, "conf", "", "The configure file")
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
func (h *HttpProxy) Initialize() error {
|
||||
if err := h.Load(); err != nil {
|
||||
libol.Error("Proxy.Initialize %s", err)
|
||||
libol.Error("HttpProxy.Initialize %s", err)
|
||||
return err
|
||||
}
|
||||
h.Correct()
|
||||
@@ -68,7 +53,7 @@ func (h *HttpProxy) Initialize() error {
|
||||
}
|
||||
|
||||
func (h *HttpProxy) Load() error {
|
||||
if h.Conf == "" {
|
||||
if h.Conf == "" || libol.FileExist(h.Conf) != nil {
|
||||
return libol.NewErr("invalid configure file")
|
||||
}
|
||||
return libol.UnmarshalLoad(h, h.Conf)
|
||||
@@ -138,10 +123,26 @@ func (h *HttpProxy) Save() {
|
||||
}
|
||||
|
||||
type TcpProxy struct {
|
||||
Conf string `json:"-" yaml:"-"`
|
||||
Listen string `json:"listen,omitempty"`
|
||||
Target []string `json:"target,omitempty"`
|
||||
}
|
||||
|
||||
func (t *TcpProxy) Initialize() error {
|
||||
if err := t.Load(); err != nil {
|
||||
libol.Error("TcpProxy.Initialize %s", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *TcpProxy) Load() error {
|
||||
if t.Conf == "" || libol.FileExist(t.Conf) != nil {
|
||||
return libol.NewErr("invalid configure file")
|
||||
}
|
||||
return libol.UnmarshalLoad(t, t.Conf)
|
||||
}
|
||||
|
||||
type Proxy struct {
|
||||
Conf string `json:"-" yaml:"-"`
|
||||
ConfDir string `json:"-" yaml:"-"`
|
||||
|
Reference in New Issue
Block a user