コード例 #1
0
ファイル: service_requests.py プロジェクト: csuvbakka/myhouse
 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
コード例 #2
0
ファイル: service_killer.py プロジェクト: csuvbakka/myhouse
#!/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)
コード例 #3
0
ファイル: debug_stop.py プロジェクト: csuvbakka/myhouse
#!/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
コード例 #4
0
ファイル: start.py プロジェクト: csuvbakka/myhouse
#!/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
コード例 #5
0
ファイル: restart.py プロジェクト: csuvbakka/myhouse
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")
コード例 #6
0
ファイル: service_requests.py プロジェクト: csuvbakka/myhouse
 def send(self):
     send_event_to_port(self.message, self.port)
コード例 #7
0
ファイル: stop.py プロジェクト: csuvbakka/myhouse
#!/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
コード例 #8
0
ファイル: service_base.py プロジェクト: csuvbakka/myhouse
 def log(self, message):
     send_event_to_port(
         events.log(self.name, message),
         self._logger_port
     )
コード例 #9
0
ファイル: service_base.py プロジェクト: csuvbakka/myhouse
 def _log_error(self, message):
     send_event_to_port(
         events.log('Service Error', message),
         self._logger_port)
コード例 #10
0
ファイル: service_base.py プロジェクト: csuvbakka/myhouse
 def stop(self):
     send_event_to_port(events.stop_service(), self.listener.port)