2018-04-06 01:44:15 +02:00
|
|
|
from PyQt5 import QtWidgets, QtGui
|
|
|
|
|
2018-04-05 12:01:33 +02:00
|
|
|
import sys
|
|
|
|
import os
|
|
|
|
import time
|
|
|
|
import signal
|
2018-04-05 16:27:48 +02:00
|
|
|
import argparse
|
2018-04-06 18:00:10 +02:00
|
|
|
from concurrent import futures
|
2018-04-05 12:01:33 +02:00
|
|
|
|
|
|
|
path = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
sys.path.append(path)
|
2018-04-05 16:37:51 +02:00
|
|
|
sys.path.append(path + "/../proto/")
|
2018-04-05 12:01:33 +02:00
|
|
|
|
|
|
|
import grpc
|
|
|
|
import ui_pb2
|
|
|
|
import ui_pb2_grpc
|
|
|
|
|
2018-04-06 01:44:15 +02:00
|
|
|
from service import UIService
|
|
|
|
from version import version
|
2018-04-05 12:01:33 +02:00
|
|
|
|
2018-04-06 01:44:15 +02:00
|
|
|
def on_exit():
|
|
|
|
app.quit()
|
|
|
|
server.stop(0)
|
|
|
|
sys.exit(0)
|
2018-04-05 12:01:33 +02:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2018-04-05 16:27:48 +02:00
|
|
|
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-06 18:44:18 +02:00
|
|
|
|
2018-04-05 12:01:33 +02:00
|
|
|
app = QtWidgets.QApplication(sys.argv)
|
2018-04-06 01:44:15 +02:00
|
|
|
|
2018-04-06 15:39:40 +02:00
|
|
|
service = UIService(app, on_exit)
|
2018-04-05 16:27:48 +02:00
|
|
|
server = grpc.server(futures.ThreadPoolExecutor(max_workers=4))
|
2018-04-05 12:01:33 +02:00
|
|
|
|
2018-04-06 15:39:40 +02:00
|
|
|
ui_pb2_grpc.add_UIServicer_to_server(service, server)
|
2018-04-05 12:01:33 +02:00
|
|
|
|
2018-04-05 16:27:48 +02:00
|
|
|
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:
|
2018-04-06 01:44:15 +02:00
|
|
|
# print "OpenSnitch UI service running on %s ..." % socket
|
2018-04-05 12:01:33 +02:00
|
|
|
server.start()
|
|
|
|
app.exec_()
|
|
|
|
except KeyboardInterrupt:
|
2018-04-06 01:44:15 +02:00
|
|
|
on_exit()
|
2018-04-05 12:01:33 +02:00
|
|
|
|