Update to automation system

This commit is contained in:
Pinga 2024-01-10 20:59:42 +02:00
parent 7003a71607
commit e339ddb16e
4 changed files with 169 additions and 6 deletions

View file

@ -6,6 +6,7 @@
"setbased/php-audit": "^1.9", "setbased/php-audit": "^1.9",
"monolog/monolog": "^3.5", "monolog/monolog": "^3.5",
"league/flysystem": "^3.23", "league/flysystem": "^3.23",
"league/flysystem-sftp-v3": "^3.22" "league/flysystem-sftp-v3": "^3.22",
"pinga/crontab": "^1.0"
} }
} }

155
automation/cron.php Normal file
View file

@ -0,0 +1,155 @@
<?php
use Workerman\Worker;
use Workerman\Events\Swoole;
use Pinga\Crontab\Crontab;
require __DIR__ . '/vendor/autoload.php';
Worker::$eventLoopClass = Swoole::class;
Worker::$daemonize = true;
// Configuration
$cronJobConfig = [
'accounting' => false, // Set to true to enable
'backup' => false, // Set to true to enable
'gtld_mode' => false, // Set to true to enable
'spec11' => false, // Set to true to enable
];
// Zone Generator
$writezone = new Worker();
$writezone->name = 'Zone Generator';
$writezone->onWorkerStart = function () {
new Crontab('*/15 * * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/write-zone.php > /dev/null 2>&1');
});
};
// System Maintenance
$maintenance = new Worker();
$maintenance->name = 'System Maintenance';
$maintenance->onWorkerStart = function () {
new Crontab('35 * * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/registrar.php > /dev/null 2>&1');
});
new Crontab('59 * * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/statistics.php > /dev/null 2>&1');
});
new Crontab('50 1 * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/rdap-urls.php > /dev/null 2>&1');
});
new Crontab('0 0 * * 1', function(){
exec('/usr/bin/php8.2 /var/www/cp/bin/file_cache.php > /dev/null 2>&1');
});
};
// Domain Maintenance
$domainmaint = new Worker();
$domainmaint->name = 'Domain Maintenance';
$domainmaint->onWorkerStart = function () {
new Crontab('30 * * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/change-domain-status.php > /dev/null 2>&1');
});
new Crontab('45 * * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/auto-approve-transfer.php > /dev/null 2>&1');
});
new Crontab('5 0 * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/auto-clean-unused-contact-and-host.php > /dev/null 2>&1');
});
};
// Accounting
if ($cronJobConfig['accounting']) {
$accounting = new Worker();
$accounting->name = 'Accounting';
$accounting->onWorkerStart = function () {
new Crontab('1 0 1 * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/send-invoice.php > /dev/null 2>&1');
});
};
}
// Backup
if ($cronJobConfig['backup']) {
$backup = new Worker();
$backup->name = 'Backup';
$backup->onWorkerStart = function () {
new Crontab('15 * * * *', function(){
exec('/opt/registry/automation/vendor/bin/phpbu --configuration=/opt/registry/automation/backup.json > /dev/null 2>&1');
});
new Crontab('30 * * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/backup-upload.php > /dev/null 2>&1');
});
};
}
// Spec11 Reports
if ($cronJobConfig['spec11']) {
$spec11 = new Worker();
$spec11->name = 'Spec11 Reports';
$spec11->onWorkerStart = function () {
new Crontab('30 * * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/abusemonitor.php > /dev/null 2>&1');
});
new Crontab('5 0 * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/abusereport.php > /dev/null 2>&1');
});
};
}
// TMCH
if ($cronJobConfig['gtld_mode']) {
$tmch = new Worker();
$tmch->name = 'TMCH';
$tmch->onWorkerStart = function () {
new Crontab('10 0 * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/lordn.php > /dev/null 2>&1');
});
new Crontab('0 0,12 * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/tmch.php > /dev/null 2>&1');
});
};
}
// URS
if ($cronJobConfig['gtld_mode']) {
$urs = new Worker();
$urs->name = 'URS';
$urs->onWorkerStart = function () {
new Crontab('45 * * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/urs.php > /dev/null 2>&1');
});
};
}
// Escrow
if ($cronJobConfig['gtld_mode']) {
$escrow = new Worker();
$escrow->name = 'Escrow';
$escrow->onWorkerStart = function () {
new Crontab('5 0 * * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/escrow.php > /dev/null 2>&1');
});
};
}
// Reporting
if ($cronJobConfig['gtld_mode']) {
$reporting = new Worker();
$reporting->name = 'Reporting';
$reporting->onWorkerStart = function () {
new Crontab('1 0 1 * *', function(){
exec('/usr/bin/php8.2 /opt/registry/automation/reporting.php > /dev/null 2>&1');
});
};
}
Worker::runAll();

