-rw-r--r-- | core/launcher/transferserver.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/core/launcher/transferserver.cpp b/core/launcher/transferserver.cpp index 28b7b49..9d18b7b 100644 --- a/core/launcher/transferserver.cpp +++ b/core/launcher/transferserver.cpp @@ -151,51 +151,57 @@ bool SyncAuthentication::checkPassword( const QString& password ) QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) ); if ( cpwd == cpassword ) return TRUE; #endif static int lastdenial=0; static int denials=0; int now = time(0); // Detect old Qtopia Desktop (no password) if ( password.isEmpty() ) { if ( denials < 1 || now > lastdenial+600 ) { QMessageBox::warning( 0,tr("Sync Connection"), tr("<p>An unauthorized system is requesting access to this device." "<p>If you are using a version of Qtopia Desktop older than 1.5.1, " "please upgrade."), tr("Deny") ); denials++; lastdenial=now; } return FALSE; } // Second, check sync password... - if ( password.left(6) == "rootme" ) { - // fuckin TT gave us the wrong sync password. - // what a dumbassed password is rootme anyway. + QString pass = password.left(6); + /* old QtopiaDesktops are sending + * rootme newer versions got a Qtopia + * prefixed. Qtopia prefix will suceed + * until the sync software syncs up + * FIXME + */ + if ( pass == "rootme" || pass == "Qtopia") { + QString cpassword = QString::fromLocal8Bit( crypt( password.mid(8).local8Bit(), "qp" ) ); Config cfg("Security"); cfg.setGroup("Sync"); QString pwds = cfg.readEntry("Passwords"); if ( QStringList::split(QChar(' '),pwds).contains(cpassword) ) return TRUE; // Unrecognized system. Be careful... if ( (denials > 2 && now < lastdenial+600) || QMessageBox::warning(0,tr("Sync Connection"), tr("<p>An unrecognized system is requesting access to this device." "<p>If you have just initiated a Sync for the first time, this is normal."), tr("Allow"),tr("Deny"))==1 ) { denials++; lastdenial=now; return FALSE; } else { denials=0; cfg.writeEntry("Passwords",pwds+" "+cpassword); return TRUE; } } |