ftp.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. var ftpd = require('ftpd'),
  2. fs = require('fs'),
  3. path = require('path');
  4. var server;
  5. var options = {
  6. host: '0.0.0.0',
  7. port: process.env.FTP_PORT || 7002,
  8. tls: null,
  9. };
  10. server = new ftpd.FtpServer(options.host, {
  11. getInitialCwd: function() {
  12. return '/';
  13. },
  14. getRoot: function() {
  15. return '/app/data/public';
  16. },
  17. pasvPortRangeStart: process.env.FTP_PORT_PASSV_0 || 7003,
  18. pasvPortRangeEnd: process.env.FTP_PORT_PASSV_1 || 7004,
  19. tlsOptions: options.tls,
  20. allowUnauthorizedTls: true,
  21. useWriteFile: false,
  22. useReadFile: false
  23. });
  24. server.on('error', function(error) {
  25. console.log('FTP Server error:', error);
  26. });
  27. server.on('client:connected', function(connection) {
  28. var username = null;
  29. console.log('client connected: ' + connection.remoteAddress);
  30. connection.on('command:user', function(user, success, failure) {
  31. if (user === 'nebulon') {
  32. username = user;
  33. success();
  34. } else {
  35. failure();
  36. }
  37. });
  38. connection.on('command:pass', function(pass, success, failure) {
  39. if (pass === 'manda') {
  40. success(username);
  41. } else {
  42. failure();
  43. }
  44. });
  45. });
  46. server.debugging = 4;
  47. server.listen(options.port);
  48. console.log('Listening on port ' + options.port);