Scoring-Module erstellen: Unterschied zwischen den Versionen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „== Grundaufbau == ... == Methoden == ...“)
 
Zeile 1: Zeile 1:
 +
Sie können ein eigenes [[Scoring]]-Modul erstellen, um einen neuen [[Scoring]]-Anbieter an sourceDESK anzubinden.
 +
 
== Grundaufbau ==
 
== 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 ==
 
== 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->info'' zugegriffen werden
 +
* ''getMethods()'' 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 ==
 +
<source lang="php">
 +
<?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", "");
 +
            }
 +
        }
 +
}
 +
}
 +
</source>

Version vom 10. Oktober 2018, 08:25 Uhr

Sie können ein eigenes Scoring-Modul erstellen, um einen neuen Scoring-Anbieter an sourceDESK anzubinden.

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->info zugegriffen werden
  • getMethods() 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", "");
            }
        }
	}
}