diff --git a/pyweb/mumble/Murmur_1-2-0.ice b/pyweb/mumble/Murmur_1-2-0.ice index c61f30f..1d89ea0 100644 --- a/pyweb/mumble/Murmur_1-2-0.ice +++ b/pyweb/mumble/Murmur_1-2-0.ice @@ -7,6 +7,7 @@ **/ /* Copyright (C) 2005-2009, Thorvald Natvig + Copyright (C) 2008-2009, Mikkel Krautz All rights reserved. @@ -227,10 +228,17 @@ module Murmur sequence NameList; dictionary NameMap; dictionary IdMap; - dictionary UserInfoMap; sequence Texture; dictionary ConfigMap; sequence GroupNameList; + sequence CertificateDer; + sequence CertificateList; + + /** User information map. + * Older versions of ice-php can't handle enums as keys. If you are using one of these, replace 'UserInfo' with 'byte'. + */ + + dictionary UserInfoMap; /** User and subchannel state. Read-only. **/ @@ -333,14 +341,19 @@ module Murmur * method to fall through to normal database authentication. * Note that if authentication succeeds, murmur will create a record of the user in it's database, reserving * the username and id so it cannot be used for normal database authentication. + * The data in the certificate (name, email addresses etc), as well as the list of signing certificates, + * should only be trusted if certstrong is true. * * @param name Username to authenticate. * @param pw Password to authenticate with. + * @param certificates List of der encoded certificates the user connected with. + * @param certhash Hash of user certificate, as used by murmur internally when matching. + * @param certstrong True if certificate was valid and signed by a trusted CA. * @param newname Set this to change the username from the supplied one. * @param groups List of groups on the root channel that the user will be added to for the duration of the connection. * @return UserID of authenticated user, -1 for authentication failures and -2 for unknown user (fallthrough). */ - idempotent int authenticate(string name, string pw, out string newname, out GroupNameList groups); + idempotent int authenticate(string name, string pw, CertificateList certificates, string certhash, bool certstrong, out string newname, out GroupNameList groups); /** Fetch information about a user. This is used to retrieve information like email address, keyhash etc. If you * want murmur to take care of this information itself, simply return false to fall through. @@ -619,6 +632,28 @@ module Murmur */ idempotent void setACL(int channelid, ACLList acls, GroupList groups, bool inherit) throws ServerBootedException, InvalidChannelException; + /** Temporarily add a user to a group on a channel. This state is not saved, and is intended for temporary memberships. + * @param channelid Channel ID of channel to add to. See [Channel::id]. + * @param session Connection ID of user. See [User::session]. + * @param group Group name to add to. + */ + idempotent void addUserToGroup(int channelid, int session, string group) throws ServerBootedException, InvalidChannelException, InvalidSessionException; + + /** Remove a user from a temporary group membership on a channel. This state is not saved, and is intended for temporary memberships. + * @param channelid Channel ID of channel to add to. See [Channel::id]. + * @param session Connection ID of user. See [User::session]. + * @param group Group name to remove from. + */ + idempotent void removeUserFromGroup(int channelid, int session, string group) throws ServerBootedException, InvalidChannelException, InvalidSessionException; + + /** Redirect whisper targets for user. If set, whenever a user tries to whisper to group "source", the whisper will be redirected to group "target". + * This is intended for context groups. + * @param session Connection ID of user. See [User::session]. + * @param source Group name to redirect from. + * @param target Group name to redirect to. + */ + idempotent void redirectWhisperGroup(int session, string source, string target) throws ServerBootedException, InvalidSessionException; + /** Map a list of [User::userid] to a matching name. * @param List of ids. * @return Matching list of names, with an empty string representing invalid or unknown ids.