def web_socket_transfer_data(request): logger.logInfo(NAME+ "Server dostal zgloszenie") paramsDictionary = {} paramsDictionary["REQUEST"] = request paramsDictionary["CLIENT_ADDRESS"]= request.connection.remote_ip paramsDictionary["SOCKET"] = request.ws_stream paramsDictionary["HOME_PATH"] = request.get_options()["PROJECT_LOCATION"] paramsDictionary["CONNECTION_MODE"] = False configReader = ConfigurationReader(paramsDictionary["HOME_PATH"]+"ServerSide/config/runParams.conf") paramsDictionary["CONFIG_PARAMS"] = configReader.readConfigFile() paramsDictionary["SOCKET"].receive_message() logger.logInfo(NAME+ "Server otrzymal ping od " + paramsDictionary["CLIENT_ADDRESS"]) paramsDictionary["SOCKET"].send_message(PONG) logger.logInfo(NAME+ "Server odpowiedzial do " + paramsDictionary["CLIENT_ADDRESS"]) loader = ModulesLoader() modules = loader.loadModules(paramsDictionary["HOME_PATH"]+"ServerSide/config/modules.ext") paramsDictionary["MODULES"] = modules logger.logInfo(NAME+ "Serwer wczytal moduly") if modules.has_key("NEW_CONN"): for singleModule in modules["NEW_CONN"]: singleModule.execute(paramsDictionary, None) paramsDictionary["QUEUE"] = Queue.Queue(0) logger.logInfo(NAME+ "Serwer rozpoczyna pingowanie") listener = ListenSocket(paramsDictionary, modules) listener.setDaemon(True) listener.start() while(True): try: for singleModule in modules["PERIODIC"]: singleModule.execute(paramsDictionary, None) time.sleep(int(paramsDictionary["CONFIG_PARAMS"]["singlePeriod"])) except Exception, e: logger.logError(NAME+ "ERROR w modulach okresowych, zamykanie polaczenia") logger.logError(NAME + e.message) for singleModule in modules["HOST_DC"]: singleModule.execute(paramsDictionary, None) logger.logInfo(NAME + "Polaczenie zakonczone") return apache.HTTP_OK #1000100100000000 - Ping frame in binary with no data #1000101000000000 - Pong frame in binary with no data
logger.logInfo(NAME+ "nawiazywanie polaczenia z nowododanym serwerem") addresses[key] = 'T' file.writeToFile(addresses) break else: paramsDictionary["SOCKET"].send_message(EXIT) logger.logInfo(NAME+ "Server odpowiedzial EXIT do " + paramsDictionary["CLIENT_ADDRESS"]) file.unlockFile() return apache.HTTP_OK file.unlockFile() except Exception, e: logger.logError(NAME + e.message) file.unlockFile() return apache.HTTP_OK loader = ModulesLoader() modules = loader.loadModules(paramsDictionary["HOME_PATH"]+"ServerSide/config/modules.ext") paramsDictionary["MODULES"] = modules logger.logInfo(NAME+ "Serwer wczytal moduly") if modules.has_key("NEW_CONN"): for singleModule in modules["NEW_CONN"]: singleModule.execute(paramsDictionary, None) paramsDictionary["QUEUE"] = Queue.Queue(0) logger.logImportant(NAME+ "Polaczenie z " + paramsDictionary["CLIENT_ADDRESS"] + " nawiazane") listener = ListenSocket(paramsDictionary, modules) listener.setDaemon(True) listener.start() while(True):
def web_socket_transfer_data(request): paramsDictionary = {} paramsDictionary["REQUEST"] = request paramsDictionary["SOCKET"] = request.ws_stream paramsDictionary["HOME_PATH"] = request.get_options()["PROJECT_LOCATION"] loader = ModulesLoader() modules = loader.loadModules(paramsDictionary["HOME_PATH"]+"ServerSide/config/modules.ext") paramsDictionary["MODULES"] = modules logger.logInfo(NAME+ "Serwer wczytal moduly") configReader = ConfigurationReader(paramsDictionary["HOME_PATH"]+"ServerSide/config/runParams.conf") runParams = configReader.readConfigFile() if modules.has_key("BEFORE_CONNECT"): for singleModule in modules["BEFORE_CONNECT"]: singleModule.execute(paramsDictionary, None) firstTimeIteration = True file = FileProcessor(paramsDictionary["HOME_PATH"]+"ServerSide/config/addresses.conf") while True: if modules.has_key("BEFORE_CONNECT_PERIODIC"): for singleModule in modules["BEFORE_CONNECT_PERIODIC"]: singleModule.execute(paramsDictionary, None) try: file.lockFile() addresses = file.readFile() file.unlockFile() for key in addresses: try: file.lockFile() tempAddresses = file.readFile() if( tempAddresses[key] == 'F' ): connection = Connection(request.get_options()["PROJECT_LOCATION"]+"ServerSide/config/connection_config.conf") if( connection.connect(key,80, RESOURCE) != ERROR ): logger.logInfo(NAME+ "Polaczenie z " + key + " nawiazane") connection.send_message(PING) logger.logInfo(NAME+ "Wysylanie pingu z metody startowej") expectedPong = connection.get_message() logger.logInfo(NAME + "Oczekiwano PONG, Otrzymano " + expectedPong) if expectedPong == PONG: logger.logInfo(NAME+ "Metoda startowa otrzymala odpowiedz, zamykanie polaczenia") connection._do_closing_handshake() logger.logInfo(NAME + "########### polaczenie zakonczone, zapisywanie pliku adresowego") tempAddresses[key] = 'T' file.writeToFile(tempAddresses) logger.logInfo(NAME + "Zapisano zmiany do pliku adresowego") else: logger.logError(NAME+ "Serwer " + key + " nie odpowiedzial na PING, zrywanie polaczenia") else: logger.logError(NAME+ "Nie moge polaczyc sie z " + key) file.unlockFile() except Exception, e: logger.logError(NAME + e.message) file.unlockFile() except Exception, e: logger.logError(NAME + e.message) file.unlockFile() continue file.unlockFile() if firstTimeIteration == True: firstTimeIteration = False if modules.has_key("AFTER_CONNECT"): for singleModule in modules["AFTER_CONNECT"]: singleModule.execute(paramsDictionary, None) if modules.has_key("AFTER_CONNECT_PERIODIC"): for singleModule in modules["AFTER_CONNECT_PERIODIC"]: singleModule.execute(paramsDictionary, None) logger.logInfo(NAME+ "Serwer rozpoczyna czeanie na kolejna ture sprawdzania") time.sleep(int(runParams["ConnectionCheckPeriod"])) logger.logInfo(NAME+ "Serwer wznawia sprawdzanie")