class SSLDataPackageService(FlaskFunctions):
    def startup(self, ip, port, pipe):
        try:
            from eventlet import wsgi, wrap_ssl, listen
            import socket
            import ssl
            from FreeTAKServer.controllers.MainSocketController import MainSocketController
            from FreeTAKServer.model.sockets.SSLServerSocket import SSLServerSocket
            global IP, HTTPPORT
            self.MainSocket = SSLServerSocket()
            IP = ip
            HTTPPORT = port
            PIPE = pipe
            # Make sure the data package directory exists
            if not Path(dp_directory).exists():
                app.logger.info(f"Creating directory at {str(dp_directory)}")
                os.makedirs(str(dp_directory))
            # Create the relevant database tables
            print(const.IP)
            print(HTTPPORT)
            super().setIP(IP)
            super().setHTTPPORT(HTTPPORT)
            super().setPIPE(PIPE)
            #wsgi.server(eventlet.listen(('', 14533)), app)  keyfile=MainConfig.keyDir,
            self.SSLSocketController = SSLSocketController()
            self.SSLSocketController.changeIP(IP)
            self.SSLSocketController.changePort(HTTPPORT)

            wsgi.server(sock=wrap_ssl(listen(
                (DataPackageServerConstants().IP, int(HTTPPORT))),
                                      keyfile=MainConfig.unencryptedKey,
                                      certfile=MainConfig.pemDir,
                                      server_side=True,
                                      ca_certs=MainConfig.CA),
                        site=app)
        except Exception as e:
            logger.error(
                'there has been an exception in Data Package service startup '
                + str(e))
            return -1
 def start(self, IP, CoTPort, Event, clientDataPipe, ReceiveConnectionKillSwitch, RestAPIPipe):
     try:
         self.dbController = DatabaseController()
         print('ssl cot service starting')
         os.chdir('../../')
         # create socket controller
         self.SSLSocketController = SSLSocketController()
         self.SSLSocketController.changeIP(IP)
         self.SSLSocketController.changePort(CoTPort)
         sock = self.SSLSocketController.createSocket()
         #threadpool is used as it allows the transfer of SSL socket unlike processes
         pool = ThreadPool(processes=2)
         self.pool = pool
         clientData = pool.apply_async(ClientReceptionHandler().startup, (self.clientInformationQueue,))
         receiveConnection = pool.apply_async(ReceiveConnections().listen, (sock,))
         # instantiate domain model and save process as object
         self.mainRunFunction(clientData, receiveConnection, sock, pool, Event, clientDataPipe,
                              ReceiveConnectionKillSwitch, RestAPIPipe, True)
     except Exception as e:
         logger.error("there has been an exception thrown in"
                      " the starting of the ssl service " + str(e))
         return e
Example #3
0
 def FederationServerStatusCheck(self, FederationPort, IP):
     import ssl
     from FreeTAKServer.controllers.SSLSocketController import SSLSocketController
     import socket
     try:
         if IP == "0.0.0.0":
             s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
             s.connect(('10.255.255.255', 1))
             IP = s.getsockname()[0]
         else:
             pass
         sock = SSLSocketController().createClientSocket(IP)
         sock.settimeout(5)
         sock.connect((IP, FederationPort))
         # returnMessage = sock.recv(100)
         sock.close()
         return "on"
     except Exception as e:
         print('here')
         print(e)
         return "off"
Example #4
0
 def SSLCoTStatusCheck(self, SSLCoTPort, IP):
     from FreeTAKServer.controllers.SSLSocketController import SSLSocketController
     try:
         import socket
         if IP == "0.0.0.0":
             s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
             s.connect(('10.255.255.255', 1))
             IP = s.getsockname()[0]
         else:
             pass
         sock = SSLSocketController().createClientSocket(IP)
         sock.settimeout(10)
         sock.connect((IP, SSLCoTPort))
         sock.send(b'TEST')
         returnMessage = sock.recv(100)
         sock.close()
         if returnMessage == b'success':
             return "on"
         else:
             return "off"
     except Exception as e:
         return "off"