Add HTTPS support
This commit is contained in:
parent
f292f3d027
commit
0c6f293386
|
|
@ -27,7 +27,10 @@ XMPP
|
||||||
* xmpp_debug : Enable debug log at true (default: false)
|
* xmpp_debug : Enable debug log at true (default: false)
|
||||||
|
|
||||||
HTTP
|
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)
|
* http_timeoute_sec : Define a timeout if user did not give an answer to the request (default: 60)
|
||||||
|
|
||||||
### Utilization
|
### Utilization
|
||||||
|
|
|
||||||
|
|
@ -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-----
|
||||||
29
http/http.go
29
http/http.go
|
|
@ -30,7 +30,10 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
HttpPortBind = 9090
|
HttpPortBind = 9090
|
||||||
|
HttpsPortBind = 9093
|
||||||
|
CertPath = "./cert.pem"
|
||||||
|
KeyPath = "./key.pem"
|
||||||
|
|
||||||
ChanRequest = make(chan interface{}, 5)
|
ChanRequest = make(chan interface{}, 5)
|
||||||
TimeoutSec = 60 // 1 min
|
TimeoutSec = 60 // 1 min
|
||||||
|
|
@ -52,7 +55,7 @@ func authHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
log.Printf("%sAuth %s", LogDebug, jid)
|
log.Printf("%sAuth %s", LogDebug, jid)
|
||||||
|
|
||||||
timeout, err := strconv.Atoi(timeoutStr)
|
timeout, err := strconv.Atoi(timeoutStr)
|
||||||
if err != nil {
|
if err != nil || timeout <= 0 {
|
||||||
timeout = TimeoutSec
|
timeout = TimeoutSec
|
||||||
}
|
}
|
||||||
if timeout > MaxTimeout {
|
if timeout > MaxTimeout {
|
||||||
|
|
@ -86,9 +89,27 @@ func Run() {
|
||||||
http.HandleFunc(ROUTE_ROOT, indexHandler)
|
http.HandleFunc(ROUTE_ROOT, indexHandler)
|
||||||
http.HandleFunc(ROUTE_AUTH, authHandler)
|
http.HandleFunc(ROUTE_AUTH, authHandler)
|
||||||
|
|
||||||
|
if HttpPortBind > 0 {
|
||||||
|
go runHttp()
|
||||||
|
}
|
||||||
|
if HttpsPortBind > 0 {
|
||||||
|
go runHttps()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func runHttp() {
|
||||||
port := strconv.Itoa(HttpPortBind)
|
port := strconv.Itoa(HttpPortBind)
|
||||||
log.Printf("%sListenning on port %s", LogInfo, port)
|
log.Printf("%sHTTP listenning on port %s", LogInfo, port)
|
||||||
err := http.ListenAndServe(":"+port, nil) // set listen 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 {
|
if err != nil {
|
||||||
log.Fatal("%sListenAndServe: ", LogError, err)
|
log.Fatal("%sListenAndServe: ", LogError, err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,7 @@ xmpp_debug=true
|
||||||
|
|
||||||
# HTTP informations
|
# HTTP informations
|
||||||
http_port=9090
|
http_port=9090
|
||||||
|
https_port=9093
|
||||||
|
https_cert_path=./cert.pem
|
||||||
|
https_key_path=./key.pem
|
||||||
http_timeoute_sec=60
|
http_timeoute_sec=60
|
||||||
|
|
|
||||||
|
|
@ -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-----
|
||||||
11
main.go
11
main.go
|
|
@ -15,7 +15,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Version = "v0.1.1"
|
Version = "v0.2"
|
||||||
configurationFilePath = "httpAuth.cfg"
|
configurationFilePath = "httpAuth.cfg"
|
||||||
|
|
||||||
default_xmpp_server_address = "127.0.0.1"
|
default_xmpp_server_address = "127.0.0.1"
|
||||||
|
|
@ -34,7 +34,7 @@ func init() {
|
||||||
|
|
||||||
// HTTP config
|
// HTTP config
|
||||||
httpTimeout, err := strconv.Atoi(mapConfig["http_timeoute_sec"])
|
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")
|
log.Println("Define HTTP timeout to " + strconv.Itoa(httpTimeout) + " second")
|
||||||
http.TimeoutSec = httpTimeout
|
http.TimeoutSec = httpTimeout
|
||||||
}
|
}
|
||||||
|
|
@ -43,6 +43,13 @@ func init() {
|
||||||
log.Println("Define HTTP port to " + strconv.Itoa(httpPort))
|
log.Println("Define HTTP port to " + strconv.Itoa(httpPort))
|
||||||
http.HttpPortBind = 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 config
|
||||||
xmpp_server_address := mapConfig["xmpp_server_address"]
|
xmpp_server_address := mapConfig["xmpp_server_address"]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue