From e02cbc6c06c85da3f28b5d3d71341c57474069be Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sun, 29 Jan 2012 16:25:03 +0000 Subject: [PATCH] 2012-01-29 17:22 UTC+0100 Viktor Szakats (harbour syenar.net) * src/rtl/tget.prg * src/rtl/getsyshb.prg + added support for hash GET variables * utils/hbmk2/hbmk2.prg + added REQUESTs to blowfish, md5, sha1 and few sha2 functions for 3rd party plugins * contrib/hbhttpd/core.prg * fmt --- harbour/ChangeLog | 12 ++++++++++++ harbour/contrib/hbhttpd/core.prg | 28 ++++++++++++++-------------- harbour/src/rtl/getsyshb.prg | 14 +++++++++++++- harbour/src/rtl/tget.prg | 6 +++--- harbour/utils/hbmk2/hbmk2.prg | 6 ++++++ 5 files changed, 48 insertions(+), 18 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 2e385e2ff8..e1c6645d08 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,18 @@ The license applies to all entries newer than 2009-04-28. */ +2012-01-29 17:22 UTC+0100 Viktor Szakats (harbour syenar.net) + * src/rtl/tget.prg + * src/rtl/getsyshb.prg + + added support for hash GET variables + + * utils/hbmk2/hbmk2.prg + + added REQUESTs to blowfish, md5, sha1 and few sha2 functions + for 3rd party plugins + + * contrib/hbhttpd/core.prg + * fmt + 2012-01-27 22:40 UTC+0100 Viktor Szakats (harbour syenar.net) * contrib/hbhttpd/tests/eshop.prg * deleted debug line diff --git a/harbour/contrib/hbhttpd/core.prg b/harbour/contrib/hbhttpd/core.prg index 77b6897533..d677fdcb9c 100644 --- a/harbour/contrib/hbhttpd/core.prg +++ b/harbour/contrib/hbhttpd/core.prg @@ -251,7 +251,7 @@ STATIC FUNCTION ParseFirewallFilter( cFilter, aFilter ) nPrefix := 32 DO WHILE hb_bitAnd( nI, 1 ) == 0 nPrefix-- - nI := hb_bitShift( nI, - 1 ) + nI := hb_bitShift( nI, -1 ) ENDDO IF nI + 1 != hb_bitShift( 1, nPrefix ) RETURN .F. @@ -339,7 +339,7 @@ STATIC FUNCTION MY_SSL_READ( hConfig, hSSL, hSocket, cBuf, nTimeout, nError ) ELSE // Both cases: data received and timeout nError := HB_SOCKET_ERR_TIMEOUT ENDIF - RETURN - 1 + RETURN -1 ELSEIF nErr == HB_SSL_ERROR_WANT_WRITE nErr := hb_socketSelectWrite( hSocket, nTimeout ) IF nErr < 0 @@ -347,11 +347,11 @@ STATIC FUNCTION MY_SSL_READ( hConfig, hSSL, hSocket, cBuf, nTimeout, nError ) ELSE // Both cases: data sent and timeout nError := HB_SOCKET_ERR_TIMEOUT ENDIF - RETURN - 1 + RETURN -1 ELSE Eval( hConfig[ "Trace" ], "SSL_READ() error", nErr ) nError := 1000 + nErr - RETURN - 1 + RETURN -1 ENDIF ENDIF @@ -368,7 +368,7 @@ STATIC FUNCTION MY_SSL_WRITE( hConfig, hSSL, hSocket, cBuf, nTimeout, nError ) nErr := hb_socketSelectRead( hSocket, nTimeout ) IF nErr < 0 nError := hb_socketGetError() - RETURN - 1 + RETURN -1 ELSE // Both cases: data received and timeout RETURN 0 ENDIF @@ -376,14 +376,14 @@ STATIC FUNCTION MY_SSL_WRITE( hConfig, hSSL, hSocket, cBuf, nTimeout, nError ) nErr := hb_socketSelectWrite( hSocket, nTimeout ) IF nErr < 0 nError := hb_socketGetError() - RETURN - 1 + RETURN -1 ELSE // Both cases: data sent and timeout RETURN 0 ENDIF ELSE Eval( hConfig[ "Trace" ], "SSL_WRITE() error", nErr ) nError := 1000 + nErr - RETURN - 1 + RETURN -1 ENDIF ENDIF @@ -799,7 +799,7 @@ STATIC FUNCTION ParseRequestHeader( cRequest ) cI := Left( cI, nK ) IF ( nK := At( "=", cI ) ) > 0 /* cookie names are case insensitive, uppercase it */ - cookie[UPPER(LEFT(cI, nK - 1))] := SubStr( cI, nK + 1 ) + cookie[ Upper( Left( cI, nK - 1 ) ) ] := SubStr( cI, nK + 1 ) ENDIF EXIT CASE "CONTENT-LENGTH" @@ -809,7 +809,7 @@ STATIC FUNCTION ParseRequestHeader( cRequest ) server["CONTENT_TYPE"] := cI EXIT OTHERWISE - server["HTTP_" + STRTRAN(UPPER(LEFT(aRequest[nI], nJ - 1 ) ), "-", "_" )] := cI + server["HTTP_" + StrTran( Upper( Left( aRequest[ nI ], nJ - 1 ) ), "-", "_" )] := cI EXIT ENDSWITCH ENDIF @@ -817,9 +817,9 @@ STATIC FUNCTION ParseRequestHeader( cRequest ) IF !( server["QUERY_STRING"] == "" ) FOR EACH cI IN hb_ATokens( server["QUERY_STRING"], "&" ) IF ( nI := At( "=", cI ) ) > 0 - get[UUrlDecode(LEFT(cI, nI - 1))] := UUrlDecode( SubStr( cI, nI + 1 ) ) + get[ UUrlDecode( Left( cI, nI - 1 ) ) ] := UUrlDecode( SubStr( cI, nI + 1 ) ) ELSE - get[UUrlDecode(cI)] := NIL + get[ UUrlDecode( cI ) ] := NIL ENDIF NEXT ENDIF @@ -839,7 +839,7 @@ STATIC FUNCTION ParseRequestBody( cRequest ) IF cEncoding == "UTF-8" FOR EACH cPart IN hb_ATokens( cRequest, "&" ) IF ( nI := At( "=", cPart ) ) > 0 - post[ HB_UTF8TOSTR( UUrlDecode( LEFT( cPart, nI - 1 ) ) ) ] := HB_UTF8TOSTR( UUrlDecode( SubStr( cPart, nI + 1 ) ) ) + post[ HB_UTF8TOSTR( UUrlDecode( Left( cPart, nI - 1 ) ) ) ] := HB_UTF8TOSTR( UUrlDecode( SubStr( cPart, nI + 1 ) ) ) ELSE post[ HB_UTF8TOSTR( UUrlDecode( cPart ) ) ] := NIL ENDIF @@ -847,7 +847,7 @@ STATIC FUNCTION ParseRequestBody( cRequest ) ELSE FOR EACH cPart IN hb_ATokens( cRequest, "&" ) IF ( nI := At( "=", cPart ) ) > 0 - post[ UUrlDecode( LEFT( cPart, nI - 1 ) ) ] := UUrlDecode( SubStr( cPart, nI + 1 ) ) + post[ UUrlDecode( Left( cPart, nI - 1 ) ) ] := UUrlDecode( SubStr( cPart, nI + 1 ) ) ELSE post[ UUrlDecode( cPart ) ] := NIL ENDIF @@ -1653,7 +1653,7 @@ STATIC FUNCTION compile_file( cFileName, hConfig ) BREAK( nPos ) ENDIF RECOVER USING nPos - Eval( hConfig[ "Trace" ], HB_STRFORMAT( "Template error: syntax at %s(%d,%d)", cFileName, SUBSTRCOUNT( Chr(10 ), cTpl,, nPos ) + 1, nPos - HB_RAT( Chr(10 ), Left(cTpl, nPos - 1 ) ) ) ) + Eval( hConfig[ "Trace" ], HB_STRFORMAT( "Template error: syntax at %s(%d,%d)", cFileName, SUBSTRCOUNT( Chr(10 ), cTpl,, nPos ) + 1, nPos - HB_RAT( Chr(10 ), Left( cTpl, nPos - 1 ) ) ) ) aCode := {} END SEQUENCE ELSE diff --git a/harbour/src/rtl/getsyshb.prg b/harbour/src/rtl/getsyshb.prg index 79837e0c26..b85e7decf5 100644 --- a/harbour/src/rtl/getsyshb.prg +++ b/harbour/src/rtl/getsyshb.prg @@ -56,7 +56,19 @@ FUNCTION hb_GetReadVar( oGet ) IF oGet:subScript != NIL FOR n := 1 TO Len( oGet:subScript ) - cName += "[" + hb_NToS( oGet:subScript[ n ] ) + "]" + SWITCH ValType( oGet:subScript[ n ] ) + CASE "C" + cName += "[" + '"' + oGet:subScript[ n ] + '"' + "]" + EXIT + CASE "D" + cName += "[0d" + DToS( oGet:subScript[ n ] ) + "]" + EXIT + CASE "T" + cName += '[t"' + hb_TSToStr( oGet:subScript[ n ], .T. ) + '"]' + EXIT + OTHERWISE + cName += "[" + hb_NToS( oGet:subScript[ n ] ) + "]" + ENDSWITCH NEXT ENDIF diff --git a/harbour/src/rtl/tget.prg b/harbour/src/rtl/tget.prg index 9292900024..e19c037de2 100644 --- a/harbour/src/rtl/tget.prg +++ b/harbour/src/rtl/tget.prg @@ -511,13 +511,13 @@ METHOD varPut( xValue ) CLASS GET nLen := Len( aSubs ) aValue := Eval( ::bBlock ) FOR i := 1 TO nLen - 1 - IF ISNUMBER( aSubs[ i ] ) + IF ValType( aSubs[ i ] ) $ "NCDT" aValue := aValue[ aSubs[ i ] ] ELSE EXIT ENDIF NEXT - IF ISNUMBER( aSubs[ i ] ) + IF ValType( aSubs[ i ] ) $ "NCDT" aValue[ aSubs[ i ] ] := xValue ENDIF ELSE @@ -542,7 +542,7 @@ METHOD varGet() CLASS GET nLen := Len( aSubs ) xValue := Eval( ::bBlock ) FOR i := 1 TO nLen - IF ISNUMBER( aSubs[ i ] ) + IF ValType( aSubs[ i ] ) $ "NCDT" xValue := xValue[ aSubs[ i ] ] ELSE EXIT diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 468c2f2f8d..d8edd4da7a 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -523,7 +523,13 @@ REQUEST __HBDOC_LOADDIR REQUEST __HBDOC_TOSOURCE REQUEST __HBDOC_SAVEHBD REQUEST HB_REGEX +REQUEST HB_SHA1 +REQUEST HB_SHA256 +REQUEST HB_SHA512 +REQUEST HB_MD5 REQUEST HB_CRC32 +REQUEST HB_BLOWFISHKEY +REQUEST HB_BLOWFISHENCRYPT REQUEST HB_LIBEXT REQUEST HB_HKEYAT REQUEST HB_HDELAT