[KBear-cvs] kbear/kbear/plugins/ftpfind ftpfindtreeview.cpp,1.4,1.5 ftpfindtreeview.h,1.2,1.3 kbearf
Brought to you by:
kbjorn
Update of /cvsroot/kbear/kbear/kbear/plugins/ftpfind
In directory sc8-pr-cvs1:/tmp/cvs-serv23710/kbear/plugins/ftpfind
Modified Files:
ftpfindtreeview.cpp ftpfindtreeview.h kbearftpfindplugin.cpp
kbearftpfindplugin.h kbearftpfind.rc Makefile.am
scandomainworker.cpp
Log Message:
Bugfixes
Index: ftpfindtreeview.cpp
===================================================================
RCS file: /cvsroot/kbear/kbear/kbear/plugins/ftpfind/ftpfindtreeview.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ftpfindtreeview.cpp 19 Jul 2003 20:02:20 -0000 1.4
--- ftpfindtreeview.cpp 20 Jul 2003 19:35:34 -0000 1.5
***************
*** 80,84 ****
}
case ScanDomainEvent::Info: {
! m_currentItem = new FTPFindTreeViewItem( this, m_currentItem, event->message() );
m_currentItem->setPixmap( 0, QPixmap( uninitialized_xpm ) );
m_currentItem->setExpandable( true );
--- 80,84 ----
}
case ScanDomainEvent::Info: {
! m_currentItem = new QListViewItem( this, m_currentItem, event->message() );
m_currentItem->setPixmap( 0, QPixmap( uninitialized_xpm ) );
m_currentItem->setExpandable( true );
***************
*** 86,90 ****
}
case ScanDomainEvent::SystemType: {
! QListViewItem* item = new QListViewItem( m_currentItem, event->message() );
item->setExpandable( false );
break;
--- 86,90 ----
}
case ScanDomainEvent::SystemType: {
! QListViewItem* item = new QListViewItem( m_currentItem, lastChild( m_currentItem ), event->message() );
item->setExpandable( false );
break;
***************
*** 97,101 ****
}
case ScanDomainEvent::WelcomeMsg: {
! QListViewItem* item = new QListViewItem( m_currentItem, event->message() );
item->setExpandable( false );
break;
--- 97,101 ----
}
case ScanDomainEvent::WelcomeMsg: {
! QListViewItem* item = new QListViewItem( m_currentItem, lastChild( m_currentItem ), event->message() );
item->setExpandable( false );
break;
***************
*** 132,135 ****
--- 132,146 ----
}
//-----------------------------------------------
+ QListViewItem* FTPFindTreeViewItem::lastChild( QListViewItem* parent ) const {
+ QListViewItem* tmpItem = parent->firstChild();
+ QListViewItem* item = tmpItem;
+ while( tmpItem ) {
+ tmpItem = tmpItem->nextSibling();
+ if( tmpItem )
+ item = tmpItem;
+ }
+ return item;
+ }
+ //-----------------------------------------------
// FTPFindTreeView
//-----------------------------------------------
***************
*** 139,143 ****
addColumn( i18n("Name") );
addColumn( i18n("Info") );
! setColumnWidthMode( 0, QListView::Manual );
setRootIsDecorated( true );
setSelectionModeExt( Single );
--- 150,154 ----
addColumn( i18n("Name") );
addColumn( i18n("Info") );
! // setColumnWidthMode( 0, QListView::Manual );
setRootIsDecorated( true );
setSelectionModeExt( Single );
Index: ftpfindtreeview.h
===================================================================
RCS file: /cvsroot/kbear/kbear/kbear/plugins/ftpfind/ftpfindtreeview.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ftpfindtreeview.h 17 Jul 2003 20:21:02 -0000 1.2
--- ftpfindtreeview.h 20 Jul 2003 19:35:34 -0000 1.3
***************
*** 42,45 ****
--- 42,47 ----
/** */
virtual void customEvent( QCustomEvent* e );
+ /** */
+ QListViewItem* lastChild( QListViewItem* parent ) const;
private:
QListViewItem* m_currentItem;
Index: kbearftpfindplugin.cpp
===================================================================
RCS file: /cvsroot/kbear/kbear/kbear/plugins/ftpfind/kbearftpfindplugin.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** kbearftpfindplugin.cpp 17 Jul 2003 20:21:02 -0000 1.2
--- kbearftpfindplugin.cpp 20 Jul 2003 19:35:34 -0000 1.3
***************
*** 54,57 ****
--- 54,61 ----
action->setToolTip( tmp );
+ action = new KAction( i18n("&Remove selected"), "editdelete", 0, this, SLOT( slotRemove() ), actionCollection(), "ftpfind_remove" );
+ action->setToolTip( i18n("Remove and stop selected item.") );
+ action->setEnabled( false );
+
action = new KAction( i18n("&Clear view"), "editclear", 0, m_outputWidget->searchView(), SLOT( slotClear() ), actionCollection(), "ftpfind_clear" );
action->setToolTip( i18n("Clear output view.") );
***************
*** 79,90 ****
}
//-----------------------------------------------
void KBearFTPFindPlugin::slotSelectionChanged( QListViewItem* i ) {
FTPFindTreeViewItem* item = dynamic_cast<FTPFindTreeViewItem*>( i );
if( item && item->isActive() ) {
! stateChanged( QString::fromLatin1("ItemSelectedState") );
m_outputWidget->setStopEnabled( true );
}
else {
! stateChanged( QString::fromLatin1("ItemSelectedState", StateReverse ) );
m_outputWidget->setStopEnabled( false );
}
--- 83,102 ----
}
//-----------------------------------------------
+ void KBearFTPFindPlugin::slotRemove() {
+ FTPFindTreeViewItem* item = dynamic_cast<FTPFindTreeViewItem*>( m_outputWidget->searchView()->selectedItem() );
+ if( item ) {
+ item->stop();
+ item->deleteLater();
+ }
+ }
+ //-----------------------------------------------
void KBearFTPFindPlugin::slotSelectionChanged( QListViewItem* i ) {
FTPFindTreeViewItem* item = dynamic_cast<FTPFindTreeViewItem*>( i );
if( item && item->isActive() ) {
! stateChanged( QString::fromLatin1("ActiveSelectedState") );
m_outputWidget->setStopEnabled( true );
}
else {
! stateChanged( QString::fromLatin1("ActiveSelectedState", StateReverse ) );
m_outputWidget->setStopEnabled( false );
}
***************
*** 95,104 ****
if( menu ) {
FTPFindTreeViewItem* item = dynamic_cast<FTPFindTreeViewItem*>( i );
! if( item && item->isActive() ) {
stateChanged( QString::fromLatin1("ItemSelectedState") );
! m_outputWidget->setStopEnabled( true );
}
else {
! stateChanged( QString::fromLatin1("ItemSelectedState", StateReverse ) );
m_outputWidget->setStopEnabled( false );
}
--- 107,124 ----
if( menu ) {
FTPFindTreeViewItem* item = dynamic_cast<FTPFindTreeViewItem*>( i );
! if( item ) {
stateChanged( QString::fromLatin1("ItemSelectedState") );
! if( item->isActive() ) {
! stateChanged( QString::fromLatin1("ActiveSelectedState") );
! m_outputWidget->setStopEnabled( true );
! }
! else {
! stateChanged( QString::fromLatin1("ActiveSelectedState", StateReverse ) );
! m_outputWidget->setStopEnabled( false );
! }
}
else {
! stateChanged( QString::fromLatin1("ItemSelectedState"), StateReverse );
! stateChanged( QString::fromLatin1("ActiveSelectedState", StateReverse ) );
m_outputWidget->setStopEnabled( false );
}
Index: kbearftpfindplugin.h
===================================================================
RCS file: /cvsroot/kbear/kbear/kbear/plugins/ftpfind/kbearftpfindplugin.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** kbearftpfindplugin.h 17 Jul 2003 20:21:02 -0000 1.2
--- kbearftpfindplugin.h 20 Jul 2003 19:35:34 -0000 1.3
***************
*** 45,48 ****
--- 45,50 ----
/** */
void slotStop();
+ /** */
+ void slotRemove();
private slots:
void slotSelectionChanged( QListViewItem* i );
Index: kbearftpfind.rc
===================================================================
RCS file: /cvsroot/kbear/kbear/kbear/plugins/ftpfind/kbearftpfind.rc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** kbearftpfind.rc 17 Jul 2003 20:21:02 -0000 1.2
--- kbearftpfind.rc 20 Jul 2003 19:35:34 -0000 1.3
***************
*** 6,9 ****
--- 6,10 ----
<Action name="ftpfind_find"/>
<Action name="ftpfind_stop"/>
+ <Action name="ftpfind_remove"/>
<Separator/>
<Merge/>
***************
*** 14,20 ****
--- 15,28 ----
<Separator/>
<Action name="ftpfind_find"/>
+ <Action name="ftpfind_remove"/>
+ <Separator/>
<Action name="ftpfind_clear"/>
</Menu>
<State name="ItemSelectedState">
+ <Enable>
+ <Action name="ftpfind_remove"/>
+ </Enable>
+ </State>
+ <State name="ActiveSelectedState">
<Enable>
<Action name="ftpfind_stop"/>
Index: Makefile.am
===================================================================
RCS file: /cvsroot/kbear/kbear/kbear/plugins/ftpfind/Makefile.am,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Makefile.am 15 Jul 2003 23:46:34 -0000 1.1
--- Makefile.am 20 Jul 2003 19:35:34 -0000 1.2
***************
*** 1,8 ****
INCLUDES = -I$(top_srcdir)/kbear/lib/interfaces $(all_includes)
kde_module_LTLIBRARIES = kbearftpfind.la
! kbearftpfind_la_LDFLAGS = -module -no-undefined -avoid-version $(all_libraries) $(KDE_PLUGIN)
kbearftpfind_la_LIBADD = $(top_builddir)/kbear/lib/libkbearcore.la
kbearftpfind_la_SOURCES = kbearftpfindplugin.cpp kbearftpfindoutputwidget.cpp scandomainwidget.ui scandomainwidget.ui.h scandomainworker.h scandomainworker.cpp ftpfindtreeview.cpp
! kbearftpfind_la_METASOURCES = AUTO
noinst_HEADERS = kbearftpfindoutputwidget.h kbearftpfindoutputwidget.h kbearftpfindplugin.h kbearftpfindplugin.h kbearftpfindoutputwidget.h scandomainwidget.ui.h kbearftpfindplugin.h scandomainwidget.h scandomainwidget.ui.h scandomainworker.h ftpfindtreeview.h
kbearftpfindservicedir = $(kde_servicesdir)
--- 1,8 ----
INCLUDES = -I$(top_srcdir)/kbear/lib/interfaces $(all_includes)
kde_module_LTLIBRARIES = kbearftpfind.la
! kbearftpfind_la_LDFLAGS = -module -avoid-version $(all_libraries) $(KDE_PLUGIN)
kbearftpfind_la_LIBADD = $(top_builddir)/kbear/lib/libkbearcore.la
kbearftpfind_la_SOURCES = kbearftpfindplugin.cpp kbearftpfindoutputwidget.cpp scandomainwidget.ui scandomainwidget.ui.h scandomainworker.h scandomainworker.cpp ftpfindtreeview.cpp
! METASOURCES = AUTO
noinst_HEADERS = kbearftpfindoutputwidget.h kbearftpfindoutputwidget.h kbearftpfindplugin.h kbearftpfindplugin.h kbearftpfindoutputwidget.h scandomainwidget.ui.h kbearftpfindplugin.h scandomainwidget.h scandomainwidget.ui.h scandomainworker.h ftpfindtreeview.h
kbearftpfindservicedir = $(kde_servicesdir)
Index: scandomainworker.cpp
===================================================================
RCS file: /cvsroot/kbear/kbear/kbear/plugins/ftpfind/scandomainworker.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** scandomainworker.cpp 17 Jul 2003 20:21:02 -0000 1.2
--- scandomainworker.cpp 20 Jul 2003 19:35:34 -0000 1.3
***************
*** 18,21 ****
--- 18,23 ----
/////////////////////////////////////////////////////////////////////
// System specific include files
+ #include <sys/select.h>
+ #include <sys/time.h>
//////////////////////////////////////////////////////////////////////
// Application specific include files
***************
*** 90,96 ****
return;
! m_systemMutex.lock();
! m_resolv = gethostbyname( m_domain.latin1() );
! m_systemMutex.unlock();
if( m_resolv == NULL ) {
--- 92,96 ----
return;
! m_resolv = gethostbyname( m_domain.utf8().data() );
if( m_resolv == NULL ) {
***************
*** 103,111 ****
m_IP = *(unsigned long *)m_resolv->h_addr_list[0];
- m_systemMutex.lock();
m_IP = ntohl( m_IP ) & 0xFFFFFF00;
m_addr.sin_addr.s_addr = htonl( m_IP );
QString msg = i18n("%1 (%2)" ).arg( m_resolv->h_name ).arg( inet_ntoa( m_addr.sin_addr ) );
- m_systemMutex.unlock();
kdDebug() << k_funcinfo << "Scanning Class C Domain: " << msg << endl;
--- 103,109 ----
***************
*** 117,171 ****
struct sockaddr_in rsv;
- m_systemMutex.lock();
rsv.sin_family = AF_INET;
rsv.sin_port = htons( port );
rsv.sin_addr.s_addr = htonl( m_IP + i );
m_resolv = gethostbyaddr( (char *)&rsv.sin_addr.s_addr, 4, AF_INET);
- m_systemMutex.unlock();
if( m_resolv != NULL ) {
if( checkIP( rsv ) != 0L ) {
- m_systemMutex.lock();
QString msg = i18n("%1 (%2) port=%3").arg( m_resolv->h_name ).arg( inet_ntoa( rsv.sin_addr ) ).arg( port );
- m_systemMutex.unlock();
ScanDomainEvent* event = new ScanDomainEvent( this, ScanDomainEvent::Info, msg );
QApplication::postEvent( m_msgReceiver, event );
- m_systemMutex.lock();
// try to read welcome message
char buffer[ 4096 ];
- memset( buffer, 0x00, 4096 );
! //recv( m_extSocket->fd(), buffer, 4096, 0);
! m_extSocket->setTimeout( 0 );
! m_extSocket->setBlockingMode( true );
! m_extSocket->readBlock( buffer, 4096 );
! m_systemMutex.unlock();
! if (strncmp( buffer, "220", 3) == 0) {
! QString tmp = QString::fromLatin1( buffer );
! QStringList list = QStringList::split( "\n", tmp );
! for( unsigned int i = 0; i < list.count(); i++ ) {
! tmp = list[ i ];
! if( ! tmp.isEmpty() ) {
! ScanDomainEvent* event = new ScanDomainEvent( this, ScanDomainEvent::WelcomeMsg, tmp );
! QApplication::postEvent( m_msgReceiver, event );
}
}
!
! clearBuffer();
! login();
! clearBuffer();
! }
! else {
msg = i18n("Anonymous login denied!");
ScanDomainEvent* event = new ScanDomainEvent( this, ScanDomainEvent::LoginDenied, msg );
QApplication::postEvent( m_msgReceiver, event );
}
! m_systemMutex.lock();
m_extSocket->closeNow();
delete m_extSocket;
m_extSocket = 0L;
- m_systemMutex.unlock();
}
}
--- 115,168 ----
struct sockaddr_in rsv;
rsv.sin_family = AF_INET;
rsv.sin_port = htons( port );
rsv.sin_addr.s_addr = htonl( m_IP + i );
m_resolv = gethostbyaddr( (char *)&rsv.sin_addr.s_addr, 4, AF_INET);
if( m_resolv != NULL ) {
if( checkIP( rsv ) != 0L ) {
QString msg = i18n("%1 (%2) port=%3").arg( m_resolv->h_name ).arg( inet_ntoa( rsv.sin_addr ) ).arg( port );
ScanDomainEvent* event = new ScanDomainEvent( this, ScanDomainEvent::Info, msg );
QApplication::postEvent( m_msgReceiver, event );
// try to read welcome message
char buffer[ 4096 ];
! int retval;
! do {
! memset( buffer, 0x00, 4096 );
! retval = m_extSocket->readBlock( buffer, 4096 );
! if( strncmp( buffer, "220", 3) == 0) {
! QString tmp = QString::fromLatin1( buffer );
! QStringList list = QStringList::split( "\n", tmp );
! for( unsigned int i = 0; i < list.count(); i++ ) {
! tmp = list[ i ];
! if( ! tmp.isEmpty() ) {
! if( tmp.right( 1 ) == "\r" || tmp.right( 1 ) == "\n" )
! tmp = tmp.left( tmp.length() -1 );
! else if( tmp.right( 2 ) == "\r\n" )
! tmp = tmp.left( tmp.length() - 2 );
! ScanDomainEvent* event = new ScanDomainEvent( this, ScanDomainEvent::WelcomeMsg, tmp );
! QApplication::postEvent( m_msgReceiver, event );
! }
}
}
! else
! retval = -1;
! } while( m_extSocket->bytesAvailable() && retval >= 0 );
! if( retval < 0 ) {
msg = i18n("Anonymous login denied!");
ScanDomainEvent* event = new ScanDomainEvent( this, ScanDomainEvent::LoginDenied, msg );
QApplication::postEvent( m_msgReceiver, event );
}
! else {
! clearBuffer();
! login();
! clearBuffer();
! }
m_extSocket->closeNow();
delete m_extSocket;
m_extSocket = 0L;
}
}
***************
*** 188,201 ****
void ScanDomainWorker::clearBuffer() {
char buffer[1024];
! m_systemMutex.lock();
! while ( recv( m_extSocket->fd(), buffer, 1024, MSG_DONTWAIT) > 0 && errno == EAGAIN );
! m_systemMutex.unlock();
}
//-----------------------------------------------
KExtendedSocket* ScanDomainWorker::checkIP( const struct sockaddr_in& addr ) {
! int flags = KExtendedSocket::inetSocket | KExtendedSocket::streamSocket | KExtendedSocket::bufferedSocket
| KExtendedSocket::ipv4Socket | KExtendedSocket::ipv6Socket ;
- m_systemMutex.lock();
m_extSocket = new KExtendedSocket( QString::fromLatin1(inet_ntoa( addr.sin_addr )), ntohs( addr.sin_port ), flags );
// kdDebug() << k_funcinfo << "IP=" << inet_ntoa( addr.sin_addr ) << endl;
--- 185,196 ----
void ScanDomainWorker::clearBuffer() {
char buffer[1024];
! while( m_extSocket->bytesAvailable() )
! m_extSocket->readBlock( buffer, 1024 );
}
//-----------------------------------------------
KExtendedSocket* ScanDomainWorker::checkIP( const struct sockaddr_in& addr ) {
! int flags = KExtendedSocket::inetSocket | KExtendedSocket::streamSocket/* | KExtendedSocket::bufferedSocket*/
| KExtendedSocket::ipv4Socket | KExtendedSocket::ipv6Socket ;
m_extSocket = new KExtendedSocket( QString::fromLatin1(inet_ntoa( addr.sin_addr )), ntohs( addr.sin_port ), flags );
// kdDebug() << k_funcinfo << "IP=" << inet_ntoa( addr.sin_addr ) << endl;
***************
*** 203,207 ****
m_extSocket->setTimeout( 3 );
if( m_extSocket->connect() >= 0) {
- m_systemMutex.unlock();
return m_extSocket;
}
--- 198,201 ----
***************
*** 214,218 ****
m_extSocket = 0L;
}
- m_systemMutex.unlock();
// kdDebug() << k_funcinfo << msg << endl;
ScanDomainEvent* event = new ScanDomainEvent( this, ScanDomainEvent::Error, msg, ScanDomainEvent::SocketError );
--- 208,211 ----
***************
*** 234,237 ****
--- 227,231 ----
memset( buffer, 0x00, 1024 );
m_extSocket->readBlock( buffer, 1024 );
+
regExp.setPattern( QString::fromLatin1("login ok") );
regExp.setCaseSensitive( false );
***************
*** 261,264 ****
--- 255,263 ----
m_extSocket->readBlock( buffer, 1024 );
msg = i18n("System type: %1").arg( buffer );
+ if( msg.right( 1 ) == "\r" || msg.right( 1 ) == "\n" )
+ msg = msg.left( msg.length() -1 );
+ else if( msg.right( 2 ) == "\r\n" )
+ msg = msg.left( msg.length() - 2 );
+
event = new ScanDomainEvent( this, ScanDomainEvent::SystemType, msg );
QApplication::postEvent( m_msgReceiver, event );
|