Skip to content

Commit ada74a2

Browse files
ui,prefs: allow configuring server's max workers and clients
Related: c356c82
1 parent 12da478 commit ada74a2

File tree

3 files changed

+331
-84
lines changed

3 files changed

+331
-84
lines changed

ui/bin/opensnitch-ui

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,15 @@ Examples:
221221
('grpc.max_receive_message_length', maxmsglen),
222222
)
223223
print("[server] addr:", args.socket)
224+
max_clients = ('grpc.max_allowed_incoming_connections', args.max_clients)
225+
cfg_max_clients = cfg.getInt(Config.DEFAULT_SERVER_MAX_CLIENTS, 0)
226+
if cfg_max_clients > 0:
227+
print(f"[server] limiting the number of allowed nodes to {cfg_max_clients}")
228+
max_clients = (max_clients[0], cfg_max_clients)
224229
if args.max_clients is not None:
225-
print("[server] limiting the number of allowed nodes to", args.max_clients)
226-
server_options += (('grpc.max_allowed_incoming_connections', args.max_clients),)
230+
print(f"[server] limiting the number of allowed nodes to {args.max_clients}")
231+
max_clients = (max_clients[0], args.max_clients)
232+
server_options += (max_clients,)
227233

228234
service = UIService(app, on_exit, start_in_bg=args.background)
229235
check_environ()
@@ -232,10 +238,14 @@ Examples:
232238
# by default, the number of workers are calculated based on the number
233239
# of cpus: min(32, os.cpu_count() + 4)
234240
# https://docs.python.org/3.12/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
235-
executor = futures.ThreadPoolExecutor()
241+
242+
cfg_max_workers = cfg.getInt(Config.DEFAULT_SERVER_MAX_WORKERS, 20)
243+
executor = None
236244
if args.max_workers is not None:
237245
print(f"[server] using {args.max_workers} workers")
238246
executor = futures.ThreadPoolExecutor(max_workers=args.max_workers)
247+
else:
248+
executor = futures.ThreadPoolExecutor(max_workers=cfg_max_workers)
239249
#print("workers:", executor._max_workers)
240250
#print("thread:", len(executor._threads))
241251

ui/opensnitch/dialogs/preferences.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ def __init__(self, parent=None, appicon=None):
101101
self.cmdRefreshUIDown.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinUIRefresh, self.REST))
102102
self.cmdUIDensityUp.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinUIDensity, self.SUM))
103103
self.cmdUIDensityDown.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinUIDensity, self.REST))
104+
self.cmdGrpcWorkersUp.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinGrpcMaxWorkers, self.REST))
105+
self.cmdGrpcWorkersDown.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinGrpcMaxWorkers, self.SUM))
106+
self.cmdGrpcClientsUp.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinGrpcMaxClients, self.REST))
107+
self.cmdGrpcClientsDown.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinGrpcMaxClients, self.SUM))
104108
self.cmdNodeGcUp.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinNodeGC, self.SUM))
105109
self.cmdNodeGcDown.clicked.connect(lambda: self._cb_cmd_spin_clicked(self.spinNodeGC, self.REST))
106110
self.cmdNodeRulesPath.clicked.connect(self._cb_cmd_node_rulespath_clicked)
@@ -208,6 +212,8 @@ def showEvent(self, event):
208212
self.checkNodeLogMicro.clicked.connect(self._cb_node_needs_update)
209213
self.comboNodeAddress.currentTextChanged.connect(self._cb_node_needs_update)
210214
self.comboServerAddr.currentTextChanged.connect(self._cb_node_needs_update)
215+
self.spinGrpcMaxWorkers.valueChanged.connect(self._cb_node_needs_update)
216+
self.spinGrpcMaxClients.valueChanged.connect(self._cb_node_needs_update)
211217
self.checkInterceptUnknown.clicked.connect(self._cb_node_needs_update)
212218
self.checkApplyToNodes.clicked.connect(self._cb_node_needs_update)
213219
self.comboNodeAction.currentIndexChanged.connect(self._cb_node_needs_update)
@@ -414,6 +420,11 @@ def _load_ui_settings(self):
414420
server_addr = self.comboServerAddr.itemText(0)
415421
self.comboServerAddr.setCurrentText(server_addr)
416422

423+
max_workers = self._cfg.getInt(Config.DEFAULT_SERVER_MAX_WORKERS, 20)
424+
self.spinGrpcMaxWorkers.setValue(max_workers)
425+
max_clients = self._cfg.getInt(Config.DEFAULT_SERVER_MAX_CLIENTS, 0)
426+
self.spinGrpcMaxClients.setValue(max_clients)
427+
417428
self.lineCACertFile.setText(self._cfg.getSettings(Config.AUTH_CA_CERT))
418429
self.lineCertFile.setText(self._cfg.getSettings(Config.AUTH_CERT))
419430
self.lineCertKeyFile.setText(self._cfg.getSettings(Config.AUTH_CERTKEY))
@@ -820,6 +831,18 @@ def _save_ui_config(self):
820831
self._cfg.setSettings(Config.DEFAULT_SERVER_ADDR, self.comboServerAddr.currentText())
821832
self._changes_needs_restart = QC.translate("preferences", "Server address changed")
822833

834+
old_workers = self._cfg.getInt(Config.DEFAULT_SERVER_MAX_WORKERS, 20)
835+
max_workers = self.spinGrpcMaxWorkers.value()
836+
if old_workers != max_workers:
837+
self._cfg.setSettings(Config.DEFAULT_SERVER_MAX_WORKERS, int(self.spinGrpcMaxWorkers.value()))
838+
self._changes_needs_restart = QC.translate("preferences", "Server max workers changed")
839+
840+
old_clients = self._cfg.getInt(Config.DEFAULT_SERVER_MAX_CLIENTS, 0)
841+
max_clients = self.spinGrpcMaxClients.value()
842+
if old_clients != max_clients:
843+
self._cfg.setSettings(Config.DEFAULT_SERVER_MAX_CLIENTS, int(self.spinGrpcMaxClients.value()))
844+
self._changes_needs_restart = QC.translate("preferences", "Server max clients changed")
845+
823846
if savedauthtype != authtype or self.lineCertFile.text() != cert or \
824847
self.lineCertKeyFile.text() != certkey or self.lineCACertFile.text() != cacert:
825848
self._changes_needs_restart = QC.translate("preferences", "Certificates changed")

0 commit comments

Comments
 (0)