123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?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);
-
- ?>
|