Show permissions in properties
This commit is contained in:
+1
-1
@@ -2,7 +2,7 @@
|
||||
set -eu
|
||||
|
||||
PLUGIN="u-navigator"
|
||||
VERSION="2026.06.23.r012"
|
||||
VERSION="2026.06.23.r013"
|
||||
PKG_DIR="packages"
|
||||
WORK_DIR=".plugin-build"
|
||||
PKG_NAME="${PLUGIN}-${VERSION}.tgz"
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -13,12 +13,20 @@ foreach (scandir($resolved['path']) ?: [] as $name) {
|
||||
}
|
||||
$full = $resolved['path'] . '/' . $name;
|
||||
$type = is_link($full) ? 'symlink' : (is_dir($full) ? 'directory' : (is_file($full) ? 'file' : 'other'));
|
||||
$ownerId = fileowner($full);
|
||||
$groupId = filegroup($full);
|
||||
$perms = fileperms($full);
|
||||
$entries[] = [
|
||||
'name' => $name,
|
||||
'path' => $full,
|
||||
'type' => $type,
|
||||
'size' => is_file($full) ? filesize($full) : 0,
|
||||
'modifiedAt' => date(DATE_ATOM, filemtime($full) ?: time()),
|
||||
'owner' => unav_owner_name($ownerId),
|
||||
'ownerId' => $ownerId,
|
||||
'group' => unav_group_name($groupId),
|
||||
'groupId' => $groupId,
|
||||
'permissions' => $perms === false ? null : substr(sprintf('%o', $perms), -4),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -32,3 +40,29 @@ unav_json([
|
||||
'path' => $resolved['path'],
|
||||
'entries' => $entries,
|
||||
]);
|
||||
|
||||
function unav_owner_name($uid): ?string {
|
||||
if ($uid === false) {
|
||||
return null;
|
||||
}
|
||||
if (function_exists('posix_getpwuid')) {
|
||||
$info = posix_getpwuid($uid);
|
||||
if (is_array($info) && isset($info['name'])) {
|
||||
return $info['name'];
|
||||
}
|
||||
}
|
||||
return (string)$uid;
|
||||
}
|
||||
|
||||
function unav_group_name($gid): ?string {
|
||||
if ($gid === false) {
|
||||
return null;
|
||||
}
|
||||
if (function_exists('posix_getgrgid')) {
|
||||
$info = posix_getgrgid($gid);
|
||||
if (is_array($info) && isset($info['name'])) {
|
||||
return $info['name'];
|
||||
}
|
||||
}
|
||||
return (string)$gid;
|
||||
}
|
||||
|
||||
+11
-1
@@ -72,7 +72,7 @@ function openExplorer(initialPath = state.config?.roots?.[0]?.path) {
|
||||
path: initialPath,
|
||||
entries: [],
|
||||
selectedPath: null,
|
||||
view: 'list',
|
||||
view: 'icons',
|
||||
loading: false,
|
||||
error: null
|
||||
}
|
||||
@@ -347,6 +347,9 @@ function renderProperties(body) {
|
||||
<dt>Pfad</dt><dd>${escapeHtml(entry.path)}</dd>
|
||||
<dt>Größe</dt><dd>${formatBytes(entry.size)}</dd>
|
||||
<dt>Geändert</dt><dd>${new Date(entry.modifiedAt).toLocaleString()}</dd>
|
||||
<dt>Besitzer</dt><dd>${escapeHtml(formatPrincipal(entry.owner, entry.ownerId))}</dd>
|
||||
<dt>Gruppe</dt><dd>${escapeHtml(formatPrincipal(entry.group, entry.groupId))}</dd>
|
||||
<dt>Rechte</dt><dd>${escapeHtml(entry.permissions ? `0${entry.permissions}`.slice(-4) : '-')}</dd>
|
||||
</dl>
|
||||
`;
|
||||
}
|
||||
@@ -958,6 +961,13 @@ function formatBytes(bytes) {
|
||||
return `${(value / 1024 / 1024 / 1024).toFixed(1)} GB`;
|
||||
}
|
||||
|
||||
function formatPrincipal(name, id) {
|
||||
if (name == null && id == null) return '-';
|
||||
if (name == null || String(name) === String(id)) return String(id);
|
||||
if (id == null) return String(name);
|
||||
return `${name} (${id})`;
|
||||
}
|
||||
|
||||
function escapeHtml(value) {
|
||||
return String(value ?? '').replace(/[&<>"']/g, (char) => ({
|
||||
'&': '&',
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE PLUGIN [
|
||||
<!ENTITY name "u-navigator">
|
||||
<!ENTITY author "michael">
|
||||
<!ENTITY version "2026.06.23.r012">
|
||||
<!ENTITY version "2026.06.23.r013">
|
||||
<!ENTITY package "&name;-&version;.tgz">
|
||||
]>
|
||||
<PLUGIN name="&name;" author="&author;" version="&version;" pluginURL="https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/u-navigator.plg">
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
<FILE Name="/boot/config/plugins/&name;/&package;">
|
||||
<URL>https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package;</URL>
|
||||
<MD5>3ab1180514677a7270013846b08706b0</MD5>
|
||||
<MD5>b72f22b37e34b4bdfd93a57c138af2d0</MD5>
|
||||
</FILE>
|
||||
|
||||
<FILE Run="/bin/bash">
|
||||
|
||||
Reference in New Issue
Block a user