Skip to content

Commit 25d5abc

Browse files
committed
implemented verbose, timeout and protocol settings
1 parent 3b7d386 commit 25d5abc

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

src/app-settings.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@ export class AppSettings {
3535
export interface Configuration {
3636
'version': string,
3737
'server': {
38-
'protocol': 'ftp',
38+
'protocol': 'ftp' | 'ftps',
3939
'host': string,
4040
'port': number,
4141
'user': string,
4242
'password': string,
43-
'pasvTimeout': number
43+
'timeout': number,
44+
'verbose': boolean
4445
},
4546
'backup': {
4647
'root': string,

src/config_sample.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
{
22
"version": "1.0.0",
33
"server": {
4-
"host": "example_host",
4+
"host": "example.com",
55
"user": "user",
66
"password": "password",
77
"port": 21,
8-
"protocol": "ftp"
8+
"protocol": "ftps",
9+
"timeout": 30,
10+
"verbose": false
911
},
1012
"backup": {
1113
"root": "/",

src/obj/backup-manager.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,7 @@ export class BackupManager {
1818
ConsoleOutput.error(error);
1919
});
2020

21-
this.ftpManager = new FtpManager(AppSettings.settings.backup.root, {
22-
host: AppSettings.settings.server.host,
23-
port: AppSettings.settings.server.port,
24-
user: AppSettings.settings.server.user,
25-
password: AppSettings.settings.server.password,
26-
pasvTimeout: AppSettings.settings.server.pasvTimeout
27-
});
21+
this.ftpManager = new FtpManager(AppSettings.settings.backup.root, AppSettings.settings);
2822

2923
this.ftpManager.afterManagerIsReady().then(() => {
3024
this.doBackup();

src/obj/ftp-manager.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as fs from 'fs';
55
import {Subject} from 'rxjs';
66
import {FtpEntry, FTPFolder} from './ftp-entry';
77
import {ConsoleOutput} from './ConsoleOutput';
8+
import {Configuration} from '../app-settings';
89
import moment = require('moment');
910

1011
export class FtpManager {
@@ -16,6 +17,8 @@ export class FtpManager {
1617
public error: Subject<string>;
1718
private connectionOptions: FTPConnectionOptions;
1819

20+
private protocol: 'ftp' | 'ftps' = 'ftps';
21+
1922
public statistics = {
2023
folders: 0,
2124
files: 0,
@@ -26,13 +29,18 @@ export class FtpManager {
2629

2730
private recursives = 0;
2831

29-
constructor(path: string, options: FTPConnectionOptions) {
30-
this._client = new ftp.Client();
31-
this._client.ftp.verbose = false;
32+
constructor(path: string, configuration: Configuration) {
33+
this._client = new ftp.Client(configuration.server.timeout * 1000);
34+
this._client.ftp.verbose = configuration.server.verbose;
3235
this.readyChange = new Subject<boolean>();
3336
this.error = new Subject<string>();
34-
this.connectionOptions = options;
35-
37+
this.connectionOptions = {
38+
host: configuration.server.host,
39+
port: configuration.server.port,
40+
user: configuration.server.user,
41+
password: configuration.server.password
42+
};
43+
this.protocol = configuration.server.protocol;
3644

3745
this.connect().then(() => {
3846
this.isReady = true;
@@ -45,11 +53,12 @@ export class FtpManager {
4553

4654
private async connect() {
4755
try {
56+
ConsoleOutput.info(`connect via ${this.protocol}...`);
4857
await this._client.access({
4958
host: this.connectionOptions.host,
5059
user: this.connectionOptions.user,
5160
password: this.connectionOptions.password,
52-
secure: true
61+
secure: (this.protocol === 'ftps')
5362
});
5463
return true;
5564
} catch (e) {
@@ -356,5 +365,4 @@ export interface FTPConnectionOptions {
356365
port: number;
357366
user: string;
358367
password: string;
359-
pasvTimeout: number;
360368
}

0 commit comments

Comments
 (0)