Files
scripts/Perl control mFi/timer.pl
2024-10-14 00:08:40 +02:00

54 lines
1.5 KiB
Perl

#!/usr/bin/perl
## INSERT INTO `queue` (`id`, `port_id`, `state`) VALUES (NULL, '1', '1');
use DBI;
use strict;
# Variable für SQL Befehle
my $sql;
# DB Parameter
my ($db_user, $db_name, $db_pass, $db_host) = ('1_mfi', '1_mfi', 'K01v1kk0!', 'panel.agserver.de');
# DB connect
my $dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host", $db_user, $db_pass) or die "Cannot connect to DB\n";
# Cron Einträge in DB?
$sql = "select * from timer";
my $rows = $dbh->do("$sql");
if ($rows == 0) {
print "nothing to do\n";
exit 0;
}
# Lese timer Tabelle
$sql = "select id, min, port_id, state from timer";
# 0 1 2 3
my $rows = $dbh->selectall_arrayref("$sql");
foreach (@$rows) {
# für jeden Eintrag
my $row=$_;
my $id=$row->[0];
my $min=$row->[1];
my $port_id=$row->[2];
my $state=$row->[3];
print "ID:$id Restminuten:$min Port-ID:$port_id Status:$state\n";
# ist 'min' = 0 eintrag löschen und einen Eintrag in queue schreiben
if ($min == 0) {
print "Lösche Timer und erstelle cron Eintrag\n";
$sql = "delete from timer where id='$id'";
$dbh->do("$sql");
$sql = "insert into queue (port_id, state, forced, source) values ($port_id, $state, 1, 'timer')";
$dbh->do("$sql");
} else {
print "Eine (weitere) Minute ist vergangen\n";
# min um eins reduzieren
$min--;
# min zurückschreiben
$sql = "update timer set min = '$min' where id='$id'";
$dbh->do("$sql");
}
}