Remove expired certs and key, use them from oom.
[aaf/sms.git] / sms-service / src / sms / sms.go
1 /*
2  * Copyright 2018 Intel Corporation, Inc
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package main
18
19 import (
20         "context"
21         "log"
22         "net/http"
23         "os"
24         "os/signal"
25
26         smsauth "sms/auth"
27         smsbackend "sms/backend"
28         smsconfig "sms/config"
29         smshandler "sms/handler"
30         smslogger "sms/log"
31 )
32
33 func main() {
34         // Initialize logger
35         smslogger.Init("sms.log")
36
37         // Read Configuration File
38         smsConf, err := smsconfig.ReadConfigFile("smsconfig.json")
39         if err != nil {
40                 log.Fatal(err)
41         }
42
43         backendImpl, err := smsbackend.InitSecretBackend()
44         if err != nil {
45                 log.Fatal(err)
46         }
47
48         httpRouter := smshandler.CreateRouter(backendImpl)
49
50         httpServer := &http.Server{
51                 Handler: httpRouter,
52                 Addr:    ":10443",
53         }
54
55         // Listener for SIGINT so that it returns cleanly
56         connectionsClose := make(chan struct{})
57         go func() {
58                 c := make(chan os.Signal, 1)
59                 signal.Notify(c, os.Interrupt)
60                 <-c
61                 httpServer.Shutdown(context.Background())
62                 close(connectionsClose)
63         }()
64
65         // Start in TLS mode by default
66         if smsConf.DisableTLS == true {
67                 smslogger.WriteWarn("TLS is Disabled")
68                 err = httpServer.ListenAndServe()
69         } else {
70                 // Populate TLSConfig with the certificates and privatekey
71                 // information
72                 tlsConfig, err := smsauth.GetTLSConfig(smsConf.CAFile, smsConf.ServerCert, smsConf.ServerKey)
73                 if smslogger.CheckError(err, "Get TLS Configuration") != nil {
74                         log.Fatal(err)
75                 }
76
77                 httpServer.TLSConfig = tlsConfig
78                 // empty strings because tlsconfig already has this information
79                 err = httpServer.ListenAndServeTLS("", "")
80         }
81
82         if err != nil && err != http.ErrServerClosed {
83                 log.Fatal(err)
84         }
85
86         <-connectionsClose
87 }