Natenom´s Blog

Notizblock, Linux, IT, Sonstiges und Meins

Durchsuche Beiträge mit Schlagwörtern Python

MuMo – Mumble Moderator – ist ein System, welches die Kommunikation zwischen Ice und einem Mumble-Server übernimmt und einem sehr einfach die Möglichkeit gibt, Plugins/Module zu entwickeln um die Funktionalität von eines Mumble-Servers (Murmur) zu erweitern. Man kann sich an bestimmte Ereignisse wie z.B. “userConnected” anhängen und kann dann dem Benutzer eine Nachricht zukommen lassen.
MuMo wird entwickelt von einem der Hauptentwickler von Mumble, Stefan ‘dd0t’ Hacker.
Es werden bereits Module mitgeliefert, um den Benutzer nach einer einstellbaren Zeit der Untätigkeit in einen AFK-Kanal zu verschieben oder mittels !seen Username eine Info zu erhalten, wann derjenige Benutzer das letzte Mal auf dem Server war.

Im Wiki gibt es auch noch ein paar andere Module, wie z.B. Antirecord, welches Benutzer stumm und taub stellt wenn sie aufnehmen oder DeafToAFK, welches nur Benutzer in den AFK-Kanal verschiebt, wenn sie sich stumm und taub gestellt haben: http://wiki.natenom.name/mumble/tools/mumo/module.

Es ist wirklich sehr einfach mit ein paar Python-Kenntnissen solche Module zu schreiben; und es macht Spass.

Einzig die Verwendung von Kontextmenüs (rechtsklick auf einen Benutzer oder Kanal) ist noch nicht in MuMo implementiert; doch stattdessen kann man über den Textchat Befehle an den Server senden, wie beim !seen Modul.

Die Installation von MuMo ist etwas tricky, deshalb gibt es hier eine Installationsanleitung für das aktuelle Debian Squeeze; andere Distris werden wohl etwas andere Bezeichnungen der Pakete haben; aber ab dem Punkt “MuMo holen” sollte alles gleich sein.

Hier die Installations-Anleitung: http://wiki.natenom.name/mumble/tools/mumo/mumo-installation.

Man braucht natürlich auch noch einen laufenden Mumble-Server, am besten die Version 1.2.3; dafür sollte es genügend Dokumentation geben.

Wenn MuMo läuft, ist die aktuelle und gut dokumentierte Murmur.ice sehr hilfreich; sie enthält Informationen über die Struktur der Daten, die man in MuMo verarbeiten kann.

Viel Spass beim Programmieren :)

Verwandte Themen...

Habe gestern das alte Python-Script Antirecord als Modul für MuMo (Mumble Moderator) umgeschrieben.

Das Modul läuft soweit und die Funktionalität des alten Scripts ist komplett implementiert, wenn auch die Interaktion anders ist.

Der Code ist mit Sicherheit sehr unsauber; aber es funktioniert soweit.
Zumindest das Grundgerüst (MuMo) ist bestimmt sehr sauber. Es sollte also nicht mehr den Bug geben, dass nach einer gewissen Zeit der Server nicht mehr reagiert bis das Script gewaltsam beendet wird.

Dank MuMo kann man nun auch einstellen, für welche virtuellen Server sich das Modul verantworlich fühlen soll. Auch lässt sich die komplette Konfiguration pro virtuellem Server anders festlegen. Da es leider noch keine Möglichkeit gibt, Kontextmenüs zu verwenden, werden stattdessen die drei Befehle !allow, !list und !disallow verwendet, die als Nachricht an eine beliebige Stelle des Servers geschickt werden können (Benutzer oder Kanal).

Benutzer, die keine Aufnahmeerlaubnis haben, werden sofort stumm und taub gestellt; sobald sie ihre Aufnahme beenden können sie wieder hören und sprechen; genauso wie Benutzer, deren Aufnahmeerlaubnis während einer Aufnahme entzogen wird.

