diff options
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport')
3 files changed, 15 insertions, 11 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/transport/quic_server.py b/packages/meshbay-node/src/meshbay_node/transport/quic_server.py index 6dde3ff..95fccf1 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/quic_server.py +++ b/packages/meshbay-node/src/meshbay_node/transport/quic_server.py @@ -53,6 +53,7 @@ from meshbay_common.groupbox import PURPOSE_ACK, seal from meshbay_common.protocol import MNP, file_chunk_wire from meshbay_node.indexer import GroupIndex from meshbay_node.transport.wire import index_sync_message +from meshbay_node import platform log = logging.getLogger(__name__) @@ -545,7 +546,7 @@ def _extract_segment(file_path: Path, start_time: float, duration: float) -> byt """Extract one HLS segment via ffmpeg. Returns MPEG-TS bytes or None on failure.""" try: result = subprocess.run( - ["ffmpeg", "-hide_banner", "-loglevel", "error", + [platform.ffmpeg_cmd(), "-hide_banner", "-loglevel", "error", "-ss", str(start_time), "-i", str(file_path), "-t", str(duration), @@ -596,8 +597,9 @@ class QuicChunkServer: # Peer sets are per group now — see _MNPServerProtocol._peer_registry(). self._host = host self._port = port - self._cert_path = cert_path or Path.home() / ".config/meshbay/node_tls.crt" - self._key_path = key_path or Path.home() / ".config/meshbay/node_tls.key" + from meshbay_node.platform import config_dir + self._cert_path = cert_path or config_dir() / "node_tls.crt" + self._key_path = key_path or config_dir() / "node_tls.key" self._server = None self._task = None self._session_tickets: dict[bytes, Any] = {} diff --git a/packages/meshbay-node/src/meshbay_node/transport/tls_cert.py b/packages/meshbay-node/src/meshbay_node/transport/tls_cert.py index 374fd08..8d680ea 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/tls_cert.py +++ b/packages/meshbay-node/src/meshbay_node/transport/tls_cert.py @@ -21,10 +21,12 @@ from cryptography.hazmat.primitives import hashes, serialization from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.x509.oid import NameOID +from meshbay_node.platform import chmod_private, config_dir + log = logging.getLogger(__name__) -DEFAULT_CERT = Path.home() / ".config" / "meshbay" / "node_tls.crt" -DEFAULT_KEY = Path.home() / ".config" / "meshbay" / "node_tls.key" +DEFAULT_CERT = config_dir() / "node_tls.crt" +DEFAULT_KEY = config_dir() / "node_tls.key" def generate_self_signed_cert( @@ -64,8 +66,8 @@ def generate_self_signed_cert( serialization.PrivateFormat.TraditionalOpenSSL, serialization.NoEncryption(), )) - cert_path.chmod(0o644) - key_path.chmod(0o600) + chmod_private(cert_path, mode=0o644) + chmod_private(key_path) log.info("TLS cert generated: %s", cert_path) return cert_path, key_path diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py index 0154319..e333ae8 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py +++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py @@ -100,7 +100,7 @@ from meshbay_common.protocol import MNP, chunk_ciphertext, file_chunk_wire from meshbay_node.transport.wire import index_sync_message from meshbay_node.indexer import GroupIndex from meshbay_node.indexer.indexer import DirectoryIndexer -from meshbay_node import linkpreview, ops +from meshbay_node import linkpreview, ops, platform # Re-imported under its original name: every call site and existing test in # this module still refers to it as `_probe_video`. The implementation lives # in media_probe.py so the indexer package (imported just above) can call it @@ -3441,7 +3441,7 @@ class WebRTCPeerSession: try: async with sem: proc = await asyncio.create_subprocess_exec( - "ffmpeg", "-hide_banner", "-loglevel", "error", + platform.ffmpeg_cmd(), "-hide_banner", "-loglevel", "error", "-ss", str(segment_index * segment_duration), "-i", str(file_path), "-t", str(segment_duration), @@ -4360,7 +4360,7 @@ class WebRTCPeerSession: # forced out of its MediaSource with no further explanation. codec_args += ["-c:a", "aac", "-ac", "2", "-b:a", "192k"] proc = await asyncio.create_subprocess_exec( - "ffmpeg", "-hide_banner", "-loglevel", "error", + platform.ffmpeg_cmd(), "-hide_banner", "-loglevel", "error", *seek_args, "-i", str(file_path), *map_args, @@ -4556,7 +4556,7 @@ async def _transcode_audio_to_aac(file_path: Path) -> bytes: tmp_path = Path(tmp_name) try: proc = await asyncio.create_subprocess_exec( - "ffmpeg", "-hide_banner", "-loglevel", "error", "-y", + platform.ffmpeg_cmd(), "-hide_banner", "-loglevel", "error", "-y", "-i", str(file_path), "-vn", "-c:a", "aac", "-ac", "2", "-b:a", "192k", "-f", "ipod", str(tmp_path), |