Changeset 33b8b3a


Ignore:
Timestamp:
07/15/13 13:53:57 (14 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, 9.2-release, releng/10.0, releng/10.0.1, releng/10.0.2, releng/10.0.3
Children:
438117c
Parents:
b633c064
Message:

Update qsudo, now it is smarter, will test passwords and let you retry up to 3x

Location:
src-qt4/qsudo
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/qsudo/main.cpp

    rb633c064 r33b8b3a  
    22#include <qlocale.h> 
    33#include <QApplication> 
     4#include <QDebug> 
    45#include <QFile> 
    56#include "mainwindow.h" 
     
    910{    
    1011    QApplication a(argc, argv); 
     12 
     13    if ( qApp->argc() <= 1 ) { 
     14       qDebug() << "Error: Need to specify argument to run!"; 
     15       exit(1); 
     16    } 
    1117 
    1218    QTranslator translator; 
  • src-qt4/qsudo/mainwindow.cpp

    rb633c064 r33b8b3a  
    1313#include <QDir> 
    1414#include <QString> 
     15#include <QProcess> 
    1516#include <QTextStream> 
     17#include <QApplication> 
    1618#include "mainwindow.h" 
    1719#include "../config.h" 
     
    1921void MainWindow::ProgramInit() 
    2022{ 
     23  tries=3; 
    2124  connect(buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(slotButtonClicked(QAbstractButton *))); 
    2225  connect(passwordLineEdit, SIGNAL(returnPressed()), this, SLOT(slotReturnPressed())); 
     
    2528void MainWindow::slotReturnPressed() 
    2629{ 
    27   QTextStream cout(stdout); 
    28   cout << passwordLineEdit->text(); 
    29   close(); 
     30  testPass(); 
     31} 
     32 
     33void MainWindow::testPass() 
     34{ 
     35 
     36  QString program = "sudo"; 
     37  QStringList arguments; 
     38  arguments << "-S"; 
     39  arguments << "-k"; 
     40  arguments << "true"; 
     41 
     42  QProcess *tP = new QProcess(this); 
     43  tP->start(program, arguments); 
     44  tP->write(passwordLineEdit->text().toLatin1() + "\n"); 
     45  tP->write(passwordLineEdit->text().toLatin1() + "\n"); 
     46  tP->write(passwordLineEdit->text().toLatin1() + "\n"); 
     47  while(tP->state() == QProcess::Starting || tP->state() == QProcess::Running ) { 
     48     tP->waitForFinished(500); 
     49     QCoreApplication::processEvents(); 
     50     qDebug() << "Waiting..."; 
     51  } 
     52  if ( tP->exitCode() != 0 ) 
     53  { 
     54     QString tmp; 
     55     tmp.setNum(tries-1); 
     56     labelBadPW->setText(tr("Invalid Password! Tries Left: %1").arg(tmp) ); 
     57     tries--; 
     58     if ( tries == 0 ) 
     59       exit(1); 
     60  } else { 
     61     startSudo(); 
     62  } 
     63} 
     64 
     65void MainWindow::startSudo() 
     66{ 
     67  setVisible(false); 
     68  QString program = "sudo"; 
     69  QStringList arguments; 
     70  arguments << "-S"; 
     71  for ( int i = 1; i< qApp->argc() ; i++) 
     72    arguments << qApp->argv()[i]; 
     73 
     74  sudoProc = new QProcess(this); 
     75  sudoProc->start(program, arguments); 
     76  sudoProc->write(passwordLineEdit->text().toLatin1() + "\n"); 
     77  connect( sudoProc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotProcDone() ) ); 
     78  while(sudoProc->state() == QProcess::Starting ) { 
     79     sudoProc->waitForFinished(500); 
     80     QCoreApplication::processEvents(); 
     81  } 
     82} 
     83 
     84void MainWindow::slotProcDone() 
     85{ 
     86   exit(sudoProc->exitCode()); 
    3087} 
    3188 
    3289void MainWindow::slotButtonClicked(QAbstractButton *myBut) 
    3390{ 
    34   if ( buttonBox->buttonRole(myBut) == QDialogButtonBox::AcceptRole ){ 
    35     QTextStream cout(stdout); 
    36     cout << passwordLineEdit->text(); 
    37   } 
     91  if ( buttonBox->buttonRole(myBut) == QDialogButtonBox::AcceptRole )  
     92     testPass(); 
    3893  close(); 
    3994} 
  • src-qt4/qsudo/mainwindow.h

    rb633c064 r33b8b3a  
    33 
    44#include "ui_mainwindow.h" 
     5#include <QProcess> 
    56#include "../config.h" 
    67 
     
    2122    void slotButtonClicked(QAbstractButton *myBut); 
    2223    void slotReturnPressed(); 
     24    void slotProcDone(); 
    2325 
    2426private: 
     27    void startSudo(); 
     28    void testPass(); 
     29    QProcess *sudoProc; 
     30    int tries; 
    2531 
    2632signals: 
  • src-qt4/qsudo/mainwindow.ui

    rb633c064 r33b8b3a  
    88    <y>0</y> 
    99    <width>305</width> 
    10     <height>131</height> 
     10    <height>145</height> 
    1111   </rect> 
    1212  </property> 
     
    2020  <widget class="QWidget" name="centralWidget"> 
    2121   <layout class="QGridLayout" name="gridLayout"> 
     22    <item row="2" column="0"> 
     23     <layout class="QHBoxLayout" name="horizontalLayout"> 
     24      <item> 
     25       <spacer name="horizontalSpacer"> 
     26        <property name="orientation"> 
     27         <enum>Qt::Horizontal</enum> 
     28        </property> 
     29        <property name="sizeType"> 
     30         <enum>QSizePolicy::Fixed</enum> 
     31        </property> 
     32        <property name="sizeHint" stdset="0"> 
     33         <size> 
     34          <width>20</width> 
     35          <height>17</height> 
     36         </size> 
     37        </property> 
     38       </spacer> 
     39      </item> 
     40      <item> 
     41       <widget class="QLineEdit" name="passwordLineEdit"> 
     42        <property name="echoMode"> 
     43         <enum>QLineEdit::Password</enum> 
     44        </property> 
     45       </widget> 
     46      </item> 
     47     </layout> 
     48    </item> 
    2249    <item row="0" column="0"> 
    2350     <layout class="QHBoxLayout" name="horizontalLayout_2"> 
     
    6592     </layout> 
    6693    </item> 
    67     <item row="1" column="0"> 
    68      <layout class="QHBoxLayout" name="horizontalLayout"> 
    69       <item> 
    70        <spacer name="horizontalSpacer"> 
    71         <property name="orientation"> 
    72          <enum>Qt::Horizontal</enum> 
    73         </property> 
    74         <property name="sizeType"> 
    75          <enum>QSizePolicy::Fixed</enum> 
    76         </property> 
    77         <property name="sizeHint" stdset="0"> 
    78          <size> 
    79           <width>20</width> 
    80           <height>17</height> 
    81          </size> 
    82         </property> 
    83        </spacer> 
    84       </item> 
    85       <item> 
    86        <widget class="QLineEdit" name="passwordLineEdit"> 
    87         <property name="echoMode"> 
    88          <enum>QLineEdit::Password</enum> 
    89         </property> 
    90        </widget> 
    91       </item> 
    92      </layout> 
    93     </item> 
    94     <item row="2" column="0"> 
     94    <item row="4" column="0"> 
    9595     <widget class="QDialogButtonBox" name="buttonBox"> 
    9696      <property name="standardButtons"> 
    9797       <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> 
     98      </property> 
     99     </widget> 
     100    </item> 
     101    <item row="3" column="0"> 
     102     <widget class="QLabel" name="labelBadPW"> 
     103      <property name="styleSheet"> 
     104       <string notr="true">color: rgb(255, 15, 7);</string> 
     105      </property> 
     106      <property name="text"> 
     107       <string/> 
    98108      </property> 
    99109     </widget> 
Note: See TracChangeset for help on using the changeset viewer.