Unfortunately there are still many people who prefer static config
file. As such, schema validate the configurations to ensure that
the failure happens loud and early when the config.js is broken.
Also enforces that the length of secret must be larger than 30 as
the JWT secret can be brute forced locally without interaction with
the server.
This ensures that we always have proper configurations and avoids
unnecessary and bad defensive programming practices.
Some automations like notification of download completion rely on
polling of torrent list. Plus, in the future, we might add more
automation capabilities such as "Pause after reaching certain ratio".
As such, don't completely stop polling when idle. Instead, add a config
"torrentClientPollIntervalIdle" to adjust the interval. The default is
(1000 * 60 * 15) ms aka 15 minutes that should allow low resources
consumption and ensure the automations like logging of download completion
time can work within reasonable error margin.
Fixes: 8452d51b79
Bug: #45, Flood-UI/flood#405