Esempio n. 1
0
def test_facts(s):
    req = FactsRequestMessage()
    req.send_via(s)
    resp = Message.recv_via(s)
    assert(isinstance(resp, FactsResponseMessage))
    assert(isinstance(resp.payload, dict))
    assert('os.name' in resp.payload)
Esempio n. 2
0
def test_ping(s):
    # test Ping/Pong Messages
    req = PingMessage()
    req.send_via(s)
    resp = Message.recv_via(s)
    assert(isinstance(resp, PongMessage))
    assert(req.payload == resp.payload)
Esempio n. 3
0
 def run(self):
     with self._socket:
         try:
             while True:
                 req = None
                 try:
                     req = Message.recv_via(self._socket)
                     logger.info('Received message: ' + str(req))
                     req.process()
                     if isinstance(req, Message):
                         req.respond_via(self._socket)
                     else:
                         raise RuntimeError('Unknown message type: ' + str(req.type))
                 except (OSError, BrokenPipeError, ssl.SSLError) as e:
                     # pass up
                     raise
                 except Exception as e:
                     # catch everything else
                     tb = ''.join(traceback.format_tb(sys.exc_info()[2]))
                     logger.warning('Message ' + str(req) + ' execution produced exception: ' + str(e) + tb)
                     resp = ExceptionMessage({'exception': e, 'traceback': tb})
                     resp.send_via(self._socket)
         except (ssl.SSLError) as e:
             logger.info('Unable to secure connection to ' + str(self._address) + ', closing...' + str(e))
             self._socket.shutdown(socket.SHUT_RDWR)
         except (OSError, BrokenPipeError) as e:
             logger.info('Socket connection broken with ' + str(self._address) + ' due to ' + str(e))
         else:
             logger.info('Connection to ' + str(self._address) + ' closing...')
             self._socket.shutdown(socket.SHUT_RDWR)
     logger.info('Connection to ' + str(self._address) + ' closed')
Esempio n. 4
0
def test_ping(s):
    # test Ping/Pong Messages
    req = PingMessage()
    req.send_via(s)
    resp = Message.recv_via(s)
    assert (isinstance(resp, PongMessage))
    assert (req.payload == resp.payload)
Esempio n. 5
0
def test_returncode(s):
    req = RunProcessMessage({
        'args': 'exit 1',
        'shell': True,
    })
    req.send_via(s)
    resp = Message.recv_via(s)

    assert(resp.payload['returncode'] == 1)
Esempio n. 6
0
def test_timeout(s):
    req = RunProcessMessage({
        'args': 'pause',
        'shell': True,
        'timeout': 1,
    })
    req.send_via(s)
    resp = Message.recv_via(s)

    assert(isinstance(resp, ExceptionMessage))
Esempio n. 7
0
def test_reg_query(s):
    req = RunProcessMessage({
        'args': 'REG QUERY HKLM\Software\Microsoft\Windows\CurrentVersion /v ProgramFilesDir',
    })
    req.send_via(s)
    resp = Message.recv_via(s)

    assert(resp.payload['returncode'] == 0)
    assert(b'Program Files' in resp.payload['stdout'])
    assert(resp.payload['stderr'] == b'')
Esempio n. 8
0
def test_response(s):
    req = RunProcessMessage({
        'args': 'exit',
        'shell': True,
    })
    req.send_via(s)
    resp = Message.recv_via(s)

    assert(isinstance(resp, CompletedProcessMessage))
    assert(isinstance(resp.payload, dict))

    assert('args' in resp.payload)
    assert('returncode' in resp.payload)
    assert('stdout' in resp.payload)
    assert('stderr' in resp.payload)
Esempio n. 9
0
def test_valid():
    try:
        with ctx.wrap_socket(
            socket.socket(socket.AF_INET, socket.SOCK_STREAM),
            server_hostname=socket.gethostbyaddr(HOST)[0]
        ) as s:
            s.connect((HOST, PORT))
            print(str(s.getpeercert()))
            req = PingMessage()
            req.send_via(s)
            resp = Message.recv_via(s)
            assert(isinstance(resp, PongMessage))
            assert(req.payload == resp.payload)
            s.shutdown(socket.SHUT_RDWR)
    except ssl.CertificateError:
        assert(False)
Esempio n. 10
0
 def run(self):
     with self._socket:
         try:
             while True:
                 req = None
                 try:
                     req = Message.recv_via(self._socket)
                     logger.info('Received message: ' + str(req))
                     req.process()
                     if isinstance(req, Message):
                         req.respond_via(self._socket)
                     else:
                         raise RuntimeError('Unknown message type: ' +
                                            str(req.type))
                 except (OSError, BrokenPipeError, ssl.SSLError) as e:
                     # pass up
                     raise
                 except Exception as e:
                     # catch everything else
                     tb = ''.join(traceback.format_tb(sys.exc_info()[2]))
                     logger.warning('Message ' + str(req) +
                                    ' execution produced exception: ' +
                                    str(e) + tb)
                     resp = ExceptionMessage({
                         'exception': e,
                         'traceback': tb
                     })
                     resp.send_via(self._socket)
         except (ssl.SSLError) as e:
             logger.info('Unable to secure connection to ' +
                         str(self._address) + ', closing...' + str(e))
             self._socket.shutdown(socket.SHUT_RDWR)
         except (OSError, BrokenPipeError) as e:
             logger.info('Socket connection broken with ' +
                         str(self._address) + ' due to ' + str(e))
         else:
             logger.info('Connection to ' + str(self._address) +
                         ' closing...')
             self._socket.shutdown(socket.SHUT_RDWR)
     logger.info('Connection to ' + str(self._address) + ' closed')