mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.28k stars 1.11k forks source link

Documentation for mumble ICE is seriously hard to follow #6220

Closed lolcatw closed 11 months ago

lolcatw commented 11 months ago

The issue

Hello. I've been trying to get into scripting some quality of life improvements for my mumble server. It's really hard to figure out what's going on following the wikis. Installing the required packages went fairly smoothly but I have literally no idea on how to send & receive messages, mute people, ban, etc. I was not able to find a single resource that document those functions.

The documentation merely refers to the ICE protocol and tells me to create files in an unknown language that is poorly documented, and then use ice2php or whatever to convert that to PHP files?? I've been lurking in IRC but no one had replied so far..

The only thing I got to work was the "mute" function from an abandoned project made decades ago.

Like, what is going on here. I just want a function to send messages to a channel, and receive messages, a bit like using socket_recv (where it would block execution until a message is received). I could write my own mumble client in PHP, but that method has caveats I wish to avoid.

How do you do any of this in PHP? Thank you for your time.

Mumble version

1.3.4-4

Mumble component

Both

OS

Linux

Additional information

No response

Krzmbrzl commented 11 months ago

The wiki is completely outdated in most regards and will be taken down once the most important bits of documentation have been migrated (and updated) to our website.

The resource for what kind of functions exist in the Ice interface is currently the source itself, which contains some documentation in form of comments: https://github.com/mumble-voip/mumble/blob/master/src/murmur/MumbleServer.ice

As for how to use this, I recommend the official docs for ZeroC Ice: https://doc.zeroc.com/ Essentially it boils down to compiling the Ice file (that I linked) to your favorite language and then using the generated functions to do the actual RPC.

That entire PHP business that you have stumbled upon is definitely not necessary.

There's also https://github.com/mumble-voip/mumo, which is mostly unmaintained at this point but the code might still give you some ideas on how to use the Ice interface.

And finally: We have moved away from IRC quite a while ago (which is why you didn't get any answers there). We have moved to a Matrix channel (see main README of this repository for the link there)

lolcatw commented 11 months ago

I am currently writing a simple ICE library made from scratch which uses PHP sockets, as I found the current implementation really hard to use. I eventually found this zeroc website as well, even though the documentation on there is really hard to follow, if your goal is to create your own implementation of a client. I will close this ticket once I have a working "build".

Thanks for linking to that .ice file, I think this will come in really handy.

Thank you very much for your reply.

Krzmbrzl commented 11 months ago

I have only ever user Ice from Python, which was quite alright :shrug:

Thank you very much for your reply.

You're welcome - if you have further questions, feel free to ask :)

github-actions[bot] commented 11 months ago

As there has been no activity on this issue for a couple of days, we assume that your issue has been fixed in the meantime. Should this not be the case, please let us know.

If no further activity happens, this issue will be closed within 3 days.

alextdnreb commented 8 months ago

The wiki is completely outdated in most regards and will be taken down once the most important bits of documentation have been migrated (and updated) to our website.

The resource for what kind of functions exist in the Ice interface is currently the source itself, which contains some documentation in form of comments: https://github.com/mumble-voip/mumble/blob/master/src/murmur/MumbleServer.ice

As for how to use this, I recommend the official docs for ZeroC Ice: https://doc.zeroc.com/ Essentially it boils down to compiling the Ice file (that I linked) to your favorite language and then using the generated functions to do the actual RPC.

That entire PHP business that you have stumbled upon is definitely not necessary.

There's also https://github.com/mumble-voip/mumo, which is mostly unmaintained at this point but the code might still give you some ideas on how to use the Ice interface.

And finally: We have moved away from IRC quite a while ago (which is why you didn't get any answers there). We have moved to a Matrix channel (see main README of this repository for the link there)

Hi,

I'm having another question regarding the MumbleServer.ice file.

After installing mumble-server on my linux server (Ubuntu-22.04), the file Murmur.ice is created in /usr/share/slice. However, this file is not existing in this repository and looks different than the MumbleServer.ice. Which of the two ice files is the correct one to use? Am I doing anything wrong here?

I'm currently trying to write a custom authenticator for Mumble in Java. However, when I try to call server.setAuthenticator, I'm permanently getting an InvalidCallbackException. However, the authenticator I'm trying to use implements the ServerAuthenticator interface as defined in Murmur.ice.

By any chance, do you have any idea why this could be the case, or any ideas on how I could debug this problem?

Thanks your your help!

Krzmbrzl commented 8 months ago

MumbleServer is the more modern name for what used to be called Murmur. So they are equivalent except for the name.

alextdnreb commented 8 months ago

MumbleServer is the more modern name for what used to be called Murmur. So they are equivalent except for the name.

Thanks for clarifying. Does this imply that I'm running some outdated version of mumble-server? I've installed it on Ubuntu-22.04 via sudo apt-get install mumble-server

Krzmbrzl commented 8 months ago

Yes, but not because of the name of this file. Not alk distros have actually followed the rename yet. However, for Debian you really do have an outdated Mumble version as the package hasn't been updated to the latest release(s). Long story short: just use the file provided by your system's package. It should work just fine :)

alextdnreb commented 8 months ago

Alright, thank you!

Would you happen to have any idea why my mumble-server considers my authenticator invalid? I'm trying to implement a custom authenticator in Java based on this example.

The ice builder plugin does work correctly and generates the respective classes based on the Murmur.ice. However, the server refuses my Authenticator Proxy, even though it seems to confirm with the required Interface.

Krzmbrzl commented 6 months ago

Sorry for the super late response. I don't know the answer though - I can only tell you that it seems like the authenticator you provide fails the checkedCast calls here: https://github.com/mumble-voip/mumble/blob/8833542dc72f92d17f75f84914c92664f84896cf/src/murmur/MumbleServerIce.cpp#L958-L964