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.
This commit is contained in:
Viktor Szakats
2011-02-06 19:23:28 +00:00
parent 1325b083d1
commit cc93259265
3 changed files with 27 additions and 62 deletions

View File

@@ -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.

View File

@@ -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" => { "<ip|host>" , "Add allow filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowadd" ) } },;
"allowdel" => { "<ip|host>" , "Remove allow filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowdel" ) } },;
"blockadd" => { "<ip|host>" , "Add block filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockadd" ) } },;
"blockdel" => { "<ip|host>" , "Remove block filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockdel" ) } },;
"allowaddadmin" => { "<ip|host>" , "Add allow filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowaddadmin" ) } },;
"allowdeladmin" => { "<ip|host>" , "Remove allow filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowdeladmin" ) } },;
"blockaddadmin" => { "<ip|host>" , "Add block filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockaddadmin" ) } },;
"blockdeladmin" => { "<ip|host>" , "Remove block filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockdeladmin" ) } },;
"allowadd" => { "<ip>" , "Add allow filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowadd" ) } },;
"allowdel" => { "<ip>" , "Remove allow filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowdel" ) } },;
"blockadd" => { "<ip>" , "Add block filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockadd" ) } },;
"blockdel" => { "<ip>" , "Remove block filter" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockdel" ) } },;
"allowaddadmin" => { "<ip>" , "Add allow filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowaddadmin" ) } },;
"allowdeladmin" => { "<ip>" , "Remove allow filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_allowdeladmin" ) } },;
"blockaddadmin" => { "<ip>" , "Add block filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockaddadmin" ) } },;
"blockdeladmin" => { "<ip>" , "Remove block filter for management connections" , {| cCommand | cmdConnFilterMod( pConnection, cCommand, "hbnetiomgm_blockdeladmin" ) } },;
"filtsave" => { "" , "Save filters to disk." , {|| cmdConnFilterSave( pConnection ) } },;
"stop" => { "[<ip:port>|all]", "Stop specified connection(s)." , {| cCommand | cmdConnStop( pConnection, cCommand ) } },;
"clientinfo" => { "[<ip:port>" , "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

View File

@@ -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