server.js - git - Webernet Explorer _X
git 🏠 Home 👤 Sign up Self hosted git, retro shell
★ otgit, code hosting from the year 2000 ★
📄 octuna / server.js
60 lines · 1.8 KB · Raw
1const http = require('http');
2 
3const config = require('./lib/config');
4const log = require('./lib/log');
5const respond = require('./lib/respond');
6const { Router } = require('./lib/router');
7 
8function checkConfigured() {
9 if (!config.get('auth.sessionSecret')) {
10 log.error('auth.sessionSecret missing. Run: node setup.js');
11 process.exit(1);
12 }
13 if (!config.get('admin.user') || !config.get('admin.passwordHash')) {
14 log.error('Admin not configured. Run: node setup.js');
15 process.exit(1);
16 }
17}
18checkConfigured();
19 
20const router = new Router();
21 
22// Static assets (specific file paths, served from memory)
23require('./routes/static')(router);
24 
25// API routes
26require('./routes/auth')(router);
27require('./routes/repo-write')(router);
28 
29// Smart HTTP git push/pull
30require('./routes/smart-http')(router);
31 
32// HTML pages - most specific first to avoid /:user swallowing everything
33require('./routes/pages')(router);
34require('./routes/admin')(router);
35require('./routes/repo')(router);
36require('./routes/user')(router);
37 
38router.get('/health', (_req, res) => respond.json(res, 200, { ok: true }));
39 
40const server = http.createServer((req, res) => {
41 const urlPath = req.url.split('?')[0];
42 const matched = router.match(req.method, urlPath);
43 if (!matched) return respond.notFound(res);
44 try {
45 matched.handler(req, res, matched.params);
46 } catch (e) {
47 log.error('unhandled error', e.stack || e.message);
48 if (!res.headersSent) respond.serverError(res);
49 else res.end();
50 }
51});
52 
53const port = config.get('site.port');
54const host = config.get('site.bindHost');
55server.listen(port, host, () => {
56 const m = process.memoryUsage();
57 log.info(`${config.get('site.name')} on ${config.get('site.publicUrl')} (port ${port})`);
58 log.info(`rss=${(m.rss / 1024 / 1024).toFixed(1)}MB heap=${(m.heapUsed / 1024 / 1024).toFixed(1)}MB`);
59});
60 
Done 🔒 Internet