NodeJS FTP Proxy
NodeJS ftp proxy prepared for active and passive connections with transfer stats plugin and logging module.
Stats plugin already has a solution for using rabbitMQ as stats' message publisher.
For more details, go to our Wiki page
$ npm install ftp-proxy
Usage example
(function(){
var ftpd = require('ftp-proxy');
var _config = require('./config');
var _p = {
'server': null,
'init': function(){
_p.ftpProxy.set();
return self;
},
'ftpProxy': {
'set': function () {
var proxy = new ftpd(_config);
proxy.listen(_config.proxyData.port);
proxy.on("error", _p.ftpProxy.onError);
},
'onError': function(error) {
console.error(error);
}
}
};
var self = {};
return _p.init();
})();
config.js file example
module.exports = {
serverData: {
host: '127.0.0.1',
port: 21
},
proxyData: {
id: 'Proxy test local machine',
ip: '127.0.0.1',
port: 2121,
machineName: 'Test Machine'
},
logging: {
useConsole: true,
useFile: true,
filePath: 'FTPProxy-Logging(%DATE%).log',
level: 'DEBUG'
},
statsPlugin: {
usePlugin: true,
activeStatusInterval: 10 * 1000,
inactiveStatusInterval: 1 * 60 * 60 * 1000,
timeToIgnoreIdleTransfer: 10 * 60 * 1000
},
messagePublisher: {
connectionString: 'your rabbit connection string',
exchange: {
name: 'FtpProxy.Notifications',
options: {
type: 'topic'
}
},
RK: {
snapshot: {
name : 'FtpProxy.Notifications.Snapshot',
options:{
type: 'FtpProxy.FtpStatus'
,contentType: 'application/json'
,contentEncoding: 'utf-8'
,immediate: true
}
},
onTransferStarted: {
name : 'FtpProxy.Notifications.OnTransferStarted',
options:{
type: 'FtpProxy.FtpTransferInfo'
,contentType: 'application/json'
,contentEncoding: 'utf-8'
,immediate: true
}
},
onTransferEnded: {
name : 'FtpProxy.Notifications.OnTransferEnded',
options:{
type: 'FtpProxy.FtpTransferInfo'
,contentType: 'application/json'
,contentEncoding: 'utf-8'
,immediate: true
}
},
onTransferAborted: {
name : 'FtpProxy.Notifications.OnTransferAborted',
options:{
type: 'FtpProxy.FtpTransferInfo'
,contentType: 'application/json'
,contentEncoding: 'utf-8'
,immediate: true
}
}
}
}
}