53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const ftp = require('basic-ftp');
|
|
|
|
// const fs = require('fs');
|
|
|
|
class FTPClient {
|
|
constructor(host = 'localhost', port = 21, username = 'anonymous', password = 'guest', secure = false, secureOptions = '') {
|
|
this.client = new ftp.Client();
|
|
// this.client.ftp.verbose = true;
|
|
this.settings = {
|
|
host: host,
|
|
port: port,
|
|
user: username,
|
|
password: password,
|
|
secure: secure,
|
|
secureOptions: secureOptions
|
|
};
|
|
}
|
|
|
|
async upload(sourcePath, remotePath, permissions) {
|
|
let self = this;
|
|
try {
|
|
let access = await self.client.access(self.settings);
|
|
let upload = await self.client.uploadFrom(sourcePath, remotePath);
|
|
// let permissions = await self.changePermissions(permissions.toString(), remotePath);
|
|
self.client.close();
|
|
return true;
|
|
} catch (err) {
|
|
console.log('upload ERR: ', err);
|
|
self.client.close();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
async createDir(miadir) {
|
|
let access = await this.client.access(this.settings);
|
|
await this.client.ensureDir(miadir);
|
|
}
|
|
|
|
close() {
|
|
this.client.close();
|
|
}
|
|
|
|
changePermissions(perms, filepath) {
|
|
let cmd = 'SITE CHMOD ' + perms + ' ' + filepath;
|
|
return this.client.send(cmd, false);
|
|
}
|
|
}
|
|
|
|
|
|
module.exports = FTPClient;
|