diff --git a/README.md b/README.md index 3de54d8..37a745e 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,10 @@ XMPP * xmpp_debug : Enable debug log at true (default: false) HTTP - * http_port : HTTP port to bind (default: 9090) + * http_port : HTTP port to bind (default: 9090, desactive: -1) + * https_port : HTTPS port to bind (default: 9093, desactive: -1) + * https_cert_path : Path to the certificate file (default: ./cert.pem) + * https_key_path : Path to the key file (default: ./key.pem) * http_timeoute_sec : Define a timeout if user did not give an answer to the request (default: 60) ### Utilization diff --git a/cert.pem b/cert.pem new file mode 100644 index 0000000..ddb7bfe --- /dev/null +++ b/cert.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDmjCCAoICCQDTJ1wt8ibb0DANBgkqhkiG9w0BAQsFADCBjjELMAkGA1UEBhMC +RlIxEzARBgNVBAgMClNvbWUtU3RhdGUxEDAOBgNVBAcMB1ZhbGVuY2UxITAfBgNV +BAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEUMBIGA1UEAwwLZXhhbXBsZS5v +cmcxHzAdBgkqhkiG9w0BCQEWEHRvdG9AZXhhbXBsZS5vcmcwHhcNMTYwNzE0MDgx +MDA3WhcNMTcwNzE0MDgxMDA3WjCBjjELMAkGA1UEBhMCRlIxEzARBgNVBAgMClNv +bWUtU3RhdGUxEDAOBgNVBAcMB1ZhbGVuY2UxITAfBgNVBAoMGEludGVybmV0IFdp +ZGdpdHMgUHR5IEx0ZDEUMBIGA1UEAwwLZXhhbXBsZS5vcmcxHzAdBgkqhkiG9w0B +CQEWEHRvdG9AZXhhbXBsZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCjNtyD6vXdVSj+Vmin/1t4JApafQ4475oJsvsNfd2cMgQ9856RZPyZFCCe +9veffUSV9ffYcgtPF8ZfRkOLZvSzYNYrrgI+Qsp2Y/Mw1hAupn2IadjdB0ZAFpZi +fnH5tuXSIiPbrl1sQZxSdIhgRPdj6scnBFwjbbm+DfyQYvjtm5LTOYbNOc/Sali+ +lSdC22Z69nL7rscg3LFeBb8Oqx6MU8cvQ/nNsfxP+Ynimon3E28mP8VftyL81J6z +g8H6ly9R3kkapPrUg3CWP1z5rya+MdujcxkhEfO9oybSokaU/VkpMfrM4iBjs9m5 ++hU3kWfVqB38OYUVEz2GagWrvDdJAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAD3/ +fkCOvAhy38R10IgYEVH8MlrG3Rpy7CCYhUPgBrdFRgFAhwegDSc5my4rgiGmETkX +SlEppuHyoMNe8Sv70ibflqrCcwMPz/BWRlTDSWdwUqNjr4RfOT6LrO/9bZQT4tV8 +Av4smslUaXiKuFyJLY1uFXbw2BqZTQQgaDQGdaqRNkCPRT00+VUbzR/qOEQ0Kv0U +QAX1tN1kmrJo5ccGB9WVvijp1ZlimMjtvh5v7Uxa6Wl4l7D9B1+5glEhPKunOlcK +MAHrHIuBRuuQUmtdk9zj3HYZtniChflPUO3+QWr3nfA6IhVEvz1wa4BQFzfwm4NY +eFcBWz6pr3zuawKjUlk= +-----END CERTIFICATE----- diff --git a/http/http.go b/http/http.go index 9e2e3e0..fd5695c 100644 --- a/http/http.go +++ b/http/http.go @@ -30,7 +30,10 @@ const ( ) var ( - HttpPortBind = 9090 + HttpPortBind = 9090 + HttpsPortBind = 9093 + CertPath = "./cert.pem" + KeyPath = "./key.pem" ChanRequest = make(chan interface{}, 5) TimeoutSec = 60 // 1 min @@ -52,7 +55,7 @@ func authHandler(w http.ResponseWriter, r *http.Request) { log.Printf("%sAuth %s", LogDebug, jid) timeout, err := strconv.Atoi(timeoutStr) - if err != nil { + if err != nil || timeout <= 0 { timeout = TimeoutSec } if timeout > MaxTimeout { @@ -86,9 +89,27 @@ func Run() { http.HandleFunc(ROUTE_ROOT, indexHandler) http.HandleFunc(ROUTE_AUTH, authHandler) + if HttpPortBind > 0 { + go runHttp() + } + if HttpsPortBind > 0 { + go runHttps() + } +} + +func runHttp() { port := strconv.Itoa(HttpPortBind) - log.Printf("%sListenning on port %s", LogInfo, port) - err := http.ListenAndServe(":"+port, nil) // set listen port + log.Printf("%sHTTP listenning on port %s", LogInfo, port) + err := http.ListenAndServe(":"+port, nil) + if err != nil { + log.Fatal("%sListenAndServe: ", LogError, err) + } +} + +func runHttps() { + port := strconv.Itoa(HttpsPortBind) + log.Printf("%sHTTPS listenning on port %s", LogInfo, port) + err := http.ListenAndServeTLS(":"+port, CertPath, KeyPath, nil) if err != nil { log.Fatal("%sListenAndServe: ", LogError, err) } diff --git a/httpAuth.cfg b/httpAuth.cfg index 9f40d21..6c962ee 100644 --- a/httpAuth.cfg +++ b/httpAuth.cfg @@ -7,4 +7,7 @@ xmpp_debug=true # HTTP informations http_port=9090 +https_port=9093 +https_cert_path=./cert.pem +https_key_path=./key.pem http_timeoute_sec=60 diff --git a/key.pem b/key.pem new file mode 100644 index 0000000..e9b0468 --- /dev/null +++ b/key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEAozbcg+r13VUo/lZop/9beCQKWn0OOO+aCbL7DX3dnDIEPfOe +kWT8mRQgnvb3n31ElfX32HILTxfGX0ZDi2b0s2DWK64CPkLKdmPzMNYQLqZ9iGnY +3QdGQBaWYn5x+bbl0iIj265dbEGcUnSIYET3Y+rHJwRcI225vg38kGL47ZuS0zmG +zTnP0mpYvpUnQttmevZy+67HINyxXgW/DqsejFPHL0P5zbH8T/mJ4pqJ9xNvJj/F +X7ci/NSes4PB+pcvUd5JGqT61INwlj9c+a8mvjHbo3MZIRHzvaMm0qJGlP1ZKTH6 +zOIgY7PZufoVN5Fn1agd/DmFFRM9hmoFq7w3SQIDAQABAoIBAQCAI6lbVJP1Uk/d +5v9BrkUk/L64LmiFIPAB32glPoVHhSk5blQ2+F8s29WEmIbuy42WYsdUQq1ISnUv +Bd4vywQg9M0Q/Au8z/lem7gpxlZsGcCC4f8mAPkRhepJp9ZZ5FNo9+7JIYstXBGb +1uvfESZdZs02f8DK+/GRGjAJN/sRqAo4MvwZzrX9DIMnTt5MiujCAWOMX4rXT316 +epSyUAxMnNzC3On32TmGqrHXTF7KMGPjbSupAHDS4F8iL9ntFF2QPcW5um8jEneZ +ln/oJo2+2LYFJPcj0BbvCAcRaIumvHNQgfC0ispStCR37IlEZKyQXUtX/z/BPQO/ +d8KzylqRAoGBANl1tMVz4d20kkQzyXOCmQ7C/y98AHWDiFH2Iq/QMV21TFomit66 +SR8RVwWH3G6C8cQRHFa504iDP3Lo/jq+rf4SMwEJq+X5aVkThCq5DDZech/qslyF +FTA4IIkcqxF5/UOQg3UxGKU2I7mKLLgnhaPvPqcd7t/PzXAgJqV45ElFAoGBAMAk +AHPZFpb5IMPbVSen/jZ6cbNtRsOyUv2Vlz+Pkjbfl0SsxOInPZxwwEcEgLC2micN +CH1rTZXpMLKOr/VBdkbp4uMMR8X2kro02b9zlmBmAXleyuAPbQAbRn4epnnfzqxb +TcJNHQJT4uQRhtshTQ2GqnHXei/ZMBrI35VCN5w1AoGBAM9c3LqE3Fbrv6Zls64A +VS+sZmbDWjS07qMpkL4SS2DOZzZ4Fmh5PwzvHgpaGasQFrcekeVpYfuFHFXZM8SU +25mxhQ1ySYcNJJYadCfBOZIG0dD5nod3KFNI0k2tFrudlhJ9lb2EybmRPNPKnQYm +OduvYhE+C/FEWOSY5AFanGX5AoGARxWKrVFlUBl/C7a7fF5kaFdIdW86PPBeT77m +I/fDylVSK3AXruuBmb0FBcEes0H7KfNibrQiEhIhmA29/2hmj7m73PAQJachhY5D ++NaUjblvVi3BtL9APkfY/pPsVy570bw9umK5FsFeMa5iS/O4BAcMS+3CIK2jZGVo +glnrJPkCgYEAiI0nFwbd5oP4bP41zDKU7lrnwrmbCKZr5ZYScw1NtSqKo7aJnhEi +fBYMT8aXHVt4ALcI/VzR8LnoTQcJ6Pibn0pZ91sE8FRk99qfnF0rK4LLKF6R+UJH +X+dmoMOcHQ9MEyPhNvdgsTo72KMPzJn8q58VTq/6I4we+VCOlZNwlCA= +-----END RSA PRIVATE KEY----- diff --git a/main.go b/main.go index 601cb35..1b1b9ad 100644 --- a/main.go +++ b/main.go @@ -15,7 +15,7 @@ import ( ) const ( - Version = "v0.1.1" + Version = "v0.2" configurationFilePath = "httpAuth.cfg" default_xmpp_server_address = "127.0.0.1" @@ -34,7 +34,7 @@ func init() { // HTTP config httpTimeout, err := strconv.Atoi(mapConfig["http_timeoute_sec"]) - if err == nil { + if err == nil && httpTimeout > 0 && httpTimeout < http.MaxTimeout { log.Println("Define HTTP timeout to " + strconv.Itoa(httpTimeout) + " second") http.TimeoutSec = httpTimeout } @@ -43,6 +43,13 @@ func init() { log.Println("Define HTTP port to " + strconv.Itoa(httpPort)) http.HttpPortBind = httpPort } + httpsPort, err := strconv.Atoi(mapConfig["https_port"]) + if err == nil { + log.Println("Define HTTPS port to " + strconv.Itoa(httpsPort)) + http.HttpsPortBind = httpsPort + http.CertPath = mapConfig["https_cert_path"] + http.KeyPath = mapConfig["https_key_path"] + } // XMPP config xmpp_server_address := mapConfig["xmpp_server_address"]