Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37531927
en ru br
Репозитории ALT

Группа :: Графические оболочки/KDE
Пакет: sddm

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: alt-fix-unable-handle-request.patch
Скачать


diff --git a/src/helper/backend/PamBackend.cpp b/src/helper/backend/PamBackend.cpp
index c7e48cd..f8bbcdc 100644
--- a/src/helper/backend/PamBackend.cpp
+++ b/src/helper/backend/PamBackend.cpp
@@ -32,20 +32,27 @@
 namespace SDDM {
     static Request loginRequest {
         {   { AuthPrompt::LOGIN_USER, QStringLiteral("login:"), false },
-            { AuthPrompt::LOGIN_PASSWORD, QStringLiteral("Password: "), true }
+            { AuthPrompt::LOGIN_PASSWORD, QStringLiteral("Password: "), true },
+            { AuthPrompt::LOGIN_USER, QStringLiteral("я┐я┤п╣я┌п╫п╟я▐ п╥п╟п©п╦я│я▄:"), false },
+            { AuthPrompt::LOGIN_PASSWORD, QStringLiteral("п÷п╟я─п╬п╩я▄: "), true }
         }
     };
 
     static Request changePassRequest {
         {   { AuthPrompt::CHANGE_CURRENT, QStringLiteral("(current) UNIX password: "), true },
             { AuthPrompt::CHANGE_NEW, QStringLiteral("New password: "), true },
-            { AuthPrompt::CHANGE_REPEAT, QStringLiteral("Retype new password: "), true }
+            { AuthPrompt::CHANGE_REPEAT, QStringLiteral("Retype new password: "), true },
+            { AuthPrompt::CHANGE_CURRENT, QStringLiteral("(я┌п╣п╨я┐я┴п╦п╧) п©п╟я─п╬п╩я▄ UNIX: "), true },
+            { AuthPrompt::CHANGE_NEW, QStringLiteral("п²п╬п╡я▀п╧ п©п╟я─п╬п╩я▄: "), true },
+            { AuthPrompt::CHANGE_REPEAT, QStringLiteral("п÷п╬п╡я┌п╬я─п╦я┌п╣ п╡п╡п╬п╢ п©п╟я─п╬п╩я▐: "), true }
         }
     };
 
     static Request changePassNoOldRequest {
         {   { AuthPrompt::CHANGE_NEW, QStringLiteral("New password: "), true },
-            { AuthPrompt::CHANGE_REPEAT, QStringLiteral("Retype new password: "), true }
+            { AuthPrompt::CHANGE_REPEAT, QStringLiteral("Retype new password: "), true },
+            { AuthPrompt::CHANGE_NEW, QStringLiteral("п²п╬п╡я▀п╧ п©п╟я─п╬п╩я▄: "), true },
+            { AuthPrompt::CHANGE_REPEAT, QStringLiteral("п÷п╬п╡я┌п╬я─п╦я┌п╣ п╡п╡п╬п╢ п©п╟я─п╬п╩я▐: "), true }
         }
     };
 
@@ -58,14 +65,16 @@ namespace SDDM {
     AuthPrompt::Type PamData::detectPrompt(const struct pam_message* msg) const {
         if (msg->msg_style == PAM_PROMPT_ECHO_OFF) {
             QString message = QString::fromLocal8Bit(msg->msg);
-            if (message.indexOf(QRegExp(QStringLiteral("\\bpassword\\b"), Qt::CaseInsensitive)) >= 0) {
-                if (message.indexOf(QRegExp(QStringLiteral("\\b(re-?(enter|type)|again|confirm|repeat)\\b"), Qt::CaseInsensitive)) >= 0) {
+
+            //FIXME: avoid hardcoded PAM messages parsing
+            if (message.indexOf(QRegExp(QStringLiteral("\\bpassword\\b"), Qt::CaseInsensitive)) >= 0 || message.indexOf(QRegExp(QStringLiteral("\\b(п©п╟я─п╬п╩я▄|п©п╟я─п╬п╩я▐)\\b"), Qt::CaseInsensitive)) >= 0) {
+                if (message.indexOf(QRegExp(QStringLiteral("\\b(re-?(enter|type)|again|confirm|repeat)\\b"), Qt::CaseInsensitive)) >= 0 || message.indexOf(QRegExp(QStringLiteral("\\bп©п╬п╡я┌п╬я─п╦я┌п╣\\b"), Qt::CaseInsensitive)) >= 0) {
                     return AuthPrompt::CHANGE_REPEAT;
                 }
-                else if (message.indexOf(QRegExp(QStringLiteral("\\bnew\\b"), Qt::CaseInsensitive)) >= 0) {
+                else if (message.indexOf(QRegExp(QStringLiteral("\\bnew\\b"), Qt::CaseInsensitive)) >= 0 || message.indexOf(QRegExp(QStringLiteral("\\bп╫п╬п╡я▀п╧\\b"), Qt::CaseInsensitive)) >= 0) {
                     return AuthPrompt::CHANGE_NEW;
                 }
-                else if (message.indexOf(QRegExp(QStringLiteral("\\b(old|current)\\b"), Qt::CaseInsensitive)) >= 0) {
+                else if (message.indexOf(QRegExp(QStringLiteral("\\b(old|current)\\b"), Qt::CaseInsensitive)) >= 0 || message.indexOf(QRegExp(QStringLiteral("\\b(я┌п╣п╨я┐я┴п╦п╧|я│я┌п╟я─я▀п╧)\\b"), Qt::CaseInsensitive)) >= 0) {
                     return AuthPrompt::CHANGE_CURRENT;
                 }
                 else {
@@ -162,7 +171,7 @@ namespace SDDM {
      * just fires one signal for all info types). Just builds new request for "changing" keyword.
      */
     Auth::Info PamData::handleInfo(const struct pam_message* msg, bool &newRequest, bool predict) {
-        if (QString::fromLocal8Bit(msg->msg).indexOf(QRegExp(QStringLiteral("^Changing password for [^ ]+$"))) >= 0)
+        if (QString::fromLocal8Bit(msg->msg).indexOf(QRegExp(QStringLiteral("^Changing password for [^ ]+$"))) >= 0 || QString::fromLocal8Bit(msg->msg).indexOf(QRegExp(QStringLiteral("^п║п╪п╣п╫п╟ п©п╟я─п╬п╩я▐ п╢п╩я▐ [^ ]+$"))) >= 0)
         {
             if (predict) {
                 m_currentRequest = Request(changePassRequest);
@@ -181,7 +190,7 @@ namespace SDDM {
      */
     Auth::Error PamData::handleErr(const struct pam_message* msg, bool &newRequest, bool predict) {
         // bad password during password renewal (for expired password)
-        if (QString::fromLocal8Bit(msg->msg).startsWith(QStringLiteral("BAD PASSWORD:")))
+        if (QString::fromLocal8Bit(msg->msg).startsWith(QStringLiteral("BAD PASSWORD:")) || QString::fromLocal8Bit(msg->msg).startsWith(QStringLiteral("п²п∙пёп■п░п╖п²п╚п≥ п÷п░п═п·п⌡п╛:")))
         {
             if (predict)
             {
@@ -193,7 +202,7 @@ namespace SDDM {
             return Auth::ERROR_NONE;
         }
 
-        if(QString::fromLocal8Bit(msg->msg).startsWith(QStringLiteral("Password change aborted."))) {
+        if(QString::fromLocal8Bit(msg->msg).startsWith(QStringLiteral("Password change aborted.")) || QString::fromLocal8Bit(msg->msg).startsWith(QStringLiteral("п≤п╥п╪п╣п╫п╣п╫п╦п╣ п©п╟я─п╬п╩я▐ п╬я┌п╪п╣п╫п╣п╫п╬."))) {
             return Auth::ERROR_AUTHENTICATION;
         }
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin