Scoring-Module erstellen
Aus sourceDESK Wiki
Version vom 10. Oktober 2018, 08:32 Uhr von Richard Reiber (Diskussion | Beiträge)
Sie können ein eigenes Scoring-Modul erstellen, um einen neuen Scoring-Anbieter an sourceDESK anzubinden.
Inhaltsverzeichnis
Grundaufbau
Ein Scoring-Modul bekommt ein eigenes Verzeichnis unter modules/scoring. In diesem Verzeichnis muss sich eine PHP-Datei mit dem gleichen Namen wie das Verzeichnis und der Endung .php befinden. In dieser PHP-Datei wird eine Klasse definiert, die von der Klasse Scoring erbt.
Attribute
Es werden mehrere Attribute innerhalb der erstellten Klasse benötigt, die höchstens protected sein dürfen:
- $short gibt den Kurznamen des Moduls an, das entspricht dem Verzeichnis- bzw. Dateinamen
- $name gibt einen Anzeigenamen für das Modul an
- $version definiert die Version des Moduls
Methoden
Folgende Methoden können definiert werden:
- getSettings() gibt die verfügbaren Modul-Einstellungen als Array zurück - auf sie kann nachher über das Objekt (stdClass) $this->options zugegriffen werden
- getMethods($u) definiert die für dieses Scoring-Modul verfügbaren Prüfroutinen und die dazugehörigen Methoden, die bei Durchführung aufgerufen werden - sie erhalten ein Objekt instanceof User als Argument
Beispiel-Code
<?php class AbuseIpDbScoring extends Scoring { protected $short = "abuseipdb"; protected $name = "AbuseIPDB"; protected $version = "1.0"; public function getSettings() { return Array( "apikey" => Array("type" => "password", "name" => "API-Schlüssel"), ); } public function getMethods() { return Array( "check" => "AbuseIPDB-Prüfung", ); } public function check($u) { global $db, $CFG; // Select last IP address $sql = $db->query("SELECT * FROM " . $CFG['DB']['PREFIX'] . "client_log WHERE user = " . $u->get()['ID'] . " AND ip != 'Admin' ORDER BY ID DESC, time DESC LIMIT 1"); if ($sql->num_rows > 0 && is_object($info = $sql->fetch_object()) && filter_var($info->ip, FILTER_VALIDATE_IP)) { $c = file_get_contents("https://www.abuseipdb.com/check/" . urlencode($info->ip) . "/json?key=" . urlencode($this->options->apikey)); if ($c != '[]') { return Array("AbuseIPDB-Eintrag vorhanden", "F", "<a href='https://www.abuseipdb.com/check/" . urlencode($info->ip) . "' target='_blank'>Details aufrufen</a>"); } else { return Array("Kein Eintrag bei AbuseIPDB", "D", ""); } } } }