From cc93259265db96c6d5f44f9bc83982b024fff8cf Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sun, 6 Feb 2011 19:23:28 +0000 Subject: [PATCH] 2011-02-06 20:22 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbnetio/utils/hbnetio/netiosrv.prg * contrib/hbnetio/utils/hbnetio/netiocon.prg - Deleted filtering on client host name. * contrib/hbnetio/utils/hbnetio/netiocon.prg ! Fixed RTE when there were no notifications. --- harbour/ChangeLog | 8 +++ .../hbnetio/utils/hbnetio/netiocon.prg | 27 ++++++---- .../hbnetio/utils/hbnetio/netiosrv.prg | 54 ++----------------- 3 files changed, 27 insertions(+), 62 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index d567c2d354..338a1d6f6b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,14 @@ The license applies to all entries newer than 2009-04-28. */ +2011-02-06 20:22 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbnetio/utils/hbnetio/netiosrv.prg + * contrib/hbnetio/utils/hbnetio/netiocon.prg + - Deleted filtering on client host name. + + * contrib/hbnetio/utils/hbnetio/netiocon.prg + ! Fixed RTE when there were no notifications. + 2011-02-06 17:10 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * contrib/make.hbs ! Fixed RTE regression in recent hbx updates. diff --git a/harbour/contrib/hbnetio/utils/hbnetio/netiocon.prg b/harbour/contrib/hbnetio/utils/hbnetio/netiocon.prg index 2b7d2f20c1..a16063b13b 100644 --- a/harbour/contrib/hbnetio/utils/hbnetio/netiocon.prg +++ b/harbour/contrib/hbnetio/utils/hbnetio/netiocon.prg @@ -54,6 +54,8 @@ PROCEDURE hbnetiocon_cmdUI( cIP, nPort, cPassword ) LOCAL pConnection LOCAL nStreamID + LOCAL aNotification + SET DATE ANSI SET CENTURY ON SET CONFIRM ON @@ -87,14 +89,14 @@ PROCEDURE hbnetiocon_cmdUI( cIP, nPort, cPassword ) "logconn" => { "" , "Enable logging incoming connections." , {|| cmdConnLogEnable( pConnection, .T. ) } },; "filt" => { "" , "Show filters." , {|| cmdConnFilters( pConnection, .F. ) } },; "filtadmin" => { "" , "Show filters for management connections." , {|| cmdConnFilters( pConnection, .T. ) } },; - "allowadd" => { "" , "Add allow filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowadd" ) } },; - "allowdel" => { "" , "Remove allow filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowdel" ) } },; - "blockadd" => { "" , "Add block filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockadd" ) } },; - "blockdel" => { "" , "Remove block filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockdel" ) } },; - "allowaddadmin" => { "" , "Add allow filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowaddadmin" ) } },; - "allowdeladmin" => { "" , "Remove allow filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowdeladmin" ) } },; - "blockaddadmin" => { "" , "Add block filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockaddadmin" ) } },; - "blockdeladmin" => { "" , "Remove block filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockdeladmin" ) } },; + "allowadd" => { "" , "Add allow filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowadd" ) } },; + "allowdel" => { "" , "Remove allow filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowdel" ) } },; + "blockadd" => { "" , "Add block filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockadd" ) } },; + "blockdel" => { "" , "Remove block filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockdel" ) } },; + "allowaddadmin" => { "" , "Add allow filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowaddadmin" ) } },; + "allowdeladmin" => { "" , "Remove allow filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowdeladmin" ) } },; + "blockaddadmin" => { "" , "Add block filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockaddadmin" ) } },; + "blockdeladmin" => { "" , "Remove block filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockdeladmin" ) } },; "filtsave" => { "" , "Save filters to disk." , {|| cmdConnFilterSave( pConnection ) } },; "stop" => { "[|all]", "Stop specified connection(s)." , {| cCommand | cmdConnStop( pConnection, cCommand ) } },; "clientinfo" => { "[" , "Show client details." , {| cCommand | cmdConnClientInfo( pConnection, cCommand ) } },; @@ -161,9 +163,12 @@ PROCEDURE hbnetiocon_cmdUI( cIP, nPort, cPassword ) /* Dump all messages in queue */ /* TODO: Move this to a separate thread and display it in a dedicated screen area. */ - FOR EACH cMsg IN netio_GetData( nStreamID ) /* TODO: Protect against flood */ - QQOut( "> message from server:", cMsg, hb_eol() ) - NEXT + aNotification := netio_GetData( nStreamID ) + IF hb_isArray( aNotification ) + FOR EACH cMsg IN aNotification /* TODO: Protect against flood */ + QQOut( "> message from server:", cMsg, hb_eol() ) + NEXT + ENDIF IF Empty( cCommand ) LOOP diff --git a/harbour/contrib/hbnetio/utils/hbnetio/netiosrv.prg b/harbour/contrib/hbnetio/utils/hbnetio/netiosrv.prg index 89f9197e3a..cb26f8ee64 100644 --- a/harbour/contrib/hbnetio/utils/hbnetio/netiosrv.prg +++ b/harbour/contrib/hbnetio/utils/hbnetio/netiosrv.prg @@ -397,15 +397,12 @@ STATIC PROCEDURE netiosrv_notifyclients( netiomgm, cMsg ) STATIC FUNCTION netiosrv_callback( netiomgm, netiosrv, pConnectionSocket, lManagement ) LOCAL aAddressPeer LOCAL cAddressPeer - LOCAL nAddressFamily - LOCAL aNamePeer - LOCAL cNamePeer LOCAL lBlocked IF netiosrv[ _NETIOSRV_lAcceptConn ] netio_srvStatus( pConnectionSocket, NETIO_SRVINFO_PEERADDRESS, @aAddressPeer ) - cAddressPeer := AddrToIPPort( aAddressPeer, @nAddressFamily ) + cAddressPeer := AddrToIPPort( aAddressPeer ) lBlocked := .F. @@ -414,20 +411,7 @@ STATIC FUNCTION netiosrv_callback( netiomgm, netiosrv, pConnectionSocket, lManag hb_mutexLock( netiosrv[ _NETIOSRV_mtxFilters ] ) IF !( cAddressPeer $ netiosrv[ _NETIOSRV_hAllow ] ) IF hb_HScan( netiosrv[ _NETIOSRV_hAllow ], {| tmp | hb_WildMatch( tmp, cAddressPeer ) } ) == 0 - aNamePeer := hb_socketGetHosts( cAddressPeer, nAddressFamily ) - IF Empty( aNamePeer ) - lBlocked := .T. - ELSE - FOR EACH cNamePeer IN aNamePeer - IF !( cNamePeer $ netiosrv[ _NETIOSRV_hAllow ] ) - IF hb_HScan( netiosrv[ _NETIOSRV_hAllow ], {| tmp | hb_WildMatch( tmp, cNamePeer ) } ) == 0 - /* Not on allow list */ - lBlocked := .T. - EXIT - ENDIF - ENDIF - NEXT - ENDIF + lBlocked := .T. ENDIF ENDIF hb_mutexUnlock( netiosrv[ _NETIOSRV_mtxFilters ] ) @@ -447,23 +431,6 @@ STATIC FUNCTION netiosrv_callback( netiomgm, netiosrv, pConnectionSocket, lManag ELSE IF hb_HScan( netiosrv[ _NETIOSRV_hBlock ], {| tmp | hb_WildMatch( tmp, cAddressPeer ) } ) > 0 lBlocked := .T. - ELSE - IF aNamePeer == NIL - aNamePeer := hb_socketGetHosts( cAddressPeer, nAddressFamily ) - ENDIF - IF ! Empty( aNamePeer ) - FOR EACH cNamePeer IN aNamePeer - IF cNamePeer $ netiosrv[ _NETIOSRV_hBlock ] - lBlocked := .T. - EXIT - ELSE - IF hb_HScan( netiosrv[ _NETIOSRV_hBlock ], {| tmp | hb_WildMatch( tmp, cNamePeer ) } ) > 0 - lBlocked := .T. - EXIT - ENDIF - ENDIF - NEXT - ENDIF ENDIF ENDIF hb_mutexUnlock( netiosrv[ _NETIOSRV_mtxFilters ] ) @@ -795,30 +762,15 @@ STATIC FUNCTION ConnStatusStr( nStatus ) RETURN "UNKNOWN:" + hb_ntos( nStatus ) -STATIC FUNCTION AddrToIPPort( aAddr, /* @ */ nFamily ) +STATIC FUNCTION AddrToIPPort( aAddr ) LOCAL cIP IF hb_isArray( aAddr ) .AND. ; ( aAddr[ HB_SOCKET_ADINFO_FAMILY ] == HB_SOCKET_AF_INET .OR. ; aAddr[ HB_SOCKET_ADINFO_FAMILY ] == HB_SOCKET_AF_INET6 ) cIP := aAddr[ HB_SOCKET_ADINFO_ADDRESS ] + ":" + hb_ntos( aAddr[ HB_SOCKET_ADINFO_PORT ] ) - nFamily := aAddr[ HB_SOCKET_ADINFO_FAMILY ] ELSE cIP := "(?)" - nFamily := -1 - ENDIF - - RETURN cIP - -STATIC FUNCTION AddrToIP( aAddr ) - LOCAL cIP - - IF hb_isArray( aAddr ) .AND. ; - ( aAddr[ HB_SOCKET_ADINFO_FAMILY ] == HB_SOCKET_AF_INET .OR. ; - aAddr[ HB_SOCKET_ADINFO_FAMILY ] == HB_SOCKET_AF_INET6 ) - cIP := aAddr[ HB_SOCKET_ADINFO_ADDRESS ] - ELSE - cIP := "" ENDIF RETURN cIP