PHP
This commit is contained in:
parent
0721aefff0
commit
589f5b0f35
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
$redis = new Redis();
|
||||||
|
$redis->connect('127.0.0.1', 6379);
|
||||||
|
|
||||||
|
$mysql_user = '';
|
||||||
|
$mysql_pass = '';
|
||||||
|
|
||||||
|
$db = new PDO('mysql:host=127.0.0.1;dbname=certalertbot;charset=utf8mb4', $mysql_user, $mysql_pass);
|
||||||
|
|
||||||
|
$stmt = $db->prepare("SELECT id, chatid, type, value FROM rules");
|
||||||
|
$stmt->execute();
|
||||||
|
$rules = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
foreach ($rules as $rule) {
|
||||||
|
$toadd = array();
|
||||||
|
$id = $rule["id"];
|
||||||
|
$toadd["id"] = $id;
|
||||||
|
$toadd["value"] = array("t" => $rule["type"], "v" => $rule["value"], "c" => $rule["chatid"]);
|
||||||
|
$toadd = json_encode($toadd, JSON_NUMERIC_CHECK);
|
||||||
|
$redis->rPush('toadd', $toadd);
|
||||||
|
}
|
114
php/certalert.php
Normal file
114
php/certalert.php
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
define('BOT_TOKEN', '');
|
||||||
|
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
|
||||||
|
|
||||||
|
$mysql_user = '';
|
||||||
|
$mysql_pass = '';
|
||||||
|
|
||||||
|
$db = new PDO('mysql:host=127.0.0.1;dbname=certalertbot;charset=utf8mb4', $mysql_user, $mysql_pass);
|
||||||
|
|
||||||
|
$help = "
|
||||||
|
<strong>CertAlert</strong> bot
|
||||||
|
This bot sends an alert when a certificate matching a certain rule is logged in the Certificate Trasparency.
|
||||||
|
|
||||||
|
|
||||||
|
<pre>/list
|
||||||
|
</pre>
|
||||||
|
To list the current rules.
|
||||||
|
|
||||||
|
<pre>/delete <id>
|
||||||
|
</pre>
|
||||||
|
To delete a rule.
|
||||||
|
|
||||||
|
<pre>/add <in/start/end> <string>
|
||||||
|
</pre>
|
||||||
|
To add a rule.
|
||||||
|
<i>in</i> mtaches the given substring in any postition, <i>start</i> at the beginning and <i>end</i> at the end
|
||||||
|
|
||||||
|
For special characters use the IDNA encoding.
|
||||||
|
";
|
||||||
|
|
||||||
|
function reply($chatid, $reply) {
|
||||||
|
return file_get_contents(API_URL."sendmessage?chat_id=".$chatid."&text=".urlencode($reply)."&parse_mode=HTML");
|
||||||
|
}
|
||||||
|
|
||||||
|
$content = file_get_contents("php://input");
|
||||||
|
//error_log($content);
|
||||||
|
$update = json_decode($content, true);
|
||||||
|
$chatid = $update["message"]["chat"]["id"];
|
||||||
|
|
||||||
|
$fromid = $update["message"]["from"]["id"];
|
||||||
|
$fromusername = $update["message"]["from"]["username"];
|
||||||
|
$command = explode(" ", $update['message']['text'])[0];
|
||||||
|
|
||||||
|
switch($command) {
|
||||||
|
case '/start':
|
||||||
|
$reply = $help;
|
||||||
|
break;
|
||||||
|
case '/list':
|
||||||
|
$stmt = $db->prepare("SELECT id, type, value FROM rules where userid = ? ORDER BY timestamp ASC");
|
||||||
|
$stmt->execute(array($fromid));
|
||||||
|
$rules = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
if (!empty($rules)) {
|
||||||
|
$reply = "<strong>ID\tType\tValue</strong>\n";
|
||||||
|
foreach ($rules as $rule) {
|
||||||
|
switch($rule['type']) {
|
||||||
|
case 0:
|
||||||
|
$type = "in";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
$type = "start";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$type = "end";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$reply .= $rule['id']."\t<i>".$type."</i>\t".htmlentities($rule['value'])."\n";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$reply = "There are no rules yet";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
break;
|
||||||
|
case '/add':
|
||||||
|
$exp = explode(" ", $update['message']['text']);
|
||||||
|
$type = $exp[1];
|
||||||
|
$value = $exp[2];
|
||||||
|
switch($type) {
|
||||||
|
case 'in':
|
||||||
|
$type = 0;
|
||||||
|
break;
|
||||||
|
case 'start':
|
||||||
|
$type = 1;
|
||||||
|
break;
|
||||||
|
case 'end':
|
||||||
|
$type = 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$type = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ($type > -1) {
|
||||||
|
$stmt = $db->prepare("INSERT INTO rules (userid, chatid, type, value, timestamp) VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP())");
|
||||||
|
$stmt->execute(array($fromid, $chatid, $type, $value));
|
||||||
|
$reply = "Rule added, check with /list";
|
||||||
|
} else {
|
||||||
|
$reply = "Invalid rule type.";
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case '/delete':
|
||||||
|
$exp = explode(" ", $update['message']['text']);
|
||||||
|
$id = $exp[1];
|
||||||
|
$stmt = $db->prepare("DELETE FROM rules WHERE id = ? AND userid = ?");
|
||||||
|
$stmt->execute(array($id, $fromid));
|
||||||
|
$reply = "Rule ".$id." deleted";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$reply = "Unknown command";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
reply($chatid, $reply);
|
||||||
|
|
||||||
|
?>
|
Loading…
Reference in New Issue
Block a user