StupidMCU

"It's not stupid, its advanced." -- Purple Tallest

What is this?

This is provided here for historical interest only - I am no longer working on this project, nor am I interested in extending it further. I now work on Shtoom for my conferencing needs. If this code is of use to you, great!

StupidMCU is a derivative of OpenH323's OpenMCU program. An MCU is a conferencing server for H323 calls - multiple people can join rooms and chat to each other. You can either use a desktop client, such as Microsoft Netmeeting or GnomeMeeting, or a voice over IP gateway, such as a cisco AS5300 or AS5400.

StupidMCU has a bunch of changes that I needed for my day-time job. Note that I only care about/need audio, not video, so I've not done much on the video side - I have no idea if it still works (it should, but I have no video capture hardware to test with)

Major changes so far (and status of the changes)

Status

This project is now here for historical interest only. I doubt the patches apply cleanly to openh323 any more - if you want to take them and update them, more power to you.

It seems to work (for me). As noted above, I have little use for the video stuff, so if someone wants to work on this and send me patches, that's fine. There's almost certainly bugs in the code - I'm still feeling my way around the (massive) openh323 class libraries.

The code

Code is released under the MPL, as is the standard openmcu.

Files: (these replace the ones from openmcu)

main.cxx
main.cxx
main.h
main.h
confserver.py
A bare bones python XMLRPC server for handling responses.
diff_115.patch
source, as a patch against openmcu v1.1.5

Other useful info

XML RPC Enter request

argumentdescription
token Call token. Identifies the call. Also used in the leave request.
callercaller, as passed to OnAnswerCall
displayH323 display name
callerIPThe IP address of the caller
ANIThe ANI of the caller, if available
DNISThe DNIS (dialled number) if available
roomIDThe requested roomID, if available

XML RPC Enter response

The XMLRPC server should send back a structure of:
argumentdescription
answerCall Either "OK" (answer the call), or anything else to deny.
callercaller, as passed to OnAnswerCall
privsEither "owner" or "member"
roomIDThe room to connect the caller
actionsA nested structure mapping keystrokes to actions, of the form: "action9":"toggleMute", "action8":"roomMute", &c.