Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.0 KiB
77 lines
2.0 KiB
// @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();
|
|
|