new FTP(config, connect)
The main FTP API object
Parameters:
Name | Type | Description |
---|---|---|
config |
null | object | The ftp connection settings (optional) |
connect |
boolean | Whether or not to start the connection automatically; default is true; |
- Mixes In:
- Source:
- To Do:
-
- The major functions have been added and this current version is more stable and geared for asynchronous NodeJS. The following commands need to be added:
- Add FTP.stou
- Add FTP.rein
- Add FTP.site
- Add FTP.mode
- Add FTP.acct
- Add FTP.appe
- Add FTP.help
- Add ability to opt into an active port connection for data transfers FTP extends the NodeJS EventEmitter - see
Classes
Namespaces
Members
(static) CMD :object
The command module
Type:
- object
ascii :array
List of files to get and put in ASCII
Type:
- array
baseDir :string
The user defined directory set by the FTP admin.
Type:
- string
config :string
The FTP log in information.
Type:
- string
currentType :string
Holds the current file transfer type [ascii, binary, ecbdic, local]
Type:
- string
cwd :string
Current working directory.
Type:
- string
isReady :boolean
Set once the ftp connection is established
Type:
- boolean
pipe :object
Refernce to the socket created for data transfers
Type:
- object
pipeAborted :object
Set by the ftp.abort method to tell the pipe to close any open data connection
Type:
- object
pipeActive :object
Set by the ftp.put method while the pipe is connecting and while connected
Type:
- object
pipeClosed :object
Set by the ftp.openDataPort method to tell the process that the pipe has been closed
Type:
- object
queue :object
Establishes a queue to provide synchronicity to ftp
processes that would otherwise fail from concurrency.
This function is done automatically when using
the FTP#run method to queue commands.
Type:
- object
Properties:
Name | Type | Description |
---|---|---|
queue._queue |
array | Stores registered procedures and holds them until called by the queue.run method |
queue.processing |
boolean | Returns true if there are items running in the queue |
queue.register |
function | Registers a new callback function to be triggered after the queued command completes |
queue.run |
function | If there is something in the queue and queue.processing is false, than the first item stored in queue._queue will be removed from the queue and processed. |
Fires:
(readonly) secondTypeMap :string
Type:
- string
Properties:
Name | Type | Description |
---|---|---|
nonprint |
string | |
telnet |
string | |
asa |
string |
socket :object
Refernce to the socket created for data transfers
Type:
- object
socket
Holds the connected socket object
(readonly) typeMap :string
Values that are used with FTP#setType and FTP#type
to set the transfer type of data
Type:
- string
Properties:
Name | Type | Description |
---|---|---|
ascii |
string | |
binary |
string | |
ebcdic |
string | |
local |
string |
Methods
(static) create(config, connect) → {object}
Initializes the main FTP sequence
ftp will emit a ready event once
the server connection has been established
Parameters:
Name | Type | Description |
---|---|---|
config |
null | object | The ftp connection settings (optional) |
connect |
boolean | Whether or not to start the connection automatically; default is true; |
Returns:
FTP - return new FTP instance object
- Type
- object
abort(callback)
Runs the FTP command ABOR - Abort a file transfer, this takes place in parallel
Parameters:
Name | Type | Description |
---|---|---|
callback |
function | The callback function to be issued. |
chdir(dirpath, callback, runLevel, holdQueueopt)
Runs the FTP command CWD - Change Working Directory
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
dirpath |
string | The directory name to change to. | ||
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
connect(callback)
Creates a new socket connection for sending commands
to the ftp server and runs an optional callback when logged in
Parameters:
Name | Type | Description |
---|---|---|
callback |
function | The callback function to be issued. (optional) |
exit(sig)
Logout from the ftp server
Parameters:
Name | Type | Description |
---|---|---|
sig |
number | the signal code, if not 0, then socket will be destroyed to force closing |
filemtime(filepath, callback) → {number}
Runs the FTP command MDTM - Return the modification time of a file
Parameters:
Name | Type | Description |
---|---|---|
filepath |
string | The location of the remote file to stat. |
callback |
function | The callback function to be issued. |
Returns:
filemtime - File modified time in milliseconds
- Type
- number
Example
//getting a date object from the file modified time
ftp.filemtime('foo.js', function (err, filemtime) {
if (err) {
dbg(err);
} else {
dbg(filemtime);
//1402849093000
var dateObject = new Date(filemtime);
//Sun Jun 15 2014 09:18:13 GMT-0700 (PDT)
}
});
get(filepath, callback)
Runs the FTP command RETR - Retrieve a remote file
Parameters:
Name | Type | Description |
---|---|---|
filepath |
string | The location of the remote file to fetch. |
callback |
function | The callback function to be issued. |
getcwd(callback, runLevel, holdQueueopt)
Runs the FTP command PWD - Print Working Directory
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
info(callback, runLevel, holdQueueopt)
Runs the FTP command SYST - return system type
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
init()
Ran at beginning to start a connection, can be overriden
Example
//Overriding the ftpimp.init instance method
var FTP = require('ftpimp'),
//get connection settings
config = {
host: 'localhost',
port: 21,
user: 'root',
pass: ''
},
ftp,
//override init
MyFTP = function(){
this.init();
};
//override the prototype
MyFTP.prototype = FTP.prototype;
//override the init method
MyFTP.prototype.init = function () {
dbg('Initializing!');
ftp.handle = ftp.Handle.create();
ftp.connect();
};
//start new MyFTP instance
ftp = new MyFTP(config);
ls(filepath, callback, runLevel)
Runs the FTP command LIST - List remote files
Parameters:
Name | Type | Description |
---|---|---|
filepath |
string | The location of the remote file or directory to list. |
callback |
function | The callback function to be issued. |
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. |
lsnames(dirpath, callback)
Runs the FTP command NLST - Name list of remote directory.
Parameters:
Name | Type | Description |
---|---|---|
dirpath |
string | The location of the remote directory to list. |
callback |
function | The callback function to be issued. |
mkdir(dirpath, callback, recursive, runLevel, holdQueueopt)
Runs the FTP command MKD - Make a remote directory.
Creates a directory and returns the directory name.
Optionally creates directories recursively.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
dirpath |
string | The directory name to be created. | ||
callback |
function | The callback function to be issued. | ||
recursive |
boolean | Recursively create directories. (default: false) | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
mode(type)
Runs the FTP command MODE - Set transfer mode (default Stream) - will be added in next patch
Parameters:
Name | Type | Description |
---|---|---|
type |
string | set to this type: 'stream', 'block', 'compressed' |
- Source:
- To Do:
-
- - This still needs to be added - should create an object of methods
openDataPort(callback, runLevel)
Opens a new data port to the remote server - pasv connection
which allows for file transfers
Parameters:
Name | Type | Description |
---|---|---|
callback |
function | The callback function to be issued |
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. |
pass(pass, callback, holdQueueopt)
Runs the FTP command PASS - Send password.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
pass |
string | The password for the user. | ||
callback |
function | The callback function to be issued. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
pasv(pasv, callback, runLevel, holdQueueopt)
Runs the FTP command PASV - Open a data port in passive mode.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
pasv |
string | The pasv parameter a1,a2,a3,a4,p1,p2 where a1.a2.a3.a4 is the IP address and p1*256+p2 is the port number | ||
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
ping(callback, runLevel, holdQueueopt)
Runs the FTP command NOOP - Do nothing; Keeps the connection from timing out;
determine latency(ms), the latency will be passed as the data(second)
parameter of the callback
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
port(port, callback, runLevel, holdQueueopt)
Runs the FTP command PORT - Open a data port in active mode.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
port |
string | The port parameter a1,a2,a3,a4,p1,p2. This is interpreted as IP address a1.a2.a3.a4, port p1*256+p2. | ||
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
put(paths, callback)
Asynchronously queues files for transfer, and transfers them in order to the server.
Parameters:
Name | Type | Description |
---|---|---|
paths |
string | array | The path to read and send the file, if you are sending to the same (relative) location you are reading from then you can supply a string as a shortcut. Otherwise, use an array [from, to] |
callback |
function | The callback function to be issued once the file has been successfully written to the remote |
quit(callback, runLevel, holdQueueopt)
Runs the FTP command QUIT - Terminate the connection.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
raw(command, callback)
Issues a single raw request to the server and
calls the callback function once data is received
Parameters:
Name | Type | Description |
---|---|---|
command |
string | The command to send to the FTP server |
callback |
function | The callback function to be fired once on a data event |
Example
//say hi to the server
var FTP = require('ftpimp'),
config = require('./myconfig'),
ftp = FTP.connect(config);
ftp.on('ready', function () {
ftp.raw('NOOP', function (data) {
dbg(data);
});
});
rename(paths, callback, runLevel, holdQueueopt)
Runs the FTP command RNFR and RNTO - Rename from and rename to; Rename a remote file
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
paths |
array | The path of the current file and the path you wish to rename it to; eg: ['from', 'to'] | ||
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
rmdir(dirpath, callback, recursive, runLevel, holdQueueopt)
Runs the FTP command RMD - Remove a remote directory
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
dirpath |
string | The location of the directory to be deleted. | ||
callback |
function | The callback function to be issued. | ||
recursive |
string | Recursively delete files and subfolders. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
root(callback, runLevel, holdQueueopt)
Changes the current directory to the root / restricted directory
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
run(command, callback, runLevelopt, holdQueueopt)
Run a raw ftp command and issue callback on success/error.
Functions created with this provide a sequential queue that is asynchronous, so items will be processed in the order they are received, but this will happen immediately. Meaning, if you make a dozen sequential calls of "ftp.run('MDTM', callback);" they will all be read immediately, queued in order, and then processed one after the other. Unless you set the optional parameter runLevel to true
Functions created with this provide a sequential queue that is asynchronous, so items will be processed in the order they are received, but this will happen immediately. Meaning, if you make a dozen sequential calls of "ftp.run('MDTM', callback);" they will all be read immediately, queued in order, and then processed one after the other. Unless you set the optional parameter runLevel to true
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
command |
string | The command that will be issued ie: "CWD foo" | ||
callback |
function | The callback function to be issued on success/error | ||
runLevel |
number |
<optional> |
0 | TL;DR see Queue.RunLevels FTP#run will invoke a queueing process, callbacks will be stacked to maintain synchronicity. How they stack will depend on the value you set for the runLevel |
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
runNext(command, callback, holdQueueopt)
Run a raw ftp command and issue callback on success/error.
Same as FTP#run except this command will be
will be prioritized to be the next to run in the queue.
- calls made with this provide a sequential queue
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
command |
string | The command that will be issued ie: "CWD foo" | ||
callback |
function | The callback function to be issued on success/error | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
runNow(command, callback, holdQueueopt)
Run a raw ftp command and issue callback on success/error.
Same as FTP#run except this command will be ran immediately (in parallel)
and will overrun any current queue action in place.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
command |
string | The command that will be issued ie: "CWD foo" | ||
callback |
function | The callback function to be issued on success/error | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
save(paths, callback)
Runs the FTP command RETR - Retrieve a remote file and
then saves the file locally
Parameters:
Name | Type | Description |
---|---|---|
paths |
string | array | An array of [from, to] paths,
as in read from "remote/location/foo.txt" and save
to "local/path/bar.txt" if you are saving to the same relative location you are reading from then you can supply a string as a shortcut. |
callback |
function | The callback function to be issued. |
setType(runLevel, holdQueueopt)
Sets the type of file transfer that should be used
based on the path provided
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
site(command, parameters, runLevel, holdQueueopt)
Runs the FTP command SITE - Run site specific command - will be added in next patch
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
command |
string | The command that will be issued | ||
parameters |
string | The parameters to be passed with the command | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
- Source:
- To Do:
-
- - This still needs to be added - should create an object of methods
size(filepath, callback)
Runs the FTP command SIZE - Get size of remote file
Parameters:
Name | Type | Description |
---|---|---|
filepath |
string | The location of the file to retrieve size from. |
callback |
function | The callback function to be issued. |
stat(callback, runLevel, holdQueueopt)
Runs the FTP command STAT - Return server status
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
type(type, secondType, runLevel, holdQueueopt)
Runs the FTP command TYPE - Set transfer type (default ASCII) - will be added in next patch
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
type |
string | set to this type: 'ascii', 'ebcdic', 'binary', 'local' | ||
secondType |
string | 'nonprint', 'telnet', 'asa' | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
unlink(filepath, callback, runLevel, holdQueueopt)
Runs the FTP command DELE - Delete remote file
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
filepath |
string | The location of the file to be deleted. | ||
callback |
function | The callback function to be issued. | ||
runLevel |
boolean | execution priority; @see FTP.Queue.RunLevels. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
user(username, callback, holdQueueopt)
Runs the FTP command USER - Send username.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
username |
string | The name of the user to log in. | ||
callback |
function | The callback function to be issued. | ||
holdQueue |
boolean |
<optional> |
false | Prevents the queue from firing an endproc event, user must end manually |
Events
fileTransferComplete
Fired when we receive a remote acknowledgement
of the files successful transfer
- Source:
queueEmpty
Fired when the primary queue is empty