diff --git a/package-lock.json b/package-lock.json index 4cf810c..65ad597 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "packages": { "": { "dependencies": { + "ace-builds": "^1.43.3", "bootstrap": "^5.3.8" } }, @@ -18,6 +19,11 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/ace-builds": { + "version": "1.43.3", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.3.tgz", + "integrity": "sha512-MCl9rALmXwIty/4Qboijo/yNysx1r6hBTzG+6n/TiOm5LFhZpEvEIcIITPFiEOEFDfgBOEmxu+a4f54LEFM6Sg==" + }, "node_modules/bootstrap": { "version": "5.3.8", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", diff --git a/package.json b/package.json index 719e5df..5374149 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "ace-builds": "^1.43.3", "bootstrap": "^5.3.8" } } diff --git a/src/cmd/collerd/README.md b/src/cmd/collerd/README.md index b85139a..231c887 100644 --- a/src/cmd/collerd/README.md +++ b/src/cmd/collerd/README.md @@ -31,11 +31,12 @@ The file format is **JSON**: * **prometheus_route** (string): Route to expose Prometheus metrics (default "/metrics") * **prometheus_notes_metric** (string): Name of the notes count metric (default "collerd_notes") * **observation_internal** (int): Number of seconds to wait between two observations (default 60) -* **languages** ([]string): List of supported [languages](https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages) +* **languages** ([]string): List of supported [languages](https://github.com/ajaxorg/ace/tree/master/src/mode) * **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 +* **ace_directory** (string): Serve [Ace](hhttps://ace.c9.io/) assets from this local directory (ex: "./node_modules/ace-builds"). See **Dependencies** for details. * **bootstrap_directory** (string): Serve [Bootstrap](https://getbootstrap.com/) assets from this local directory (ex: "./node_modules/bootstrap/dist"). See **Dependencies** for details. The configuration file is not required but the service might not be exposed to the public. @@ -85,12 +86,12 @@ Errors return **500 Server Internal Error** with the **JSON** payload: The web interface depends on: +- [Ace](https://ace.c9.io/) - [Bootstrap](https://getbootstrap.com/) -- [Monaco Editor](https://github.com/microsoft/monaco-editor/) By default, those dependencies are fetched from **remote CDN** services by the client. -If you would like to download them to serve them locally: +If you would like to download and serve them locally: ``` npm install @@ -106,8 +107,7 @@ Then configure the local directories: ```json { + "ace_directory": "./node_modules/ace-builds", "bootstrap_directory": "./node_modules/bootstrap/dist" } -``` - -Downloading Monaco Editor is not supported yet. +``` \ No newline at end of file diff --git a/src/server/config.go b/src/server/config.go index 97983f9..7a6830e 100644 --- a/src/server/config.go +++ b/src/server/config.go @@ -28,6 +28,7 @@ type Config struct { EnableUploadFileButton bool `json:"enable_upload_file_button"` TLSCertFile string `json:"tls_cert_file"` TLSKeyFile string `json:"tls_key_file"` + AceDirectory string `json:"ace_directory"` BootstrapDirectory string `json:"bootstrap_directory"` } @@ -56,22 +57,21 @@ func NewConfig() *Config { PrometheusNotesMetric: "collerd_notes", ObservationInterval: 60, Languages: []string{ - "Text", - "CSS", - "Dockerfile", - "Go", - "HCL", - "HTML", - "Javascript", - "JSON", - "Markdown", - "Perl", - "Python", - "Ruby", - "Rust", - "Shell", - "SQL", - "YAML", + "css", + "dockerfile", + "golang", + "html", + "javascript", + "json", + "markdown", + "perl", + "python", + "ruby", + "rust", + "sh", + "sql", + "text", + "yaml", }, Language: "text", EnableUploadFileButton: true, diff --git a/src/server/handlers_web.go b/src/server/handlers_web.go index d059d7a..caebf9d 100644 --- a/src/server/handlers_web.go +++ b/src/server/handlers_web.go @@ -21,11 +21,13 @@ type PageData struct { Version string Expirations []int Expiration int + Language string Languages []string Err error URL string Note *Note EnableUploadFileButton bool + AceDirectory string BootstrapDirectory string } diff --git a/src/server/server.go b/src/server/server.go index f64e2cc..6e670fc 100644 --- a/src/server/server.go +++ b/src/server/server.go @@ -113,7 +113,9 @@ func (s *Server) Start() error { Title: s.config.Title, Expirations: s.config.Expirations, Expiration: s.config.Expiration, + Language: s.config.Language, Languages: s.config.Languages, + AceDirectory: s.config.AceDirectory, BootstrapDirectory: s.config.BootstrapDirectory, } @@ -159,6 +161,10 @@ func (s *Server) Start() error { } r.Path("/{id:[a-zA-Z0-9]+}.html").Handler(webNoteHandler).Methods("GET") + if s.config.AceDirectory != "" { + r.PathPrefix("/static/ace-builds/").Handler(http.StripPrefix("/static/ace-builds/", http.FileServer(http.Dir(s.config.AceDirectory)))) + } + if s.config.BootstrapDirectory != "" { r.PathPrefix("/static/bootstrap/").Handler(http.StripPrefix("/static/bootstrap/", http.FileServer(http.Dir(s.config.BootstrapDirectory)))) } @@ -168,10 +174,10 @@ func (s *Server) Start() error { addr := fmt.Sprintf("%s:%d", s.config.ListenAddress, s.config.ListenPort) if s.config.HasTLS() { - s.logger.Info(fmt.Sprintf("listening to %s:%d (https)", s.config.ListenAddress, s.config.ListenPort)) + s.logger.Info(fmt.Sprintf("listening to %s:%d", s.config.ListenAddress, s.config.ListenPort), slog.Any("scheme", "http")) 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)) + s.logger.Info(fmt.Sprintf("listening to %s:%d", s.config.ListenAddress, s.config.ListenPort), slog.Any("scheme", "https")) return http.ListenAndServe(addr, r) } } diff --git a/src/server/templates/index.html b/src/server/templates/index.html index 4c18a78..fd034fd 100644 --- a/src/server/templates/index.html +++ b/src/server/templates/index.html @@ -40,15 +40,17 @@
@@ -69,36 +71,36 @@ - + diff --git a/src/server/templates/note.html b/src/server/templates/note.html index 2570851..ad36db7 100644 --- a/src/server/templates/note.html +++ b/src/server/templates/note.html @@ -32,27 +32,31 @@
- + {{end}}