add SFTP, SMB support

This commit is contained in:
Pavel Muhortov 2023-06-28 19:41:33 +03:00
parent ba72ef9407
commit cb03bae49b
4 changed files with 1163 additions and 370 deletions

4
.vscode/launch.json vendored
View File

@ -63,8 +63,8 @@
"request": "launch",
"program": "${file}",
"args": [
"-d",
"-1",
"-w",
"-3",
"-c",
"-p"
],

View File

@ -64,6 +64,7 @@ crontab -e
>
> - [Python 3](https://www.python.org/downloads/) (tested version 3.9.5 on [Debian GNU/Linux 11](http://ftp.debian.org/debian/dists/bullseye/))
> - [paramiko](https://www.paramiko.org/) Python 3 module (tested version 3.1.0)
> - [smbprotocol](https://github.com/jborean93/smbprotocol) Python 3 module (tested version 1.10.1)
> - [ffmpeg](https://ffmpeg.org) (tested version 4.3.4 on [Debian GNU/Linux 11](http://ftp.debian.org/debian/dists/bullseye/))
> - specified record pictures filesystem organization
>

View File

@ -15,31 +15,37 @@
[enable-broadcast]
# List the broadcast block names. Only blocks with the TRUE value will be used.
#
camera.test.local = true
[enable-sequences]
# List the sequence camera block names. Only blocks with the TRUE value will be used.
#
camera.test.local = true
[enable-sensors]
# List the sensor block names. Only blocks with the TRUE value will be used.
#
sensor.test.local = true
[enable-convert]
# List the convert block names. Only blocks with the TRUE value will be used.
#
camera.test.local = true
[enable-publish]
# List the publish block names. Only blocks with the TRUE value will be used.
#
camera.test.local = true
[broadcast-config:camera.test.local]
# Broadcast parameter description block always starts with "broadcast-config:".
#
src = rtsp://user:pass@192.168.254.253:554/Streaming/Channels/101,http://radio.fm:8000/stream.mp3
dst = rtp://239.0.0.1:5554
# Optionality you can change video stream framerate.
@ -66,9 +72,11 @@ dst = rtp://239.0.0.1:5554
[sensor-config:sensor.test.local]
# Remote host's sensor parameter description block always starts with "sensor-config:".
#
hostname = 192.168.254.252
username = user
userpass = pass
#
# To recognize options for polling a sensor, you must specify the type of sensor.
# Supported types:
# ds18b20
@ -78,19 +86,39 @@ nodename = 28-1a2b3c4d5e6f
[camera-config:camera.test.local]
# Camera parameter description block always starts with "camera-config:".
#
hostname = 192.168.254.253
username = user
userpass = pass
#
# If a record directory on a remote host is used, a username and password must be specified.
# Supported protocols:
# FTP.
records_root_path = ftp://192.168.254.254/Records/camera.test.local
records_root_user = user
records_root_pass = pass
# FTP, SFTP, SMB.
records_root_path = ftp://user:pass@192.168.254.254:21/Records/camera.test.local
#
# Separated parameters string has lower priority and parameters are overwritten by
# records_root_path = 'hosttype://username:password@hostname:hostport/some/path'
# if you use both.
#
#records_root_path = /Records/camera.test.local
#
#records_root_host = 192.168.254.254
#
# Optionality you can set custom connection port:
#records_root_port = 21
#
# You must set connection type (ftp is faster than sftp, sftp is faster than smb):
# ftp, sftp, smb.
#records_root_type = ftp
#
#records_root_user = user
#
#records_root_pass = pass
[camera-sequences:camera.test.local]
# Camera sequence description block always starts with "camera-sequences:".
#
# Place only the sequence of PTZ-actions in this block!
# Variable name can be anything. Only 'downloadjpeg' is using this for filename prefix.
# Available actions:
@ -128,14 +156,48 @@ step999 = rebootcamera, -, -, -, -, -, -,
image_find_names = step071, image-01, image-02
# If image root or destination video directories on a remote host is used, username and password must be specified.
# Supported protocols:
# FTP.
image_root_path = ftp://192.168.254.254/Records/camera.test.local
image_root_user = user
image_root_pass = pass
# FTP, SFTP, SMB.
image_root_path = ftp://user:pass@192.168.254.254/Records/camera.test.local
#
# Separated parameters string has lower priority and parameters are overwritten by
# image_root_path = 'hosttype://username:password@hostname:hostport/some/path'
# if you use both.
#
#image_root_path = /Records/camera.test.local
#
#image_root_host = 192.168.254.254
#
# Optionality you can set custom connection port:
#image_root_port = 21
#
# You must set connection type (ftp is faster than sftp, sftp is faster than smb):
# ftp, sftp, smb.
#image_root_type = ftp
#
#image_root_user = user
#
#image_root_pass = pass
video_dest_path = ftp://192.168.254.254/Downloads
video_dest_user = user
video_dest_pass = pass
video_dest_path = ftp://user:pass@192.168.254.254/Downloads
#
# Separated parameters string has lower priority and parameters are overwritten by
# video_dest_path = 'hosttype://username:password@hostname:hostport/some/path'
# if you use both.
#
#video_dest_path = /Downloads
#
# Optionality you can set custom connection port:
#video_dest_host = 192.168.254.254
#
#video_dest_port = 21
#
# You must set connection type (ftp is faster than sftp, sftp is faster than smb):
# ftp, sftp, smb.
#video_dest_type = ftp
#
#video_dest_user = user
#
#video_dest_pass = pass
video_scale_x = 1920
video_scale_y = 1080
@ -144,20 +206,42 @@ video_framerate = 25
[publish-config:camera.test.local]
# Publisher parameter description block always starts with "publish-config:".
#
video_find_names = step071, image-01, image-02
# If a video directory on a remote host is used, a username and password must be specified.
# Supported protocols:
# FTP.
video_root_path = ftp://192.168.254.254/Downloads
video_root_user = user
video_root_pass = pass
# FTP, SFTP, SMB.
video_root_path = ftp://user:pass@192.168.254.254/Downloads
#
# Separated parameters string has lower priority and parameters are overwritten by
# video_root_path = 'hosttype://username:password@hostname:hostport/some/path'
# if you use both.
#
#video_dest_path = /Downloads
#
#video_dest_host = 192.168.254.254
#
# Optionality you can set custom connection port:
#video_dest_port = 21
#
# You must set connection type (ftp is faster than sftp, sftp is faster than smb):
# ftp, sftp, smb.
#video_dest_type = ftp
#
#video_dest_user = user
#
#video_dest_pass = pass
#
# Optionality you can enable or disable publishing by Wordpress:
# true - Wordpress enabled, false - Wordpress disbaled.
wp_enabled = true
wp_site_name = www.site.name
wp_user_name = user
wp_user_pass = pass
wp_update_page_id = 4848
#
# Optionality you can enable or disable publishing by Telegram:
# true - Wordpress enabled, false - Telegram disbaled.
tg_enabled = true
tg_api_key = TELEGRAM_API_KEY
tg_chat_id = @blackhole

File diff suppressed because it is too large Load Diff