Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var net = require('net');
- var http = require('http');
- var url = require('url');
- var fs = require('fs');
- var cluster = require('cluster');
- var ip_mapping = require('./ip_mapping');
- function process_command(data, callback) {
- var command = {command: "", data: ""};
- var data_split = data.trim().toLowerCase().split(' ');
- command.command = data_split[0];
- command.data = data_split[1];
- switch (command.command) {
- case 'get':
- var ip = command.data;
- if (net.isIPv4(ip) == false) {
- callback("CLIENT_ERROR\r\n");
- break;
- }
- var location = ip_mapping.query_ip(ip);
- if (location == undefined) location = "UNKNOWN";
- var result_buffer = new Buffer(location);
- var result = "VALUE "+command.data+" 0 "+result_buffer.length+"\r\n";
- result += location+"\r\nEND\r\n";
- callback(result);
- break;
- case 'quit':
- callback(false);
- break;
- default:
- callback("CLIENT_ERROR\r\n");
- break;
- }
- }
- var server = net.createServer(function(conn) {
- conn.on('data', function(data) {
- data = data.toString();
- process_command(data, function(result) {
- if (result == false) {
- conn.end();
- } else {
- conn.write(result);
- }
- })
- });
- });
- var http_server = http.createServer(function(req, res) {
- res.setHeader("Connection", "close");
- var url_parts = url.parse(req.url);
- var ip = url_parts.query;
- if (!ip || net.isIPv4(ip) == false) {
- res.end('ERROR');
- return;
- }
- var location = ip_mapping.query_ip(ip);
- res.end(location);
- });
- ip_mapping.build_mapping(__dirname + '/city.ip.csv', __dirname + '/contry.ip.csv');
- if (cluster.isMaster) {
- for (var i = 0; i < 1; i++) {
- cluster.fork();
- }
- cluster.on('death', function(worker) {
- console.log('worker ' + worker.pid + ' died');
- });
- } else {
- server.listen(8421);
- http_server.listen(8420);
- }
Add Comment
Please, Sign In to add comment