mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
feature(format) mv permissions
This commit is contained in:
parent
e023165f75
commit
1751bf8f14
4 changed files with 117 additions and 113 deletions
|
|
@ -435,8 +435,6 @@ var Util, DOM, CloudFunc;
|
|||
owner = DOM.getCurrentOwner(current);
|
||||
mode = DOM.getCurrentMode(current);
|
||||
|
||||
mode = CloudFunc.getNumericPermissions(mode);
|
||||
|
||||
if (name !== '..')
|
||||
files.push({
|
||||
name : name,
|
||||
|
|
|
|||
109
lib/cloudfunc.js
109
lib/cloudfunc.js
|
|
@ -188,111 +188,6 @@ var Util;
|
|||
return CloudFunc.NAME + ' - ' + (pPath || CloudFunc.Path);
|
||||
|
||||
};
|
||||
/**
|
||||
* Функция переводит права из цыфрового вида в символьный
|
||||
* @param pPerm_s - строка с правами доступа
|
||||
* к файлу в 8-миричной системе
|
||||
*/
|
||||
this.getSymbolicPermissions = function(pPerm_s) {
|
||||
var lType, lOwner, lGroup, lAll,
|
||||
perms = pPerm_s && pPerm_s.toString(),
|
||||
lPermissions = perms;
|
||||
/*
|
||||
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 (perms) {
|
||||
/* тип файла */
|
||||
lType = perms.toString().charAt(0);
|
||||
|
||||
switch (lType-0) {
|
||||
case 1: /* обычный файл */
|
||||
lType='-';
|
||||
break;
|
||||
case 2: /* байт-ориентированное (символьное) устройство*/
|
||||
lType='c';
|
||||
break;
|
||||
case 4: /* каталог */
|
||||
lType='d';
|
||||
break;
|
||||
default:
|
||||
lType='-';
|
||||
}
|
||||
|
||||
/* оставляем последние 3 символа*/
|
||||
perms = perms.length > 5 ? perms.substr(3) : perms.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).
|
||||
*/
|
||||
/* Переводим в двоичную систему */
|
||||
lOwner = (perms[0] - 0).toString(2),
|
||||
lGroup = (perms[1] - 0).toString(2),
|
||||
lAll = (perms[2] - 0).toString(2),
|
||||
|
||||
/* переводим в символьную систему*/
|
||||
lPermissions =
|
||||
(lOwner[0] - 0 > 0 ? 'r' : '-') +
|
||||
(lOwner[1] - 0 > 0 ? 'w' : '-') +
|
||||
(lOwner[2] - 0 > 0 ? 'x' : '-') +
|
||||
' ' +
|
||||
(lGroup[0] - 0 > 0 ? 'r' : '-') +
|
||||
(lGroup[1] - 0 > 0 ? 'w' : '-') +
|
||||
(lGroup[2] - 0 > 0 ? 'x' : '-') +
|
||||
' ' +
|
||||
(lAll[0]- 0 > 0 ? 'r' : '-') +
|
||||
(lAll[1]- 0 > 0 ? 'w' : '-') +
|
||||
(lAll[2]- 0 > 0 ? 'x' : '-');
|
||||
}
|
||||
|
||||
return lPermissions;
|
||||
};
|
||||
|
||||
/**
|
||||
* Функция конвертирует права доступа к файлам из символьного вида
|
||||
* в цыфровой
|
||||
*/
|
||||
this.getNumericPermissions = function(pPerm_s) {
|
||||
var owner, group, all,
|
||||
perms = pPerm_s,
|
||||
length = perms && perms.length === 11;
|
||||
|
||||
if (length) {
|
||||
owner = (pPerm_s[0] === 'r' ? 4 : 0) +
|
||||
(pPerm_s[1] === 'w' ? 2 : 0) +
|
||||
(pPerm_s[2] === 'x' ? 1 : 0),
|
||||
|
||||
group = (pPerm_s[4] === 'r' ? 4 : 0) +
|
||||
(pPerm_s[5] === 'w' ? 2 : 0) +
|
||||
(pPerm_s[6] === 'x' ? 1 : 0),
|
||||
|
||||
all = (pPerm_s[8] === 'r' ? 4 : 0) +
|
||||
(pPerm_s[9] === 'w' ? 2 : 0) +
|
||||
(pPerm_s[10] === 'x' ? 1 : 0);
|
||||
|
||||
/* добавляем 2 цифры до 5 */
|
||||
perms = '00' + owner + group + all;
|
||||
}
|
||||
|
||||
return perms;
|
||||
};
|
||||
|
||||
/** Функция получает адреса каждого каталога в пути
|
||||
* возвращаеться массив каталогов
|
||||
|
|
@ -416,7 +311,7 @@ var Util;
|
|||
name : linkResult,
|
||||
size : '<dir>',
|
||||
owner : '.',
|
||||
mode : CloudFunc.getSymbolicPermissions('.')
|
||||
mode : '--- --- ---'
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -436,7 +331,7 @@ var Util;
|
|||
}
|
||||
|
||||
owner = file.owner || 'root';
|
||||
mode = CloudFunc.getSymbolicPermissions(file.mode);
|
||||
mode = file.mode;
|
||||
|
||||
linkResult = Util.render(templateLink, {
|
||||
link : link,
|
||||
|
|
|
|||
|
|
@ -140,13 +140,11 @@
|
|||
size = isDir ? 'dir' : stat.size;
|
||||
}
|
||||
|
||||
size = format.size(size);
|
||||
|
||||
file = {
|
||||
'name' : name,
|
||||
'size' : size,
|
||||
'size' : format.size(size),
|
||||
'owner' : owner,
|
||||
'mode' : mode
|
||||
'mode' : format.permissions.symbolic(mode)
|
||||
};
|
||||
|
||||
files.push(file);
|
||||
|
|
|
|||
|
|
@ -42,4 +42,117 @@
|
|||
|
||||
return size;
|
||||
};
|
||||
|
||||
/**
|
||||
* Функция переводит права из цыфрового вида в символьный
|
||||
* @param perms - строка с правами доступа
|
||||
* к файлу в 8-миричной системе
|
||||
*/
|
||||
exports.permissions = {
|
||||
symbolic: function(perms) {
|
||||
var type, owner, group, all,
|
||||
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 (perms) {
|
||||
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(pPerm_s) {
|
||||
var owner, group, all,
|
||||
perms = pPerm_s,
|
||||
length = perms && perms.length === 11;
|
||||
|
||||
if (length) {
|
||||
owner = (pPerm_s[0] === 'r' ? 4 : 0) +
|
||||
(pPerm_s[1] === 'w' ? 2 : 0) +
|
||||
(pPerm_s[2] === 'x' ? 1 : 0),
|
||||
|
||||
group = (pPerm_s[4] === 'r' ? 4 : 0) +
|
||||
(pPerm_s[5] === 'w' ? 2 : 0) +
|
||||
(pPerm_s[6] === 'x' ? 1 : 0),
|
||||
|
||||
all = (pPerm_s[8] === 'r' ? 4 : 0) +
|
||||
(pPerm_s[9] === 'w' ? 2 : 0) +
|
||||
(pPerm_s[10] === 'x' ? 1 : 0);
|
||||
|
||||
/* добавляем 2 цифры до 5 */
|
||||
perms = '00' + owner + group + all;
|
||||
}
|
||||
|
||||
return perms;
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue