diff --git a/cmd/ceci/main.go b/cmd/ceci/main.go index 120a211..e96ed8f 100644 --- a/cmd/ceci/main.go +++ b/cmd/ceci/main.go @@ -2,6 +2,7 @@ package main import ( "flag" + "os" "github.com/luscis/openlan/pkg/access" "github.com/luscis/openlan/pkg/config" @@ -12,17 +13,28 @@ import ( func main() { mode := "http" conf := "" - flag.StringVar(&mode, "mode", "http", "Proxy mode for http, socks, tcp and access") + 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 == "http" { - c := &config.HttpProxy{Conf: conf} + + if mode == "name" { + c := &config.Point{ + RequestAddr: true, + Terminal: "off", + Conf: conf, + } if err := c.Initialize(); err != nil { return } - p := proxy.NewHttpProxy(c, nil) + p := access.NewPoint(c) + p.Initialize() libol.Go(p.Start) } else if mode == "socks" { c := &config.SocksProxy{Conf: conf} @@ -38,19 +50,15 @@ func main() { } p := proxy.NewTcpProxy(c) libol.Go(p.Start) - } else if mode == "access" { - c := &config.Point{ - RequestAddr: true, - Terminal: "off", - Conf: conf, - } + } else { + c := &config.HttpProxy{Conf: conf} if err := c.Initialize(); err != nil { return } - p := access.NewPoint(c) - p.Initialize() + p := proxy.NewHttpProxy(c, nil) libol.Go(p.Start) } + libol.SdNotify() libol.Wait() } diff --git a/dist/rootfs/etc/openlan/access/access.yaml b/dist/rootfs/etc/openlan/switch/ceci/name.yaml.default similarity index 100% rename from dist/rootfs/etc/openlan/access/access.yaml rename to dist/rootfs/etc/openlan/switch/ceci/name.yaml.default diff --git a/dist/rootfs/etc/openlan/access/access.yaml.example b/dist/rootfs/etc/openlan/switch/ceci/name.yaml.example similarity index 100% rename from dist/rootfs/etc/openlan/access/access.yaml.example rename to dist/rootfs/etc/openlan/switch/ceci/name.yaml.example diff --git a/dist/rootfs/etc/openlan/access/access.yaml.full.example b/dist/rootfs/etc/openlan/switch/ceci/name.yaml.full.example similarity index 100% rename from dist/rootfs/etc/openlan/access/access.yaml.full.example rename to dist/rootfs/etc/openlan/switch/ceci/name.yaml.full.example diff --git a/dist/rootfs/etc/sysconfig/openlan/access.cfg b/dist/rootfs/etc/sysconfig/openlan/access.cfg index 48904d6..62e75ad 100755 --- a/dist/rootfs/etc/sysconfig/openlan/access.cfg +++ b/dist/rootfs/etc/sysconfig/openlan/access.cfg @@ -1,4 +1,4 @@ # --- point.cfg --- # This file define the configuration for OpenLAN Point. -OPTIONS='-log:file /dev/null -terminal off' +OPTIONS='-mode name' diff --git a/dist/rootfs/etc/sysconfig/openlan/proxy.cfg b/dist/rootfs/etc/sysconfig/openlan/ceci.cfg similarity index 56% rename from dist/rootfs/etc/sysconfig/openlan/proxy.cfg rename to dist/rootfs/etc/sysconfig/openlan/ceci.cfg index a79230b..e15a488 100755 --- a/dist/rootfs/etc/sysconfig/openlan/proxy.cfg +++ b/dist/rootfs/etc/sysconfig/openlan/ceci.cfg @@ -1,4 +1,4 @@ # --- point.cfg --- # This file define the configuration for OpenLAN Proxy. -OPTIONS='-conf /etc/openlan/proxy.json -log:file /dev/null' +OPTIONS='-mode http' diff --git a/dist/rootfs/usr/lib/systemd/system/openlan-access@.service b/dist/rootfs/usr/lib/systemd/system/openacce@.service similarity index 56% rename from dist/rootfs/usr/lib/systemd/system/openlan-access@.service rename to dist/rootfs/usr/lib/systemd/system/openacce@.service index 07cc1e8..5524818 100755 --- a/dist/rootfs/usr/lib/systemd/system/openlan-access@.service +++ b/dist/rootfs/usr/lib/systemd/system/openacce@.service @@ -1,11 +1,11 @@ [Unit] -Description=OpenLAN Access daemon for %I +Description=Open Access daemon for %I After=network.target [Service] Type=notify EnvironmentFile=/etc/sysconfig/openlan/access.cfg -ExecStart=/usr/bin/openlan-access $OPTIONS -conf /etc/openlan/access/%i.yaml +ExecStart=/usr/bin/openceci $OPTIONS -conf /etc/openlan/switch/ceci/%i.yaml Restart=always [Install] diff --git a/dist/rootfs/usr/lib/systemd/system/openceci@.service b/dist/rootfs/usr/lib/systemd/system/openceci@.service index 98f4667..7886ba2 100755 --- a/dist/rootfs/usr/lib/systemd/system/openceci@.service +++ b/dist/rootfs/usr/lib/systemd/system/openceci@.service @@ -1,10 +1,11 @@ [Unit] -Description=OpenCeci daemon for %I +Description=Open Cecilia daemon for %I After=network.target [Service] Type=notify LimitNOFILE=102400 +EnvironmentFile=/etc/sysconfig/openlan/ceci.cfg ExecStart=/usr/bin/openceci $OPTIONS -conf /etc/openlan/switch/ceci/%i.yaml Restart=always diff --git a/pkg/access/worker.go b/pkg/access/worker.go index b0818aa..c6589f9 100755 --- a/pkg/access/worker.go +++ b/pkg/access/worker.go @@ -453,17 +453,15 @@ func (w *Worker) handleDNS(conn dns.ResponseWriter, r *dns.Msg) { return } - for _, rr := range resp.Answer { - if n, ok := rr.(*dns.A); ok { - if via == nil { - continue - } - - name := n.Hdr.Name - addr := n.A.String() - if w.UpdateDNS(name, addr) { - w.UpdateRoute(addr, via.Server) - w.listener.Forward(name, addr, via.Server) + if via != nil && via.Server != "" { + for _, rr := range resp.Answer { + if n, ok := rr.(*dns.A); ok { + name := n.Hdr.Name + addr := n.A.String() + if w.UpdateDNS(name, addr) { + w.UpdateRoute(addr, via.Server) + w.listener.Forward(name, addr, via.Server) + } } } }