Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 26 additions & 4 deletions download-worker/src/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,32 @@
// mojito.wells.ee/download → latest release DMG. 302 so it always
// resolves to the newest version at request time.
//
// Site pages link here with ?ref=<page>&at=<nav|cta> so downloads can be
// traced back to the guide that sent them. One structured log line per
// request lands in Workers Logs (observability is on in wrangler.jsonc); it
// carries the ref, the referring host and the country — no IP, no cookies.
const DMG = "https://github.com/wr/mojito/releases/latest/download/Mojito.dmg";

function refererHost(request) {
try {
return new URL(request.headers.get("Referer") || "").hostname;
} catch {
return "";
}
}

export default {
fetch() {
return Response.redirect(
"https://github.com/wr/mojito/releases/latest/download/Mojito.dmg",
302,
fetch(request) {
const url = new URL(request.url);
console.log(
JSON.stringify({
event: "download",
ref: (url.searchParams.get("ref") || "").slice(0, 80),
at: (url.searchParams.get("at") || "").slice(0, 20),
referer: refererHost(request),
country: request.cf?.country || "",
}),
);
return Response.redirect(DMG, 302);
},
};
2 changes: 2 additions & 0 deletions download-worker/wrangler.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
"main": "src/index.js",
"compatibility_date": "2025-01-01",
"workers_dev": false,
// Workers Logs: keeps the per-download {ref, at, referer, country} line.
"observability": { "enabled": true },
"routes": [
{ "pattern": "mojito.wells.ee/download*", "zone_name": "wells.ee" }
]
Expand Down
Loading