mirror of
https://github.com/9001/copyparty.git
synced 2026-04-12 23:32:32 -06:00
improve *BSD compat (#1425)
reuse some macOS stuff since lsblk and /proc doesn't apply to *BSD
This commit is contained in:
parent
003c68d027
commit
f5613187b4
|
|
@ -44,6 +44,14 @@ ANYWIN = WINDOWS or sys.platform in ["msys", "cygwin"]
|
||||||
|
|
||||||
MACOS = platform.system() == "Darwin"
|
MACOS = platform.system() == "Darwin"
|
||||||
|
|
||||||
|
FREEBSD = platform.system() == "FreeBSD"
|
||||||
|
|
||||||
|
OPENBSD = platform.system() == "OpenBSD"
|
||||||
|
|
||||||
|
ANYBSD = FREEBSD or OPENBSD
|
||||||
|
|
||||||
|
UNIX = MACOS or ANYBSD
|
||||||
|
|
||||||
GRAAL = platform.python_implementation() == "GraalVM"
|
GRAAL = platform.python_implementation() == "GraalVM"
|
||||||
|
|
||||||
EXE = bool(getattr(sys, "frozen", False))
|
EXE = bool(getattr(sys, "frozen", False))
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import os
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from .__init__ import ANYWIN, MACOS
|
from .__init__ import ANYWIN, FREEBSD, MACOS, UNIX
|
||||||
from .authsrv import AXS, VFS, AuthSrv
|
from .authsrv import AXS, VFS, AuthSrv
|
||||||
from .bos import bos
|
from .bos import bos
|
||||||
from .util import chkcmd, json_hesc, min_ex, undot
|
from .util import chkcmd, json_hesc, min_ex, undot
|
||||||
|
|
@ -88,7 +88,7 @@ class Fstab(object):
|
||||||
|
|
||||||
def _from_sp_mount(self) -> dict[str, str]:
|
def _from_sp_mount(self) -> dict[str, str]:
|
||||||
sptn = r"^.*? on (.*) type ([^ ]+) \(.*"
|
sptn = r"^.*? on (.*) type ([^ ]+) \(.*"
|
||||||
if MACOS:
|
if MACOS or FREEBSD:
|
||||||
sptn = r"^.*? on (.*) \(([^ ]+), .*"
|
sptn = r"^.*? on (.*) \(([^ ]+), .*"
|
||||||
|
|
||||||
ptn = re.compile(sptn)
|
ptn = re.compile(sptn)
|
||||||
|
|
@ -118,7 +118,7 @@ class Fstab(object):
|
||||||
|
|
||||||
def build_tab(self) -> None:
|
def build_tab(self) -> None:
|
||||||
self.log("inspecting mtab for changes")
|
self.log("inspecting mtab for changes")
|
||||||
dtab = self._from_sp_mount() if MACOS else self._from_proc()
|
dtab = self._from_sp_mount() if UNIX else self._from_proc()
|
||||||
|
|
||||||
# keep empirically-correct values if mounttab unchanged
|
# keep empirically-correct values if mounttab unchanged
|
||||||
srctab = str(sorted(dtab.items()))
|
srctab = str(sorted(dtab.items()))
|
||||||
|
|
@ -130,7 +130,7 @@ class Fstab(object):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
fuses = [mp for mp, fs in dtab.items() if fs == "fuseblk"]
|
fuses = [mp for mp, fs in dtab.items() if fs == "fuseblk"]
|
||||||
if not fuses or MACOS:
|
if not fuses or UNIX:
|
||||||
raise Exception()
|
raise Exception()
|
||||||
try:
|
try:
|
||||||
so, _ = chkcmd(["lsblk", "-nrfo", "FSTYPE,MOUNTPOINT"]) # centos6
|
so, _ = chkcmd(["lsblk", "-nrfo", "FSTYPE,MOUNTPOINT"]) # centos6
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import socket
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from .__init__ import ANYWIN, PY2, TYPE_CHECKING, unicode
|
from .__init__ import ANYWIN, OPENBSD, PY2, TYPE_CHECKING, UNIX, unicode
|
||||||
from .cert import gencert
|
from .cert import gencert
|
||||||
from .qrkode import QrCode, qr2png, qr2svg, qr2txt, qrgen
|
from .qrkode import QrCode, qr2png, qr2svg, qr2txt, qrgen
|
||||||
from .util import (
|
from .util import (
|
||||||
|
|
@ -510,6 +510,13 @@ class TcpSrv(object):
|
||||||
return eps
|
return eps
|
||||||
|
|
||||||
def _extdevs_nix(self) -> Generator[str, None, None]:
|
def _extdevs_nix(self) -> Generator[str, None, None]:
|
||||||
|
if UNIX:
|
||||||
|
so, _ = chkcmd(["netstat", "-nrf", "inet"])
|
||||||
|
for ln in so.split("\n"):
|
||||||
|
if not ln.startswith("default"):
|
||||||
|
continue
|
||||||
|
yield ln.split()[7] if OPENBSD else ln.split()[3]
|
||||||
|
return
|
||||||
with open("/proc/net/route", "rb") as f:
|
with open("/proc/net/route", "rb") as f:
|
||||||
next(f)
|
next(f)
|
||||||
for ln in f:
|
for ln in f:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue