opensnitch/ui/main.py

57 lines
1.5 KiB
Python
Raw Normal View History

2018-04-05 12:01:33 +02:00
from PyQt5 import QtWidgets
import sys
import os
import time
import signal
import argparse
2018-04-05 12:01:33 +02:00
path = os.path.abspath(os.path.dirname(__file__))
sys.path.append(path)
sys.path.append(path + "/../proto/")
2018-04-05 12:01:33 +02:00
import grpc
from concurrent import futures
import ui_pb2
import ui_pb2_grpc
from dialog import Dialog
class UIServicer(ui_pb2_grpc.UIServicer):
def __init__(self):
self.dialog = Dialog()
def Ping(self, request, context):
return ui_pb2.PingReply(id=request.id)
def AskRule(self, request, context):
rule = self.dialog.promptUser(request)
# print "%s -> %s" % ( request, rule )
return rule
2018-04-05 12:01:33 +02:00
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='OpenSnitch UI service.')
parser.add_argument("--socket", dest="socket", default="opensnitch-ui.sock", help="Path of the unix socket for the gRPC service.", metavar="FILE")
args = parser.parse_args()
2018-04-05 12:01:33 +02:00
app = QtWidgets.QApplication(sys.argv)
server = grpc.server(futures.ThreadPoolExecutor(max_workers=4))
2018-04-05 12:01:33 +02:00
ui_pb2_grpc.add_UIServicer_to_server(UIServicer(), server)
socket = os.path.abspath(args.socket)
server.add_insecure_port("unix:%s" % socket)
2018-04-05 12:01:33 +02:00
# https://stackoverflow.com/questions/5160577/ctrl-c-doesnt-work-with-pyqt
signal.signal(signal.SIGINT, signal.SIG_DFL)
try:
print "OpenSnitch UI service running on %s ..." % socket
2018-04-05 12:01:33 +02:00
server.start()
app.exec_()
except KeyboardInterrupt:
app.quit()
server.stop(0)