author | zecke <zecke> | 2004-12-20 21:58:55 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-12-20 21:58:55 (UTC) |
commit | 5f35158ba0e7c2813768aaab6d6ad478dc0271a1 (patch) (unidiff) | |
tree | a4d6e8000e14ecd4e48ffee18fba733f78fbd0a7 | |
parent | 7479e7ac142eb830329fb08f16179bb3aca642e5 (diff) | |
download | opie-5f35158ba0e7c2813768aaab6d6ad478dc0271a1.zip opie-5f35158ba0e7c2813768aaab6d6ad478dc0271a1.tar.gz opie-5f35158ba0e7c2813768aaab6d6ad478dc0271a1.tar.bz2 |
Restore lost change
-Kill Config instance in different scope for the same file
-Work when a ftp client sends -la in a listdir request
-rw-r--r-- | core/launcher/transferserver.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/core/launcher/transferserver.cpp b/core/launcher/transferserver.cpp index 1d4ca40..2b2e435 100644 --- a/core/launcher/transferserver.cpp +++ b/core/launcher/transferserver.cpp | |||
@@ -219,33 +219,32 @@ bool SyncAuthentication::checkPassword( const QString& password ) | |||
219 | } | 219 | } |
220 | return FALSE; | 220 | return FALSE; |
221 | 221 | ||
222 | } | 222 | } |
223 | 223 | ||
224 | // Second, check sync password... | 224 | // Second, check sync password... |
225 | 225 | ||
226 | static int lock=0; | 226 | static int lock=0; |
227 | if ( lock ) return FALSE; | 227 | if ( lock ) return FALSE; |
228 | 228 | ||
229 | ++lock; | 229 | ++lock; |
230 | 230 | ||
231 | /* | 231 | /* |
232 | * we need to support old Sync software and QtopiaDesktop | 232 | * we need to support old Sync software and QtopiaDesktop |
233 | */ | 233 | */ |
234 | if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) { | 234 | if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) { |
235 | Config cfg( "Security" ); | ||
236 | cfg.setGroup("Sync"); | 235 | cfg.setGroup("Sync"); |
237 | QStringList pwds = cfg.readListEntry("Passwords",' '); | 236 | QStringList pwds = cfg.readListEntry("Passwords",' '); |
238 | for (QStringList::ConstIterator it=pwds.begin(); it!=pwds.end(); ++it) { | 237 | for (QStringList::ConstIterator it=pwds.begin(); it!=pwds.end(); ++it) { |
239 | #ifndef Q_OS_WIN32 | 238 | #ifndef Q_OS_WIN32 |
240 | QString cpassword = QString::fromLocal8Bit( | 239 | QString cpassword = QString::fromLocal8Bit( |
241 | crypt( password.mid(8).local8Bit(), (*it).left(2).latin1() ) ); | 240 | crypt( password.mid(8).local8Bit(), (*it).left(2).latin1() ) ); |
242 | #else | 241 | #else |
243 | // ### revise | 242 | // ### revise |
244 | QString cpassword(""); | 243 | QString cpassword(""); |
245 | #endif | 244 | #endif |
246 | if ( *it == cpassword ) { | 245 | if ( *it == cpassword ) { |
247 | lock--; | 246 | lock--; |
248 | return TRUE; | 247 | return TRUE; |
249 | } | 248 | } |
250 | } | 249 | } |
251 | 250 | ||
@@ -367,34 +366,36 @@ void ServerPI::connectionClosed() | |||
367 | void ServerPI::send( const QString& msg ) | 366 | void ServerPI::send( const QString& msg ) |
368 | { | 367 | { |
369 | QTextStream os( this ); | 368 | QTextStream os( this ); |
370 | os << msg << endl; | 369 | os << msg << endl; |
371 | //odebug << "Reply: " << msg << "" << oendl; | 370 | //odebug << "Reply: " << msg << "" << oendl; |
372 | } | 371 | } |
373 | 372 | ||
374 | void ServerPI::read() | 373 | void ServerPI::read() |
375 | { | 374 | { |
376 | while ( canReadLine() ) | 375 | while ( canReadLine() ) |
377 | process( readLine().stripWhiteSpace() ); | 376 | process( readLine().stripWhiteSpace() ); |
378 | } | 377 | } |
379 | 378 | ||
380 | bool ServerPI::checkReadFile( const QString& file ) | 379 | bool ServerPI::checkReadFile( const QString& file ) |
381 | { | 380 | { |
382 | QString filename; | 381 | QString filename; |
383 | 382 | ||
384 | if ( file[0] != "/" ) | 383 | if ( file.length() == 1 && file[0] == "/" ) |
384 | filename = file; | ||
385 | else if ( file[0] != "/" ) | ||
385 | filename = directory.path() + "/" + file; | 386 | filename = directory.path() + "/" + file; |
386 | else | 387 | else |
387 | filename = file; | 388 | filename = file; |
388 | 389 | ||
389 | QFileInfo fi( filename ); | 390 | QFileInfo fi( filename ); |
390 | return ( fi.exists() && fi.isReadable() ); | 391 | return ( fi.exists() && fi.isReadable() ); |
391 | } | 392 | } |
392 | 393 | ||
393 | bool ServerPI::checkWriteFile( const QString& file ) | 394 | bool ServerPI::checkWriteFile( const QString& file ) |
394 | { | 395 | { |
395 | QString filename; | 396 | QString filename; |
396 | 397 | ||
397 | if ( file[0] != "/" ) | 398 | if ( file[0] != "/" ) |
398 | filename = directory.path() + "/" + file; | 399 | filename = directory.path() + "/" + file; |
399 | else | 400 | else |
400 | filename = file; | 401 | filename = file; |
@@ -684,32 +685,35 @@ void ServerPI::process( const QString& message ) | |||
684 | else { | 685 | else { |
685 | QDir dir; | 686 | QDir dir; |
686 | if ( dir.mkdir( absFilePath( args ), TRUE ) ) | 687 | if ( dir.mkdir( absFilePath( args ), TRUE ) ) |
687 | send( "250 Requested file action okay, completed." ); // No tr | 688 | send( "250 Requested file action okay, completed." ); // No tr |
688 | else | 689 | else |
689 | send( "550 Requested action not taken" ); // No tr | 690 | send( "550 Requested action not taken" ); // No tr |
690 | } | 691 | } |
691 | } | 692 | } |
692 | 693 | ||
693 | // print working directory (PWD) | 694 | // print working directory (PWD) |
694 | else if ( cmd == "PWD" ) { | 695 | else if ( cmd == "PWD" ) { |
695 | send( "257 \"" + directory.path() +"\"" ); | 696 | send( "257 \"" + directory.path() +"\"" ); |
696 | } | 697 | } |
697 | 698 | ||
698 | // list (LIST) | 699 | // list (LIST) |
699 | else if ( cmd == "LIST" ) { | 700 | else if ( cmd == "LIST" ) { |
701 | if ( args == "-la" ) | ||
702 | args = QString::null; | ||
703 | |||
700 | if ( sendList( absFilePath( args ) ) ) | 704 | if ( sendList( absFilePath( args ) ) ) |
701 | send( "150 File status okay" ); // No tr | 705 | send( "150 File status okay" ); // No tr |
702 | else | 706 | else |
703 | send( "500 Syntax error, command unrecognized" ); // No tr | 707 | send( "500 Syntax error, command unrecognized" ); // No tr |
704 | } | 708 | } |
705 | 709 | ||
706 | // size (SIZE) | 710 | // size (SIZE) |
707 | else if ( cmd == "SIZE" ) { | 711 | else if ( cmd == "SIZE" ) { |
708 | QString filePath = absFilePath( args ); | 712 | QString filePath = absFilePath( args ); |
709 | QFileInfo fi( filePath ); | 713 | QFileInfo fi( filePath ); |
710 | bool gzipfile = backupRestoreGzip( filePath ); | 714 | bool gzipfile = backupRestoreGzip( filePath ); |
711 | if ( !fi.exists() && !gzipfile ) | 715 | if ( !fi.exists() && !gzipfile ) |
712 | send( "500 Syntax error, command unrecognized" ); // No tr | 716 | send( "500 Syntax error, command unrecognized" ); // No tr |
713 | else { | 717 | else { |
714 | if ( !gzipfile ) | 718 | if ( !gzipfile ) |
715 | send( "213 " + QString::number( fi.size() ) ); | 719 | send( "213 " + QString::number( fi.size() ) ); |