File indexing completed on 2024-04-28 16:52:17

0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 // SPDX-FileCopyrightText: 2011 Craig Drummond <craig.p.drummond@gmail.com>
0003 // SPDX-FileCopyrightText: 2018 Alexis Lopes Zubeta <contact@azubieta.net>
0004 // SPDX-FileCopyrightText: 2020 Tomaz Canabrava <tcanabrava@kde.org>
0005 /*
0006  * UFW KControl Module
0007  */
0008 
0009 #include "types.h"
0010 #include <KLocalizedString>
0011 #include <QVariantMap>
0012 
0013 namespace Types
0014 {
0015 QString toString(LogLevel level, bool ui)
0016 {
0017     switch (level) {
0018     case LOG_OFF:
0019         return ui ? i18n("Off") : "off";
0020     default:
0021     case LOG_LOW:
0022         return ui ? i18n("Low") : "low";
0023     case LOG_MEDIUM:
0024         return ui ? i18n("Medium") : "medium";
0025     case LOG_HIGH:
0026         return ui ? i18n("High") : "high";
0027     case LOG_FULL:
0028         return ui ? i18n("Full") : "full";
0029     }
0030 }
0031 
0032 LogLevel toLogLevel(const QString &str)
0033 {
0034     for (int i = 0; i < LOG_COUNT; ++i)
0035         if (toString((LogLevel)i) == str)
0036             return (LogLevel)i;
0037     return LOG_LOW;
0038 }
0039 
0040 extern QString toString(Logging log, bool ui)
0041 {
0042     switch (log) {
0043     default:
0044     case LOGGING_OFF:
0045         return ui ? i18n("None") : QString();
0046     case LOGGING_NEW:
0047         return ui ? i18n("New connections") : "log";
0048     case LOGGING_ALL:
0049         return ui ? i18n("All packets") : "log-all";
0050     }
0051 }
0052 
0053 QString toString(Policy policy, bool ui)
0054 {
0055     switch (policy) {
0056     default:
0057     case POLICY_ALLOW:
0058         return ui ? i18n("Allow") : "allow";
0059     case POLICY_DENY:
0060         return ui ? i18n("Deny") : "deny";
0061     case POLICY_REJECT:
0062         return ui ? i18n("Reject") : "reject";
0063     case POLICY_LIMIT:
0064         return ui ? i18n("Limit") : "limit";
0065     }
0066 }
0067 
0068 Policy toPolicy(const QString &str)
0069 {
0070     for (int i = 0; i < POLICY_COUNT; ++i)
0071         if (toString((Policy)i) == str)
0072             return (Policy)i;
0073     return POLICY_ALLOW;
0074 }
0075 
0076 QString toString(PredefinedPort pp, bool ui)
0077 {
0078     switch (pp) {
0079     case PP_AMULE:
0080         return ui ? i18n("Amule") : "4662/tcp 4672/udp";
0081     case PP_DELUGE:
0082         return ui ? i18n("Deluge") : "6881:6891/tcp";
0083     case PP_KTORRENT:
0084         return ui ? i18n("KTorrent") : "6881/tcp 4444/udp";
0085     case PP_NICOTINE:
0086         return ui ? i18n("Nicotine") : "2234:2239/tcp 2242/tcp";
0087     case PP_QBITTORRNET:
0088         return ui ? i18n("qBittorrent") : "6881/tcp";
0089     case PP_TRANSMISSION:
0090         return ui ? i18n("Transmission") : "51413";
0091     case PP_IM_ICQ:
0092         return ui ? i18n("ICQ") : "5190";
0093     case PP_IM_JABBER:
0094         return ui ? i18n("Jabber") : "5222";
0095     case PP_IM_WLM:
0096         return ui ? i18n("Windows Live Messenger") : "1863";
0097     case PP_IM_YAHOO:
0098         return ui ? i18n("Yahoo! Messenger") : "5050";
0099     case PP_FTP:
0100         return ui ? i18n("FTP") : "21";
0101     case PP_HTTP:
0102         return ui ? i18n("HTTP") : "80";
0103     case PP_HTTPS:
0104         return ui ? i18n("Secure HTTP") : "443";
0105     case PP_IMAP:
0106         return ui ? i18n("IMAP") : "143";
0107     case PP_IMAPS:
0108         return ui ? i18n("Secure IMAP") : "993";
0109     case PP_POP3:
0110         return ui ? i18n("POP3") : "110";
0111     case PP_POP3S:
0112         return ui ? i18n("Secure POP3") : "995";
0113     case PP_SMTP:
0114         return ui ? i18n("SMTP") : "25";
0115     case PP_NFS:
0116         return ui ? i18n("NFS") : "2049";
0117     case PP_SAMBA:
0118         return ui ? i18n("Samba") : "135,139,445/tcp 137,138/udp";
0119     case PP_SSH:
0120         return ui ? i18n("Secure Shell") : "22";
0121     case PP_VNC:
0122         return ui ? i18n("VNC") : "5900/tcp";
0123     case PP_ZEROCONF:
0124         return ui ? i18n("Zeroconf") : "5353/udp";
0125     case PP_TELNET:
0126         return ui ? i18n("Telnet") : "23";
0127     case PP_NTP:
0128         return ui ? i18n("NTP") : "123";
0129     case PP_CUPS:
0130         return ui ? i18n("CUPS") : "631";
0131     default:
0132         return QString();
0133     }
0134 }
0135 
0136 PredefinedPort toPredefinedPort(const QString &str)
0137 {
0138     for (int i = 0; i < Types::PP_COUNT; ++i) {
0139         const auto enumPort = static_cast<Types::PredefinedPort>(i);
0140         const auto typesAtIndex = Types::toString(enumPort).split(" ");
0141 
0142         if (std::any_of(typesAtIndex.cbegin(), typesAtIndex.cend(), [str](QString port) {
0143                 return port == str;
0144             })) {
0145             return enumPort;
0146         }
0147         // for (const auto &port : typesAtIndex)
0148         //
0149         // {
0150         //     if (port == str) {
0151         //         return enumPort;
0152         //     }
0153         // }
0154     }
0155 
0156     return PP_COUNT;
0157 }
0158 
0159 Logging toLogging(const QString &str)
0160 {
0161     for (int i = 0; i < LOGGING_COUNT; ++i) {
0162         if (toString((Logging)i) == str) {
0163             return (Logging)i;
0164         }
0165     }
0166 
0167     return LOGGING_OFF;
0168 }
0169 
0170 }
0171 
0172 #include "moc_types.cpp"