mirror of
https://github.com/luscis/openlan.git
synced 2025-10-05 08:36:59 +08:00
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"os"
|
|
|
|
"github.com/luscis/openlan/pkg/access"
|
|
"github.com/luscis/openlan/pkg/config"
|
|
"github.com/luscis/openlan/pkg/libol"
|
|
"github.com/luscis/openlan/pkg/proxy"
|
|
)
|
|
|
|
func main() {
|
|
mode := "http"
|
|
conf := ""
|
|
flag.StringVar(&mode, "mode", "http", "Proxy mode for http, socks, tcp and name")
|
|
flag.StringVar(&conf, "conf", "ceci.yaml", "The configuration file")
|
|
flag.Parse()
|
|
|
|
if !(mode == "http" || mode == "socks" || mode == "tcp" || mode == "name") {
|
|
libol.Warn("Ceci: not support mode:%s", mode)
|
|
os.Exit(1)
|
|
}
|
|
|
|
libol.PreNotify()
|
|
|
|
if mode == "name" {
|
|
c := &config.Point{
|
|
RequestAddr: true,
|
|
Terminal: "off",
|
|
Conf: conf,
|
|
}
|
|
if err := c.Initialize(); err != nil {
|
|
return
|
|
}
|
|
p := access.NewPoint(c)
|
|
p.Initialize()
|
|
libol.Go(p.Start)
|
|
} else if mode == "socks" {
|
|
c := &config.SocksProxy{Conf: conf}
|
|
if err := c.Initialize(); err != nil {
|
|
return
|
|
}
|
|
p := proxy.NewSocksProxy(c)
|
|
libol.Go(p.Start)
|
|
} else if mode == "tcp" {
|
|
c := &config.TcpProxy{Conf: conf}
|
|
if err := c.Initialize(); err != nil {
|
|
return
|
|
}
|
|
p := proxy.NewTcpProxy(c)
|
|
libol.Go(p.Start)
|
|
} else {
|
|
c := &config.HttpProxy{Conf: conf}
|
|
if err := c.Initialize(); err != nil {
|
|
return
|
|
}
|
|
p := proxy.NewHttpProxy(c, nil)
|
|
libol.Go(p.Start)
|
|
}
|
|
|
|
libol.SdNotify()
|
|
libol.Wait()
|
|
}
|