aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/transport
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/quic_server.py8
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/tls_cert.py10
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py8
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),