spohara79 / estreamer

SourceFire eStreamer python client libraries
Apache License 2.0
9 stars 4 forks source link

Doesn't work in CentOS7, works on Windows 10? #13

Closed bhjella closed 5 years ago

bhjella commented 5 years ago

I am running the example code in both CentOS7 and Windows 10. It works in Windows 10, but gives this error in CentOS7:

Traceback (most recent call last): File "/home/fsodev/PycharmProjects/estreamer/init.py", line 131, in main print result File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/estreamer/streamer.py", line 64, in exit self.close() File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/estreamer/streamer.py", line 75, in close self.sock.shutdown() File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/OpenSSL/SSL.py", line 2001, in shutdown self._raise_ssl_error(self._ssl, result) File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/OpenSSL/SSL.py", line 1647, in _raise_ssl_error _raise_current_error() File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue raise exception_type(errors) Error: [('SSL routines', 'SSL_shutdown', 'shutdown while in init')]

This on it's face seems like a Cert issue, but upon running this code in CentOS7 and Windows 10:

try:
    with streamer.eStreamerConnection(hostname, 8302, basedir + 'cacerts.cer',
                         basedir + "clientcert.cer", basedir + "clientcert.key") as ec:
        re = eventrequest.RequestEvent(getLastStamp() if getLastStamp() else 1, **REQUEST_FLAGS)
        resp = ec.request(re.record)
        if config.test_bit(re.flags.from_bytes, 30):
            ser = eventrequest.StreamEventRequest(STREAM_FLAGS)
            resp = ec.request(ser.record)
        print resp
except:
    print traceback.format_exc()
    sys.exit()

it successful in Windows 10 but gives this error in CentOS7:

Traceback (most recent call last): File "/home/fsodev/PycharmProjects/estreamer/init.py", line 44, in main re = eventrequest.RequestEvent(5, *REQUEST_FLAGS) File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/estreamer/eventrequest.py", line 143, in init self.message_header = MessageHeader(type=2, data=self.event_request.pack()) File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/estreamer/base.py", line 236, in pack return str(self) File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/estreamer/base.py", line 240, in str return str(self.pack()) + str(self.data) if hasattr(self, 'data') and len(self.data) else str(self.pack()) File "/home/fsodev/PycharmProjects/estreamer/venv/lib/python2.7/site-packages/estreamer/base.py", line 231, in pack return struct.pack(fmt, value_list) TypeError: Struct() argument 1 must be string, not unicode

Not sure why fmt is coming out as unicode, or why that is even a problem, but forcing it to ascii doesn't seem to work.

bhjella commented 5 years ago

Problem is, this doesn't work in Python 2.7.5. Upgraded to 2.7.15 and works fine now.