1
0
Fork 0
forked from jriou/coller

feat: Add HTTPS support

Fixes #19.

Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
Julien Riou 2025-09-19 07:12:21 +02:00
commit b62a807f89
Signed by: jriou
GPG key ID: 9A099EDA51316854
3 changed files with 18 additions and 3 deletions

View file

@ -34,6 +34,8 @@ The file format is **JSON**:
* **languages** ([]string): List of supported [languages](https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages)
* **language** (string): Default language (default "text")
* **enable_upload_file_button** (bool): Display the upload file button in the UI (default true)
* **tls_cert_file** (string): Path to TLS certificate file to enable HTTPS
* **tls_key_file** (string): Path to TLS key file to enable HTTPS
The configuration file is not required but the service might not be exposed to the public.

View file

@ -26,6 +26,8 @@ type Config struct {
Languages []string `json:"languages"`
Language string `json:"language"`
EnableUploadFileButton bool `json:"enable_upload_file_button"`
TLSCertFile string `json:"tls_cert_file"`
TLSKeyFile string `json:"tls_key_file"`
}
func NewConfig() *Config {
@ -94,3 +96,7 @@ func (c *Config) Check() error {
}
return nil
}
func (c *Config) HasTLS() bool {
return c.TLSCertFile != "" && c.TLSKeyFile != ""
}

View file

@ -13,9 +13,10 @@ import (
"strconv"
"strings"
"git.riou.xyz/jriou/coller/internal"
"github.com/gorilla/mux"
"github.com/prometheus/client_golang/prometheus/promhttp"
"git.riou.xyz/jriou/coller/internal"
)
var passwordLength = internal.MIN_PASSWORD_LENGTH
@ -472,6 +473,12 @@ func (s *Server) Start() error {
r.Path("/").Handler(&HomeHandler{Templates: templates, PageData: p}).Methods("GET")
addr := fmt.Sprintf("%s:%d", s.config.ListenAddress, s.config.ListenPort)
s.logger.Info(fmt.Sprintf("listening to %s:%d", s.config.ListenAddress, s.config.ListenPort))
return http.ListenAndServe(addr, r)
if s.config.HasTLS() {
s.logger.Info(fmt.Sprintf("listening to %s:%d (https)", s.config.ListenAddress, s.config.ListenPort))
return http.ListenAndServeTLS(addr, s.config.TLSCertFile, s.config.TLSKeyFile, r)
} else {
s.logger.Info(fmt.Sprintf("listening to %s:%d (http)", s.config.ListenAddress, s.config.ListenPort))
return http.ListenAndServe(addr, r)
}
}