Skip to content

Commit

Permalink
Update to automation system
Browse files Browse the repository at this point in the history
  • Loading branch information
getpinga committed Jan 10, 2024
1 parent 7003a71 commit e339ddb
Show file tree
Hide file tree
Showing 4 changed files with 169 additions and 6 deletions.
3 changes: 2 additions & 1 deletion automation/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"setbased/php-audit": "^1.9",
"monolog/monolog": "^3.5",
"league/flysystem": "^3.23",
"league/flysystem-sftp-v3": "^3.22"
"league/flysystem-sftp-v3": "^3.22",
"pinga/crontab": "^1.0"
}
}
155 changes: 155 additions & 0 deletions automation/cron.php
Original file line number Diff line number Diff line change
@@ -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();
15 changes: 11 additions & 4 deletions docs/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

### 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

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.
Expand Down Expand Up @@ -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.

### 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:

```bash
Expand Down
2 changes: 1 addition & 1 deletion docs/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ EOF
echo -e "Next steps:\n"
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 "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."
else
echo "Unsupported Linux distribution or version"
Expand Down

0 comments on commit e339ddb

Please sign in to comment.