#####################
# Incoming via MQTT #
#####################
# Enable MQTT subscriber to receive surveillance images.
sc.mqtt.enabled=true
# MQTT broker connection URI.
sc.mqtt.broker-connection=ssl://localhost:1883
# Global topic filter to subscribe to (may contain wildcards).
# Must match all camera specific topics, see below: sc.camera[id].mqtt.topic
sc.mqtt.topic-filter=ipcamera/#
# Username for connecting to the broker.
sc.mqtt.username=username
# Password for connecting to the broker.
sc.mqtt.password=password

####################
# Incoming via FTP #
####################
# Enable internal ftp server to receive and process surveillance images.
sc.ftp.enabled=true
# Ftp server port to use.
sc.ftp.port=2121

###################
# Global settings #
###################
# Absolute path to the directory to save images.
sc.image.storage-dir=/home/surveillance/images/
# Max. width for thumbnail generation. The aspect ratio of the original image will be preserved.
sc.image.thumbnail.width=200
# Max. height for thumbnail generation. The aspect ratio of the original image will be preserved.
sc.image.thumbnail.height=200
# Quality for thumbnail generation (compression). Valid values are between 0.0 and 1.0, where 0.0 indicates the
# minimum quality and 1.0 indicates the maximum quality.
sc.image.thumbnail.quality=0.8
# Valid file extensions to accept. Comma separated list.
sc.image.valid-extensions=.jpg,.jpeg
# Show this amount of images per page.
sc.image.page-size=100
# Enable auto deletion of archived images.
sc.archive.cleanup.enabled=false
# Number of hours to keep before archived images will be deleted.
sc.archive.cleanup.keep=72
# Delay in milliseconds between each snapshot URL request used to generate a simple MJPEG stream.
# This is only used if streaming (sc.camera[id].stream-enabled) is enabled.
sc.stream-generation.mjpeg-delay=500
# The username used to login.
sc.security.username=admin
# The password used to login. Make sure to change this!
# This must be hashed with BCrypt. The default password below is 'password'.
sc.security.password=$2a$04$xdRJiiGwwHEbSgs6ucM0DOOCVEUQVaKtB3UPO16.h65sCWzPlkFHC
# Internal secret key used to sign the JWT token.
# Simply change this to something else, you don't have to remember the secret.
sc.security.secret=verySecretKeyChangeMe
# Cookie name for the JWT token.
sc.security.cookie-name=JWT
# Token expiration time in seconds. Default is 30 days (2592000 seconds).
sc.security.token-expiration=2592000
# List of available camera ids (comma separated, don't use any special characters).
# Each camera id listed here must have it's own configuration key (sc.camera[id]), see below.
sc.cameras.available=front,backyard

###################
# Camera settings #
###################
# This is the main configuration part. Each camera you want to use must be listed in sc.cameras.available
# and configured here (camera id in brackets).
### Front door camera ###
sc.camera[front].name=Front door
# Camera host used for ping health check (see below). Only used when sc.healthcheck.enabled is set to true.
sc.camera[front].host=192.168.1.30
# Enable snapshot (live view) for camera. If enabled sc.camera[id].snapshot-url (see below) must be configured.
sc.camera[front].snapshot-enabled=true
# Enable live stream for camera. If enabled the snapshot url (see below) is used to generate a simple MJPEG stream
# by requesting the JPG image periodically.
sc.camera[front].stream-enabled=true
# URL used to display snapshots (live view). This URL will not be exposed, all requests use the built-in proxy.
sc.camera[front].snapshot-url=https://192.168.1.30/snapshot.cgi
# Ftp username for incoming images. This is used for camera identification and must be unique!
sc.camera[front].ftp.username=camera1
# Ftp password for incoming images.
sc.camera[front].ftp.password=password
# Incoming ftp directory. This is the place where new surveillance images for this camera will be put for a short
# period, until thumbnails are generated and they are moved to sc.image.storage-dir.
sc.camera[front].ftp.incoming-dir=/home/surveillance/ftp/camera1/
# MQTT topic to map this camera to. Must be a subset of sc.mqtt.topic-filter.
sc.camera[front].mqtt.topic=ipcamera/front

### Backyard camera ###
sc.camera[backyard].name=Backyard
# Camera host used for ping health check (see below). Only used when sc.healthcheck.enabled is set to true.
sc.camera[backyard].host=192.168.1.31
# Enable snapshot (live view) for camera. If enabled sc.camera[id].snapshot-url (see below) must be configured.
sc.camera[backyard].snapshot-enabled=true
# Enable live stream for camera. If enabled the snapshot url (see below) is used to generate a simple MJPEG stream
# by requesting the JPG image periodically.
sc.camera[backyard].stream-enabled=true
# URL used to display snapshots (live view). This URL will not be exposed, all requests use the built-in proxy.
sc.camera[backyard].snapshot-url=http://192.168.1.31/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=username&pwd=password
# Ftp username for incoming images. This is used for camera identification and must be unique!
sc.camera[backyard].ftp.username=camera2
# Ftp password for incoming images.
sc.camera[backyard].ftp.password=password
# Incoming ftp directory. This is the place where new surveillance images for this camera will be put for a short
# period, until thumbnails are generated and they are moved to sc.image.storage-dir.
sc.camera[backyard].ftp.incoming-dir=/home/surveillance/ftp/camera2/
# MQTT topic to map this camera to. Must be a subset of sc.mqtt.topic-filter.
sc.camera[backyard].mqtt.topic=ipcamera/backyard

