(globals map[string]interface{}, blockNode config.Node)
| 69 | } |
| 70 | |
| 71 | func readTLSBlock(globals map[string]interface{}, blockNode config.Node) (*TLSConfig, error) { |
| 72 | baseCfg := tls.Config{ |
| 73 | // Workaround for issue https://github.com/foxcpp/maddy/issues/730 |
| 74 | SessionTicketsDisabled: true, |
| 75 | } |
| 76 | |
| 77 | var loader module.TLSLoader |
| 78 | if len(blockNode.Args) > 0 { |
| 79 | if blockNode.Args[0] == "off" { |
| 80 | return nil, nil |
| 81 | } |
| 82 | |
| 83 | err := modconfig.ModuleFromNode("tls.loader", blockNode.Args, config.Node{}, globals, &loader) |
| 84 | if err != nil { |
| 85 | return nil, err |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | childM := config.NewMap(globals, blockNode) |
| 90 | var tlsVersions [2]uint16 |
| 91 | |
| 92 | childM.Custom("loader", false, false, func() (interface{}, error) { |
| 93 | return loader, nil |
| 94 | }, func(_ *config.Map, node config.Node) (interface{}, error) { |
| 95 | var l module.TLSLoader |
| 96 | err := modconfig.ModuleFromNode("tls.loader", node.Args, node, globals, &l) |
| 97 | return l, err |
| 98 | }, &loader) |
| 99 | |
| 100 | childM.Custom("protocols", false, false, func() (interface{}, error) { |
| 101 | return [2]uint16{tls.VersionTLS10, 0}, nil |
| 102 | }, TLSVersionsDirective, &tlsVersions) |
| 103 | |
| 104 | childM.Custom("ciphers", false, false, func() (interface{}, error) { |
| 105 | return nil, nil |
| 106 | }, TLSCiphersDirective, &baseCfg.CipherSuites) |
| 107 | |
| 108 | childM.Custom("curves", false, false, func() (interface{}, error) { |
| 109 | return nil, nil |
| 110 | }, TLSCurvesDirective, &baseCfg.CurvePreferences) |
| 111 | |
| 112 | if _, err := childM.Process(); err != nil { |
| 113 | return nil, err |
| 114 | } |
| 115 | |
| 116 | baseCfg.MinVersion = tlsVersions[0] |
| 117 | baseCfg.MaxVersion = tlsVersions[1] |
| 118 | log.Debugf("tls: min version: %x, max version: %x", tlsVersions[0], tlsVersions[1]) |
| 119 | |
| 120 | return &TLSConfig{ |
| 121 | loader: loader, |
| 122 | baseCfg: &baseCfg, |
| 123 | }, nil |
| 124 | } |
no test coverage detected