author | zecke <zecke> | 2004-02-21 13:09:17 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-02-21 13:09:17 (UTC) |
commit | 4024cfd1e32a43d82361d6ba9977fe64db88e3ce (patch) (side-by-side diff) | |
tree | 1d2e0592a3df330a17d9a07cd2f29615ce5be595 /core/launcher/transferserver.cpp | |
parent | aa11789fc4d735a04fac09063851753d8a57027b (diff) | |
download | opie-4024cfd1e32a43d82361d6ba9977fe64db88e3ce.zip opie-4024cfd1e32a43d82361d6ba9977fe64db88e3ce.tar.gz opie-4024cfd1e32a43d82361d6ba9977fe64db88e3ce.tar.bz2 |
Fix up syncing mode
InetlliSync,Opie1.0,QtopiaNEW
Diffstat (limited to 'core/launcher/transferserver.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | core/launcher/transferserver.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/core/launcher/transferserver.cpp b/core/launcher/transferserver.cpp index 9cb9d7a..8367a62 100644 --- a/core/launcher/transferserver.cpp +++ b/core/launcher/transferserver.cpp @@ -149,105 +149,123 @@ int SyncAuthentication::isAuthorized(QHostAddress peeraddress) Config cfg("Security"); cfg.setGroup("Sync"); // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0"); uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100); // QHostAddress allowed; // allowed.setAddress(allowedstr); // uint auth_peer = allowed.ip4Addr(); uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24); uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits)); return (peeraddress.ip4Addr() & mask) == auth_peer; } bool SyncAuthentication::checkUser( const QString& user ) { if ( user.isEmpty() ) return FALSE; QString euser = loginName(); return user == euser; } bool SyncAuthentication::checkPassword( const QString& password ) { #ifdef ALLOW_UNIX_USER_FTP // First, check system password... struct passwd *pw = 0; struct spwd *spw = 0; pw = getpwuid( geteuid() ); spw = getspnam( pw->pw_name ); QString cpwd = QString::fromLocal8Bit( pw->pw_passwd ); if ( cpwd == "x" && spw ) cpwd = QString::fromLocal8Bit( spw->sp_pwdp ); // Note: some systems use more than crypt for passwords. 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); Config cfg("Security"); - cfg.setGroup("Sync"); - QString syncapp = cfg.readEntry("syncapp","Qtopia"); + cfg.setGroup("SyncMode"); + int mode = cfg.readNumEntry("Mode", 0x02 ); - //No password needed if the user really wants it - if (syncapp == "IntelliSync") { + //No pass word needed if the user really needs it + if (mode & 0x04) { + QMessageBox unauth( + tr("Sync Connection"), + tr("<qt><p>An unauthorized system is requesting access to this device." + "<p>You chose IntelliSync so you may I allow or deny this connection.</qt>" ), + QMessageBox::Warning, + QMessageBox::Ok, QMessageBox::Cancel|QMessageBox::Default, QMessageBox::NoButton, + 0, QString::null, TRUE, WStyle_StaysOnTop); + unauth.setButtonText(QMessageBox::Ok, tr("Allow" ) ); + unauth.setButtonText(QMessageBox::Cancel, tr("Deny")); + switch( unauth.exec() ) { + case QMessageBox::Ok: return TRUE; + break; + case QMessageBox::Cancel: + default: + denials++; + lastdenial=now; + return FALSE; + } } - // Detect old Qtopia Desktop (no password) + // Detect old Qtopia Desktop (no password) and fail if ( password.isEmpty() ) { if ( denials < 3 || now > lastdenial+600 ) { QMessageBox unauth( 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 or change the security setting to use IntelliSync." ), QMessageBox::Warning, QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton, 0, QString::null, TRUE, WStyle_StaysOnTop); unauth.setButtonText(QMessageBox::Cancel, tr("Deny")); unauth.exec(); denials++; lastdenial=now; } return FALSE; } // Second, check sync password... static int lock=0; if ( lock ) return FALSE; ++lock; /* * we need to support old Sync software and QtopiaDesktop */ if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) { Config cfg( "Security" ); cfg.setGroup("Sync"); QStringList pwds = cfg.readListEntry("Passwords",' '); for (QStringList::ConstIterator it=pwds.begin(); it!=pwds.end(); ++it) { #ifndef Q_OS_WIN32 QString cpassword = QString::fromLocal8Bit( crypt( password.mid(8).local8Bit(), (*it).left(2).latin1() ) ); #else // ### revise QString cpassword(""); #endif if ( *it == cpassword ) { lock--; return TRUE; } } |