UNPKG

@icetee/ftp

Version:

An FTP client module for node.js

924 lines (917 loc) 22.9 kB
const cYear = (new Date()).getFullYear(); const timezoneDiff = date => ((-new Date(date).getTimezoneOffset() / 60) * 3600000); const resolveDate = (date, isUTC = false) => { const d = new Date(date); let currentYear = (new Date()).getFullYear(); if (d - 0 > new Date() - 0) { currentYear--; d.setFullYear(currentYear); } if (isUTC) return d; return new Date(d - timezoneDiff(date)); }; const entires = [ { source: 'drwxr-xr-x 10 root root 4096 Dec 21 2012 usr', expected: { type: 'd', name: 'usr', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rx', other: 'rx', }, acl: false, owner: 'root', group: 'root', size: 4096, pointer: undefined, date: resolveDate('2012-12-21T00:00:00.000Z', true), }, what: 'Normal directory', }, { source: 'drwxrwxrwx 1 owner group 0 Aug 31 2012 e-books', expected: { type: 'd', name: 'e-books', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rwx', }, acl: false, owner: 'owner', group: 'group', size: 0, pointer: undefined, date: resolveDate('2012-08-31T00:00:00.000Z', true), }, what: 'Normal directory #2', }, { source: '-rw-rw-rw- 1 owner group 7045120 Sep 02 2012 music.mp3', expected: { type: '-', name: 'music.mp3', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: 'rw', }, acl: false, owner: 'owner', group: 'group', size: 7045120, pointer: undefined, date: resolveDate('2012-09-02T00:00:00.000Z', true), }, what: 'Normal file', }, { source: '-rw-rw-rw- 1 1234 group 7045120 Sep 02 2012 music.mp3', expected: { type: '-', name: 'music.mp3', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: 'rw', }, acl: false, owner: '1234', group: 'group', size: 7045120, pointer: undefined, date: resolveDate('2012-09-02T00:00:00.000Z', true), }, what: 'File with number id owner', }, { source: '-rw-rw-rw- 1 owner 1234 7045120 Sep 02 2012 music.mp3', expected: { type: '-', name: 'music.mp3', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: 'rw', }, acl: false, owner: 'owner', group: '1234', size: 7045120, pointer: undefined, date: resolveDate('2012-09-02T00:00:00.000Z', true), }, what: 'File with number id group', }, { source: '-rwxrwxr-x 1 1317 Domain Use 3065 May 4 11:01 xmlrpc.php', expected: { type: '-', name: 'xmlrpc.php', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rx', }, acl: false, owner: '1317', group: 'Domain Use', size: 3065, pointer: undefined, date: resolveDate(`${cYear}-05-04T11:01:00.000Z`), }, what: 'File with space in group name', }, { source: '-rwxrwxr-x 1 1317 Domain Use 3065 May 4 11:01 xmlrpc.php', expected: { type: '-', name: 'xmlrpc.php', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rx', }, acl: false, owner: '1317', group: 'Domain Use', size: 3065, pointer: undefined, date: resolveDate(`${cYear}-05-04T11:01:00.000Z`), }, what: 'File with double space in group name', }, { source: '-rwxrwxr-x 1 Domain Use 33 3065 May 4 11:01 xmlrpc.php', expected: { type: '-', name: 'xmlrpc.php', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rx', }, acl: false, owner: 'Domain Use', group: '33', size: 3065, pointer: undefined, date: resolveDate(`${cYear}-05-04T11:01:00.000Z`), }, what: 'File with space in owner name', }, { source: '-rwxrwxr-x 1 Domain Use 33 3065 May 4 11:01 xmlrpc.php', expected: { type: '-', name: 'xmlrpc.php', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rx', }, acl: false, owner: 'Domain Use', group: '33', size: 3065, pointer: undefined, date: resolveDate(`${cYear}-05-04T11:01:00.000Z`), }, what: 'File with double space in owner name', }, { source: '-rwxrwxr-x 1 Domain Use Domain Use 3065 May 4 11:01 xmlrpc.php', expected: { type: '-', name: 'xmlrpc.php', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rx', }, acl: false, owner: 'Domain Use', group: 'Domain Use', size: 3065, pointer: undefined, date: resolveDate(`${cYear}-05-04T11:01:00.000Z`), }, what: 'File with space in owner name and group name', }, { source: '-rw------- 1 33 www-data 14 May 15 01:52 .ftpquota', expected: { type: '-', name: '.ftpquota', target: undefined, sticky: false, rights: { user: 'rw', group: '', other: '', }, acl: false, owner: '33', group: 'www-data', size: 14, pointer: undefined, date: resolveDate(`${cYear}-05-15T01:52:00.000Z`), }, what: 'File with number owner and hyphen groupname', }, { source: '-rw------- 1 www-data 33 14 May 15 01:52 .ftpquota', expected: { type: '-', name: '.ftpquota', target: undefined, sticky: false, rights: { user: 'rw', group: '', other: '', }, acl: false, owner: 'www-data', group: '33', size: 14, pointer: undefined, date: resolveDate(`${cYear}-05-15T01:52:00.000Z`), }, what: 'File with hyphen owner and number groupname', }, { source: '-rw-rw-rw-+ 1 owner group 7045120 Sep 02 2012 music.mp3', expected: { type: '-', name: 'music.mp3', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: 'rw', }, acl: true, owner: 'owner', group: 'group', size: 7045120, pointer: undefined, date: resolveDate('2012-09-02T00:00:00.000Z', true), }, what: 'File with ACL set', }, { source: 'drwxrwxrwt 7 root root 4096 May 19 2012 tmp', expected: { type: 'd', name: 'tmp', target: undefined, sticky: true, rights: { user: 'rwx', group: 'rwx', other: 'rwx', }, acl: false, owner: 'root', group: 'root', size: 4096, pointer: undefined, date: resolveDate('2012-05-19T00:00:00.000Z', true), }, what: 'Directory with sticky bit and executable for others', }, { source: 'drwxrwx--t 7 root root 4096 May 19 2012 tmp', expected: { type: 'd', name: 'tmp', target: undefined, sticky: true, rights: { user: 'rwx', group: 'rwx', other: 'x', }, acl: false, owner: 'root', group: 'root', size: 4096, pointer: undefined, date: resolveDate('2012-05-19T00:00:00.000Z', true), }, what: 'Directory with sticky bit and executable for others #2', }, { source: 'drwxrwxrwT 7 root root 4096 May 19 2012 tmp', expected: { type: 'd', name: 'tmp', target: undefined, sticky: true, rights: { user: 'rwx', group: 'rwx', other: 'rw', }, acl: false, owner: 'root', group: 'root', size: 4096, pointer: undefined, date: resolveDate('2012-05-19T00:00:00.000Z', true), }, what: 'Directory with sticky bit and not executable for others', }, { source: 'drwxrwx--T 7 root root 4096 May 19 2012 tmp', expected: { type: 'd', name: 'tmp', target: undefined, sticky: true, rights: { user: 'rwx', group: 'rwx', other: '', }, acl: false, owner: 'root', group: 'root', size: 4096, pointer: undefined, date: resolveDate('2012-05-19T00:00:00.000Z', true), }, what: 'Directory with sticky bit and not executable for others #2', }, { source: 'drwxrwxr-x 7 1317 Domain Use 208 May 5 11:28 wp-content', expected: { type: 'd', name: 'wp-content', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rx', }, acl: false, owner: '1317', group: 'Domain Use', size: 208, pointer: undefined, date: resolveDate(`${cYear}-05-05T11:28:00.000Z`), }, what: 'Directory with space in group name', }, { source: 'drwxrwxr-x 7 1317 Domain Use 208 May 5 11:28 wp-content', expected: { type: 'd', name: 'wp-content', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rx', }, acl: false, owner: '1317', group: 'Domain Use', size: 208, pointer: undefined, date: resolveDate(`${cYear}-05-05T11:28:00.000Z`), }, what: 'Directory with double space in group name', }, { source: 'drwxrwxr-x 7 Domain Use Domain Use 208 May 5 11:28 wp-content', expected: { type: 'd', name: 'wp-content', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rx', }, acl: false, owner: 'Domain Use', group: 'Domain Use', size: 208, pointer: undefined, date: resolveDate(`${cYear}-05-05T11:28:00.000Z`), }, what: 'Directory with space in group name and owner name', }, { source: 'drwxr-S--- 3 105207 501 18 Jul 04 2017 .pki', expected: { type: 'd', name: '.pki', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rS', other: '', }, acl: false, owner: '105207', group: '501', size: 18, pointer: undefined, date: resolveDate('2017-07-04T00:00:00.000Z', true), }, what: 'Directory with undefined bit-state', }, { source: 'drwxr-s--- 3 105207 501 18 Jul 04 2017 .pki', expected: { type: 'd', name: '.pki', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rs', other: '', }, acl: false, owner: '105207', group: '501', size: 18, pointer: undefined, date: resolveDate('2017-07-04T00:00:00.000Z', true), }, what: 'Directory with set the set-user-ID or set-group-ID bit', }, { source: 'drwx--L--- 3 105207 501 18 Jul 04 2017 .pki', expected: { type: 'd', name: '.pki', target: undefined, sticky: false, rights: { user: 'rwx', group: 'L', other: '', }, acl: false, owner: '105207', group: '501', size: 18, pointer: undefined, date: resolveDate('2017-07-04T00:00:00.000Z', true), }, what: 'Directory with mandatory lock', }, { source: 'brwx-w---- 3 105207 501 18 Jul 04 2017 .pki', expected: { type: 'b', name: '.pki', target: undefined, sticky: false, rights: { user: 'rwx', group: 'w', other: '', }, acl: false, owner: '105207', group: '501', size: 18, pointer: undefined, date: resolveDate('2017-07-04T00:00:00.000Z', true), }, what: 'Directory with block device simple', }, { source: 'brw-rw---- 1 root disk 8, 0 Nov 24 10:13 sda', expected: { type: 'b', name: 'sda', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: '', }, acl: false, owner: 'root', group: 'disk', size: 0, pointer: '8,0', date: resolveDate(`${cYear}-11-24T10:13:00.000Z`), }, what: 'Directory with block device', }, { source: 'crw-rw---- 1 root tty 0 Apr 1 20:30 vcs', expected: { type: 'c', name: 'vcs', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: '', }, acl: false, owner: 'root', group: 'tty', size: 0, pointer: undefined, date: resolveDate(`${cYear}-04-01T20:30:00.000Z`), }, what: 'Directory with character device without pointer', }, { source: 'crw-rw---- 1 root tty 7, 134 Apr 1 20:30 vcsa6', expected: { type: 'c', name: 'vcsa6', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: '', }, acl: false, owner: 'root', group: 'tty', size: 0, pointer: '7,134', date: resolveDate(`${cYear}-04-01T20:30:00.000Z`), }, what: 'Directory with character device with pointer', }, { source: 'crw-rw---- 1 root tty 7, 0 Apr 1 20:30 vcs', expected: { type: 'c', name: 'vcs', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: '', }, acl: false, owner: 'root', group: 'tty', size: 0, pointer: '7,0', date: resolveDate(`${cYear}-04-01T20:30:00.000Z`), }, what: 'Directory with character device', }, { source: 'prwx-w---- 3 105207 501 18 Jul 04 2017 .pki', expected: { type: 'p', name: '.pki', target: undefined, sticky: false, rights: { user: 'rwx', group: 'w', other: '', }, acl: false, owner: '105207', group: '501', size: 18, pointer: undefined, date: resolveDate('2017-07-04T00:00:00.000Z', true), }, what: 'Directory with named pipe', }, { source: 'srwx-w---- 3 105207 501 18 Jul 04 2017 .pki', expected: { type: 's', name: '.pki', target: undefined, sticky: false, rights: { user: 'rwx', group: 'w', other: '', }, acl: false, owner: '105207', group: '501', size: 18, pointer: undefined, date: resolveDate('2017-07-04T00:00:00.000Z', true), }, what: 'Directory with socket', }, { source: 'lrwxrwxrwx 1 root root 51 Apr 4 23:57 www.nodeftp.github -> /etc/nginx/sites-available/www.nodeftp.github', expected: { type: 'l', name: 'www.nodeftp.github', target: '/etc/nginx/sites-available/www.nodeftp.github', sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rwx', }, acl: false, owner: 'root', group: 'root', size: 51, pointer: undefined, date: resolveDate(`${cYear}-04-04T23:57:00.000Z`), }, what: 'Directory with symlink', }, // { // source: 'drwxr-xr-x 2 oinstall 4096 Jul 25 14:33 log', // expected: { // type: 'd', // name: 'usr', // target: undefined, // sticky: false, // rights: { // user: 'rwx', // group: 'rx', // other: 'rx', // }, // acl: false, // owner: 'oinstall', // group: 'root', // size: 4096, // date: resolveDate('2012-12-21T00:00:00.000Z', true), // }, // what: 'Directory without group', // }, { source: '-rw-rw-rw-@ 1 owner group 7045120 Sep 02 2012 music.mp3', expected: { type: '-', name: 'music.mp3', target: undefined, sticky: false, rights: { user: 'rw', group: 'rw', other: 'rw', }, acl: false, owner: 'owner', group: 'group', size: 7045120, pointer: undefined, date: resolveDate('2012-09-02T00:00:00.000Z', true), }, what: 'MacOS @ symbol file', }, { source: 'drwxr-xr-x 10 root root 4096 Dec 21 2012 1.1 Header [13]', expected: { type: 'd', name: '1.1 Header [13]', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rx', other: 'rx', }, acl: false, owner: 'root', group: 'root', size: 4096, pointer: undefined, date: resolveDate('2012-12-21T00:00:00.000Z', true), }, what: 'Directory with special name #2', }, { source: '08-22-18 02:05PM <DIR> Test', expected: { type: 'd', name: 'Test', size: 0, date: resolveDate('2018-08-22T14:05:00.000Z'), }, what: 'MSDOS Normal directory #1', }, { source: '08-22-18 02:05PM <DIR> Name []', expected: { type: 'd', name: 'Name []', size: 0, date: resolveDate('2018-08-22T14:05:00.000Z'), }, what: 'MSDOS Normal directory #2', }, { source: '08-22-18 02:05PM <DIR> 12', expected: { type: 'd', name: '12', size: 0, date: resolveDate('2018-08-22T14:05:00.000Z'), }, what: 'MSDOS Normal directory with 2 digit character in filename', }, { source: '08-22-18 02:05PM <DIR> 2015', expected: { type: 'd', name: '2015', size: 0, date: resolveDate('2018-08-22T14:05:00.000Z'), }, what: 'MSDOS Normal directory with 4 digit character in filename', }, { source: '08-22-18 02:05PM <DIR> 1.1 Header [13]', expected: { type: 'd', name: '1.1 Header [13]', size: 0, date: resolveDate('2018-08-22T14:05:00.000Z'), }, what: 'MSDOS Normal directory #3', }, { source: '08-22-2018 02:05PM <DIR> wwwroot', expected: { type: 'd', name: 'wwwroot', size: 0, date: resolveDate('2018-08-22T14:05:00.000Z'), }, what: 'MSDOS Normal directory with 4 four-digit years', }, { source: '07-10-13 06:54AM <DIR> 1400', expected: { type: 'd', name: '1400', size: 0, date: resolveDate('2013-07-10T06:54:00.000Z'), }, what: 'MSDOS Normal directory without tab', }, { source: '08-22-18 12:59PM 99710 iisstart.png', expected: { type: '-', name: 'iisstart.png', size: 99710, date: resolveDate('2018-08-22T12:59:00.000Z'), }, what: 'MSDOS Normal file #1', }, { source: '08-22-18 12:59PM 990 2015', expected: { type: '-', name: '2015', size: 990, date: resolveDate('2018-08-22T12:59:00.000Z'), }, what: 'MSDOS Normal file #2', }, { source: '08-22-18 12:59PM 2015 2015', expected: { type: '-', name: '2015', size: 2015, date: resolveDate('2018-08-22T12:59:00.000Z'), }, what: 'MSDOS Normal file #3', }, { source: 'drwxrwxrwx 1 owner group 0 Aug 22 14:05 wwwroot', expected: { type: 'd', name: 'wwwroot', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rwx', }, acl: false, owner: 'owner', group: 'group', size: 0, pointer: undefined, date: resolveDate(`${cYear}-08-22T14:05:00.000Z`), }, what: 'Windows with UNIX style directory #1', }, { source: 'drwxrwxrwx 1 owner group 0 Aug 22 14:05 Name []', expected: { type: 'd', name: 'Name []', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rwx', }, acl: false, owner: 'owner', group: 'group', size: 0, pointer: undefined, date: resolveDate(`${cYear}-08-22T14:05:00.000Z`), }, what: 'Windows with UNIX style directory #2', }, { source: '-rwxrwxrwx 1 owner group 99710 Aug 22 12:59 iisstart.png', expected: { type: '-', name: 'iisstart.png', target: undefined, sticky: false, rights: { user: 'rwx', group: 'rwx', other: 'rwx', }, acl: false, owner: 'owner', group: 'group', size: 99710, pointer: undefined, date: resolveDate(`${cYear}-08-22T12:59:00.000Z`), }, what: 'Windows with UNIX style file #1', }, { source: '-rw-r--r-- 1 300794 AD\\Domain Users 6148 Sep 19 06:17 .DS_Store', expected: { type: '-', name: '.DS_Store', target: undefined, sticky: false, rights: { user: 'rw', group: 'r', other: 'r', }, acl: false, owner: '300794', group: 'AD\\Domain Users', size: 6148, pointer: undefined, date: resolveDate(`${cYear}-09-19T06:17:00.000Z`), }, what: 'Windows Active Directory double slash in groupname', }, { source: 'total 871', expected: null, what: 'Ignored line', }, ]; module.exports = entires;