syshealth.sh 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. #!/bin/bash
  2. # Hestia Control Panel - System Health Check and Repair Function Library
  3. # Read known configuration keys from $HESTIA/conf/defaults/$system.conf
  4. function read_kv_config_file() {
  5. local system=$1
  6. while read -r str; do
  7. echo "$str"
  8. done < <(cat $HESTIA/conf/defaults/$system.conf)
  9. unset system
  10. }
  11. # Write known configuration keys to $HESTIA/conf/defaults/
  12. function write_kv_config_file() {
  13. # Ensure configuration directory exists
  14. if [ ! -d "$HESTIA/conf/defaults/" ]; then
  15. mkdir "$HESTIA/conf/defaults/"
  16. fi
  17. # Remove previous known good configuration
  18. if [ -f "$HESTIA/conf/defaults/$system.conf" ]; then
  19. rm -f $HESTIA/conf/defaults/$system.conf
  20. fi
  21. touch $HESTIA/conf/defaults/$system.conf
  22. for key in ${known_keys[@]}; do
  23. echo $key >> $HESTIA/conf/defaults/$system.conf
  24. done
  25. }
  26. # Sanitize configuration input
  27. function sanitize_config_file() {
  28. local system=$1
  29. known_keys=$(read_kv_config_file "$system")
  30. for key in $known_keys; do
  31. unset $key
  32. done
  33. }
  34. # Update list of known keys for web.conf files
  35. function syshealth_update_web_config_format() {
  36. # WEB DOMAINS
  37. # Create array of known keys in configuration file
  38. system="web"
  39. known_keys=(DOMAIN IP IP6 CUSTOM_DOCROOT CUSTOM_PHPROOT FASTCGI_CACHE FASTCGI_DURATION ALIAS TPL SSL SSL_FORCE SSL_HOME LETSENCRYPT FTP_USER FTP_MD5 FTP_PATH BACKEND PROXY PROXY_EXT STATS STATS_USER STATS_CRYPT SUSPENDED TIME DATE)
  40. write_kv_config_file
  41. unset system
  42. unset known_keys
  43. }
  44. # Update list of known keys for dns.conf files
  45. function syshealth_update_dns_config_format() {
  46. # DNS DOMAINS
  47. # Create array of known keys in configuration file
  48. system="dns"
  49. known_keys=(DOMAIN IP TPL TTL EXP SOA SERIAL SRC RECORDS SUSPENDED TIME DATE)
  50. write_kv_config_file
  51. unset system
  52. unset known_keys
  53. # DNS RECORDS
  54. system="dns_records"
  55. known_keys=(ID RECORD TYPE PRIORITY VALUE SUSPENDED TIME DATE TTL)
  56. write_kv_config_file
  57. unset system
  58. unset known_keys
  59. }
  60. # Update list of known keys for mail.conf files
  61. function syshealth_update_mail_config_format() {
  62. # MAIL DOMAINS
  63. # Create array of known keys in configuration file
  64. system="mail"
  65. known_keys=(DOMAIN ANTIVIRUS ANTISPAM DKIM WEBMAIL SSL LETSENCRYPT CATCHALL ACCOUNTS U_DISK SUSPENDED TIME DATE)
  66. write_kv_config_file
  67. unset system
  68. unset known_keys
  69. # MAIL ACCOUNTS
  70. system="mail_accounts"
  71. known_keys=(ACCOUNT ALIAS AUTOREPLY FWD FWD_ONLY MD5 QUOTA U_DISK SUSPENDED TIME DATE)
  72. write_kv_config_file
  73. unset system
  74. unset known_keys
  75. }
  76. # Update list of known keys for user.conf files
  77. function syshealth_update_user_config_format() {
  78. # USER CONFIGURATION
  79. # Create array of known keys in configuration file
  80. system="user"
  81. known_keys=(NAME PACKAGE CONTACT CRON_REPORTS MD5 RKEY TWOFA QRCODE PHPCLI ROLE SUSPENDED SUSPENDED_USERS SUSPENDED_WEB SUSPENDED_DNS SUSPENDED_MAIL SUSPENDED_DB SUSPENDED_CRON IP_AVAIL IP_OWNED U_USERS U_DISK U_DISK_DIRS U_DISK_WEB U_DISK_MAIL U_DISK_DB U_BANDWIDTH U_WEB_DOMAINS U_WEB_SSL U_WEB_ALIASES U_DNS_DOMAINS U_DNS_RECORDS U_MAIL_DKIM U_MAIL_DKIM U_MAIL_ACCOUNTS U_MAIL_DOMAINS U_MAIL_SSL U_DATABASES U_CRON_JOBS U_BACKUPS LANGUAGE THEME NOTIFICATIONS PREF_UI_SORT TIME DATE)
  82. write_kv_config_file
  83. unset system
  84. unset known_keys
  85. # CRON JOB CONFIGURATION
  86. # Create array of known keys in configuration file
  87. system="cron"
  88. known_keys=(JOB MIN HOUR DAY MONTH WDAY CMD SUSPENDED TIME DATE)
  89. write_kv_config_file
  90. unset system
  91. unset known_keys
  92. }
  93. # Update list of known keys for db.conf files
  94. function syshealth_update_db_config_format() {
  95. # DATABASE CONFIGURATION
  96. # Create array of known keys in configuration file
  97. system="db"
  98. known_keys=(DB DBUSER MD5 HOST TYPE CHARSET U_DISK SUSPENDED TIME DATE)
  99. write_kv_config_file
  100. unset system
  101. unset known_keys
  102. }
  103. # Update list of known keys for ip.conf files
  104. function syshealth_update_ip_config_format() {
  105. # IP ADDRESS
  106. # Create array of known keys in configuration file
  107. system="ip"
  108. known_keys=(OWNER STATUS NAME U_SYS_USERS U_WEB_DOMAINS INTERFACE NETMASK NAT HELO TIME DATE)
  109. write_kv_config_file
  110. unset system
  111. unset known_keys
  112. }
  113. # Repair web domain configuration
  114. function syshealth_repair_web_config() {
  115. system="web"
  116. sanitize_config_file "$system"
  117. get_domain_values 'web'
  118. prev="DOMAIN"
  119. for key in $known_keys; do
  120. if [ -z "${!key}" ]; then
  121. add_object_key 'web' 'DOMAIN' "$domain" "$key" "$prev"
  122. fi
  123. prev=$key
  124. done
  125. }
  126. function syshealth_update_system_config_format() {
  127. # SYSTEM CONFIGURATION
  128. # Create array of known keys in configuration file
  129. system="system"
  130. known_keys=(ANTISPAM_SYSTEM ANTIVIRUS_SYSTEM API_ALLOWED_IP API BACKEND_PORT BACKUP_GZIP BACKUP_MODE BACKUP_SYSTEM CRON_SYSTEM DB_PMA_ALIAS DB_SYSTEM DISK_QUOTA DNS_SYSTEM ENFORCE_SUBDOMAIN_OWNERSHIP FILE_MANAGER FIREWALL_EXTENSION FIREWALL_SYSTEM FTP_SYSTEM IMAP_SYSTEM INACTIVE_SESSION_TIMEOUT LANGUAGE LOGIN_STYLE MAIL_SYSTEM PROXY_PORT PROXY_SSL_PORT PROXY_SYSTEM RELEASE_BRANCH STATS_SYSTEM THEME UPDATE_HOSTNAME_SSL UPGRADE_SEND_EMAIL UPGRADE_SEND_EMAIL_LOG WEB_BACKEND WEBMAIL_ALIAS WEBMAIL_SYSTEM WEB_PORT WEB_RGROUPS WEB_SSL WEB_SSL_PORT WEB_SYSTEM VERSION)
  131. write_kv_config_file
  132. unset system
  133. unset known_keys
  134. }
  135. # Restore System Configuration
  136. # Replaces $HESTIA/conf/hestia.conf with "known good defaults" file ($HESTIA/conf/defaults/hestia.conf)
  137. function syshealth_restore_system_config() {
  138. if [ -f "$HESTIA/conf/defaults/hestia.conf" ]; then
  139. mv $HESTIA/conf/hestia.conf $HESTIA/conf/hestia.conf.old
  140. cp $HESTIA/conf/defaults/hestia.conf $HESTIA/conf/hestia.conf
  141. rm -f $HESTIA/conf/hestia.conf.old
  142. else
  143. echo "ERROR: System default configuration file not found, aborting."
  144. exit 1
  145. fi
  146. }
  147. # Repair System Configuration
  148. # Adds missing variables to $HESTIA/conf/hestia.conf with safe default values
  149. function syshealth_repair_system_config() {
  150. # Release branch
  151. if [ -z "$RELEASE_BRANCH" ]; then
  152. echo "[ ! ] Adding missing variable to hestia.conf: RELEASE_BRANCH ('release')"
  153. $BIN/v-change-sys-config-value 'RELEASE_BRANCH' 'release'
  154. fi
  155. # Webmail alias
  156. if [ ! -z "$IMAP_SYSTEM" ]; then
  157. if [ -z "$WEBMAIL_ALIAS" ]; then
  158. echo "[ ! ] Adding missing variable to hestia.conf: WEBMAIL_ALIAS ('webmail')"
  159. $BIN/v-change-sys-config-value 'WEBMAIL_ALIAS' 'webmail'
  160. fi
  161. fi
  162. # phpMyAdmin/phpPgAdmin alias
  163. if [ ! -z "$DB_SYSTEM" ]; then
  164. if [ "$DB_SYSTEM" = "mysql" ]; then
  165. if [ -z "$DB_PMA_ALIAS" ]; then
  166. echo "[ ! ] Adding missing variable to hestia.conf: DB_PMA_ALIAS ('phpmyadmin)"
  167. $BIN/v-change-sys-config-value 'DB_PMA_ALIAS' 'phpmyadmin'
  168. fi
  169. fi
  170. if [ "$DB_SYSTEM" = "pgsql" ]; then
  171. if [ -z "$DB_PGA_ALIAS" ]; then
  172. echo "[ ! ] Adding missing variable to hestia.conf: DB_PGA_ALIAS ('phppgadmin')"
  173. $BIN/v-change-sys-config-value 'DB_PGA_ALIAS' 'phppgadmin'
  174. fi
  175. fi
  176. fi
  177. # Backup compression level
  178. if [ -z "$BACKUP_GZIP" ]; then
  179. echo "[ ! ] Adding missing variable to hestia.conf: BACKUP_GZIP ('4')"
  180. $BIN/v-change-sys-config-value 'BACKUP_GZIP' '4'
  181. fi
  182. # Theme
  183. if [ -z "$THEME" ]; then
  184. echo "[ ! ] Adding missing variable to hestia.conf: THEME ('dark')"
  185. $BIN/v-change-sys-config-value 'THEME' 'dark'
  186. fi
  187. # Default language
  188. if [ -z "$LANGUAGE" ]; then
  189. echo "[ ! ] Adding missing variable to hestia.conf: LANGUAGE ('en')"
  190. $BIN/v-change-sys-language 'en'
  191. fi
  192. # Disk Quota
  193. if [ -z "$DISK_QUOTA" ]; then
  194. echo "[ ! ] Adding missing variable to hestia.conf: DISK_QUOTA ('no')"
  195. $BIN/v-change-sys-config-value 'DISK_QUOTA' 'no'
  196. fi
  197. # CRON daemon
  198. if [ -z "$CRON_SYSTEM" ]; then
  199. echo "[ ! ] Adding missing variable to hestia.conf: CRON_SYSTEM ('cron')"
  200. $BIN/v-change-sys-config-value 'CRON_SYSTEM' 'cron'
  201. fi
  202. # Backend port
  203. if [ -z "$BACKEND_PORT" ]; then
  204. ORIGINAL_PORT=$(cat $HESTIA/nginx/conf/nginx.conf | grep "listen" | sed 's/[^0-9]*//g')
  205. echo "[ ! ] Adding missing variable to hestia.conf: BACKEND_PORT ('$ORIGINAL_PORT')"
  206. $HESTIA/bin/v-change-sys-config-value 'BACKEND_PORT' $PORT
  207. fi
  208. # Upgrade: Send email notification
  209. if [ -z "$UPGRADE_SEND_EMAIL" ]; then
  210. echo "[ ! ] Adding missing variable to hestia.conf: UPGRADE_SEND_EMAIL ('true')"
  211. $BIN/v-change-sys-config-value 'UPGRADE_SEND_EMAIL' 'true'
  212. fi
  213. # Upgrade: Send email notification
  214. if [ -z "$UPGRADE_SEND_EMAIL_LOG" ]; then
  215. echo "[ ! ] Adding missing variable to hestia.conf: UPGRADE_SEND_EMAIL_LOG ('false')"
  216. $BIN/v-change-sys-config-value 'UPGRADE_SEND_EMAIL_LOG' 'false'
  217. fi
  218. # File Manager
  219. if [ -z "$FILE_MANAGER" ]; then
  220. echo "[ ! ] Adding missing variable to hestia.conf: FILE_MANAGER ('true')"
  221. $BIN/v-add-sys-filemanager quiet
  222. fi
  223. # Support for ZSTD / GZIP Change
  224. if [ -z "$BACKUP_MODE" ]; then
  225. echo "[ ! ] Setting zstd backup compression type as default..."
  226. $BIN/v-change-sys-config-value "BACKUP_MODE" "zstd"
  227. fi
  228. # Login style switcher
  229. if [ -z "$LOGIN_STYLE" ]; then
  230. echo "[ ! ] Adding missing variable to hestia.conf: LOGIN_STYLE ('default')"
  231. $BIN/v-change-sys-config-value "LOGIN_STYLE" "default"
  232. fi
  233. # Webmail clients
  234. if [ -z "$WEBMAIL_SYSTEM" ]; then
  235. if [ -d "/var/lib/roundcube" ]; then
  236. echo "[ ! ] Adding missing variable to hestia.conf: WEBMAIL_SYSTEM ('roundcube')"
  237. $BIN/v-change-sys-config-value "WEBMAIL_SYSTEM" "roundcube"
  238. else
  239. echo "[ ! ] Adding missing variable to hestia.conf: WEBMAIL_SYSTEM ('')"
  240. $BIN/v-change-sys-config-value "WEBMAIL_SYSTEM" ""
  241. fi
  242. fi
  243. # Inactive session timeout
  244. if [ -z "$INACTIVE_SESSION_TIMEOUT" ]; then
  245. echo "[ ! ] Adding missing variable to hestia.conf: INACTIVE_SESSION_TIMEOUT ('60')"
  246. $BIN/v-change-sys-config-value "INACTIVE_SESSION_TIMEOUT" "60"
  247. fi
  248. # Enforce subdomain ownership
  249. if [ -z "$ENFORCE_SUBDOMAIN_OWNERSHIP" ]; then
  250. echo "[ ! ] Adding missing variable to hestia.conf: ENFORCE_SUBDOMAIN_OWNERSHIP ('no')"
  251. $BIN/v-change-sys-config-value "ENFORCE_SUBDOMAIN_OWNERSHIP" "no"
  252. fi
  253. # API access allowed IP's
  254. if [ "$API" = "yes" ]; then
  255. check_api_key=$(grep "API_ALLOWED_IP" $HESTIA/conf/hestia.conf)
  256. if [ -z "$check_api_key" ]; then
  257. if [ -z "$API_ALLOWED_IP" ]; then
  258. echo "[ ! ] Adding missing variable to hestia.conf: API_ALLOWED_IP ('allow-all')"
  259. $BIN/v-change-sys-config-value "API_ALLOWED_IP" "allow-all"
  260. fi
  261. fi
  262. fi
  263. # Enforce subdomain ownership
  264. if [ -z "$ENFORCE_SUBDOMAIN_OWNERSHIP" ]; then
  265. echo "[ ! ] Adding missing variable to hestia.conf: ENFORCE_SUBDOMAIN_OWNERSHIP ('yes')"
  266. $BIN/v-change-sys-config-value "ENFORCE_SUBDOMAIN_OWNERSHIP" "yes"
  267. fi
  268. # Debug mode
  269. if [ -z "$DEBUG_MODE" ]; then
  270. echo "[ ! ] Adding missing variable to hestia.conf: DEBUG_MODE ('false')"
  271. $BIN/v-change-sys-config-value "DEBUG_MODE" "false"
  272. fi
  273. # Quick install plugin
  274. if [ -z "$PLUGIN_APP_INSTALLER" ]; then
  275. echo "[ ! ] Adding missing variable to hestia.conf: PLUGIN_APP_INSTALLER ('true')"
  276. $BIN/v-change-sys-config-value "PLUGIN_APP_INSTALLER" "true"
  277. fi
  278. # Enable preview mode
  279. if [ -z "$POLICY_SYSTEM_ENABLE_BACON" ]; then
  280. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_SYSTEM_ENABLE_BACON ('false')"
  281. $BIN/v-change-sys-config-value "POLICY_SYSTEM_ENABLE_BACON" "false"
  282. fi
  283. # Hide system services
  284. if [ -z "$POLICY_SYSTEM_HIDE_SERVICES" ]; then
  285. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_SYSTEM_HIDE_SERVICES ('no')"
  286. $BIN/v-change-sys-config-value "POLICY_SYSTEM_HIDE_SERVICES" "no"
  287. fi
  288. # Password reset
  289. if [ -z "$POLICY_SYSTEM_PASSWORD_RESET" ]; then
  290. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_SYSTEM_PASSWORD_RESET ('no')"
  291. $BIN/v-change-sys-config-value "POLICY_SYSTEM_PASSWORD_RESET" "no"
  292. fi
  293. # Protect admin user
  294. if [ -z "$POLICY_SYSTEM_PROTECTED_ADMIN" ]; then
  295. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_SYSTEM_PROTECTED_ADMIN ('no')"
  296. $BIN/v-change-sys-config-value "POLICY_SYSTEM_PROTECTED_ADMIN" "no"
  297. fi
  298. # Theme editor
  299. if [ -z "$POLICY_USER_CHANGE_THEME" ]; then
  300. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_USER_CHANGE_THEME ('yes')"
  301. $BIN/v-change-sys-config-value "POLICY_USER_CHANGE_THEME" "true"
  302. fi
  303. # Allow user delete logs
  304. if [ -z "$POLICY_USER_DELETE_LOGS" ]; then
  305. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_USER_DELETE_LOGS ('yes')"
  306. $BIN/v-change-sys-config-value "POLICY_USER_DELETE_LOGS" "yes"
  307. fi
  308. # Allow users to delete details
  309. if [ -z "$POLICY_USER_EDIT_DETAILS" ]; then
  310. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_USER_EDIT_DETAILS ('yes')"
  311. $BIN/v-change-sys-config-value "POLICY_USER_EDIT_DETAILS" "yes"
  312. fi
  313. # Allow users to edit DNS templates
  314. if [ -z "$POLICY_USER_EDIT_DNS_TEMPLATES" ]; then
  315. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_USER_EDIT_DNS_TEMPLATES ('yes')"
  316. $BIN/v-change-sys-config-value "POLICY_USER_EDIT_DNS_TEMPLATES" "yes"
  317. fi
  318. # Allow users to edit web templates
  319. if [ -z "$POLICY_USER_EDIT_WEB_TEMPLATES" ]; then
  320. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_USER_EDIT_WEB_TEMPLATES ('yes')"
  321. $BIN/v-change-sys-config-value "POLICY_USER_EDIT_WEB_TEMPLATES" "true"
  322. fi
  323. # View user logs
  324. if [ -z "$POLICY_USER_VIEW_LOGS" ]; then
  325. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_USER_VIEW_LOGS ('yes')"
  326. $BIN/v-change-sys-config-value "POLICY_USER_VIEW_LOGS" "true"
  327. fi
  328. # Allow users to login (read only) when suspended
  329. if [ -z "$POLICY_USER_VIEW_SUSPENDED" ]; then
  330. echo "[ ! ] Adding missing variable to hestia.conf: POLICY_USER_VIEW_SUSPENDED ('no')"
  331. $BIN/v-change-sys-config-value "POLICY_USER_VIEW_SUSPENDED" "no"
  332. fi
  333. # PHPMyadmin SSO key
  334. if [ -z "$PHPMYADMIN_KEY" ]; then
  335. echo "[ ! ] Adding missing variable to hestia.conf: PHPMYADMIN_KEY ('')"
  336. $BIN/v-change-sys-config-value "PHPMYADMIN_KEY" ""
  337. fi
  338. # Use SMTP server for hestia internal mail
  339. if [ -z "$USE_SERVER_SMTP" ]; then
  340. echo "[ ! ] Adding missing variable to hestia.conf: USE_SERVER_SMTP ('')"
  341. $BIN/v-change-sys-config-value "USE_SERVER_SMTP" "false"
  342. fi
  343. if [ -z "$SERVER_SMTP_PORT" ]; then
  344. echo "[ ! ] Adding missing variable to hestia.conf: SERVER_SMTP_PORT ('')"
  345. $BIN/v-change-sys-config-value "SERVER_SMTP_PORT" ""
  346. fi
  347. if [ -z "$SERVER_SMTP_HOST" ]; then
  348. echo "[ ! ] Adding missing variable to hestia.conf: SERVER_SMTP_HOST ('')"
  349. $BIN/v-change-sys-config-value "SERVER_SMTP_HOST" ""
  350. fi
  351. if [ -z "$SERVER_SMTP_SECURITY" ]; then
  352. echo "[ ! ] Adding missing variable to hestia.conf: SERVER_SMTP_SECURITY ('')"
  353. $BIN/v-change-sys-config-value "SERVER_SMTP_SECURITY" ""
  354. fi
  355. if [ -z "$SERVER_SMTP_USER" ]; then
  356. echo "[ ! ] Adding missing variable to hestia.conf: SERVER_SMTP_USER ('')"
  357. $BIN/v-change-sys-config-value "SERVER_SMTP_USER" ""
  358. fi
  359. if [ -z "$SERVER_SMTP_PASSWD" ]; then
  360. echo "[ ! ] Adding missing variable to hestia.conf: SERVER_SMTP_PASSWD ('')"
  361. $BIN/v-change-sys-config-value "SERVER_SMTP_PASSWD" ""
  362. fi
  363. if [ -z "$SERVER_SMTP_ADDR" ]; then
  364. echo "[ ! ] Adding missing variable to hestia.conf: SERVER_SMTP_ADDR ('')"
  365. $BIN/v-change-sys-config-value "SERVER_SMTP_ADDR" ""
  366. fi
  367. }
  368. # Repair System Cron Jobs
  369. # Add default cron jobs to "admin" user account's cron tab
  370. function syshealth_repair_system_cronjobs() {
  371. $HESTIA/bin/v-add-cron-job 'admin' '*/2' '*' '*' '*' '*' "sudo $HESTIA/bin/v-update-sys-queue restart" '' 'no'
  372. $HESTIA/bin/v-add-cron-job 'admin' '10' '00' '*' '*' '*' "sudo $HESTIA/bin/v-update-sys-queue daily" '' 'no'
  373. $HESTIA/bin/v-add-cron-job 'admin' '15' '02' '*' '*' '*' "sudo $HESTIA/bin/v-update-sys-queue disk" '' 'no'
  374. $HESTIA/bin/v-add-cron-job 'admin' '10' '00' '*' '*' '*' "sudo $HESTIA/bin/v-update-sys-queue traffic" '' 'no'
  375. $HESTIA/bin/v-add-cron-job 'admin' '30' '03' '*' '*' '*' "sudo $HESTIA/bin/v-update-sys-queue webstats" '' 'no'
  376. $HESTIA/bin/v-add-cron-job 'admin' '*/5' '*' '*' '*' '*' "sudo $HESTIA/bin/v-update-sys-queue backup" '' 'no'
  377. $HESTIA/bin/v-add-cron-job 'admin' '10' '05' '*' '*' '*' "sudo $HESTIA/bin/v-backup-users" '' 'no'
  378. $HESTIA/bin/v-add-cron-job 'admin' '20' '00' '*' '*' '*' "sudo $HESTIA/bin/v-update-user-stats" '' 'no'
  379. $HESTIA/bin/v-add-cron-job 'admin' '*/5' '*' '*' '*' '*' "sudo $HESTIA/bin/v-update-sys-rrd" '' 'no'
  380. $HESTIA/bin/v-restart-cron
  381. }