-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
106 lines (96 loc) · 4.38 KB
/
server.js
File metadata and controls
106 lines (96 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
const express = require("express");
const app = express();
require("dotenv").config();
const { v4: uuidv4 } = require('uuid');
const registryRepo =
process.env.TEMPLATE_REGISTRY_REPO_URL ||
"https://github.com/code-server-boilerplates/template-registry";
app.get("/", (req, res) => {
res.redirect(registryRepo);
});
app.get("/register", (req, res) => {
res.redirect(registryRepo + "/issues/new/choose");
});
app.get("/heartbeat", (req, res) => res.redirect("/api/heartbeat"));
app.get("/api/heartbeat", (req, res) => {
console.log("server-info: Heartbeat ping was received");
console.log(req);
res.status(200).json({ ok: true, description: "I'm up!", code: 200 });
});
// WIP: Webhook handler, but for now it just log stuff
app.post("/api/webhookHandler", (req, res) => {
const webhookHandlerEnabled = process.env.ENABLE_WEBHOOK_ENDPOINT;
console.log(req.body);
if (webhookHandlerEnabled != "true") {
res.status(404).json({
ok: false,
description: "Server doesn't accept webhooks from anyone, even GitHub",
});
} else {
const isNewIssue = "owo";
res.send({ ok: true });
}
});
app.get("/api/webhookHandler", (req, res) => {
res.status(405).json({ ok: false, description: "Method not supported", code: 405 })
})
app.get("/heroku/:boilerplateSlug", (req, res) => {
// TODO: better handle hig counting in the future
const ip = req.headers['x-forwarded-for'] || req.socket.remoteAddress;
console.log(
"server-log-analytics: Requested slug: " + req.params.boilerplateSlug + " | Request type: heroku.com/deploy | Request ID: " + uuidv4() + " | IP Address: " + ip);
// if it's example-project, use the starter-pack repo.
if (req.params.boilerplateSlug == "example-project") {
res.redirect(
"https://heroku.com/deploy?template=https://github.com/code-server-boilerplate/starter-pack",
);
} else if (req.params.boilerplateSlug == "deploy-code-server-upstream") {
res.redirect("https://heroku.com/deploy?template=https://github.com/cdr/deploy-code-server")
} else {
res.redirect(
"https://heroku.com/deploy?template=https://github.com/code-server-boilerplate/" +
req.params.boilerplateSlug,
);
}
});
app.get("/railway/:boilerplateSlug", (req, res) => {
// implement better hit counting handler here
const ip = req.headers['x-forwarded-for'] || req.socket.remoteAddress;
console.log(
"server-log-analytics: Requested slug: " + req.params.boilerplateSlug + " | Request type: railway.app | Request ID: " + uuidv4() + " | IP Address: " + ip);
// if it's example-project, use the starter-pack repo.
if (req.params.boilerplateSlug == "example-project") {
res.redirect(
"https://railway.app/new?template=https%3A%2F%2Fgithub.com%2Fcode-server-boilerplates%2Fstarter-pack&envs=PASSWORD%2CGIT_REPO&PASSWORDDesc=Your+password+to+log+in+to+code-server+with&GIT_REPODesc=A+git+repo+to+clone+and+open+in+code-server+%28ex.+https%3A%2F%2Fgithub.com%2Fcdr%2Fdocs.git%29",
);
} else if (req.params.boilerplateSlug == "starter-pack") {
res.redirect("/railway/example-project");
} else if (req.params.boilerplateSlug == "upstream") {
res.redirect("/railway/deploy-code-server-upstream");
} else if (req.params.boilerplateSlug == "deploy-code-server-upstream") {
res.redirect(
"https://railway.app/new?template=https%3A%2F%2Fgithub.com%2Fcdr%2Fdeploy-code-server&envs=PASSWORD%2CGIT_REPO&PASSWORDDesc=Your+password+to+log+in+to+code-server+with&GIT_REPODesc=A+git+repo+to+clone+and+open+in+code-server+%28ex.+https%3A%2F%2Fgithub.com%2Fcdr%2Fdocs.git%29",
);
// otherwise, the defaults will apply
} else {
res.redirect(
"https://railway.app/new?template=https%3A%2F%2Fgithub.com%2Fcode-server-boilerplates%2F" +
req.params.boilerplateSlug +
"&envs=PASSWORD%2CGIT_REPO&PASSWORDDesc=Your+password+to+log+in+to+code-server+with&GIT_REPODesc=A+git+repo+to+clone+and+open+in+code-server+%28ex.+https%3A%2F%2Fgithub.com%2Fcdr%2Fdocs.git%29",
);
}
});
const repo =
process.env.REPO_URL ||
"https://github.com/code-server-boilerplates/cdrs-deploy.repohubdev.tk";
app.get("/source", (req, res) => {
res.redirect(repo);
});
// WIP
app.get("/bootstrapper/:boilerplateSlug", (req, res) => {
res.sendFile(__dirname + "/src/scripts/" + req.params.boilerplateSlug);
});
const port = process.env.SERVER_PORT || 8080;
app.listen(port, () => {
console.log(`server-up: Now listening at port ${port}`);
});