Advertisement
Guest User

Node.JS Simple FTP Server

a guest
May 22nd, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// <reference path="typings/node.d.ts" />
  2.  
  3. var net = require('net');
  4.  
  5. var baseDire = '';
  6.  
  7. var srv = net.createServer(function(c) {
  8.     c.setEncoding('utf8');
  9.    
  10.     console.log('Client connected : %s', c.remoteAddress);
  11.     console.log('Awaiting authentication...');
  12.     var packet;
  13.    
  14.     c.on('data', function (data) {
  15.         console.log("Data received: ", data);
  16.        
  17.         var from = 0;
  18.            
  19.         while (true) {
  20.             var start = data.indexOf('<', from),
  21.                 end = data.indexOf('>', from);
  22.                
  23.             // < ... >
  24.             if (start != -1 && end != -1 && end > start) {
  25.                 packet = data.substring(start, end + 1);
  26.                 packetReceived(packet, c);
  27.                 from = end + 1;
  28.             }
  29.            
  30.             // < ...
  31.             else if(start != -1 && end == -1) {
  32.                 packet = data.substring(start, data.length);
  33.                 break;
  34.             }
  35.            
  36.             // ... >
  37.             // ... >< ... >
  38.             else if ((start == -1 && end != -1) || end < start) {
  39.                 packet += data.substring(0, end + 1);          
  40.                 from = end + 1;
  41.                 packetReceived(packet, c);
  42.             }
  43.             else {
  44.                 break;
  45.             }
  46.         }
  47.        
  48.         console.log('End of data event');  
  49.     });
  50.    
  51.     c.write('Welcome to D*****FTP server\r\n');
  52.    
  53.     c.on('end', function() {
  54.         console.log('Client disconnected');
  55.     });
  56.  
  57. });
  58.  
  59. srv.listen(8096, function () {
  60.     console.log('Server bound');
  61. });
  62.  
  63. //Must change to support multi user
  64. var status;
  65.  
  66. var packetReceived = function (packet, socket) {
  67.     if(!status) {
  68.         //Login
  69.        
  70.         return;
  71.     }
  72.    
  73.     switch (packet.cmd) {
  74.         case 'upload':
  75.             status = 'uploading';  
  76.             break;
  77.         case 'download':
  78.            
  79.             break;
  80.         case 'list':
  81.            
  82.             break;
  83.     }
  84.    
  85.     console.log("Packet received: %s (%d)", packet, packet.length);
  86. };
  87.  
  88. var readPacket = function (str) {
  89. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement