diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5acf61bbbf..2a823efc85 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,22 @@ The license applies to all entries newer than 2009-04-28. */ +2011-02-05 23:19 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbnetio/utils/hbnetioq/netiosrq.prg + * Roughly reworked to act as management client UI. + I didn't touch any GUI logic. + + Accept server port and password in ini file, which + is now named 'hbnetioq.exe.config'. This can also + be extended and fine tuned at will. + ; To test, run it like the console client, f.e.: + hbnetio -adminpass=toptopsecret + hbnetioq -pass=toptopsecret + ; NOTE: Only one RPC call is implemented, pls fill the rest, + plus some periodic refresh would have to implemented + for the browse. Pls see + contrib/hbnetio/utils/hbnetio/netiocon.prg + for possible RPC commands and returned values. + 2011-02-05 22:25 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * contrib/make.hbs ! Fixed recent regression: build hbx only for hblib/hbdyn projects. diff --git a/harbour/contrib/hbnetio/utils/hbnetioq/netiosrq.prg b/harbour/contrib/hbnetio/utils/hbnetioq/netiosrq.prg index 19e4f53fab..aeff858d1a 100644 --- a/harbour/contrib/hbnetio/utils/hbnetioq/netiosrq.prg +++ b/harbour/contrib/hbnetio/utils/hbnetioq/netiosrq.prg @@ -4,11 +4,10 @@ /* * Harbour Project source code: - * Harbour NETIO server management QT client + server + * Harbour NETIO server management QT client * * Copyright 2011 Pritpal Bedi * Copyright 2009-2011 Viktor Szakats (harbour.01 syenar.hu) - * Copyright 2009 Przemyslaw Czerpak * www - http://harbour-project.org * * This program is free software; you can redistribute it and/or modify @@ -28,26 +27,6 @@ * */ -/* netio_mtserver() needs MT HVM version */ -REQUEST HB_MT -REQUEST __HB_EXTERN__ - -#define _RPC_FILTER "HBNETIOSRV_RPCMAIN" - -#define _NETIOSRV_nPort 1 -#define _NETIOSRV_cIFAddr 2 -#define _NETIOSRV_cRootDir 3 -#define _NETIOSRV_lRPC 4 -#define _NETIOSRV_cRPCFFileName 5 -#define _NETIOSRV_hRPCFHRB 6 -#define _NETIOSRV_lEncryption 7 -#define _NETIOSRV_pListenSocket 8 -#define _NETIOSRV_nCompressionLevel 9 -#define _NETIOSRV_nStrategy 10 -#define _NETIOSRV_cPassword 11 -#define _NETIOSRV_cINI 12 -#define _NETIOSRV_MAX_ 12 - #define DAT_CONNSOCKET 1 #define DAT_SERIAL 2 #define DAT_ACTIVATED 3 @@ -74,80 +53,105 @@ REQUEST __HB_EXTERN__ /*----------------------------------------------------------------------*/ -Function Main( ... ) - LOCAL netiosrv[ _NETIOSRV_MAX_ ] - LOCAL cParam, cExt, cFile +#define _NETIOMGM_IPV4_DEF "127.0.0.1" +#define _NETIOMGM_PORT_DEF 2940 - netiosrv[ _NETIOSRV_nPort ] := 2941 - netiosrv[ _NETIOSRV_cIFAddr ] := "0.0.0.0" - netiosrv[ _NETIOSRV_cRootDir ] := hb_dirBase() - netiosrv[ _NETIOSRV_lRPC ] := .F. - netiosrv[ _NETIOSRV_lEncryption ] := .F. +PROCEDURE Main( ... ) + LOCAL cParam + + LOCAL cIP := _NETIOMGM_IPV4_DEF + LOCAL nPort := _NETIOMGM_PORT_DEF + LOCAL cPassword := "" + + readINI( @cIP, @nPort, @cPassword ) FOR EACH cParam IN { ... } DO CASE - CASE Lower( Left( cParam, 5 ) ) == "-ini=" - netiosrv[ _NETIOSRV_cINI ] := AllTrim( SubStr( cParam, 6 ) ) - CASE Lower( Left( cParam, 6 ) ) == "-port=" - netiosrv[ _NETIOSRV_nPort ] := Val( SubStr( cParam, 7 ) ) - CASE Lower( Left( cParam, 7 ) ) == "-iface=" - netiosrv[ _NETIOSRV_cIFAddr ] := SubStr( cParam, 8 ) - CASE Lower( Left( cParam, 9 ) ) == "-rootdir=" - netiosrv[ _NETIOSRV_cRootDir ] := SubStr( cParam, 10 ) - CASE Lower( Left( cParam, 6 ) ) == "-pass=" - netiosrv[ _NETIOSRV_cPassword ]:= SubStr( cParam, 7 ) - hb_StrClear( @cParam ) - CASE Lower( Left( cParam, 5 ) ) == "-rpc=" - netiosrv[ _NETIOSRV_cRPCFFileName ] := SubStr( cParam, 6 ) - hb_FNameSplit( netiosrv[ _NETIOSRV_cRPCFFileName ], NIL, NIL, @cExt ) - cExt := Lower( cExt ) - SWITCH cExt - CASE ".prg" - CASE ".hbs" - CASE ".hrb" - EXIT - OTHERWISE - cExt := FileSig( cFile ) - ENDSWITCH - SWITCH cExt - CASE ".prg" - CASE ".hbs" - cFile := HB_COMPILEBUF( HB_ARGV( 0 ), "-n2", "-w", "-es2", "-q0",; - "-D" + "__HBSCRIPT__HBNETIOSRV", netiosrv[ _NETIOSRV_cRPCFFileName ] ) - IF cFile != NIL - netiosrv[ _NETIOSRV_hRPCFHRB ] := hb_hrbLoad( HB_HRB_BIND_FORCELOCAL, cFile ) - ENDIF - EXIT - OTHERWISE - netiosrv[ _NETIOSRV_hRPCFHRB ] := hb_hrbLoad( HB_HRB_BIND_FORCELOCAL, netiosrv[ _NETIOSRV_cRPCFFileName ] ) - EXIT - ENDSWITCH - netiosrv[ _NETIOSRV_lRPC ] := ! Empty( netiosrv[ _NETIOSRV_hRPCFHRB ] ) .AND. ! Empty( hb_hrbGetFunSym( netiosrv[ _NETIOSRV_hRPCFHRB ], _RPC_FILTER ) ) - IF ! netiosrv[ _NETIOSRV_lRPC ] - netiosrv[ _NETIOSRV_cRPCFFileName ] := NIL - netiosrv[ _NETIOSRV_hRPCFHRB ] := NIL + CASE Lower( Left( cParam, 6 ) ) == "-addr=" + hbnetiocon_IPPortSplit( SubStr( cParam, 7 ), @cIP, @nPort ) + IF Empty( nPort ) + nPort := _NETIOMGM_PORT_DEF ENDIF - CASE Lower( cParam ) == "-rpc" - netiosrv[ _NETIOSRV_lRPC ] := .T. + CASE Lower( Left( cParam, 6 ) ) == "-pass=" + cPassword := SubStr( cParam, 7 ) + hb_StrClear( @cParam ) CASE Lower( cParam ) == "--version" - RETURN NIL + RETURN CASE Lower( cParam ) == "-help" .OR. ; - Lower( cParam ) == "--help" + Lower( cParam ) == "--help" HB_Usage() - RETURN NIL + RETURN OTHERWISE OutStd( "Warning: Unkown parameter ignored: " + cParam + hb_eol() ) ENDCASE NEXT - NetIOServer():new():create( netiosrv ) + NetIOMgmtClient():new():create( cIP, nPort, cPassword ) - RETURN ( NIL ) + RETURN + +PROCEDURE hbnetiocon_IPPortSplit( cAddr, /* @ */ cIP, /* @ */ nPort ) + LOCAL tmp + + IF ! Empty( cAddr ) + cIP := cAddr + IF ( tmp := At( ":", cIP ) ) > 0 + nPort := Val( SubStr( cIP, tmp + Len( ":" ) ) ) + cIP := Left( cIP, tmp - 1 ) + ELSE + nPort := NIL + ENDIF + ENDIF + + RETURN + +STATIC FUNCTION MyClientInfo() + LOCAL hInfo := { => } + + hb_hKeepOrder( hInfo, .T. ) + + hInfo[ "OS()" ] := OS() + hInfo[ "Version()" ] := Version() + hInfo[ "hb_Compiler()" ] := hb_Compiler() + hInfo[ "NetName()" ] := NetName() + hInfo[ "hb_UserName()" ] := hb_UserName() + + RETURN hInfo /*----------------------------------------------------------------------*/ -CLASS NetIOServer - DATA netiosrv +STATIC PROCEDURE readINI( /* @ */ cIP, /* @ */ nPort, /* @ */ cPassword ) + LOCAL cBuffer, aTxt, s, n + + cBuffer := hb_memoread( hb_ProgName() + ".config" ) + + IF ! empty( cBuffer ) + aTxt := hb_atokens( strtran( cBuffer, chr( 13 ) ), chr( 10 ) ) + FOR EACH s IN aTxt + s := alltrim( s ) + IF left( lower( s ), 2 ) == "ip" + IF ( n := at( "=", s ) ) > 0 + cIP := alltrim( substr( s, n + 1 ) ) + ENDIF + ELSEIF left( lower( s ), 4 ) == "port" + IF ( n := at( "=", s ) ) > 0 + nPort := val( alltrim( substr( s, n + 1 ) ) ) + ENDIF + ELSEIF left( lower( s ), 8 ) == "password" + IF ( n := at( "=", s ) ) > 0 + cPassword := alltrim( substr( s, n + 1 ) ) + ENDIF + ENDIF + NEXT + ENDIF + + RETURN + +/*----------------------------------------------------------------------*/ + +CLASS NetIOMgmtClient + DATA pConnection + DATA nNumConxn INIT 0 DATA oDlg DATA oBrw @@ -178,13 +182,9 @@ CLASS NetIOServer 0 } } // files opened METHOD new() - METHOD create( netiosrv ) + METHOD create( cIP, nPort, cPassword ) METHOD execEvent( cEvent, p ) - METHOD custom_netio_server( pConnectionSocket ) - METHOD register_connection( pConnectionSocket ) - METHOD unregister_connection( pConnectionSocket ) - METHOD buildToolBar() METHOD buildSystemTray() METHOD buildBrowser() @@ -202,48 +202,34 @@ CLASS NetIOServer METHOD lastRec() METHOD recNo() METHOD goto( nRec ) - METHOD readINI() METHOD manageIPs() ENDCLASS /*----------------------------------------------------------------------*/ -METHOD NetIOServer:new() +METHOD NetIOMgmtClient:new() RETURN Self /*----------------------------------------------------------------------*/ -METHOD NetIOServer:create( netiosrv ) +METHOD NetIOMgmtClient:create( cIP, nPort, cPassword ) LOCAL nEvent, mp1, mp2, oXbp - ::netiosrv := netiosrv - - netiosrv[ _NETIOSRV_pListenSocket ] := ; - netio_mtserver( netiosrv[ _NETIOSRV_nPort ],; - netiosrv[ _NETIOSRV_cIFAddr ],; - netiosrv[ _NETIOSRV_cRootDir ],; - iif( Empty( netiosrv[ _NETIOSRV_hRPCFHRB ] ), netiosrv[ _NETIOSRV_lRPC ], ; - hb_hrbGetFunSym( netiosrv[ _NETIOSRV_hRPCFHRB ], _RPC_FILTER ) ),; - netiosrv[ _NETIOSRV_cPassword ], ; - netiosrv[ _NETIOSRV_nCompressionLevel ], ; - netiosrv[ _NETIOSRV_nStrategy ], ; - {|p| ::custom_netio_server( p ) } ) - - netiosrv[ _NETIOSRV_lEncryption ] := ! Empty( netiosrv[ _NETIOSRV_cPassword ] ) - - IF Empty( netiosrv[ _NETIOSRV_pListenSocket ] ) - MsgBox( "Cannot start server." ) + ::pConnection := netio_getconnection( cIP, nPort,, cPassword ) + cPassword := NIL + IF Empty( ::pConnection ) + MsgBox( "Cannot connect to server." ) ELSE + netio_funcexec( ::pConnection, "hbnetiomgm_setclientinfo", MyClientInfo() ) + netio_OpenItemStream( ::pConnection, "hbnetiomgm_cargo", "netiocqt" ) + QResource():registerResource_1( hbqtres_netiosrq(), ":/resource" ) - ::readINI() - ::pMtx := hb_mutexCreate() - ::cTitle := "NetIO Server [ " + netiosrv[ _NETIOSRV_cIFAddr ] + " : " + ; - ltrim( str( int( netiosrv[ _NETIOSRV_nPort ] ) ) ) + " : " + ; - netiosrv[ _NETIOSRV_cRootDir ] + " ]" + ::cTitle := "NetIO Server [" + cIP + ":" + ; + hb_ntos( int( nPort ) ) + "]" ::oDlg := XbpDialog():new( , , { 20,20 }, { 850,300 } ) ::oDlg:title := ::cTitle @@ -277,8 +263,7 @@ METHOD NetIOServer:create( netiosrv ) oXbp:handleEvent( nEvent, mp1, mp2 ) ENDDO - netio_serverStop( netiosrv[ _NETIOSRV_pListenSocket ] ) - netiosrv[ _NETIOSRV_pListenSocket ] := NIL + ::pConnection := NIL ::oDlg:destroy() ENDIF @@ -287,71 +272,11 @@ METHOD NetIOServer:create( netiosrv ) /*----------------------------------------------------------------------*/ -METHOD NetIOServer:custom_netio_server( pConnectionSocket ) - IF ::register_connection( pConnectionSocket ) - BEGIN SEQUENCE - netio_server( pConnectionSocket ) - END SEQUENCE - ::unregister_connection( pConnectionSocket ) - ENDIF - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD NetIOServer:register_connection( pConnectionSocket ) - LOCAL aPeer, cIP := "", nPort := 0 - - netio_srvStatus( pConnectionSocket, NETIO_SRVINFO_PEERADDRESS, @aPeer ) - IF hb_isArray( aPeer ) - IF len( aPeer ) >= 2 - cIP := xtos( aPeer[ 2 ] ) - ENDIF - IF len( aPeer ) >= 3 - nPort := val( xtos( aPeer[ 3 ] ) ) - ENDIF - ENDIF - - IF !empty( ::aIPs ) .AND. ascan( ::aIPs, {|e_| e_[ 1 ] == cIP .AND. e_[ 2 ] == "Y" } ) > 0 - RETURN .f. - ENDIF - - IF hb_mutexLock( ::pMtx ) - IF ::aData[ 1,2 ] == 0 - ::aData[ 1 ] := { pConnectionSocket, 1, .t., pad( cIP, 15 ), nPort, dtoc( date() ) + " " + time(), space( 18 ), 0, 0, 0 } - ELSE - aadd( ::aData, { pConnectionSocket, len( ::aData ) + 1, .t., pad( cIP, 15 ), nPort, dtoc( date() ) + " " + time(), space( 18 ), 0, 0, 0 } ) - ENDIF - hb_mutexUnlock( ::pMtx ) - ENDIF - ::nNumConxn++ - ::oDlg:title := ::cTitle + " - " + ltrim( str( ::nNumConxn, 6, 0 ) ) - ::refresh() - - RETURN .t. - -/*----------------------------------------------------------------------*/ - -METHOD NetIOServer:unregister_connection( pConnectionSocket ) - LOCAL n - - ::nNumConxn-- - ::oDlg:title := ::cTitle + " - " + ltrim( str( ::nNumConxn, 6, 0 ) ) - if ( n := ascan( ::aData, {|e_| e_[ DAT_CONNSOCKET ] == pConnectionSocket } ) ) > 0 - IF hb_mutexLock( ::pMtx ) - ::aData[ n, DAT_ACTIVATED ] := .f. - ::aData[ n, DAT_TIMEOUT ] := dtoc( date() ) + " " + time() - ::aData[ n, DAT_CONNSOCKET ] := NIL - hb_mutexUnlock( ::pMtx ) - ENDIF - ENDIF - ::refresh() - - RETURN NIL - -/*----------------------------------------------------------------------*/ - -METHOD NetIOServer:execEvent( cEvent, p ) - LOCAL qEvent, oMenu, txt_, s, cTmp, cTmp1, qItem, n, oXbp +METHOD NetIOMgmtClient:execEvent( cEvent, p ) + LOCAL qEvent, oMenu, txt_, s, cTmp, qItem, n +#if 0 + LOCAL cTmp1, oXbp +#endif SWITCH cEvent CASE "browser_contextMenu" @@ -366,11 +291,10 @@ METHOD NetIOServer:execEvent( cEvent, p ) EXIT CASE "About" txt_:= {} - AAdd( txt_, "Harbour NetIO Server" ) + AAdd( txt_, "Harbour NetIO Management Client" ) AAdd( txt_, "Developed by:" ) - AAdd( txt_, "Przemyslaw Czerpak" ) - AAdd( txt_, "Viktor Szakats" ) AAdd( txt_, "Pritpal Bedi" ) + AAdd( txt_, "Viktor Szakats" ) AAdd( txt_, "" ) AAdd( txt_, "built with:" ) AAdd( txt_, HB_VERSION() ) @@ -381,7 +305,7 @@ METHOD NetIOServer:execEvent( cEvent, p ) AAdd( txt_, "http://harbour-project.org/" ) s := "" aeval( txt_, {|e| s += e + chr( 10 ) } ) - MsgBox( s, " About NetIO Server" ) + MsgBox( s, " About NetIO Management Client" ) EXIT CASE "Terminate" ::terminate() @@ -419,7 +343,7 @@ METHOD NetIOServer:execEvent( cEvent, p ) EXIT CASE "qTimer_timeOut" ::oDlg:hide() - ::oSys:setToolTip( "Harbour NetIO Server: " + ::oDlg:title ) + ::oSys:setToolTip( "Connected to Harbour NetIO Server: " + ::oDlg:title ) ::oSys:show() EXIT CASE "qSystemTrayIcon_activated" @@ -444,6 +368,7 @@ METHOD NetIOServer:execEvent( cEvent, p ) ENDIF ENDIF EXIT +#if 0 CASE "ips_buttonSave" FOR n := 1 TO p:q_listIPs:count() qItem := p:q_listIPs:item( n - 1 ) @@ -462,6 +387,7 @@ METHOD NetIOServer:execEvent( cEvent, p ) ENDIF p:done( 0 ) EXIT +#endif CASE "ips_buttonAdd" IF ! empty( cTmp := QInputDialog():getText( ::oDlg:oWidget, "Manage Connections", "IPv4:IPv6:" ) ) qItem := QListWidgetItem() @@ -478,7 +404,7 @@ METHOD NetIOServer:execEvent( cEvent, p ) /*----------------------------------------------------------------------*/ -METHOD NetIOServer:manageIPs() +METHOD NetIOMgmtClient:manageIPs() LOCAL oUI, a_, qItem oUI := hbqtui_ManageIPs( ::oDlg:oWidget ) @@ -502,38 +428,7 @@ METHOD NetIOServer:manageIPs() /*----------------------------------------------------------------------*/ -METHOD NetIOServer:readINI() - LOCAL cBuffer, aTxt, s, n - - IF empty( ::netiosrv[ _NETIOSRV_cINI ] ) - RETURN Self - ENDIF - IF hb_fileExists( ::netiosrv[ _NETIOSRV_cINI ] ) - cBuffer := hb_memoread( ::netiosrv[ _NETIOSRV_cINI ] ) - - IF ! empty( cBuffer ) - aTxt := hb_atokens( strtran( cBuffer, chr( 13 ) ), chr( 10 ) ) - FOR EACH s IN aTxt - s := alltrim( s ) - IF left( lower( s ), 11 ) == "netiosrv_ip" - IF ( n := at( "=", s ) ) > 0 - s := alltrim( substr( s, n + 1 ) ) - IF ( n := at( ";", s ) ) > 0 - aadd( ::aIPs, { substr( s, 1, n-1 ), substr( s, n+1 ) } ) - ELSE - aadd( ::aIPs, { s, " " } ) - ENDIF - ENDIF - ENDIF - NEXT - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD NetIOServer:showDlgBySystemTrayIconCommand() +METHOD NetIOMgmtClient:showDlgBySystemTrayIconCommand() ::oSys:hide() @@ -552,7 +447,7 @@ METHOD NetIOServer:showDlgBySystemTrayIconCommand() /*----------------------------------------------------------------------*/ -METHOD NetIOServer:buildBrowser() +METHOD NetIOMgmtClient:buildBrowser() LOCAL s ::oBrw := XbpBrowse():new():create( ::oDlg:drawingArea, , { 0,0 }, ::oDlg:currentSize() ) @@ -586,7 +481,7 @@ METHOD NetIOServer:buildBrowser() /*----------------------------------------------------------------------*/ -METHOD NetIOServer:terminate() +METHOD NetIOMgmtClient:terminate() IF ::aData[ ::recNo(), DAT_ACTIVATED ] .AND. ::aData[ ::recNo(), DAT_CONNSOCKET ] != NIL IF ConfirmBox( , ; @@ -595,7 +490,7 @@ METHOD NetIOServer:terminate() , ; XBPMB_CRITICAL ) == XBPMB_RET_OK - netio_serverStop( ::aData[ ::recNo(), DAT_CONNSOCKET ], .t. ) + netio_funcexec( ::pConnection, "hbnetiomgm_shutdown" ) ENDIF ENDIF @@ -603,7 +498,7 @@ METHOD NetIOServer:terminate() /*----------------------------------------------------------------------*/ -METHOD NetIOServer:refresh() +METHOD NetIOMgmtClient:refresh() ::oBrw:refreshAll() ::oBrw:forceStable() ::oDlg:oWidget:setGeometry( ::oDlg:oWidget:geometry() ) @@ -611,7 +506,7 @@ METHOD NetIOServer:refresh() /*----------------------------------------------------------------------*/ -METHOD NetIOServer:skipBlock( nHowMany ) +METHOD NetIOMgmtClient:skipBlock( nHowMany ) LOCAL nRecs, nCurPos, nSkipped nRecs := len( ::aData ) @@ -639,21 +534,21 @@ METHOD NetIOServer:skipBlock( nHowMany ) /*----------------------------------------------------------------------*/ -METHOD NetIOServer:goTop() +METHOD NetIOMgmtClient:goTop() ::nCurRec := 1 ::refresh() RETURN Self /*----------------------------------------------------------------------*/ -METHOD NetIOServer:goBottom() +METHOD NetIOMgmtClient:goBottom() ::nCurRec := len( ::aData ) ::refresh() RETURN Self /*----------------------------------------------------------------------*/ -METHOD NetIOServer:goto( nRec ) +METHOD NetIOMgmtClient:goto( nRec ) IF nRec > 0 .AND. nRec <= len( ::aData ) ::nCurRec := nRec ::refresh() @@ -662,17 +557,17 @@ METHOD NetIOServer:goto( nRec ) /*----------------------------------------------------------------------*/ -METHOD NetIOServer:lastRec() +METHOD NetIOMgmtClient:lastRec() RETURN len( ::aData ) /*----------------------------------------------------------------------*/ -METHOD NetIOServer:recNo() +METHOD NetIOMgmtClient:recNo() RETURN ::nCurRec /*----------------------------------------------------------------------*/ -METHOD NetIOServer:buildColumns() +METHOD NetIOMgmtClient:buildColumns() LOCAL aPP, oXbpColumn LOCAL nClrBG := GRA_CLR_WHITE LOCAL nClrHFg := GRA_CLR_BLACK //YELLOW @@ -840,7 +735,7 @@ METHOD NetIOServer:buildColumns() /*----------------------------------------------------------------------*/ -METHOD NetIOServer:buildToolBar() +METHOD NetIOMgmtClient:buildToolBar() LOCAL oTBar oTBar := XbpToolBar():new( ::oDlg ) @@ -863,9 +758,9 @@ METHOD NetIOServer:buildToolBar() /*----------------------------------------------------------------------*/ -METHOD NetIOServer:confirmExit() +METHOD NetIOMgmtClient:confirmExit() - IF ConfirmBox( , "Do you want to shut-down the server ?", " Please confirm", XBPMB_YESNO, XBPMB_CRITICAL ) == XBPMB_RET_YES + IF ConfirmBox( , "Do you want to exit the management client?", " Please confirm", XBPMB_YESNO, XBPMB_CRITICAL ) == XBPMB_RET_YES PostAppEvent( xbeP_Quit, , , ::oDlg ) ENDIF @@ -873,7 +768,7 @@ METHOD NetIOServer:confirmExit() /*----------------------------------------------------------------------*/ -METHOD NetIOServer:buildSystemTray() +METHOD NetIOMgmtClient:buildSystemTray() IF empty( ::oSys ) ::oSys := QSystemTrayIcon( ::oDlg:oWidget ) @@ -891,7 +786,7 @@ METHOD NetIOServer:buildSystemTray() ::oSys:setContextMenu( ::oSysMenu ) ::oSys:hide() - ::oSys:setToolTip( "Harbour NetIO Server: " + ::oDlg:title ) + ::oSys:setToolTip( "Connected to Harbour NetIO Server: " + ::oDlg:title ) ENDIF ENDIF @@ -900,50 +795,16 @@ METHOD NetIOServer:buildSystemTray() /*----------------------------------------------------------------------*/ STATIC FUNCTION AppSys() - RETURN ( NIL ) - -/*----------------------------------------------------------------------*/ - -STATIC FUNCTION FileSig( cFile ) - LOCAL hFile - LOCAL cBuff, cSig, cExt - - cExt := ".prg" - hFile := FOpen( cFile, FO_READ ) - IF hFile != F_ERROR - cSig := hb_hrbSignature() - cBuff := Space( Len( cSig ) ) - FRead( hFile, @cBuff, Len( cSig ) ) - FClose( hFile ) - IF cBuff == cSig - cExt := ".hrb" - ENDIF - ENDIF - - RETURN cExt - -/*----------------------------------------------------------------------*/ - -STATIC PROCEDURE ShowConfig( netiosrv ) - LOCAL cMsg := "" - - cMsg += "Listening on: " + netiosrv[ _NETIOSRV_cIFAddr ] + ":" + hb_ntos( netiosrv[ _NETIOSRV_nPort ] ) + hb_eol() - cMsg += "Root filesystem: " + netiosrv[ _NETIOSRV_cRootDir ] + hb_eol() - cMsg += "RPC support: " + iif( netiosrv[ _NETIOSRV_lRPC ], "enabled", "disabled" ) + hb_eol() - cMsg += "Encryption: " + iif( netiosrv[ _NETIOSRV_lEncryption ], "enabled", "disabled" ) + hb_eol() - cMsg += "RPC filter module: " + iif( Empty( netiosrv[ _NETIOSRV_hRPCFHRB ] ), iif( netiosrv[ _NETIOSRV_lRPC ], "not set (WARNING: unsafe open server)", "not set" ), netiosrv[ _NETIOSRV_cRPCFFileName ] ) - - MsgBox( cMsg ) - - RETURN + RETURN NIL /*----------------------------------------------------------------------*/ STATIC PROCEDURE HB_Logo() - MsgBox( "Harbour NETIO Server " + HBRawVersion() + hb_eol() +; - "Copyright (c) 2009-2011, Przemyslaw Czerpak" + hb_eol() + ; - "http://harbour-project.org/" ) + MsgBox( "Harbour NETIO Server Management Console " + StrTran( Version(), "Harbour " ) + hb_eol() +; + "Copyright (c) 2009-2011, Pritpal Bedi, Viktor Szakats" + hb_eol() + ; + "http://harbour-project.org/" + hb_eol() +; + hb_eol() ) RETURN @@ -953,22 +814,18 @@ STATIC PROCEDURE HB_Usage() LOCAL aMsg := {} LOCAL cMsg - AAdd( aMsg, "Syntax:" ) - AAdd( aMsg, " " ) - AAdd( aMsg, " netiosrv [options]" ) - AAdd( aMsg, " " ) - AAdd( aMsg, "Options:" ) - AAdd( aMsg, " " ) - AAdd( aMsg, " -port= accept incoming connections on IP port " ) - AAdd( aMsg, " -iface= accept incoming connections on IPv4 interface " ) - AAdd( aMsg, " -rootdir= use as root directory for served file system" ) - AAdd( aMsg, " -rpc accept RPC requests" ) - AAdd( aMsg, " -rpc= set RPC processor .hrb module to " ) - AAdd( aMsg, hb_StrFormat( " file.hrb needs to have an entry function named %1$s()", _RPC_FILTER ) ) - AAdd( aMsg, " -pass= set server password" ) - AAdd( aMsg, " " ) - AAdd( aMsg, " --version display version header only" ) - AAdd( aMsg, " -help|--help this help" ) + AAdd( aMsg, "Syntax:" ) + AAdd( aMsg, ) + AAdd( aMsg, " netiocui [options]" ) + AAdd( aMsg, ) + AAdd( aMsg, "Options:" ) + AAdd( aMsg, ) + AAdd( aMsg, " -addr= connect to netio server on IPv4 address " ) + AAdd( aMsg, hb_StrFormat( " Default: %1$s:%2$d", _NETIOMGM_IPV4_DEF, _NETIOMGM_PORT_DEF ) ) + AAdd( aMsg, " -pass= connect to netio server with password" ) + AAdd( aMsg, ) + AAdd( aMsg, " --version display version header only" ) + AAdd( aMsg, " -help|--help this help" ) cMsg := "" aeval( aMsg, {|e| cMsg += e + chr( 10 ) } ) @@ -978,11 +835,6 @@ STATIC PROCEDURE HB_Usage() /*----------------------------------------------------------------------*/ -STATIC FUNCTION HBRawVersion() - RETURN StrTran( Version(), "Harbour " ) - -/*----------------------------------------------------------------------*/ - STATIC FUNCTION xtos( xVrb ) SWITCH valtype( xVrb )