File indexing completed on 2024-04-28 17:06:00
0001 /* 0002 SPDX-FileCopyrightText: 2000 Shie Erlich <krusader@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2000 Rafi Yanai <krusader@users.sourceforge.net> 0004 SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef KRPERMHANDLER_H 0010 #define KRPERMHANDLER_H 0011 0012 // QtCore 0013 #include <QHash> 0014 #include <QSet> 0015 #include <QString> 0016 0017 #include <KIO/Global> 0018 0019 #include <stdlib.h> 0020 #include <sys/types.h> 0021 #include <time.h> 0022 #include <unistd.h> 0023 0024 #define NO_PERM 0 0025 #define UNKNOWN_PERM 1 0026 #define ALLOWED_PERM 2 0027 0028 class KrPermHandler 0029 { 0030 public: 0031 static void init(); 0032 0033 static QString gid2group(gid_t groupId); 0034 static QString uid2user(uid_t userId); 0035 0036 static char writeable(const QString &perm, gid_t gid, uid_t uid); 0037 static char readable(const QString &perm, gid_t gid, uid_t uid); 0038 static char executable(const QString &perm, gid_t gid, uid_t uid); 0039 0040 static char ftpWriteable(const QString &fileOwner, const QString &userName, const QString &perm); 0041 static char ftpReadable(const QString &fileOwner, const QString &userName, const QString &perm); 0042 static char ftpExecutable(const QString &fileOwner, const QString &userName, const QString &perm); 0043 0044 static QString mode2QString(mode_t m); 0045 static QString parseSize(KIO::filesize_t val); 0046 0047 private: 0048 KrPermHandler() 0049 { 0050 } 0051 static char getLocalPermission(const QString &perm, gid_t gid, uid_t uid, int permOffset, bool ignoreRoot = false); 0052 static char getFtpPermission(const QString &fileOwner, const QString &userName, const QString &perm, int permOffset); 0053 0054 static QSet<int> currentGroups; 0055 static QHash<int, QString> uidCache; 0056 static QHash<int, QString> gidCache; 0057 }; 0058 0059 #endif