// @ts-check
const https = require('https');
const http = require('http');
const fs = require('fs');
const gitstatic = require("./git-serve");
const express = require("express");
const repository = '.git';
const app = express();
app.get(/^\/.+/, gitstatic.route().repository(repository));
app.get(/\//, (req, res) => {
gitstatic.listAllCommits(repository, (err, commits) => {
console.log(err, commits);
res.send(
commits.map((commit) => {
return `${commit.sha.slice(0, 7)} - ${commit.date.toISOString()} - ${commit.subject}
`;
}).join('')
);
});
});
const { networkInterfaces } = require('os');
const nets = networkInterfaces();
const results = {};
for(const name of Object.keys(nets)) {
for(const net of nets[name]) {
// Skip over non-IPv4 and internal (i.e. 127.0.0.1) addresses
if(net.family === 'IPv4' && !net.internal) {
if(!results[name]) {
results[name] = [];
}
results[name].push(net.address);
}
}
}
const useHttp = false;
const transport = useHttp ? http : https;
let options = {};
if(!useHttp) {
options.key = fs.readFileSync(__dirname + '/certs/server-key.pem');
options.cert = fs.readFileSync(__dirname + '/certs/server-cert.pem');
}
console.log(results);
const port = 3000;
const protocol = useHttp ? 'http' : 'https';
console.log('Listening port:', port);
function createServer(host) {
const server = transport.createServer(options, app);
server.listen(port, host, () => {
console.log('Host:', `${protocol}://${host || 'localhost'}:${port}/`);
});
server.on('error', (e) => {
// @ts-ignore
if(e.code === 'EADDRINUSE') {
console.log('Address in use:', host);
server.close();
}
});
}
for(const name in results) {
const ips = results[name];
for(const ip of ips) {
createServer(ip);
}
}
createServer();