##############################
# Push notification settings #
##############################
# Enable push notifications.
sc.pushnotification.enabled=false
# Service adapter to use. There is currently only support for pushover.net,
# so you have to create an account over there if you want to receive push notifications.
sc.pushnotification.adapter=pushover
# Your pushover application api token.
sc.pushnotification.api-token=apiTokenPlaceholder
# Your pushover user key/token.
sc.pushnotification.user-token=userKeyPlaceholder
# Group time in minutes. If you have a lot of motion events (images received via FTP), you probably don't
# want to get a push notification for each single image. This setting will throttle the amount of notifications
# to only one push notification every X minutes (for each camera).
# Remove the line below or set it to 0 if you don't want to enable this feature.
sc.pushnotification.group-time=2

#########################
# Health check settings #
#########################
# Enable health check for camera hosts.
# This will be a simple check if the configured host (sc.camera[id].host) is reachable.
# When a host changes its state (e.g. going from UP to DOWN or vice versa) a push notification will be sent.
# To make this working sc.pushnotification.enabled must be set to true.
sc.healthcheck.enabled=false
# Interval in milliseconds to perform check (e.g. 300000 for every 5 minutes).
sc.healthcheck.interval=300000
# Timeout in milliseconds to wait for hosts.
sc.healthcheck.timeout=10000

############################
# FTP remote copy settings #
############################
# Enable FTP remote copy. All images will be uploaded to an off-site FTP location (backup).
sc.remotecopy.ftp.enabled=false
# Remote FTP host.
sc.remotecopy.ftp.host=external-ftp.local
# Target directory on remote FTP. Make sure this directory exists, otherwise upload will fail.
sc.remotecopy.ftp.dir=/remote-copy/
# Remote FTP username.
sc.remotecopy.ftp.username=username
# Remote FTP password.
sc.remotecopy.ftp.password=password
# Auto cleanup scheduler job for remote FTP uploads.
sc.remotecopy.ftp.cleanup-enabled=false
# Max disk space to use (quota) in MB.
sc.remotecopy.ftp.cleanup-max-disk-space=30000
# Max age in days to keep images. Images older than this value will be deleted.
sc.remotecopy.ftp.cleanup-keep=20

##########################################################
# SFTP remote copy settings (SSH File Transfer Protocol) #
##########################################################
# Enable SFTP remote copy (backup). All images will be uploaded to an off-site location with the SSH file transfer protocol.
sc.remotecopy.sftp.enabled=false
# Remote SFTP host.
sc.remotecopy.sftp.host=external-sftp.local
# Target directory on remote SFTP location.
# Make sure this directory exists, otherwise upload will fail. Could be "/" if the root directory should be used.
sc.remotecopy.sftp.dir=/remote-copy/
# Remote SFTP username.
sc.remotecopy.sftp.username=username
# Remote SFTP password.
sc.remotecopy.sftp.password=password
# Auto cleanup scheduler job for remote SFTP uploads.
sc.remotecopy.sftp.cleanup-enabled=false
# Max disk space to use (quota) in MB.
sc.remotecopy.sftp.cleanup-max-disk-space=30000
# Max age in days to keep images. Images older than this value will be deleted.
sc.remotecopy.sftp.cleanup-keep=20

###############
# Data source #
###############
# Datasource url. If you want stick to the hsqldb, make sure the file path matches to your environment.
# If there is no existing database it will be created for you on application startup.
spring.datasource.url=jdbc:hsqldb:file:/home/surveillance/db/surveillance.db
# Datasource username. If this is not familiar to you and you simply use the pre-configured hsqldb,
# you probably don't want to change anything below.
spring.datasource.username=sa
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=update

######################
# Actuator endpoints #
######################
# Some actuator endpoints are enabled.
# This will expose health, environment and application information at /health, /env and /info.
# No further access restriction is enabled, but the global authentication token filter is present.
management.security.enabled=false
endpoints.enabled=false
endpoints.env.enabled=true
endpoints.health.enabled=true
endpoints.info.enabled=true

###########
# Logging #
###########
# Logging file and level configuration. There is probably no hassle to change anything.
logging.level.com.github._1element=INFO
logging.level.org.apache.ftpserver=WARN
logging.level.org.apache.ftpserver.impl.PassivePorts=ERROR
logging.file=logs/application.log

##########
# Server #
##########
# HTTP server port to use.
server.port=8080
# Context path of the application.
server.context-path=/sc

#################
# Misc internal #
#################
# JSON serialization: proper output for java8 date/time.
spring.jackson.serialization.write_dates_as_timestamps=false