From 87454c1ab1dfdbee68c37ca9de8437c2d48c0cf1 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Fri, 26 Jan 2024 09:31:59 -0500 Subject: [PATCH] Start browserfs if not yet running --- confluent_server/confluent/mountmanager.py | 20 ++++++++++++++++++++ genesis/getlicenses.py | 1 + 2 files changed, 21 insertions(+) diff --git a/confluent_server/confluent/mountmanager.py b/confluent_server/confluent/mountmanager.py index c6c10bc1..36f654d2 100644 --- a/confluent_server/confluent/mountmanager.py +++ b/confluent_server/confluent/mountmanager.py @@ -1,9 +1,27 @@ +import eventlet import confluent.messages as msg import confluent.exceptions as exc import struct import eventlet.green.socket as socket +import eventlet.green.subprocess as subprocess +import os mountsbyuser = {} +_browserfsd = None + +def assure_browserfs(): + global _browserfsd + if _browserfsd is None: + os.makedirs('/var/run/confluent/browserfs/mount', exist_ok=True) + _browserfsd = subprocess.Popen( + ['/opt/confluent/bin/browserfs', + '-c', '/var/run/confluent/browserfs/control', + '-s', '127.0.0.1:4006', + # browserfs supports unix domain websocket, however apache reverse proxy is dicey that way in some versions + '-w', '/var/run/confluent/browserfs/mount']) + while not os.path.exists('/var/run/confluent/browserfs/control'): + eventlet.sleep(0.5) + def handle_request(configmanager, inputdata, pathcomponents, operation): curruser = configmanager.current_user @@ -33,6 +51,7 @@ def handle_request(configmanager, inputdata, pathcomponents, operation): }) def requestmount(subdir, filename): + assure_browserfs() a = socket.socket(socket.AF_UNIX) a.connect('/var/run/confluent/browserfs/control') subname = subdir.encode() @@ -57,3 +76,4 @@ def requestmount(subdir, filename): 'authtoken': authtok } return thismount + diff --git a/genesis/getlicenses.py b/genesis/getlicenses.py index f4df2fca..a0118c48 100644 --- a/genesis/getlicenses.py +++ b/genesis/getlicenses.py @@ -88,6 +88,7 @@ manuallicenses = [ '/usr/share/licenses/sqlite/LICENSE.md', # https://raw.githubusercontent.com/sqlite/sqlite/master/LICENSE.md '/usr/share/licenses/pcre2/LICENSE.BSD2', '/usr/share/licenses/dhcp-common/NOTICE', + '/usr/share/licenses/xz/COPYING.GPLv3', # manually extracted from xz source '/usr/share/licenses/bash/NOTICE', '/usr/share/licenses/libsepol/NOTICE', '/usr/share/licenses/perl/COPYING.regexec', # regexec.c