linspector-old/lib/service/htmlcontent.py

51 lines
1.5 KiB
Python

"""
The htmlcontent service in pure Python. STUPID NAME!!!
This should just return 0 on success and NOT 0 on error. Just to make internals generic to just report this code and
not use a parser.
"""
# http://pycurl.sourceforge.net/ --- seems old...
# http://www.angryobjects.com/2011/10/15/http-with-python-pycurl-by-example/
#
# maybe better: http://docs.python.org/2/library/urllib.html
#
# or look at tcpconnect.py! could be useful to.
import socket
import sys
from service import Service
class HtmlcontentService(Service):
def __init__(self, parser, log, **kwargs):
super(Service, self).__init__(parser)
if "string" in kwargs:
self.string = kwargs["string"]
else:
log.w("There is no string set to match")
def execute(self):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)
try:
sock.connect((self.host, self.port))
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)
sock.send("GET %s HTTP/1.0\r\nHost: %s\r\n\r\n" % (self.path, self.host))
data = sock.recv(1024)
string = ""
while len(data):
string = string + data
data = sock.recv(1024)
sock.close()
#print string
# make substring in string compare here. regex or so...