View file

@ -441,10 +441,6 @@ composer require phpmailer/phpmailer
This command will install one of the packages which are essential for the message broker script to function correctly. This command will install one of the packages which are essential for the message broker script to function correctly.
### Configuring the Crontab for Automation Scripts
To set up automated tasks for Namingo, open the example crontab file located at ```/opt/registry/automation/crontab.example```. Review the contents and copy the relevant lines into your system's crontab file. Remember to adjust the paths and timings as necessary to suit your environment.
### Configuring the Message Broker ### Configuring the Message Broker
You can easily configure the message broker for email delivery in ```config.php```. It is compatible with SendGrid, Mailgun API, and PHPMailer for those opting to use their own SMTP server. All necessary settings are conveniently located under the mailer_ lines within the file. You can easily configure the message broker for email delivery in ```config.php```. It is compatible with SendGrid, Mailgun API, and PHPMailer for those opting to use their own SMTP server. All necessary settings are conveniently located under the mailer_ lines within the file.
@ -526,6 +522,17 @@ Always keep your private key secure. Do not share it. If someone gains access to
Please send the exported `publickey.asc` to your RDE provider, and also place the path to `privatekey.asc` in the escrow.php system as required. Please send the exported `publickey.asc` to your RDE provider, and also place the path to `privatekey.asc` in the escrow.php system as required.
### Running the Automation System
Once you have successfully configured all automation scripts, you are ready to initiate the automation system. Please proceed by executing the commands listed below:
```bash
cd /opt/registry/automation
php cron.php start
```
Alternatively, you may opt for the traditional Linux crontab method. Should you choose this approach, begin by accessing the sample crontab file at ```/opt/registry/automation/crontab.example```. Carefully examine its contents, and then copy the pertinent lines into your system's crontab file.
## 13. Setup DAS: ## 13. Setup DAS:
```bash ```bash

View file

@ -405,7 +405,7 @@ EOF
echo -e "Next steps:\n" echo -e "Next steps:\n"
echo -e "1. Configure each component by editing their respective configuration files." echo -e "1. Configure each component by editing their respective configuration files."
echo -e "2. Once configuration is complete, start each service with the following command:\n systemctl start SERVICE_NAME.service\n Replace 'SERVICE_NAME' with the specific service (whois, rdap, epp, das) as needed." echo -e "2. Once configuration is complete, start each service with the following command:\n systemctl start SERVICE_NAME.service\n Replace 'SERVICE_NAME' with the specific service (whois, rdap, epp, das) as needed."
echo -e "3. To set up automation services, refer to the configuration manual and edit the files in:\n /opt/registry/automation\n" echo -e "3. To set up automation services, refer to the configuration manual, edit the config in:\n /opt/registry/automation/config.php and run php /opt/registry/automation/cron.php start\n"
echo -e "For more detailed information, please consult the accompanying documentation or support resources." echo -e "For more detailed information, please consult the accompanying documentation or support resources."
else else
echo "Unsupported Linux distribution or version" echo "Unsupported Linux distribution or version"