Telegram Web, preconfigured for usage in I2P.
http://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.
71 lines
1.7 KiB
71 lines
1.7 KiB
11 years ago
|
var http = require('http');
|
||
|
|
||
|
var constant = require('./constants');
|
||
|
var helper = require('./helper');
|
||
|
var cfg = require('./config');
|
||
|
|
||
|
|
||
|
var parseExitCode = function(buffer, defaultCode) {
|
||
|
var tailPos = buffer.length - Buffer.byteLength(constant.EXIT_CODE) - 1;
|
||
|
|
||
|
if (tailPos < 0) {
|
||
|
return defaultCode;
|
||
|
}
|
||
|
|
||
|
// tail buffer which might contain the message
|
||
|
var tail = buffer.slice(tailPos);
|
||
|
var tailStr = tail.toString();
|
||
|
if (tailStr.substr(0, tailStr.length - 1) === constant.EXIT_CODE) {
|
||
|
tail.fill('\x00');
|
||
|
return parseInt(tailStr.substr(-1), 10);
|
||
|
}
|
||
|
|
||
|
return defaultCode;
|
||
|
};
|
||
|
|
||
|
|
||
|
// TODO(vojta): read config file (port, host, urlRoot)
|
||
|
exports.run = function(config, done) {
|
||
|
done = helper.isFunction(done) ? done : process.exit;
|
||
|
config = cfg.parseConfig(config.configFile, config);
|
||
|
|
||
|
var exitCode = 1;
|
||
|
var options = {
|
||
|
hostname: config.hostname,
|
||
|
path: config.urlRoot + 'run',
|
||
|
port: config.port,
|
||
|
method: 'POST',
|
||
|
headers: {
|
||
|
'Content-Type': 'application/json'
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var request = http.request(options, function(response) {
|
||
|
response.on('data', function(buffer) {
|
||
|
exitCode = parseExitCode(buffer, exitCode);
|
||
|
process.stdout.write(buffer);
|
||
|
});
|
||
|
|
||
|
response.on('end', function() {
|
||
|
done(exitCode);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
request.on('error', function(e) {
|
||
|
if (e.code === 'ECONNREFUSED') {
|
||
|
console.error('There is no server listening on port %d', options.port);
|
||
|
done(1);
|
||
|
} else {
|
||
|
throw e;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
request.end(JSON.stringify({
|
||
|
args: config.clientArgs,
|
||
|
removedFiles: config.removedFiles,
|
||
|
changedFiles: config.changedFiles,
|
||
|
addedFiles: config.addedFiles,
|
||
|
refresh: config.refresh
|
||
|
}));
|
||
|
};
|