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.
70 lines
1.7 KiB
70 lines
1.7 KiB
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 |
|
})); |
|
};
|
|
|