Ingénieur Système

4Jan/16ø

Mumble Viewer ou la chasse à la licorne !

Il était une fois une interface pour voir les serveurs Mumble, elle fonctionnait à merveille sur Debian 6 (Ice 3.3.1-12 / php 5.3.3-7) puis la technologie avançant les programmes évoluèrent et la beauté disparut.

mumble

A la recherche de l'animal légendaire

Aujourd'hui sur Debian 8 (Ice 3.5.1-6 / php 5.6.14) le code ne veut plus fonctionner.

L'erreur traîtresse était bien présente :

PHP Fatal error: Call to undefined function ice_loadprofile()

Plusieurs sites de recherche plus loin

Une solution prenait forme.

remove

Ice_loadProfile();

replace with

require 'Ice.php';
require 'Murmur.php';
$ICE = Ice_initialize();

Il fallait donc corriger le code de MumbleViewer, le fichier "include/mumbleviewer.inc" était notre cible !

Mais ceci ne suffisait pas et donnait une erreur :

PHP Fatal error: require(): Failed opening required 'Murmur.php' (include_path='/usr/share/Ice-3.5.1/php/lib/')

La traque continue

Mais oui, il était aussi question de :

slice2php Murmur.ice

Quel langage étrange, recherches à l’appui je retrouvais le "package" associé à ce "slice2php"
( ice35-translators ). Une fois installé la commande était lancée... et... voilà quoi. Encore.

slice2php /usr/share/slice/Murmur.ice
/usr/share/slice/Murmur.ice:9: error: Can't open include file "Ice/SliceChecksumDict.ice"
#include <Ice/SliceChecksumDict.ice>
1 error in preprocessor.

Recherche faite de ce "SliceChecksumDict.ice", il était présent dans "/usr/share/Ice-3.5.1/slice/" (sous le dossier Ice bien sûr ^^), je copiais donc le fichier Murmur.ice dans le dossier pour relancer la commande... Que nenni, le fourbe ne voulait pas reconnaître ce fichier qui était làààà juste à coté de lui !

La bête n'était plus loin !

Une information visible que pour un œil averti attirait mon attention. "-I"...

slice2php --help
Usage: slice2php [options] slice-files...
Options:
[...]
-IDIR Put DIR in the include file search path.
[...]

Ouiii, là sous mes yeux, la commande prenait forme :

slice2php -I/usr/share/Ice-3.5.1/slice/ /usr/share/slice/Murmur.ice

Aucune réponse, mais un fichier venait d'apparaître, dans le dossier où je me trouvais, "Murmur.php" : Eurêka !

Une copie du fichier dans le dossier magique "/usr/share/Ice-3.5.1/php/lib" et maintenant tout était là !!

Petite vérification

Comme précisé ici, il faut que Mumble soit disponible en écoute aux requêtes slice.

vim /etc/mumble-server.ini
On commente "dbus"
#dbus=system
On dé-commente "ice"
ice="tcp -h 127.0.0.1 -p 6502"

 


Récapitulatif scripté

Voici le code pour les flemmards comme moi, afin de tout refaire en un clin d’œil.
Il sera peut être nécessaire de remplacer "ice35" par "ice34" suivant la version de Debian, et donc de changer le dossier. (NB : la modification de "include/mumbleviewer.inc" n'est pas intégré)

# Ajout des packages Slices nécessaires
apt-get -q -y install ice35-slice php-zeroc-ice ice35-translators

# Correction de la config mumble-server par défaut et suppression du commentaire devant le paramètre Ice
sed -i 's/^#\(ice=.*\)/\1/g' /etc/mumble-server.ini

# Ajout des deux lignes dans le fichier de paramètres Ice pour Php (le fichier peut différer suivant la version)
cat <<EOF>> /etc/php5/mods-available/IcePHP.ini
ice.slice=/usr/share/slice/Murmur.ice
include_path = "/usr/share/Ice-3.5.1/php/lib/"
EOF

# On redémarre Apache qui va créer le fichier Murmur.ice et on redémarre mumble qui va écouter les requêtes slices
apache2ctl restart
service mumble-server stop
service mumble-server start

# On transforme notre Murmure.ice en Murmure.php puis on le met à sa place !
slice2php -I/usr/share/Ice-3.5.1/slice/ /usr/share/slice/Murmur.ice
mv Murmur.php /usr/share/Ice-3.5.1/php/lib/

 

Commentaires (0) Trackbacks (0)

Désolé, le formulaire de commentaire est fermé pour le moment

Aucun trackbacks pour l'instant