====== SQL-Admins ====== SourceMod bietet die Unterstützung an, Admins per SQL zu laden und zu verwalten. Zur Zeit wird MySQL und SQLite unterstützt. Das kann bei einer großen Anzahl von Admins sehr vorteilhaft sein, um sie mit externen Tools zu verwalten oder um die Admins auf mehreren Servern zu teilen. Dieser Artikel beschreibt, wie man einen Server einrichtet um Admins per SQL zu nutzen. Es wird kein Wissen über SQL für die einfache Administration benötigt. Jedoch bei Verwendung dieser Funktion, stellt Sourcemod keine einfache Funktionalität für die volle SQL-Steuerung zur Verfügung. Sie benötigen eine zusätzliche [[http://sourceserver.info/viewtopic.php?f=48&t=451|Software]] oder sie müssen SQL lernen, wenn sie eine größere Funktionalität benötigen.\\ Verständlicher: Der Funktionsumfang für die Verwaltung von Admins ist minimal. Selbst Mani hat einen größern Umfang von Befehlen angeboten.\\ \\ **Benötigt:** * Zugriff auf eine SQL-Datenbank * Wissen, wie man auf die Datenbank zugreift * Wissen, wie man Befehle oder Scripts auf der Datenbank ausführt ===== Datenbank Einrichtung ===== ==== MySQL ==== Wenn noch keine Datenbank für den Zugriff existiert, sollte jetzt eine angelegt werden. Das SQL-Script im Verzeichnis ''configs/sql-init-scripts/mysql/create_admin.sql'' muss ausgeführt werden. Hierfür eignet sich phpMyAdmin sehr gut. Als nächstes muss die Datei ''configs/databases.cfg'' bearbeitet werden. Es existiert bereits eine Sektion "default". Diese kann bearbeitet werden oder wenn nötig können Admins mit der Sektion "admins" separiert werden. Dadurch können Plugins eine andere Datenbank nutzen als die Adminverwaltung. Ausgefüllt werden müssen die Felder: "driver", "database", "user" und "pass". Beispiel: Code: "default" { "driver" "mysql" "host" "localhost" "database" "sourcemod" "user" "myaccount" "pass" "mypassword" } ==== SQLite ==== Sourcemod vertreibt eine vorgefertigte Datenkank mit allen erstellten Admin-Tabellen. Wenn sie die Datenbank manuell erstellen oder Tabellen zu einer bereits existierenden Datenbank hinzufügen möchten, verwenden sie den Inhalt vom "configs/sql-init-scripts/sqlite/create_admins.sql" Script. Kopieren sie die ausführbare Datei ''configs/sql-init-scripts/admins-sqlite.sq3'' des Sourcemod-Pakets auf den Server in das Verzeichnis ''data/sqlite''. Dann fügen sie eine Sektion zur Datei ''configs/databases.cfg'' wie folgt hinzu: "admins" { "driver" "sqlite" "database" "admins-sqlite" } Sie können sich aussuchen die Datenbank-Datei umzubenennen oder anstelle eine Datei als Standard-Datenbank zu nutzen. ===== Plugins aktivieren ===== Standardmäßig sind alle SQL-Plugins im Verzeichnis "plugins/disabled" enthalten. Sie werden Standardmäßig nicht geladen. Um Plugins zu aktivieren, verschieben sie sie in das übergeordnete Verzeichnis "plugins".\\ \\ Sie können gewöhnlich das Plugin "sql-admin-manager.smx" immer aktivieren. Dieses Plugin fügt ein paar nützliche Befehle für eine sehr einfache Admin-Verwaltung hinzu.\\ \\ Es kann jedoch nur eins dieser beiden Plugins aktiviert werden. ==== admin-sql-prefetch.smx ==== Dieses Plugin ist Ideal für kleine und mittelgroße Datenbanken ohne große Verbindungsverzögerung. Es lädt die komplette Admin-Datenbank beim laden einer Map oder wann immer eine Aktualisierung angefordert wird. Wenn sie jedoch eine ernste Datenbankverzögerung haben oder sie in der Lage sein wollen Admins hinzuzufügen, bearbeiten und zu entfernen ohne auf den anderen Servern einen Mapchange oder eine manuelle Aktualisierung zu machen, ist dieses Plugin nichts für sie.\\ \\ **Pro:** Ein sehr einfaches Plugin ohne eine großen Umfang.\\ \\ **Kontra:** Gameserver werden blockiert, wenn der Chache aktualisiert wird (Mapladen oder bei Verwendung von "sm_reloadadmins"). Beim bearbeiten, hinzufügen oder entfernen sind Änderungen solange nicht sichtbar, bis der Cache aktualisiert wurde. ==== admin-sql-threaded.smx ==== Das Plugin ist komplett "threaded" und viel mehr komplex. Deswegen ist es experimentell, auch wenn es schon gut funktioniert. Es speichert alle Gruppen und Außerkraftsetzungs-Informationen "override information" zwischen. Admin-Abfragen sind dynamisch.\\ \\ **Pro:** Eine langsame bzw. fehlerhafte Datenbankverbindung blockiert nie den Server. Beim Hinzufügen, Entfernen und Bearbeiten von Admins treten die Veränderungen in Kraft, wenn der Spieler den Server betritt.\\ \\ **Kontra:** Es ist sehr komplex und daher nicht belanglos für Benutzerdefinierte Veränderungen. Es hat auch ein unerwartetes Verhalten (z.B. "sm_reloadadmins" wird eine leichte Verzögerung haben, weil das Plugin "multi-threaded" ist). ===== Verwaltungsbefehle ===== Alle Befehle setzen den "root admin flag" voraus. Folgende Schlüssel werden werden verwendet: * - steam, ip oder name * - die Identität für den authtype ("steam" - SteamID , "ip" - IP-Adresse, "name" - Irgend ein Name) * [immunity] - none, default oder global **Anmerkung:** Werte, die Leerzeichen enthalten müssen mit Anführungszeichen eingeschlossen werden. Kommt ein Doppelpunkt vor (SteamID), muss dieser Wert auch mit Anführungszeichen eingeschlossen werden.\\ \\ Befehl: sm_sql_addadmin\\ Format: [password]\\ Beschreibung: Fügt einen neuen Eintrag in die Tabelle sm_admins hinzu. Der alias kann irgend ein Wert sein, um den Spieler zuordnen zu können.\\ \\ Befehl: sm_sql_deladmin\\ Format: \\ Entfernt einen Admin.\\ \\ Befehl: sm_sql_addgroup\\ Format: [immunity]\\ Beschreibung: Fügt eine neue Gruppe mit spezifizierten "Flags" und Immunität hinzu.\\ \\ Befehl: sm_sql_delgroup\\ Format: \\ Beschreibung: Entfernt eine Gruppe. Anführungszeichen sind Optional, solange der Name gleiche Zeichen hat.\\ Befehl: sm_sql_setadmingroups\\ Format: [group1] ... [group N]\\ Beschreibung: Legt die Gruppe des Admins fest. Die Vertretungsreihenfolge ist die Reihenfolge der spezifizierten Gruppen.\\ Beispiel: sm_sql_setadmingroups steam "STEAM_X:X:XXXXXX" "Full Admins"\\ \\ ===== FAQ ===== Q: Can I use admin-sql and admin-flatfile at the same time? A: Yes. The data will be merged together in SourceMod's cache. Q: Can I use both the threaded and prefetch SQL plugins at the same time? A: No. Q: Can duplicate groups/admins be in the flat files and the SQL database? A: Yup. They will be merged safely.\\ \\ **Frage:** Kann ich admin-sql und admin-flatfile zur gleichen Zeit nutzen? **Antwort:** Ja, die Daten werden im Zwischenspeicher von Sourcemod zusammengefügt. **Frage:** Kann ich beide Plugins (threaded Plugin und prefetch SQL Plugin) zur gleichen Zeit nutzen? **Antwort:** Nein **Frage:** Können Duplikate von Gruppen/Admins in der Admin-Flat-File und der SQL-Datenbank sein? **Antwort:** Ja, sie werden vorsichtig zusammengefügt. ===== Anmerkung zum Linux-Root ===== Anfangs hatte ich mit der Einrichtung so meine Probleme. Ich konnte keine Verbindung zur Datenbank aufbauen.\\ Konsole: [SM] Could not connect to the database. Error-Log: Could not connect to database "default": [2002]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)\\ \\ Ich habe dann einfach einen symbolischen Link erzeugt: ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock\\ Wo sich die Datei mysqld.sock befindet, kann man in der Datei /etc/mysql/my.cnf nachsehen. Nachdem ich den Link erzeugt habe, klappte auch die Verbindung zur Datenbank.