Mit dem Befehl !list bekommt man – nur als Mitglied der Gruppe canallowrecord – eine Übersicht der aktuell auf dem Server befindlichen Benutzer, deren SessionIDs und der Benutzer, die aktuell eine Aufnahmeerlaubnis haben:

!list

!list

Das Modul selbst und alle Infos dazu gibt es im Wiki: http://wiki.natenom.name/mumble/tools/mumo/module/antirecord.

Wer das ganze mal selbst erleben möchte, kann gerne auf unserem Server vorbeikommen und ausprobieren – temporär auch mit den entsprechenden Rechten :)

Update – Hier eine Videodemonstration:

Verwandte Themen...

Bei sehr umfangreichen/großen Mumble-Servern mit vielen Beschreibungen, Kommentaren, Bildern usw. kann es passieren, dass man bei Benutzung der Funktion getTree() in Python folgende Meldung bekommt:

exception ::Ice::MemoryLimitException

Das liegt dann daran, dass der Standardwert von MessageSizeMax in Python nicht groß genug ist um die komplette Nachricht auszuwerten.
Das Problem war bereits von PHP bekannt, für Python kannte ich aber bis dato keine Lösung.

Wie man den Wert von MessageSizeMax auch in Python erhöhen kann steht im Wiki am Beispiel von Mumble-Django:
http://wiki.natenom.name/mumble/benutzerhandbuch/murmur/erste_hilfe/messagesizemax.

Nach der Änderung hat man auch bei großen Servern keine Probleme mehr :)

Verwandte Themen...

So, es funktioniert im Prinzip … auf unserem Mumble-Server kann man nun “Schere, Stein, Papier” (SSP) über das Kontextmenü spielen :)

Die Idee dazu hatte ich heute morgen weil wir ab und an mal das Problem haben, dass manche Menschen aggro aufeinander sind ihre Rechte nutzen um sich zu beweisen …

… vielleicht wird es ja damit besser.

Es ist allerdings auf registrierte Benutzer beschränkt, da es auch eine Bestenliste geben soll.

Alles zum Spiel steht dann im Log-Bereich:
Schere, Stein, Papier in Mumble :)

Noch wird natürlich nicht gekickt, das kommt erst später; oder eine sonstwie geartete Nachricht, whatever.

Features:

  • Wenn der Herausgeforderte oder der Herausforderer den Server verlässt, wird das Spiel automatisch gelöscht.
  • Die Nachricht über die Herausforderung geht an alle Kanäle in denen sich die beiden Spieler befinden; genauso verhält es sich mit dem Ergebnis.
  • Man kann nicht gegen sich selbst spielen

Geplante Features:

  • Bestenliste (SQLite), die man auch übers Kontextmenü abrufen kann
  • Verlierer wird gekickt oder bekommt eine Nachricht
  • Herausforderung verfällt nach 30 Sekunden

Wenn der Quellcode nicht mehr ganz so schrecklich ist, werde ich diesen auch wieder ins Wiki laden.

Verwandte Themen...

Das uralte Stille-Treppe Script wurde überarbeitet und verbessert :)

Die Features des Sticky-Scripts sind:

  • Selbst ein Admin kann seinen Sticky Status nicht entfernen.
  • Wenn sich ein Admin im Sticky befindet, kann er nicht aus “Rache” einen anderen Benutzer in den Sticky Status versetzen.
  • Der Sticky Status wird auch über Reconnects gespeichert.
  • Wenn sich ein Benutzer mit Sticky zum Server verbindet, bekommt er einen Hinweistext.
  • Es ist nicht möglich, sich selbst versehentlich einen Sticky zu geben.
  • Wenn der Sticky entfernt wird, so wird der Benutzer automatisch in den Kanal verschoben in dem er vorher war.

Der “verurteilte” Benutzer wird automatisch in den Sticky-Raum – bei uns die Stille Treppe – verschoben und kommt dort erst wieder raus, wenn der Sticky Status entfernt wird. An die Benutzer im Kanal geht eine Meldung raus, was da gerade passiert.

