def get_response(self): port = 56000 while True: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.settimeout(self.timeout) s.bind(("localhost", port)) s.listen(1) self.sender_port = port if send_event_to_port(self, self.receiver_port): conn, addr = s.accept() data = conn.recv(MAX_MSG_SIZE) conn.close() if data == "False": return False elif data == "True": return True else: return data else: return None except socket.timeout: return None except socket.error as ex: if ex.errno == socket.errno.EADDRINUSE: s.close() s = None port += 1 else: raise
#!/usr/bin/env python import sys import myhouse.lib.service.events as events from myhouse.lib.common.network import send_event_to_port port = int(sys.argv[1]) print 'killing ' + str(port) send_event_to_port(events.stop_service(), port)
#!/usr/bin/env python # import cgitb; cgitb.enable() import cgi from myhouse.lib.cgi.session import require_private_access, html_output from myhouse.lib.common.config import service_config from myhouse.lib.common.network import send_event_to_port from myhouse.lib.service.events import debug_mode_off require_private_access() data = cgi.FieldStorage() if data: output = html_output('service.html') service_name = data['service'].value config = service_config() service = config.find_service(service_name) if not service: text = "Invalid service" else: send_event_to_port(debug_mode_off(), service['port']) text = service + ' debug mode off' output.add_parameter('data', text) print output
#!/usr/bin/env python from myhouse.lib.cgi.session import require_private_access, html_output from myhouse.lib.common.config import service_config from myhouse.lib.common.network import send_event_to_port from myhouse.lib.service.events import start_app # from myhouse.lib.tv import tv require_private_access() output = html_output('kodi.html') service = service_config().find_service('app_starter') if not service: text = 'Invalid service' else: # t = tv() # t.power_on() # t.switch_to_hdmi_input() send_event_to_port(start_app('kodi'), service['port']) text = 'kodi started' output.add_parameter('data', text) print output
from myhouse.lib.service.events import stop_service from myhouse.lib.service.service_requests import ping require_private_access() data = cgi.FieldStorage() if data: output = html_output("service.html") service_name = data["service"].value config = service_config() service = config.find_service(service_name) if not service: text = "Invalid service" else: send_event_to_port(stop_service(), service["port"]) text = service["name"] + " on port " + str(service["port"]) + " stopped" text += "<br/>" sleep(2) max_retries = 3 while ping(service_name).get_response() and max_retries > 0: sleep(1) max_retries -= 1 script_path = "/home/bacso/project/myhouse/myhouse/" os.system("echo 'python " + script_path + service_name + ".py' | at -M now")
def send(self): send_event_to_port(self.message, self.port)
#!/usr/bin/env python # import cgitb; cgitb.enable() import cgi from myhouse.lib.common.config import service_config from myhouse.lib.common.network import send_event_to_port from myhouse.lib.service.events import stop_service from myhouse.lib.cgi.session import ( require_private_access, html_output) require_private_access() data = cgi.FieldStorage() if data: output = html_output('service.html') service_string = data['service'].value config = service_config() service = config.find_service(service_string) if not service: text = 'Invalid service' else: send_event_to_port(stop_service(), service['port']) text = service['name'] + ' on port ' + str(service['port']) + ' stopped' output.add_parameter('data', text) print output
def log(self, message): send_event_to_port( events.log(self.name, message), self._logger_port )
def _log_error(self, message): send_event_to_port( events.log('Service Error', message), self._logger_port)
def stop(self): send_event_to_port(events.stop_service(), self.listener.port)