Guest User

Untitled

a guest
Oct 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. var net = require('net');
  2. var http = require('http');
  3. var url = require('url');
  4. var fs = require('fs');
  5. var cluster = require('cluster');
  6.  
  7. var ip_mapping = require('./ip_mapping');
  8.  
  9. function process_command(data, callback) {
  10. var command = {command: "", data: ""};
  11. var data_split = data.trim().toLowerCase().split(' ');
  12. command.command = data_split[0];
  13. command.data = data_split[1];
  14. switch (command.command) {
  15. case 'get':
  16. var ip = command.data;
  17. if (net.isIPv4(ip) == false) {
  18. callback("CLIENT_ERROR\r\n");
  19. break;
  20. }
  21. var location = ip_mapping.query_ip(ip);
  22. if (location == undefined) location = "UNKNOWN";
  23. var result_buffer = new Buffer(location);
  24. var result = "VALUE "+command.data+" 0 "+result_buffer.length+"\r\n";
  25. result += location+"\r\nEND\r\n";
  26. callback(result);
  27. break;
  28. case 'quit':
  29. callback(false);
  30. break;
  31. default:
  32. callback("CLIENT_ERROR\r\n");
  33. break;
  34. }
  35. }
  36.  
  37. var server = net.createServer(function(conn) {
  38. conn.on('data', function(data) {
  39. data = data.toString();
  40. process_command(data, function(result) {
  41. if (result == false) {
  42. conn.end();
  43. } else {
  44. conn.write(result);
  45. }
  46. })
  47. });
  48. });
  49.  
  50. var http_server = http.createServer(function(req, res) {
  51. res.setHeader("Connection", "close");
  52. var url_parts = url.parse(req.url);
  53. var ip = url_parts.query;
  54. if (!ip || net.isIPv4(ip) == false) {
  55. res.end('ERROR');
  56. return;
  57. }
  58. var location = ip_mapping.query_ip(ip);
  59. res.end(location);
  60. });
  61.  
  62. ip_mapping.build_mapping(__dirname + '/city.ip.csv', __dirname + '/contry.ip.csv');
  63.  
  64.  
  65. if (cluster.isMaster) {
  66. for (var i = 0; i < 1; i++) {
  67. cluster.fork();
  68. }
  69. cluster.on('death', function(worker) {
  70. console.log('worker ' + worker.pid + ' died');
  71. });
  72. } else {
  73. server.listen(8421);
  74. http_server.listen(8420);
  75. }
Add Comment
Please, Sign In to add comment