Changeset 62 in code for trunk/cmd/jounce


Ignore:
Timestamp:
Feb 18, 2020, 1:10:23 PM (5 years ago)
Author:
contact
Message:

Add config file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/cmd/jounce/main.go

    r61 r62  
    22
    33import (
     4        "crypto/tls"
    45        "flag"
    56        "log"
     
    78
    89        "git.sr.ht/~emersion/jounce"
     10        "git.sr.ht/~emersion/jounce/config"
    911)
    1012
    1113func main() {
    12         var addr, hostname string
    13         flag.StringVar(&addr, "addr", ":6667", "listening address")
    14         flag.StringVar(&hostname, "hostname", "localhost", "server hostname")
     14        var addr, configPath string
     15        flag.StringVar(&addr, "listen", "", "listening address")
     16        flag.StringVar(&configPath, "config", "", "path to configuration file")
    1517        flag.Parse()
    1618
    17         ln, err := net.Listen("tcp", addr)
    18         if err != nil {
    19                 log.Fatalf("failed to start listener: %v", err)
     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()
     28        }
     29
     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                }
    2052        }
    2153
    2254        srv := jounce.NewServer()
    2355        // TODO: load from config/DB
    24         srv.Hostname = hostname
     56        srv.Hostname = cfg.Hostname
    2557        srv.Upstreams = []jounce.Upstream{{
    2658                Addr:     "chat.freenode.net:6697",
     
    3163        }}
    3264
    33         log.Printf("server listening on %v", addr)
     65        log.Printf("server listening on %q", cfg.Addr)
    3466        go srv.Run()
    3567        log.Fatal(srv.Serve(ln))
Note: See TracChangeset for help on using the changeset viewer.