소스 검색

restructure SSL/TLS a bit, name config items better

tags/v0.1.0
Daniel Oaks 8 년 전
부모
커밋
2fb6acb92a
4개의 변경된 파일29개의 추가작업 그리고 27개의 파일을 삭제
  1. 1
    0
      .gitignore
  2. 13
    14
      irc/config.go
  3. 7
    5
      irc/server.go
  4. 8
    8
      oragono.yaml

+ 1
- 0
.gitignore 파일 보기

@@ -1,3 +1,4 @@
1 1
 /ircd.*
2 2
 /ssl.*
3
+/tls.*
3 4
 _test

+ 13
- 14
irc/config.go 파일 보기

@@ -13,17 +13,17 @@ type PassConfig struct {
13 13
 	Password string
14 14
 }
15 15
 
16
-// SSLListenConfig defines configuration options for listening on SSL
17
-type SSLListenConfig struct {
16
+// TLSListenConfig defines configuration options for listening on TLS
17
+type TLSListenConfig struct {
18 18
 	Cert string
19 19
 	Key  string
20 20
 }
21 21
 
22
-// Certificate returns the SSL certificate assicated with this SSLListenConfig
23
-func (conf *SSLListenConfig) Config() (*tls.Config, error) {
22
+// Certificate returns the TLS certificate assicated with this TLSListenConfig
23
+func (conf *TLSListenConfig) Config() (*tls.Config, error) {
24 24
 	cert, err := tls.LoadX509KeyPair(conf.Cert, conf.Key)
25 25
 	if err != nil {
26
-		return nil, errors.New("ssl cert+key: invalid pair")
26
+		return nil, errors.New("tls cert+key: invalid pair")
27 27
 	}
28 28
 
29 29
 	return &tls.Config{
@@ -49,14 +49,13 @@ type Config struct {
49 49
 		Name             string
50 50
 		Database         string
51 51
 		Listen           []string
52
-		Wslisten         string
52
+		Wslisten         string                      `yaml:"ws-listen"`
53
+		TLSListeners     map[string]*TLSListenConfig `yaml:"tls-listeners"`
53 54
 		Log              string
54 55
 		MOTD             string
55 56
 		ProxyAllowedFrom []string `yaml:"proxy-allowed-from"`
56 57
 	}
57 58
 
58
-	SSLListener map[string]*SSLListenConfig
59
-
60 59
 	Operator map[string]*PassConfig
61 60
 
62 61
 	Theater map[string]*PassConfig
@@ -82,16 +81,16 @@ func (conf *Config) Theaters() map[Name][]byte {
82 81
 	return theaters
83 82
 }
84 83
 
85
-func (conf *Config) SSLListeners() map[Name]*tls.Config {
86
-	sslListeners := make(map[Name]*tls.Config)
87
-	for s, sslListenersConf := range conf.SSLListener {
88
-		config, err := sslListenersConf.Config()
84
+func (conf *Config) TLSListeners() map[Name]*tls.Config {
85
+	tlsListeners := make(map[Name]*tls.Config)
86
+	for s, tlsListenersConf := range conf.Server.TLSListeners {
87
+		config, err := tlsListenersConf.Config()
89 88
 		if err != nil {
90 89
 			log.Fatal(err)
91 90
 		}
92
-		sslListeners[NewName(s)] = config
91
+		tlsListeners[NewName(s)] = config
93 92
 	}
94
-	return sslListeners
93
+	return tlsListeners
95 94
 }
96 95
 
97 96
 func LoadConfig(filename string) (config *Config, err error) {

+ 7
- 5
irc/server.go 파일 보기

@@ -99,7 +99,7 @@ func NewServer(config *Config) *Server {
99 99
 	server.loadChannels()
100 100
 
101 101
 	for _, addr := range config.Server.Listen {
102
-		server.listen(addr, config.SSLListeners())
102
+		server.listen(addr, config.TLSListeners())
103 103
 	}
104 104
 
105 105
 	if config.Server.Wslisten != "" {
@@ -240,18 +240,20 @@ func (server *Server) Run() {
240 240
 // listen goroutine
241 241
 //
242 242
 
243
-func (s *Server) listen(addr string, ssl map[Name]*tls.Config) {
244
-	config, listenSSL := ssl[NewName(addr)]
243
+func (s *Server) listen(addr string, tlsMap map[Name]*tls.Config) {
244
+	config, listenTLS := tlsMap[NewName(addr)]
245 245
 
246 246
 	listener, err := net.Listen("tcp", addr)
247 247
 	if err != nil {
248 248
 		log.Fatal(s, "listen error: ", err)
249 249
 	}
250 250
 
251
-	if listenSSL {
251
+	tlsString := "plaintext"
252
+	if listenTLS {
252 253
 		listener = tls.NewListener(listener, config)
254
+		tlsString = "TLS"
253 255
 	}
254
-	Log.info.Printf("%s listening on %s. ssl: %t", s, addr, listenSSL)
256
+	Log.info.Printf("%s listening on %s using %s.", s, addr, tlsString)
255 257
 
256 258
 	go func() {
257 259
 		for {

+ 8
- 8
oragono.yaml 파일 보기

@@ -21,7 +21,14 @@ server:
21 21
         - ":6697" # ssl port
22 22
 
23 23
     # websocket listening port
24
-    wslisten: ":8080"
24
+    ws-listen: ":8080"
25
+
26
+    # tls listeners
27
+    tls-listeners:
28
+        # listener on ":6697"
29
+        ":6697":
30
+            key: tls.key
31
+            cert: tls.crt
25 32
 
26 33
     # password to login to the server
27 34
     # generated using  "oragono genpasswd"
@@ -39,13 +46,6 @@ server:
39 46
         - "localhost"
40 47
         - "127.0.0.1"
41 48
 
42
-# ssl listeners
43
-ssllistener:
44
-    # listener on ":6697"
45
-    ":6697":
46
-        key: ssl.key
47
-        cert: ssl.crt
48
-
49 49
 # ircd operators
50 50
 operator:
51 51
     # operator named 'dan'

Loading…
취소
저장