Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b472b96

Browse files
committed
bug fix, refactoring and improved extractErrorMessage capabilities
1 parent ea7ba19 commit b472b96

4 files changed

Lines changed: 25 additions & 16 deletions

File tree

lib/core/common.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
from lib.core.settings import IS_WIN
6060
from lib.core.settings import PLATFORM
6161
from lib.core.settings import SITE
62+
from lib.core.settings import ERROR_PARSING_REGEXES
6263
from lib.core.settings import SQL_STATEMENTS
6364
from lib.core.settings import SUPPORTED_DBMS
6465
from lib.core.settings import UNKNOWN_DBMS_VERSION
@@ -1584,7 +1585,7 @@ def extractErrorMessage(page):
15841585
retVal = None
15851586

15861587
if isinstance(page, basestring):
1587-
for regex in (r"<b>[^<]*(fatal|error|warning|exception)[^<]*</b>:?\s+(?P<result>.+?)<br\s*/?\s*>", r"<li>Error Type:<br>(?P<result>.+?)</li>"):
1588+
for regex in ERROR_PARSING_REGEXES:
15881589
match = re.search(regex, page, re.DOTALL | re.IGNORECASE)
15891590

15901591
if match:
@@ -1661,6 +1662,7 @@ def logHTTPTraffic(requestLogMsg, responseLogMsg):
16611662

16621663
kb.locks.logLock.release()
16631664

1665+
# cross-linked method
16641666
def getPageTemplate(payload, place):
16651667
pass
16661668

lib/core/settings.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,9 @@
160160
"commit ",
161161
"rollback ", ),
162162
}
163+
164+
ERROR_PARSING_REGEXES = (
165+
r"<b>[^<]*(fatal|error|warning|exception)[^<]*</b>:?\s+(?P<result>.+?)<br\s*/?\s*>",
166+
r"<li>Error Type:<br>(?P<result>.+?)</li>",
167+
r"error '[0-9a-f]{8}'((<[^>]+>)|\s)+(?P<result>[^<>]+)"
168+
)

lib/request/basic.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
import StringIO
1515
import zlib
1616

17+
from lib.core.common import extractErrorMessage
1718
from lib.core.common import getCompiledRegex
1819
from lib.core.common import getUnicode
1920
from lib.core.common import isWindowsDriveLetterPath
2021
from lib.core.common import posixToNtSlashes
22+
from lib.core.common import sanitizeAsciiString
2123
from lib.core.data import conf
2224
from lib.core.data import kb
2325
from lib.core.data import logger
@@ -133,3 +135,14 @@ def decodePage(page, contentEncoding, contentType):
133135
page = getUnicode(page, charset)
134136

135137
return page
138+
139+
def processResponse(page, responseHeaders):
140+
page = sanitizeAsciiString(page)
141+
page = getUnicode(page)
142+
parseResponse(page, responseHeaders)
143+
if conf.parseErrors:
144+
msg = extractErrorMessage(page)
145+
146+
if msg:
147+
logger.info("parsed error message: '%s'" % msg)
148+
return page

lib/request/connect.py

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
from lib.core.common import average
2121
from lib.core.common import calculateDeltaSeconds
2222
from lib.core.common import clearConsoleLine
23-
from lib.core.common import extractErrorMessage
2423
from lib.core.common import getCurrentThreadData
2524
from lib.core.common import getFilteredPageContent
2625
from lib.core.common import getUnicode
@@ -33,7 +32,6 @@
3332
from lib.core.data import conf
3433
from lib.core.data import kb
3534
from lib.core.data import logger
36-
from lib.core.common import sanitizeAsciiString
3735
from lib.core.enums import HTTPMETHOD
3836
from lib.core.enums import NULLCONNECTION
3937
from lib.core.enums import PLACE
@@ -43,7 +41,7 @@
4341
from lib.core.threads import getCurrentThreadData
4442
from lib.request.basic import decodePage
4543
from lib.request.basic import forgeHeaders
46-
from lib.request.basic import parseResponse
44+
from lib.request.basic import processResponse
4745
from lib.request.direct import direct
4846
from lib.request.comparison import comparison
4947
from lib.request.methodrequest import MethodRequest
@@ -270,9 +268,7 @@ def getPage(**kwargs):
270268
else:
271269
debugMsg = "got HTTP error code: %d (%s)" % (code, status)
272270
logger.debug(debugMsg)
273-
page = sanitizeAsciiString(page)
274-
page = getUnicode(page)
275-
parseResponse(page, responseHeaders)
271+
page = processResponse(page, responseHeaders)
276272
return page, responseHeaders
277273

278274
except (urllib2.URLError, socket.error, socket.timeout, httplib.BadStatusLine, httplib.IncompleteRead), e:
@@ -316,9 +312,7 @@ def getPage(**kwargs):
316312

317313
socket.setdefaulttimeout(conf.timeout)
318314

319-
page = sanitizeAsciiString(page)
320-
page = getUnicode(page)
321-
parseResponse(page, responseHeaders)
315+
page = processResponse(page, responseHeaders)
322316

323317
responseMsg += "[#%d] (%d %s):\n" % (threadData.lastRequestUID, code, status)
324318
if responseHeaders:
@@ -332,12 +326,6 @@ def getPage(**kwargs):
332326

333327
logger.log(7, responseMsg)
334328

335-
if conf.parseErrors:
336-
msg = extractErrorMessage(page)
337-
338-
if msg:
339-
logger.info("parsed error message: '%s'" % msg)
340-
341329
return page, responseHeaders
342330

343331
@staticmethod

0 commit comments

Comments
 (0)