@@ -41,9 +41,10 @@ var upgrader = websocket.Upgrader{
41
41
type Backend struct {
42
42
sync.RWMutex
43
43
44
- caCert string
45
- tlsCert string
46
- tlsKey string
44
+ tlsSupportProxy bool
45
+ caCert string
46
+ tlsCert string
47
+ tlsKey string
47
48
48
49
server * http.Server
49
50
ln net.Listener
@@ -84,9 +85,10 @@ func NewBackend(conf config.Config) (*Backend, error) {
84
85
gateways : make (map [lorawan.EUI64 ]* connection ),
85
86
},
86
87
87
- caCert : conf .Backend .BasicStation .CACert ,
88
- tlsCert : conf .Backend .BasicStation .TLSCert ,
89
- tlsKey : conf .Backend .BasicStation .TLSKey ,
88
+ tlsSupportProxy : conf .Backend .BasicStation .TLSSupportProxy ,
89
+ caCert : conf .Backend .BasicStation .CACert ,
90
+ tlsCert : conf .Backend .BasicStation .TLSCert ,
91
+ tlsKey : conf .Backend .BasicStation .TLSKey ,
90
92
91
93
statsInterval : conf .Backend .BasicStation .StatsInterval ,
92
94
pingInterval : conf .Backend .BasicStation .PingInterval ,
@@ -262,14 +264,19 @@ func (b *Backend) RawPacketForwarderCommand(pl *gw.RawPacketForwarderCommand) er
262
264
func (b * Backend ) Start () error {
263
265
go func () {
264
266
log .WithFields (log.Fields {
265
- "bind" : b .ln .Addr (),
266
- "ca_cert" : b .caCert ,
267
- "tls_cert" : b .tlsCert ,
268
- "tls_key" : b .tlsKey ,
267
+ "bind" : b .ln .Addr (),
268
+ "tls_support_proxy" : b .tlsSupportProxy ,
269
+ "ca_cert" : b .caCert ,
270
+ "tls_cert" : b .tlsCert ,
271
+ "tls_key" : b .tlsKey ,
269
272
}).Info ("backend/basicstation: starting websocket listener" )
270
273
271
274
if b .tlsCert == "" && b .tlsKey == "" && b .caCert == "" {
272
275
// no tls
276
+ if b .tlsSupportProxy {
277
+ log .Info ("backend/basicstation: TLS support handled by reverse-proxy" )
278
+ b .scheme = "wss"
279
+ }
273
280
if err := b .server .Serve (b .ln ); err != nil && ! b .isClosed {
274
281
log .WithError (err ).Fatal ("backend/basicstation: server error" )
275
282
}
0 commit comments