source: code/trunk/cmd/jounce/main.go@ 62

Last change on this file since 62 was 62, checked in by contact, 5 years ago

Add config file

File size: 1.4 KB
RevLine 
[1]1package main
2
3import (
[62]4 "crypto/tls"
[61]5 "flag"
[1]6 "log"
7 "net"
8
9 "git.sr.ht/~emersion/jounce"
[62]10 "git.sr.ht/~emersion/jounce/config"
[1]11)
12
13func main() {
[62]14 var addr, configPath string
15 flag.StringVar(&addr, "listen", "", "listening address")
16 flag.StringVar(&configPath, "config", "", "path to configuration file")
[61]17 flag.Parse()
[1]18
[62]19 var cfg *config.Server
20 if configPath != "" {
21 var err error
22 cfg, err = config.Load(configPath)
23 if err != nil {
24 log.Fatalf("failed to load config file: %v", err)
25 }
26 } else {
27 cfg = config.Defaults()
[1]28 }
29
[62]30 if addr != "" {
31 cfg.Addr = addr
32 }
33
34 var ln net.Listener
35 if cfg.TLS != nil {
36 cert, err := tls.LoadX509KeyPair(cfg.TLS.CertPath, cfg.TLS.KeyPath)
37 if err != nil {
38 log.Fatalf("failed to load TLS certificate and key: %v", err)
39 }
40
41 tlsCfg := &tls.Config{Certificates: []tls.Certificate{cert}}
42 ln, err = tls.Listen("tcp", cfg.Addr, tlsCfg)
43 if err != nil {
44 log.Fatalf("failed to start TLS listener: %v", err)
45 }
46 } else {
47 var err error
48 ln, err = net.Listen("tcp", addr)
49 if err != nil {
50 log.Fatalf("failed to start listener: %v", err)
51 }
52 }
53
[37]54 srv := jounce.NewServer()
[10]55 // TODO: load from config/DB
[62]56 srv.Hostname = cfg.Hostname
[37]57 srv.Upstreams = []jounce.Upstream{{
58 Addr: "chat.freenode.net:6697",
59 Nick: "jounce",
60 Username: "jounce",
61 Realname: "jounce",
62 Channels: []string{"#jounce"},
63 }}
[3]64
[62]65 log.Printf("server listening on %q", cfg.Addr)
[37]66 go srv.Run()
67 log.Fatal(srv.Serve(ln))
[1]68}
Note: See TracBrowser for help on using the repository browser.