Artisan Commands and Scheduled Tasks (Crons)

Command list, arguments/options, usage

Artisan Commands

Command Line Commands (Artisan)

CFM includes a number of custom Laravel Artisan commands to help automate and manage blocklists, phishing detection, feed ingestion, and other system behaviors.

To view available commands, use the following in your project root:

php artisan

Below is an overview of the key command groups available in CFM:


๐Ÿ”Œ agents

Command Description
agents:check-notifications Checks the last-seen status of each agent and sends notifications (e.g., Slack) if any are down.

๐Ÿ—‘๏ธ autodelete

Command Description
autodelete:run Runs AutoDeleteJob to remove old records (e.g., blocklist entries, logs) based on custom rules.

๐Ÿšซ blocklist

Command Description
blocklist:fetch-geodata Bulk fetches GeoIP data for blocklist entries (country, ASN, etc.).
blocklist:resolve-geodata Resolves GeoIP data with optional processing limits for batching.
blocklist:resolve-ptr Resolves PTR (Reverse DNS) records for IPs in batches. Parallel processing supported.

๐Ÿงน cache

Command Description
cache:clear Clears the Laravel application cache.

๐Ÿฆ  clamav

Command Description
clamav:generate-signatures Generates ClamAV-compatible signature files from phishing URLs and malware file hashes (MD5, SHA1, SHA256).

โš™๏ธ config

This section may include config sync-related commands, depending on future additions.


๐ŸŒ data-feeds

Command Description
data-feeds:fetch Fetches and processes all active data feeds configured in the system.
import:blocklist Imports a list of IPs into the blocklist, whitelist, or greylist.
import:domains Imports domains into the blocklist or whitelist.
import:mail-filters Imports email sender/domain filters from a file.

๐Ÿ“„ iplists

Command Description
iplists:generate Generates whitelist.txt, greylist.txt, and blacklist.txt files from the database for CSF or DNS use.

๐Ÿ“ฌ mailfromfilters

Command Description
mailfromfilters:generate Generates mailfromfilters.cf used by the mail filtering system, based on DB entries.

๐Ÿง  spamassassin

Command Description
spamassassin:generate-rules Generates a SpamAssassin custom keyword rule file from the spam_keywords table. Supports strict and loose matching, Greek normalization, etc.

These commands allow you to maintain and automate your security infrastructure directly from the console, and can be scheduled or run on-demand as needed.

ย 

Scheduled Tasks / Cron and Supervisor settings

โฑ๏ธ Scheduled Commands (Cron)

Scheduled tasks are defined in routes/console.php and executed using Laravel's schedule:run command. They can be run via a cron shell script or with a process manager like Supervisor.

Shell Cron Example:

#!/bin/bash
cd "$(dirname "$0")"
php artisan schedule:run >> /dev/null 2>&1

Supervisor Setup (Recommended)

Service file: supervisor.service

ย 

[Unit]
Description=Supervisor process control system for UNIX
After=network.target

ย 

[Service]
ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload
Restart=on-failure
RestartSec=50s

Program config: /etc/supervisor/conf.d/cfm.conf

[program:cfm]
command=php /home/cfm/artisan queue:work redis --memory=2048 --tries=3 --timeout=600
user=cfm
autostart=true
autorestart=true
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/supervisor/cfm.log

ย 

ย 

Scheduled Commands

Command Schedule Description
iplists:generate Every 10 minutes Generate updated IP lists from the DB
clamav:generate-signatures Hourly at :50 Generate ClamAV signature files
agents:check-notifications Every minute Check agent status and send alerts
autodelete:run Daily at 08:00 Run AutoDelete cleanup job
config:sync-storage Every 5 minutes Sync configuration files from disk
blocklist:resolve-ptr Every 10 minutes Resolve PTR records in batches
blocklist:resolve-geodata Every 10 minutes Resolve ASN/Country data in bulk
unblocks:cleanup Every 5 minutes Cleanup old unblock requests
phishlist:generate Every 30 minutes Regenerate phishing domain list
mailfromfilters:generate Hourly Regenerate mailfromfilters.cf
execution:dispatch Every minute Dispatch queued execution rules
DataFeedJob (callback) Every minute Dispatch data feed jobs for active feeds

These scheduled commands are critical for keeping data up-to-date, automating cleanup, syncing feeds and configurations, and dispatching jobs to agents or queues.

ย