diff --git a/fHDHR/cli/run.py b/fHDHR/cli/run.py index 0790ec6..773cbf0 100644 --- a/fHDHR/cli/run.py +++ b/fHDHR/cli/run.py @@ -37,6 +37,10 @@ def run(settings, logger, db): fhdhr = fHDHR_OBJ(settings, logger, db) fhdhrweb = fHDHR_HTTP_Server(fhdhr) + # Ensure spawn on Windows instead of fork + if settings.dict["main"]["opersystem"] in ["Windows"]: + multiprocessing.set_start_method('spawn') + try: print("HTTP Server Starting") diff --git a/fHDHR/config/__init__.py b/fHDHR/config/__init__.py index 3b3ec39..e4a7257 100644 --- a/fHDHR/config/__init__.py +++ b/fHDHR/config/__init__.py @@ -4,9 +4,10 @@ import configparser import pathlib import logging import subprocess +import platform import fHDHR.exceptions -from fHDHR.tools import isint, isfloat, is_arithmetic +from fHDHR.tools import isint, isfloat, is_arithmetic, is_docker class Config(): @@ -158,6 +159,22 @@ class Config(): if self.dict["fhdhr"]["stream_type"] not in ["direct", "ffmpeg"]: raise fHDHR.exceptions.ConfigurationError("Invalid stream type. Exiting...") + opersystem = platform.system() + self.dict["main"]["opersystem"] = opersystem + if opersystem in ["Linux", "Darwin"]: + # Linux/Mac + if os.getuid() == 0 or os.geteuid() == 0: + print('Warning: Do not run fHDHR with root privileges.') + elif opersystem in ["Windows"]: + # Windows + if os.environ.get("USERNAME") == "Administrator": + print('Warning: Do not run fHDHR as Administrator.') + else: + print("Uncommon Operating System, use at your own risk.") + + isdocker = is_docker() + self.dict["main"]["isdocker"] = isdocker + if self.dict["fhdhr"]["stream_type"] == "ffmpeg": try: ffmpeg_command = [self.dict["ffmpeg"]["ffmpeg_path"], @@ -173,6 +190,8 @@ class Config(): except FileNotFoundError: ffmpeg_version = None self.dict["ffmpeg"]["version"] = ffmpeg_version + else: + self.dict["ffmpeg"]["version"] = "N/A" if not self.dict["fhdhr"]["discovery_address"] and self.dict["fhdhr"]["address"] != "0.0.0.0": self.dict["fhdhr"]["discovery_address"] = self.dict["fhdhr"]["address"] diff --git a/fHDHR/device/ssdp.py b/fHDHR/device/ssdp.py index 812dc42..a38ce47 100644 --- a/fHDHR/device/ssdp.py +++ b/fHDHR/device/ssdp.py @@ -108,7 +108,11 @@ class SSDPServer(): (host, port) = address - header, payload = data.decode().split('\r\n\r\n')[:2] + try: + header, payload = data.decode().split('\r\n\r\n')[:2] + except ValueError: + self.logger.error("Error with Received packet from {}: {}".format(address, data)) + return lines = header.split('\r\n') cmd = lines[0].split(' ') diff --git a/fHDHR/http/pages/version_html.py b/fHDHR/http/pages/version_html.py index 7483851..fcb54b5 100644 --- a/fHDHR/http/pages/version_html.py +++ b/fHDHR/http/pages/version_html.py @@ -31,20 +31,18 @@ class Version_HTML(): fakefile.write("