Sfoglia il codice sorgente

configure server with json

tags/v0.1.0
Jeremy Latt 10 anni fa
parent
commit
281558072a
4 ha cambiato i file con 51 aggiunte e 12 eliminazioni
  1. 1
    0
      .gitignore
  2. 19
    9
      ergonomadic.go
  3. 27
    0
      irc/config.go
  4. 4
    3
      irc/server.go

+ 1
- 0
.gitignore Vedi File

@@ -1,3 +1,4 @@
1 1
 pkg
2 2
 bin
3 3
 ergonomadic.db
4
+ergonomadic.json

+ 19
- 9
ergonomadic.go Vedi File

@@ -1,17 +1,27 @@
1 1
 package main
2 2
 
3 3
 import (
4
-	"flag"
5 4
 	"github.com/jlatt/ergonomadic/irc"
5
+	"log"
6
+	"sync"
6 7
 )
7 8
 
8 9
 func main() {
9
-	name := flag.String("name", "ergonomadic", "A name for the server")
10
-	listen := flag.String("listen", ":6667", "interface to listen on")
11
-	flag.BoolVar(&irc.DEBUG_NET, "dnet", false, "debug net")
12
-	flag.BoolVar(&irc.DEBUG_CLIENT, "dclient", false, "debug client")
13
-	flag.BoolVar(&irc.DEBUG_CHANNEL, "dchannel", false, "debug channel")
14
-	flag.BoolVar(&irc.DEBUG_SERVER, "dserver", false, "debug server")
15
-	flag.Parse()
16
-	irc.NewServer(*name).Listen(*listen)
10
+	config, err := irc.LoadConfig()
11
+	if err != nil {
12
+		log.Fatal(err)
13
+		return
14
+	}
15
+
16
+	irc.DEBUG_NET = config.Debug["net"]
17
+	irc.DEBUG_CLIENT = config.Debug["client"]
18
+	irc.DEBUG_CHANNEL = config.Debug["channel"]
19
+	irc.DEBUG_SERVER = config.Debug["server"]
20
+
21
+	irc.NewServer(config)
22
+
23
+	// never finishes
24
+	wg := sync.WaitGroup{}
25
+	wg.Add(1)
26
+	wg.Wait()
17 27
 }

+ 27
- 0
irc/config.go Vedi File

@@ -0,0 +1,27 @@
1
+package irc
2
+
3
+import (
4
+	"encoding/json"
5
+	"os"
6
+)
7
+
8
+type Config struct {
9
+	Name     string
10
+	Listen   string
11
+	Password string
12
+	Debug    map[string]bool
13
+}
14
+
15
+func LoadConfig() (config *Config, err error) {
16
+	config = &Config{}
17
+
18
+	file, err := os.Open("ergonomadic.json")
19
+	if err != nil {
20
+		return
21
+	}
22
+	defer file.Close()
23
+
24
+	decoder := json.NewDecoder(file)
25
+	err = decoder.Decode(config)
26
+	return
27
+}

+ 4
- 3
irc/server.go Vedi File

@@ -19,16 +19,17 @@ type Server struct {
19 19
 	clients  ClientNameMap
20 20
 }
21 21
 
22
-func NewServer(name string) *Server {
22
+func NewServer(config *Config) *Server {
23 23
 	commands := make(chan Command)
24 24
 	server := &Server{
25 25
 		ctime:    time.Now(),
26
-		name:     name,
26
+		name:     config.Name,
27 27
 		commands: commands,
28 28
 		clients:  make(ClientNameMap),
29 29
 		channels: make(ChannelNameMap),
30 30
 	}
31 31
 	go server.receiveCommands(commands)
32
+	go server.listen(config.Listen)
32 33
 	return server
33 34
 }
34 35
 
@@ -42,7 +43,7 @@ func (server *Server) receiveCommands(commands <-chan Command) {
42 43
 	}
43 44
 }
44 45
 
45
-func (s *Server) Listen(addr string) {
46
+func (s *Server) listen(addr string) {
46 47
 	listener, err := net.Listen("tcp", addr)
47 48
 	if err != nil {
48 49
 		log.Fatal("Server.Listen: ", err)

Loading…
Annulla
Salva