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)
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
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"]
|
||||
|
|
|
|||
Loading…
Reference in New Issue