diff --git a/README.md b/README.md
index 172a29b..f3c7f7b 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,6 @@ Easily share code and text.
**Setup:**
- Clone
- Copy `config.template.toml` into `config.toml`
- - For local testing `[SERVER] > domain` can be set to `http://localhost:PORT` (Default Port `8181`)
- Set Database connection DSN.
- Optionally set URLs to a running Redis Instance.
- ! If you haven't already: Create a Database in `postgres` (Default `mystbin`)
diff --git a/config.template.toml b/config.template.toml
index 860da18..939b932 100644
--- a/config.template.toml
+++ b/config.template.toml
@@ -1,7 +1,6 @@
[SERVER]
host = "localhost"
port = 8181
-domain = "https://mystb.in"
session_secret = "" # Run: import secrets; print(secrets.token_urlsafe(64))
maintenance = false
diff --git a/views/api.py b/views/api.py
index 8527033..ba0d583 100644
--- a/views/api.py
+++ b/views/api.py
@@ -302,8 +302,8 @@ async def security_info(self, request: starlette_plus.Request) -> starlette_plus
status_code=404,
)
- delete: str = f"{CONFIG['SERVER']['domain']}/api/security/delete/{token}"
- info: str = f"{CONFIG['SERVER']['domain']}/api/security/info/{token}"
+ delete: str = f"{request.url.scheme}://{request.url.hostname}/api/security/delete/{token}"
+ info: str = f"{request.url.scheme}://{request.url.hostname}/api/security/info/{token}"
data: dict[str, str] = {
"token": paste.safety,
"delete": delete,
diff --git a/views/htmx.py b/views/htmx.py
index 336774e..d9c42ea 100644
--- a/views/htmx.py
+++ b/views/htmx.py
@@ -225,7 +225,7 @@ async def paste_raw(self, request: starlette_plus.Request) -> starlette_plus.Res
htmx_url: str | None = request.headers.get("HX-Current-URL", None)
if identifier == "0" and htmx_url:
- identifier = htmx_url.removeprefix(f'{CONFIG["SERVER"]["domain"]}/')
+ identifier = htmx_url.removeprefix(f"{request.url.scheme}://{request.url.hostname}/")
headers: dict[str, str] = {"HX-Redirect": f"/raw/{identifier}"}
paste = await self.app.database.fetch_paste(identifier, password=password)
diff --git a/web/password.html b/web/password.html
index 4268b5e..f5e69c9 100644
--- a/web/password.html
+++ b/web/password.html
@@ -17,6 +17,7 @@
+
diff --git a/web/paste.html b/web/paste.html
index 64ee369..fe9f7bd 100644
--- a/web/paste.html
+++ b/web/paste.html
@@ -16,6 +16,7 @@
+
diff --git a/web/static/scripts/highlights.js b/web/static/scripts/highlights.js
index 6aa5517..24c4aee 100644
--- a/web/static/scripts/highlights.js
+++ b/web/static/scripts/highlights.js
@@ -6,11 +6,22 @@ let DlCount = 0;
for (let area of HIGHLIGHT_AREAS) {
let code = area.querySelector("pre > code");
+ let name = area.querySelector(".pasteHeader > div > .filenameArea");
+
pasteStores.push(code.textContent);
// Highlight Code Block and get Language Details...
- let details = hljs.highlightAuto(code.textContent);
- let highlightedLang = details.language ? details.language : "plaintext";
+ let nameLang = getLangByName(name.textContent);
+ let highlightedLang;
+ let details;
+
+ if (!nameLang) {
+ details = hljs.highlightAuto(code.textContent);
+ highlightedLang = details.language || "plaintext";
+ } else {
+ details = hljs.highlight(code.textContent, { "language": nameLang })
+ highlightedLang = nameLang.toLowerCase();
+ }
code.innerHTML = details.value;
diff --git a/web/static/scripts/highlightsHTMX.js b/web/static/scripts/highlightsHTMX.js
index a8e12fc..421c90c 100644
--- a/web/static/scripts/highlightsHTMX.js
+++ b/web/static/scripts/highlightsHTMX.js
@@ -14,11 +14,21 @@ document.addEventListener("htmx:afterRequest", function (evt) {
for (let area of HIGHLIGHT_AREAS) {
let code = area.querySelector("pre > code");
+ let name = area.querySelector(".pasteHeader > div > .filenameArea");
pasteStores.push(code.textContent);
// Highlight Code Block and get Language Details...
- let details = hljs.highlightAuto(code.textContent);
- let highlightedLang = details.language ? details.language : "plaintext";
+ let nameLang = getLangByName(name.textContent);
+ let highlightedLang;
+ let details;
+
+ if (!nameLang) {
+ details = hljs.highlightAuto(code.textContent);
+ highlightedLang = details.language || "plaintext";
+ } else {
+ details = hljs.highlight(code.textContent, { "language": nameLang })
+ highlightedLang = nameLang.toLowerCase();
+ }
code.innerHTML = details.value;
diff --git a/web/static/scripts/utils.js b/web/static/scripts/utils.js
new file mode 100644
index 0000000..0ac8b22
--- /dev/null
+++ b/web/static/scripts/utils.js
@@ -0,0 +1,14 @@
+function getLangByName(name) {
+ splat = name.split(".");
+ if (splat.length <= 1) {
+ return null
+ }
+
+ ext = splat[splat.length - 1];
+ lang = hljs.getLanguage(ext);
+
+ if (!lang) {
+ return null
+ }
+ return lang.name;
+}
\ No newline at end of file