[PHP] ZeroC ICE Mumble Slice Server erstellen

fragger1991

New Member
Hallo,

ich habe da ein kleines Problem beim anlegen der Mumble Server. Wenn ich folgende Code ausführe:

PHP:
$meta->newServer();
Wird zwar ein Server angelegt, jedoch bekomme ich nur:
PHP:
Ice_ObjectPrx Object ( )
zurück.

Jedoch brauche ich aber zu weiteren Verarbeitung die ServerID die intern angelegt wird. Gehe ich nach der Slice API Doku soll das so gehen: "Create a new server. Call Server::getId on the returned interface to find it's ID."

Wenn ich das nun richtig Verstehe müsste ich also:
PHP:
$id = $meta->newServer();
$server = $meta->getID($id);
Dann gibts aber nur:
Code:
Fatal error: main(): unknown operation getID invoked on proxy of type ::Murmur::Meta in /var/www/virtual/dom.de/beta/htdocs/admin/mumblewi.php on line 33

Ich habe nun schon gut 40 verschiedene Kombinationen der einzelnen Methoden etc. pp. ausgeführt und weiß nun echt nicht weiter...

Ich hoffe mal hier kann mir jemand Helfen!

Vielen Dank!
 
Ich hab den wichtigen Teil der Doku in bold geschrieben:
Call [Server::getId] on the returned interface to find it's ID.
Du darfst laut Interpretation nicht server::getId() auf dem Hauptobjekt ausfuehren sondern auf dem von der meta::newServer() Funktion zurueckgelieferten Objekt.

Also:
PHP:
$id = $meta->newServer()->getId();
 
Mhh klappt leider auch nicht:
PHP:
Fatal error: main(): unknown operation getId invoked on proxy of type ::Murmur::Server in /var/www/virtual/dom.de/beta/htdocs/admin/mumblewi.php on line 32
Die besagte Function getId gibt es anscheinend gar nicht mehr, habe diese auch in der Slice Datei nicht gefunden...

Auszug aus der Slice Datei (bereich Meta):
Code:
		/** Fetch interface to specific server.
		 * @param id Server ID. See {@link Server.getId}.
		 * @return Interface for specified server, or a null proxy if id is invalid.
		 */
		idempotent Server *getServer(int id) throws InvalidSecretException;

		/** Create a new server. Call {@link Server.getId} on the returned interface to find it's ID.
		 * @return Interface for new server.
		 */
		Server *newServer() throws InvalidSecretException;
Mehr Textstellen mit "getid" konnte ich nicht finden.

Nun bin ich wirklich etwas aufgeschmissen :S

//EDIT:
Ich weiß da es früher mal so ging:
PHP:
			$id = $meta->newServer();
			list($s,$serverID,$rest) = explode("/", $id);
			list($serverID,$rest) = explode(" ", $serverID);
			$server = $meta->getServer((int)$serverID);
			$port = $default['port'] += $server->id() - 1;
 
Last edited by a moderator:
Ahhhhh :S

So nun klappts, deine Lösung ist korrekt insofern kein icesecret verwendet wird, da ich aber meine Instanz gerne absichere muss ich dass wie folgt schreiben.

Code:
$id = $meta->newServer()->ice_context(array("secret"=>"SecretCode"))->id();

Ich war aber der Meinung, da ich bereits $meta mit icesecret aufrufe das ich das nicht mehr in diesem Aufruf brauche.

Nunja, du hast mir aber dann letztlich doch geholfen ;)
 
Ich persönlich sichere Mumble per iptables ab. Zugriffe werden nur vom Webserver aus zugelassen. Auf dem Webserver darf nur ein Benutzer die Murmur.slice laden. Dieses icesecret fand ich nie gut ;-)
 
Gibt es irgendeinen speziellen Grund weshalb du icescret nicht gut findest? Man kann doch einen Key definieren welchen man will.

Hast du gerade mal den IP Tables Command da? :P
 
Code:
# allow
/sbin/iptables -A INPUT -i $DEVICE -p TCP -s $IP --dport $PORT -j ACCEPT

# deny
/sbin/iptables -A INPUT -i $DEVICE -p TCP --dport $PORT -j DROP

Icesecret wurde eingeführt da war mein Webinterface schon fertig.
 
Mhhh nun habe ich ein anderes Problem.

Beim User erstellen via:
PHP:
$arr['UserName'] = 'test';
print_r($server->registerUser($arr));

Erhalte ich:
Code:
Fatal error: Uncaught Ice_UnknownLocalException /opt/Ice-3.3.0/include/Ice/BasicStream.h:412: Ice::UnmarshalOutOfBoundsException: protocol error: out of bounds during unmarshaling thrown in /var/www/virtual/dom.de/beta/htdocs/test1.php on line 13

Jemand ne Idee woran das nun wieder liegt?!

//EDIT:
Ein blick in default-error.log offenbarte mir: Warning: PHP Startup: skipping dictionary ::Murmur::UserInfoMap - unsupported key type in Unknown on line 0

Daher muss man dies anwenden: http://mumble.sourceforge.net/Ice#Troubleshooting
 
Last edited by a moderator:
Back
Top