Wer das ausprobieren möchte, ist auf unserem Server herzlich willkommen.

Wie immer der Link zum Wiki, wo das Ding auch weiterhin gepflegt wird: http://wiki.natenom.name/mumble/tools/sticky.
Und der Link zu Github, wo man sich das Script herunterladen kann : http://github.com/Natenom/murmur-sticky.

Genug sticky…

Verwandte Themen...

Das Ding ist komplett in github drin, mit Beispieldatenbank; jetzt auch der Teil, der dauerhaft läuft und die Karte neu generiert sobald etwas geschieht (dynmap-callback.py).

Die aktuelle Version ist 0.0.7.

Falls es also jemanden geben sollte, der 1. DokuWiki verwendet UND 2. einen Murmur (Mumble-Server) betreibt UND 3. eine dynamische Benutzerkarte möchte, dann kann er das nun haben… :P

Hier die Seite im Wiki: http://wiki.natenom.name/mumble/tools/benutzerkarte,
die Liveansicht: http://wiki.natenom.name/mumble/dynmap (wurde eingestellt).

und der aktuelle Download bei Github: http://github.com/downloads/Natenom/murmur-dynmap/murmur-dynmap-0.0.7.zip.

Verwandte Themen...

Das AntiRecord Script für Murmur (Mumble-Server) ist nun fertig. Ich mag es einfach nicht, wenn jemand ungefragt und ohne Zustimmung aufnimmt, weshalb dieses Script auf unserem Server läuft. Wer es also ausprobieren möchte ist herzlich willkommen :)

Die Features sind:

  • Mitglieder einer einstellbaren Gruppe (die Mitgliedschaft muss im Rootkanal sein), einstellbar über die Variable canallowrecording, können anderen Benutzern temporär erlauben aufzunehmen.
  • Wenn jemandem eine Erlaubnis erteilt oder genommen wird, so schickt der Server eine Nachricht an den Kanal
  • Wenn jemand gerade aufnimmt und die Erlaubnis entzogen wird, so wird der Benutzer direkt taubstumm gestellt.
  • Die Erlaubnis läuft über die SessionID, also nur solange bis der Benuzter den Server verlässt.
  • Zur Sicherheit kann kein Administrator sich selbst eine Aufnahmeerlaubnis erteilen; immer nur einem anderen Benutzer; dieses Verhalten ist Standard kann aber geändert werden.
  • Als Bestrafung ist KICK oder DEAF einstellbar (Standard ist DEAF).

Legacy-Variante:
Derjenige, der diese Features nicht benötigt und einen aufnehmenden Benutzer einfach nur stumm und taub stellen lassen möchte, kann das Legacy Script verwenden.

Download:
Beide Scripte sind auf Github verfügbar unter: http://github.com/Natenom/murmur-antirec.

Pflege:
Alles weitere was mit diesem Script passiert, wird im Wiki gepflegt: http://wiki.natenom.name/mumble/tools/antirecord.

Aber…:
Mir ist schon klar, dass man damit nicht verhindern kann, dass jemand ausserhalb von Mumble aufnimmt.
Aber zumindest fängt man die Scriptkiddies ab und diejenigen, die aus der Situation heraus aufnehmen wollen (omg, der Natenom schnarcht, ich nehme mal auf… :P ).

Verwandte Themen...

Die Hauptarbeit und die Logik stammen von Hubert Chathi und Thomas Perl (siehe unten), die ihre Arbeit frei verfügbar gemacht haben. Ich habe nur die Funktionen zum Status des Systems entfernt und durch Steuerdinge für MusicOnConsole (moc) ersetzt. Mehr nicht :P

Jeder der den Musicbot steuern möchte, muss nur den entsprechenden Account in seine Kontakte aufnehmen.

Der Rest und das Script sind im Wiki unter: http://wiki.natenom.name/software/mediaplayer/moc/jabberbot

Zum Ausprobieren kann jeder auf unseren Mumble Server kommen, wo der Bot läuft…

Verwandte Themen...