aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2021-09-06 11:03:27 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2021-09-06 11:03:27 +0200
commit18a80c7a57639a540965f9b101db18c6490cd804 (patch)
tree0c25e38ef68706186e10416e790c4ffd832abdf3 /main.go
parent1de8660e9d4c8f14a3b887e6f137d1c44a2664ef (diff)
Expose ClientConn to plugins
Diffstat (limited to 'main.go')
-rw-r--r--main.go152
1 files changed, 0 insertions, 152 deletions
diff --git a/main.go b/main.go
deleted file mode 100644
index c18b387..0000000
--- a/main.go
+++ /dev/null
@@ -1,152 +0,0 @@
-package main
-
-import (
- "errors"
- "log"
- "net"
- "os"
- "os/signal"
- "sync"
- "syscall"
-
- "github.com/anon55555/mt"
-)
-
-func main() {
- if err := loadConfig(); err != nil {
- log.Fatal("{←|⇶} ", err)
- }
-
- if !conf().NoPlugins {
- if err := loadPlugins(); err != nil {
- log.Fatal("{←|⇶} ", err)
- }
- }
-
- var err error
- switch conf().AuthBackend {
- case "sqlite3":
- authIface = authSQLite3{}
- default:
- log.Fatal("{←|⇶} invalid auth backend")
- }
-
- addr, err := net.ResolveUDPAddr("udp", conf().BindAddr)
- if err != nil {
- log.Fatal("{←|⇶} ", err)
- }
-
- pc, err := net.ListenUDP("udp", addr)
- if err != nil {
- log.Fatal("{←|⇶} ", err)
- }
-
- l := listen(pc)
- defer l.close()
-
- log.Print("{←|⇶} listen ", l.addr())
-
- go func() {
- sig := make(chan os.Signal, 1)
- signal.Notify(sig, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP)
- <-sig
-
- l.mu.Lock()
- defer l.mu.Unlock()
-
- var wg sync.WaitGroup
- wg.Add(len(l.clts))
-
- for cc := range l.clts {
- go func(cc *clientConn) {
- ack, _ := cc.SendCmd(&mt.ToCltDisco{Reason: mt.Shutdown})
- select {
- case <-cc.Closed():
- case <-ack:
- cc.Close()
- }
-
- <-cc.server().Closed()
- cc.mu.Lock()
- cc.srv = nil
- cc.mu.Unlock()
-
- wg.Done()
- }(cc)
- }
-
- wg.Wait()
- os.Exit(0)
- }()
-
- for {
- cc, err := l.accept()
- if err != nil {
- if errors.Is(err, net.ErrClosed) {
- log.Print("{←|⇶} stop listening")
- break
- }
-
- log.Print("{←|⇶} ", err)
- continue
- }
-
- go func() {
- <-cc.init()
- cc.log("<->", "handshake completed")
-
- if len(conf().Servers) == 0 {
- cc.log("<--", "no servers")
- ack, _ := cc.SendCmd(&mt.ToCltDisco{
- Reason: mt.Custom,
- Custom: "No servers are configured.",
- })
- select {
- case <-cc.Closed():
- case <-ack:
- cc.Close()
- }
-
- return
- }
-
- addr, err := net.ResolveUDPAddr("udp", conf().Servers[0].Addr)
- if err != nil {
- cc.log("<--", "address resolution fail")
- ack, _ := cc.SendCmd(&mt.ToCltDisco{
- Reason: mt.Custom,
- Custom: "Server address resolution failed.",
- })
- select {
- case <-cc.Closed():
- case <-ack:
- cc.Close()
- }
-
- return
- }
-
- conn, err := net.DialUDP("udp", nil, addr)
- if err != nil {
- cc.log("<--", "connection fail")
-
- ack, _ := cc.SendCmd(&mt.ToCltDisco{
- Reason: mt.Custom,
- Custom: "Server connection failed.",
- })
-
- select {
- case <-cc.Closed():
- case <-ack:
- cc.Close()
- }
-
- return
- }
-
- connect(conn, conf().Servers[0].Name, cc)
- }()
- }
-
- select {}
-}