feat: refactor caddie to use external mappings and add example mappings
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
mappings.ts
|
||||||
@@ -1,80 +1,30 @@
|
|||||||
import { writeFileSync } from "fs"
|
import { writeFileSync } from "fs"
|
||||||
|
import mappings from "./mappings"
|
||||||
const mappings = {
|
|
||||||
// portfolio
|
|
||||||
"blog.silicoflare.dev": "http://localhost:2368",
|
|
||||||
|
|
||||||
// mini-services
|
|
||||||
"yamtrack.hy-pr.link": "http://localhost:9002",
|
|
||||||
"todo.hy-pr.link": "http://localhost:9001",
|
|
||||||
"affine.hy-pr.link": "http://localhost:9005",
|
|
||||||
"affine-nyx.hy-pr.link": "http://localhost:9005",
|
|
||||||
"pin.hy-pr.link": "http://localhost:9007",
|
|
||||||
"dl-api.hy-pr.link": "http://localhost:9011",
|
|
||||||
"dl.hy-pr.link": "http://localhost:9012",
|
|
||||||
"pics.hy-pr.link": "http://localhost:9013",
|
|
||||||
"books.hy-pr.link": "http://localhost:9014",
|
|
||||||
"nametag.hy-pr.link": "http://localhost:9015",
|
|
||||||
"rss.hy-pr.link": "http://localhost:8080",
|
|
||||||
|
|
||||||
// mega-services
|
|
||||||
"git.hy-pr.link": "http://localhost:9100",
|
|
||||||
"ntfy.hy-pr.link": "http://localhost:9101",
|
|
||||||
"chat.hy-pr.link": "http://localhost:9102",
|
|
||||||
"dav.hy-pr.link": "http://localhost:9103",
|
|
||||||
"files.hy-pr.link": "http://localhost:9104",
|
|
||||||
"ytrewq.hy-pr.link": "http://localhost:9105",
|
|
||||||
"pocketbase.hy-pr.link": "http://localhost:8090",
|
|
||||||
"immich.hy-pr.link": "http://localhost:2283",
|
|
||||||
"dash.hy-pr.link": "http://localhost:3026",
|
|
||||||
|
|
||||||
// other
|
|
||||||
"webhook.hy-pr.link": "http://localhost:8000",
|
|
||||||
"docs.hy-pr.link": "http://localhost:10000",
|
|
||||||
|
|
||||||
// statics
|
|
||||||
"chef.hy-pr.link": "http://100.64.0.3:8100",
|
|
||||||
"it-tools.hy-pr.link": "http://100.64.0.3:8101",
|
|
||||||
"vert.hy-pr.link": "http://100.64.0.3:8103",
|
|
||||||
"pdf.hy-pr.link": "http://100.64.0.3:8104",
|
|
||||||
|
|
||||||
//sites
|
|
||||||
"bash.hy-pr.link": "/opt/sites/bash",
|
|
||||||
"stardew.hy-pr.link": "/opt/sites/stardew",
|
|
||||||
"predictor.stardew.hy-pr.link": "/opt/sites/stardew-predictor",
|
|
||||||
"checkup.stardew.hy-pr.link": "/opt/sites/stardew-checkup",
|
|
||||||
"planner.stardew.hy-pr.link": "/opt/sites/crop_planner",
|
|
||||||
"helper.stardew.hy-pr.link": "/opt/sites/stardew-fair-helper",
|
|
||||||
}
|
|
||||||
|
|
||||||
let caddyfile = `# Caddyfile
|
let caddyfile = `# Caddyfile
|
||||||
http://103.126.231.26 {
|
|
||||||
redir https://silicoflare.dev{uri}
|
|
||||||
}
|
|
||||||
|
|
||||||
https://103.126.231.26 {
|
|
||||||
redir https://silicoflare.dev{uri}
|
|
||||||
}
|
|
||||||
|
|
||||||
hy-pr.link {
|
hy-pr.link {
|
||||||
redir /silicoflare https://silicoflare.dev
|
redir /silicoflare https://silicoflare.dev
|
||||||
redir /flare https://silicoflare.dev
|
redir /flare https://silicoflare.dev
|
||||||
}
|
}
|
||||||
|
|
||||||
ssh.hy-pr.link {
|
|
||||||
header Content-Type text/plain
|
|
||||||
respond "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINt3OrGyuZkH+NliwamlZJPFJsgSF4O2+V149EUhtq3l silicoflare.dev\n" 200
|
|
||||||
}
|
|
||||||
|
|
||||||
ssh.silicoflare.dev {
|
|
||||||
header Content-Type text/plain
|
|
||||||
respond "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINt3OrGyuZkH+NliwamlZJPFJsgSF4O2+V149EUhtq3l silicoflare.dev\n" 200
|
|
||||||
}
|
|
||||||
|
|
||||||
`
|
`
|
||||||
|
|
||||||
Object.entries(mappings).map(([key, value]) => {
|
Object.entries(mappings).map(([key, value]) => {
|
||||||
if (value.startsWith("/")) {
|
|
||||||
|
if (value.startsWith("key:")) {
|
||||||
|
caddyfile += `${key} {
|
||||||
|
header Content-Type text/plain
|
||||||
|
respond "${value.split(":")[1]}\n" 200
|
||||||
|
}
|
||||||
|
|
||||||
|
`
|
||||||
|
} else if (value.startsWith("redir:")) {
|
||||||
|
caddyfile += `${key} {
|
||||||
|
redir ${value.split(":")[1]}
|
||||||
|
}
|
||||||
|
|
||||||
|
`
|
||||||
|
} else if (value.startsWith("/")) {
|
||||||
caddyfile += `${key} {
|
caddyfile += `${key} {
|
||||||
root * ${value}
|
root * ${value}
|
||||||
encode gzip zstd
|
encode gzip zstd
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
const mappings = {
|
||||||
|
// redirects
|
||||||
|
"http://ip": "redir:https://example.com{uri}",
|
||||||
|
|
||||||
|
// reverse proxies
|
||||||
|
"example.com": "http://localhost:8080",
|
||||||
|
|
||||||
|
// static files
|
||||||
|
"foo.example.com": "/opt/sites/foo",
|
||||||
|
|
||||||
|
// keys
|
||||||
|
"ssh.example.com": "key:ssh-ed25519 qwerty1234567890 example.com",
|
||||||
|
}
|
||||||
|
|
||||||
|
export default mappings;
|
||||||
Reference in New Issue
Block a user