mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-10-03 13:26:48 +03:00
chown recordings, previews, and exports to the runtime user at create
This commit is contained in:
@@ -23,6 +23,7 @@ from frigate.ffmpeg_presets import (
|
|||||||
)
|
)
|
||||||
from frigate.models import Previews
|
from frigate.models import Previews
|
||||||
from frigate.util.image import copy_yuv_to_position, get_blank_yuv_frame, get_yuv_crop
|
from frigate.util.image import copy_yuv_to_position, get_blank_yuv_frame, get_yuv_crop
|
||||||
|
from frigate.util.ownership import chown_to_runtime
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -185,6 +186,7 @@ class FFMpegConverter(threading.Thread):
|
|||||||
|
|
||||||
if p.returncode == 0:
|
if p.returncode == 0:
|
||||||
logger.debug("successfully saved preview")
|
logger.debug("successfully saved preview")
|
||||||
|
chown_to_runtime(self.path)
|
||||||
self.requestor.send_data(
|
self.requestor.send_data(
|
||||||
INSERT_PREVIEW,
|
INSERT_PREVIEW,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ from frigate.ffmpeg_presets import (
|
|||||||
)
|
)
|
||||||
from frigate.models import Export, Previews, Recordings, ReviewSegment
|
from frigate.models import Export, Previews, Recordings, ReviewSegment
|
||||||
from frigate.util.ffmpeg import run_ffmpeg_with_progress
|
from frigate.util.ffmpeg import run_ffmpeg_with_progress
|
||||||
|
from frigate.util.ownership import chown_to_runtime
|
||||||
from frigate.util.time import is_current_hour
|
from frigate.util.time import is_current_hour
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -940,6 +941,8 @@ class RecordingExporter(threading.Thread):
|
|||||||
else:
|
else:
|
||||||
video_path = f"{EXPORT_DIR}/{self.camera}_{filename_start_datetime}-{filename_end_datetime}_{cleaned_export_id}.mp4"
|
video_path = f"{EXPORT_DIR}/{self.camera}_{filename_start_datetime}-{filename_end_datetime}_{cleaned_export_id}.mp4"
|
||||||
thumb_path = self.save_thumbnail(self.export_id)
|
thumb_path = self.save_thumbnail(self.export_id)
|
||||||
|
if thumb_path:
|
||||||
|
chown_to_runtime(thumb_path)
|
||||||
|
|
||||||
export_values = {
|
export_values = {
|
||||||
Export.id: self.export_id,
|
Export.id: self.export_id,
|
||||||
@@ -1014,6 +1017,7 @@ class RecordingExporter(threading.Thread):
|
|||||||
Path(thumb_path).unlink(missing_ok=True)
|
Path(thumb_path).unlink(missing_ok=True)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
chown_to_runtime(video_path)
|
||||||
self._emit_progress("finalizing", 100.0)
|
self._emit_progress("finalizing", 100.0)
|
||||||
Export.update({Export.in_progress: False}).where(
|
Export.update({Export.in_progress: False}).where(
|
||||||
Export.id == self.export_id
|
Export.id == self.export_id
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ from frigate.const import (
|
|||||||
from frigate.models import Recordings, ReviewSegment
|
from frigate.models import Recordings, ReviewSegment
|
||||||
from frigate.review.types import SeverityEnum
|
from frigate.review.types import SeverityEnum
|
||||||
from frigate.util.media import get_keyframe_offsets
|
from frigate.util.media import get_keyframe_offsets
|
||||||
|
from frigate.util.ownership import chown_to_runtime
|
||||||
from frigate.util.services import get_video_properties
|
from frigate.util.services import get_video_properties
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -928,6 +929,7 @@ class RecordingMaintainer(threading.Thread):
|
|||||||
)
|
)
|
||||||
|
|
||||||
os.makedirs(directory, exist_ok=True)
|
os.makedirs(directory, exist_ok=True)
|
||||||
|
chown_to_runtime(directory)
|
||||||
|
|
||||||
# file will be in utc due to path_time being in utc
|
# file will be in utc due to path_time being in utc
|
||||||
file_name = f"{path_time.strftime('%M.%S.mp4')}"
|
file_name = f"{path_time.strftime('%M.%S.mp4')}"
|
||||||
@@ -966,6 +968,8 @@ class RecordingMaintainer(threading.Thread):
|
|||||||
f"Copied {file_path} in {datetime.datetime.now().timestamp() - start_frame} seconds."
|
f"Copied {file_path} in {datetime.datetime.now().timestamp() - start_frame} seconds."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
chown_to_runtime(file_path)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# get the segment size of the cache file
|
# get the segment size of the cache file
|
||||||
# file without faststart is same size
|
# file without faststart is same size
|
||||||
|
|||||||
Reference in New Issue
Block a user