|
@@ -1,79 +0,0 @@
|
|
-var ftpd = require('ftpd'),
|
|
|
|
- fs = require('fs'),
|
|
|
|
- superagent = require('superagent'),
|
|
|
|
- path = require('path');
|
|
|
|
-
|
|
|
|
-var simpleAuth = process.env.SIMPLE_AUTH_URL && process.env.SIMPLE_AUTH_CLIENT_ID && process.env.API_ORIGIN;
|
|
|
|
-
|
|
|
|
-function verifyUser(username, password, callback) {
|
|
|
|
- if (!simpleAuth) {
|
|
|
|
- if (username === 'test' && password === 'test') return callback(null);
|
|
|
|
- else return callback(new Error('auth failed'));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- var authPayload = {
|
|
|
|
- clientId: process.env.SIMPLE_AUTH_CLIENT_ID,
|
|
|
|
- username: username,
|
|
|
|
- password: password
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- superagent.post(process.env.SIMPLE_AUTH_URL + '/api/v1/login').send(authPayload).end(function (error, result) {
|
|
|
|
- if (error && error.status === 401) return callback(new Error('auth failed'));
|
|
|
|
- if (error) return callback(wrapRestError(error));
|
|
|
|
- if (result.status !== 200) return callback(new Error('auth failed'));
|
|
|
|
-
|
|
|
|
- callback(null);
|
|
|
|
- });
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-var server;
|
|
|
|
-var options = {
|
|
|
|
- host: '0.0.0.0',
|
|
|
|
- port: process.env.FTP_PORT || 7002,
|
|
|
|
- tls: null,
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-server = new ftpd.FtpServer(options.host, {
|
|
|
|
- getInitialCwd: function() {
|
|
|
|
- return '/';
|
|
|
|
- },
|
|
|
|
- getRoot: function() {
|
|
|
|
- return '/app/data/public';
|
|
|
|
- },
|
|
|
|
- pasvPortRangeStart: process.env.FTP_PORT_PASV_0 || 7003,
|
|
|
|
- pasvPortRangeEnd: process.env.FTP_PORT_PASV_3 || 7006,
|
|
|
|
- tlsOptions: options.tls,
|
|
|
|
- allowUnauthorizedTls: true,
|
|
|
|
- useWriteFile: false,
|
|
|
|
- useReadFile: false
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-server.on('error', function(error) {
|
|
|
|
- console.log('FTP Server error:', error);
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-server.on('client:connected', function(connection) {
|
|
|
|
- var username = null;
|
|
|
|
- console.log('client connected: ' + connection.remoteAddress);
|
|
|
|
- connection.on('command:user', function(user, success, failure) {
|
|
|
|
- if (user) {
|
|
|
|
- username = user;
|
|
|
|
- success();
|
|
|
|
- } else {
|
|
|
|
- failure();
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- connection.on('command:pass', function(password, success, failure) {
|
|
|
|
- if (!password) return failure();
|
|
|
|
-
|
|
|
|
- verifyUser(username, password, function (error) {
|
|
|
|
- if (error) failure();
|
|
|
|
- else success(username);
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-server.debugging = 4;
|
|
|
|
-server.listen(options.port);
|
|
|
|
-console.log('Listening on port ' + options.port);
|
|
|