| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // @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 `<a href="/${commit.sha}/public/index.html" target="_blank"><span style="font-family: monospace;">${commit.sha.slice(0, 7)} - ${commit.date.toISOString()}</span></a> - <a href="https://github.com/morethanwords/tweb/commit/${commit.sha}" target="_blank">${commit.subject}</a><br>`;
- }).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();
|