diff --git a/cloudcmd.js b/cloudcmd.js index 13f5f552..a5a90338 100644 --- a/cloudcmd.js +++ b/cloudcmd.js @@ -11,7 +11,6 @@ win = require(DIR_SERVER + 'win'), main = require(DIR_SERVER + 'main'), - format = require(DIR_SERVER + 'format'), mellow = require(DIR_SERVER + 'mellow'), ponse = require(DIR_SERVER + 'ponse'), files = require(DIR_SERVER + 'files'), @@ -22,6 +21,7 @@ Util = require(DIR_LIB + 'util'), CloudFunc = require(DIR_LIB + 'cloudfunc'), server = require(DIR_LIB + 'server'), + format = require(DIR_LIB + 'format'), Config = main.config, diff --git a/lib/format.js b/lib/format.js index 4b6c5983..44958d70 100644 --- a/lib/format.js +++ b/lib/format.js @@ -56,6 +56,7 @@ this.permissions = { symbolic: function(perms) { var type, owner, group, all, + is = typeof perms !== undefined, permsStr = '', permissions = ''; /* @@ -70,7 +71,7 @@ S_IXOTH 0000001 executable by all */ - if (perms) { + if (is) { permsStr = perms.toString(); /* тип файла */ type = permsStr.charAt(0); diff --git a/lib/server/format.js b/lib/server/format.js deleted file mode 100644 index 44958d70..00000000 --- a/lib/server/format.js +++ /dev/null @@ -1,165 +0,0 @@ -(function(scope) { - 'use strict'; - - var Scope = scope.window ? window : global; - - if (typeof module === 'object' && module.exports) - module.exports = new FormatProto(); - else - Scope.Format = new FormatProto(); - - function FormatProto() { - this.addSlashToEnd = function(path) { - var length, isSlash; - - if (path) { - length = path.length - 1; - isSlash = path[length] === '/'; - - if (!isSlash) - path += '/'; - } - - return path; - }; - - /** Функция получает короткие размеры - * конвертируя байт в килобайты, мегабойты, - * гигайбайты и терабайты - * @pSize - размер в байтах - */ - this.size = function(size) { - var isNumber = typeof size === 'number', - l1KB = 1024, - l1MB = l1KB * l1KB, - l1GB = l1MB * l1KB, - l1TB = l1GB * l1KB, - l1PB = l1TB * l1KB; - - if (isNumber) { - if (size < l1KB) size = size + 'b'; - else if (size < l1MB) size = (size/l1KB).toFixed(2) + 'kb'; - else if (size < l1GB) size = (size/l1MB).toFixed(2) + 'mb'; - else if (size < l1TB) size = (size/l1GB).toFixed(2) + 'gb'; - else if (size < l1PB) size = (size/l1TB).toFixed(2) + 'tb'; - else size = (size/l1PB).toFixed(2) + 'pb'; - } - - return size; - }; - - /** - * Функция переводит права из цыфрового вида в символьный - * @param perms - строка с правами доступа - * к файлу в 8-миричной системе - */ - this.permissions = { - symbolic: function(perms) { - var type, owner, group, all, - is = typeof perms !== undefined, - permsStr = '', - permissions = ''; - /* - S_IRUSR 0000400 protection: readable by owner - S_IWUSR 0000200 writable by owner - S_IXUSR 0000100 executable by owner - S_IRGRP 0000040 readable by group - S_IWGRP 0000020 writable by group - S_IXGRP 0000010 executable by group - S_IROTH 0000004 readable by all - S_IWOTH 0000002 writable by all - S_IXOTH 0000001 executable by all - */ - - if (is) { - permsStr = perms.toString(); - /* тип файла */ - type = permsStr.charAt(0); - - switch (type - 0) { - case 1: /* обычный файл */ - type='-'; - break; - case 2: /* байт-ориентированное (символьное) устройство*/ - type='c'; - break; - case 4: /* каталог */ - type='d'; - break; - default: - type='-'; - } - - /* оставляем последние 3 символа*/ - if (permsStr.length > 5) - permsStr = permsStr.substr(3); - else - permsStr = permsStr.substr(2); - - /* Рекомендации гугла советуют вместо string[3] - * использовать string.charAt(3) - */ - /* - http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Standards_features#Standards_features - - Always preferred over non-standards featuresFor - maximum portability and compatibility, always - prefer standards features over non-standards - features (e.g., string.charAt(3) over string[3] - and element access with DOM functions instead - of using an application-specific shorthand). - */ - /* Переводим в двоичную систему */ - owner = (permsStr[0] - 0).toString(2), - group = (permsStr[1] - 0).toString(2), - all = (permsStr[2] - 0).toString(2), - - /* переводим в символьную систему*/ - permissions = - (owner[0] - 0 > 0 ? 'r' : '-') + - (owner[1] - 0 > 0 ? 'w' : '-') + - (owner[2] - 0 > 0 ? 'x' : '-') + - ' ' + - (group[0] - 0 > 0 ? 'r' : '-') + - (group[1] - 0 > 0 ? 'w' : '-') + - (group[2] - 0 > 0 ? 'x' : '-') + - ' ' + - (all[0]- 0 > 0 ? 'r' : '-') + - (all[1]- 0 > 0 ? 'w' : '-') + - (all[2]- 0 > 0 ? 'x' : '-'); - } - - return permissions; - }, - - /** - * Функция конвертирует права доступа к файлам из символьного вида - * в цыфровой - */ - numeric: function(perms) { - var owner, group, all, - length = perms && perms.length === 11; - - if (length) { - owner = (perms[0] === 'r' ? 4 : 0) + - (perms[1] === 'w' ? 2 : 0) + - (perms[2] === 'x' ? 1 : 0), - - group = (perms[4] === 'r' ? 4 : 0) + - (perms[5] === 'w' ? 2 : 0) + - (perms[6] === 'x' ? 1 : 0), - - all = (perms[8] === 'r' ? 4 : 0) + - (perms[9] === 'w' ? 2 : 0) + - (perms[10] === 'x' ? 1 : 0); - - /* добавляем 2 цифры до 5 */ - perms = '00' + owner + group + all; - } - - return perms; - } - }; - } - -})(this); diff --git a/lib/server/rest.js b/lib/server/rest.js index 6b1285fd..f5a3368e 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -26,6 +26,7 @@ Util = require(DIR_LIB + 'util'), CloudFunc = require(DIR_LIB + 'cloudfunc'), + format = require(DIR_LIB + 'format'), onFSGet = main.srvrequire('rest/fs/get').onGet, onFSPut = main.srvrequire('rest/fs/put').onPut, @@ -35,7 +36,6 @@ flop = require(DIR + 'flop'), pack = require(DIR + 'pack'), mellow = require(DIR + 'mellow'), - format = require(DIR + 'format'), ponse = require(DIR + 'ponse'), pipe = require(DIR + 'pipe'),