From a8b9ecc7a0a6d46b8caa54685d1bea95e1423a90 Mon Sep 17 00:00:00 2001 From: brent s Date: Tue, 13 Feb 2018 00:09:36 -0500 Subject: [PATCH] intermediary commit --- TODO | 4 +- arch/buildup/pkgchk.py | 223 ++ arch/buildup/sample.buildup.ini | 39 + arch/repoclone.py | 8 +- mumble/Mumble.proto | 563 +++++ mumble/MurmurRPC.proto | 823 +++++++ mumble/MurmurRPC_pb2.py | 3881 +++++++++++++++++++++++++++++++ mumble/MurmurRPC_pb2_grpc.py | 912 ++++++++ mumble/grpctest.py | 2 +- net/irc/irssilogparse.py | 140 +- ref/rfc.py | 1 + txp/pluginpacker.py | 70 + 12 files changed, 6637 insertions(+), 29 deletions(-) create mode 100755 arch/buildup/pkgchk.py create mode 100644 arch/buildup/sample.buildup.ini create mode 100644 mumble/Mumble.proto create mode 100644 mumble/MurmurRPC.proto create mode 100644 mumble/MurmurRPC_pb2.py create mode 100644 mumble/MurmurRPC_pb2_grpc.py create mode 100755 txp/pluginpacker.py diff --git a/TODO b/TODO index 318e864..082f2a1 100644 --- a/TODO +++ b/TODO @@ -22,4 +22,6 @@ probably need to package https://packages.debian.org/source/stretch/freebsd-buil -net, add ipxe - write flask app that determines path based on MAC addr --net, add shorewall templater \ No newline at end of file +-net, add shorewall templater + +-port in sslchk diff --git a/arch/buildup/pkgchk.py b/arch/buildup/pkgchk.py new file mode 100755 index 0000000..e25452e --- /dev/null +++ b/arch/buildup/pkgchk.py @@ -0,0 +1,223 @@ +#!/usr/bin/env python3 + +import argparse +import configparser +import hashlib +import os +import re +import shlex +import subprocess +import tarfile # for verifying built PKGBUILDs. We just need to grab /.PKGINFO, and check: pkgver = +import tempfile +from collections import OrderedDict +from urllib.request import urlopen + +class color(object): + PURPLE = '\033[95m' + CYAN = '\033[96m' + DARKCYAN = '\033[36m' + BLUE = '\033[94m' + GREEN = '\033[92m' + YELLOW = '\033[93m' + RED = '\033[91m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + END = '\033[0m' + + +vcstypes = ('bzr', 'git', 'hg', 'svn') + +class pkgChk(object): + def __init__(self, pkg): + # pkg should be a string of a PKGBUILD, + # not the path to a file. + self.pkg = pkg + # The below holds parsed data from the PKGBUILD. + self.pkgdata = {'pkgver': self.getLex('pkgver', 'var'), + '_pkgver': self.getLex('_pkgver', 'var'), + 'pkgname': self.getLex('pkgname', 'var'), + 'sources': self.getLex('source', 'array')} + + def getLex(self, attrib, attrtype): + # Parse the PKGBUILD and return actual values from it. + # attrtype should be "var" or "array". + # var returns a string and array returns a list. + # If the given attrib isn't in the pkgbuild, None is returned. + # The sources array is special, though - it returns a tuple of: + # (hashtype, dict) where dict is a mapping of: + # filename: hash + # filename2: hash2 + # etc. + if attrtype not in ('var', 'array'): + raise ValueError('{0} is not a valid attribute type.'.format(attrib)) + _sums = ('sha512', 'sha384', 'sha256', 'sha1', 'md5') # in order of preference + _attrmap = {'var': 'echo ${{{0}}}'.format(attrib), + 'array': 'echo ${{{}[@]}}'.format(attrib)} + _tempfile = tempfile.mkstemp(text = True) + with open(_tempfile[1], 'w') as f: + f.write(self.pkg) + _cmd = ['/bin/bash', + '--restricted', '--noprofile', + '--init-file', _tempfile[1], + '-i', '-c', _attrmap[attrtype]] + with open(os.devnull, 'wb') as devnull: + _out = subprocess.run(_cmd, env = {'PATH': ''}, + stdout = subprocess.PIPE, + stderr = devnull).stdout.decode('utf-8').strip() + if _out == '': + os.remove(_tempfile[1]) + return(None) + if attrtype == 'var': + os.remove(_tempfile[1]) + return(_out) + else: # it's an array + if attrib == 'source': + _sources = {} + _source = shlex.split(_out) + _sumarr = [None] * len(_source) + for h in _sums: + _cmd[-1] = 'echo ${{{0}[@]}}'.format(h + 'sums') + with open(os.devnull, 'wb') as devnull: + _out = subprocess.run(_cmd, env = {'PATH': ''}, + stdout = subprocess.PIPE, + stderr = devnull).stdout.decode('utf-8').strip() + if _out != '': + os.remove(_tempfile[1]) + return(h, OrderedDict(zip(_source, shlex.split(_out)))) + else: + continue + # No match for checksums. + os.remove(_tempfile[1]) + return(None, OrderedDict(zip(_source, shlex.split(_out)))) + else: + os.remove(_tempfile[1]) + return(shlex.split(_out)) + return() + + def getURL(self, url): + with urlopen(url) as http: + code = http.getcode() + return(code) + + def chkVer(self): + _separators = [] + # TODO: this is to explicitly prevent parsing + # VCS packages, so might need some re-tooling in the future. + if self.pkgdata['pkgname'].split('-')[-1] in vcstypes: + return(None) + # transform the current version into a list of various components. + if not self.pkgdata['pkgver']: + return(None) + if self.pkgdata['_pkgver']: + _cur_ver = self.pkgdata['_pkgver'] + else: + _cur_ver = self.pkgdata['pkgver'] + # This will catch like 90% of the software versions out there. + # Unfortunately, it won't catch all of them. I dunno how to + # handle that quite yet. TODO. + _split_ver = _cur_ver.split('.') + _idx = len(_split_ver) - 1 + while _idx >= 0: + _url = re.sub('^[A-Za-z0-9]+::', + '', + list(self.pkgdata['sources'].keys())[0]) + _code = self.getURL(_url) + _idx -= 1 + +def parseArgs(): + _ini = '~/.config/optools/buildup.ini' + _defini = os.path.abspath(os.path.expanduser(_ini)) + args = argparse.ArgumentParser() + args.add_argument('-c', '--config', + default = _defini, + dest = 'config', + help = ('The path to the config file. ' + + 'Default: {0}{1}{2}').format(color.BOLD, + _defini, + color.END)) + args.add_argument('-R', '--no-recurse', + action = 'store_false', + dest = 'recurse', + help = ('If specified, and the path provided is a directory, ' + + 'do NOT recurse into subdirectories.')) + args.add_argument('-p', '--path', + metavar = 'path/to/dir/or/PKGBUILD', + default = None, + dest = 'pkgpath', + help = ('The path to either a directory containing PKGBUILDs (recursion ' + + 'enabled - see {0}-R/--no-recurse{1}) ' + + 'or a single PKGBUILD. Use to override ' + + 'the config\'s PKG:paths.').format(color.BOLD, color.END)) + return(args) + +def parsePkg(pkgbuildstr): + p = pkgChk(pkgbuildstr) + p.chkVer() + return() + +def iterDir(pkgpath, recursion = True): + filepaths = [] + if os.path.isfile(pkgpath): + return([pkgpath]) + if recursion: + for root, subdirs, files in os.walk(pkgpath): + for vcs in vcstypes: + if '.{0}'.format(vcs) in subdirs: + subdirs.remove('.{0}'.format(vcs)) + for f in files: + if 'PKGBUILD' in f: + filepaths.append(os.path.join(root, f)) + else: + for f in os.listdir(pkgpath): + if 'PKGBUILD' in f: + filepaths.append(f) + filepaths.sort() + return(filepaths) + +def parseCfg(cfgfile): + def getPath(p): + return(os.path.abspath(os.path.expanduser(p))) + _defcfg = '[PKG]\npaths = \ntestbuild = no\n[VCS]\n' + for vcs in vcstypes: + _defcfg += '{0} = no\n'.format(vcs) + _cfg = configparser.ConfigParser() + _cfg._interpolation = configparser.ExtendedInterpolation() + _cfg.read((_defcfg, cfgfile)) + # We convert to a dict so we can do things like list comprehension. + cfg = {s:dict(_cfg.items(s)) for s in _cfg.sections()} + if 'paths' not in cfg['PKG'].keys(): + raise ValueError('You must provide a valid configuration ' + + 'file with the PKG:paths setting specified and valid.') + cfg['PKG']['paths'] = sorted([getPath(p.strip()) for p in cfg['PKG']['paths'].split(',')], + reverse = True) + for p in cfg['PKG']['paths'][:]: + if not os.path.exists(p): + print('WARNING: {0} does not exist; skipping...'.format(p)) + cfg['PKG']['paths'].remove(p) + # We also want to convert these to pythonic True/False + cfg['PKG']['testbuild'] = _cfg['PKG'].getboolean('testbuild') + for k in vcstypes: + cfg['VCS'][k] = _cfg['VCS'].getboolean(k) + return(cfg) + +if __name__ == '__main__': + args = vars(parseArgs().parse_args()) + if not os.path.isfile(args['config']): + raise FileNotFoundError('{0} does not exist.'.format(cfg)) + cfg = parseCfg(args['config']) + if args['pkgpath']: + args['pkgpath'] = os.path.abspath(os.path.expanduser(args['pkgpath'])) + if os.path.isdir(args['pkgpath']): + iterDir(args['pkgpath'], recursion = args['recurse']) + elif os.path.isfile(args['pkgpath']): + parsePkg(args['pkgpath']) + else: + raise FileNotFoundError('{0} does not exist.'.format(args['pkgpath'])) + else: + files = [] + for p in cfg['PKG']['paths']: + files.extend(iterDir(p)) + files.sort() + for p in files: + with open(p, 'r') as f: + parsePkg(f.read()) \ No newline at end of file diff --git a/arch/buildup/sample.buildup.ini b/arch/buildup/sample.buildup.ini new file mode 100644 index 0000000..06d638d --- /dev/null +++ b/arch/buildup/sample.buildup.ini @@ -0,0 +1,39 @@ +## This configuration file will allow you to perform more +## fine-grained control of BuildUp. +## It supports the syntax shortcuts found here: +## https://docs.python.org/3/library/configparser.html#configparser.ExtendedInterpolation + +[PKG] +# The path(s) to your PKGBUILD(s), or a directory/directories containing them. +# If you have more than one, separate with a comma. +paths = path/to/pkgbuilds,another/path/to/pkgbuilds + +# If 'yes', try building the package with the new version. +# If 'no' (the default), don't try to build with the new version. +# This can be a good way to test that you don't need to modify the PKGBUILD, +# but can be error-prone (missing makedeps, etc.). +testbuild = no + +[VCS] +# Here you can enable or disable which VCS platforms you want to support. +# Note that it will increase the time of your check, as it will +# actually perform a checkout/clone/etc. of the source and check against +# the version function inside the PKGBUILD. +# It's also generally meaningless, as VCS PKGBUILDs are intended +# to be dynamic. Nonetheless, the options are there. +# Use 'yes' to enable, or 'no' to disable (the default). +# Currently only the given types are supported (i.e. no CVS). + +# THESE ARE CURRENTLY NOT SUPPORTED. + +# Check revisions for -git PKGBUILDs +git = no + +# Check revisions for -svn PKGBUILDs +svn = no + +# Check revisions for -hg PKGBUILDs +hg = no + +# Check revisions for -bzr PKGBUILDs +bzr = no \ No newline at end of file diff --git a/arch/repoclone.py b/arch/repoclone.py index f210361..cdf5f3c 100755 --- a/arch/repoclone.py +++ b/arch/repoclone.py @@ -8,7 +8,11 @@ import pprint import subprocess import sys -cfgfile = os.path.join(os.environ['HOME'], '.arch.repoclone.ini') +cfgfile = os.path.join(os.environ['HOME'], + '.config', + 'optools', + 'repoclone', + 'arch.ini') # Rsync options opts = [ @@ -108,6 +112,8 @@ def parseArgs(): help = ('The upstream mirror to sync from, must be an rsync URI '+ '(Default: {0}').format(liveopts['mirror'])) # TODO: can we do this? +# We can; we need to .format() a repo in, probably, on the src and dest. +# Problem is the last updated/last synced files. # args.add_argument('-r', # '--repos', # dest = 'repos', diff --git a/mumble/Mumble.proto b/mumble/Mumble.proto new file mode 100644 index 0000000..34696e0 --- /dev/null +++ b/mumble/Mumble.proto @@ -0,0 +1,563 @@ +// Copyright 2005-2017 The Mumble Developers. All rights reserved. +// Use of this source code is governed by a BSD-style license +// that can be found in the LICENSE file at the root of the +// Mumble source tree or at . + +syntax = "proto2"; + +package MumbleProto; + +option optimize_for = SPEED; + +message Version { + // 2-byte Major, 1-byte Minor and 1-byte Patch version number. + optional uint32 version = 1; + // Client release name. + optional string release = 2; + // Client OS name. + optional string os = 3; + // Client OS version. + optional string os_version = 4; +} + +// Not used. Not even for tunneling UDP through TCP. +message UDPTunnel { + // Not used. + required bytes packet = 1; +} + +// Used by the client to send the authentication credentials to the server. +message Authenticate { + // UTF-8 encoded username. + optional string username = 1; + // Server or user password. + optional string password = 2; + // Additional access tokens for server ACL groups. + repeated string tokens = 3; + // A list of CELT bitstream version constants supported by the client. + repeated int32 celt_versions = 4; + optional bool opus = 5 [default = false]; +} + +// Sent by the client to notify the server that the client is still alive. +// Server must reply to the packet with the same timestamp and its own +// good/late/lost/resync numbers. None of the fields is strictly required. +message Ping { + // Client timestamp. Server should not attempt to decode. + optional uint64 timestamp = 1; + // The amount of good packets received. + optional uint32 good = 2; + // The amount of late packets received. + optional uint32 late = 3; + // The amount of packets never received. + optional uint32 lost = 4; + // The amount of nonce resyncs. + optional uint32 resync = 5; + // The total amount of UDP packets received. + optional uint32 udp_packets = 6; + // The total amount of TCP packets received. + optional uint32 tcp_packets = 7; + // UDP ping average. + optional float udp_ping_avg = 8; + // UDP ping variance. + optional float udp_ping_var = 9; + // TCP ping average. + optional float tcp_ping_avg = 10; + // TCP ping variance. + optional float tcp_ping_var = 11; +} + +// Sent by the server when it rejects the user connection. +message Reject { + enum RejectType { + // The rejection reason is unknown (details should be available + // in Reject.reason). + None = 0; + // The client attempted to connect with an incompatible version. + WrongVersion = 1; + // The user name supplied by the client was invalid. + InvalidUsername = 2; + // The client attempted to authenticate as a user with a password but it + // was wrong. + WrongUserPW = 3; + // The client attempted to connect to a passworded server but the password + // was wrong. + WrongServerPW = 4; + // Supplied username is already in use. + UsernameInUse = 5; + // Server is currently full and cannot accept more users. + ServerFull = 6; + // The user did not provide a certificate but one is required. + NoCertificate = 7; + AuthenticatorFail = 8; + } + // Rejection type. + optional RejectType type = 1; + // Human readable rejection reason. + optional string reason = 2; +} + +// ServerSync message is sent by the server when it has authenticated the user +// and finished synchronizing the server state. +message ServerSync { + // The session of the current user. + optional uint32 session = 1; + // Maximum bandwidth that the user should use. + optional uint32 max_bandwidth = 2; + // Server welcome text. + optional string welcome_text = 3; + // Current user permissions in the root channel. + optional uint64 permissions = 4; +} + +// Sent by the client when it wants a channel removed. Sent by the server when +// a channel has been removed and clients should be notified. +message ChannelRemove { + required uint32 channel_id = 1; +} + +// Used to communicate channel properties between the client and the server. +// Sent by the server during the login process or when channel properties are +// updated. Client may use this message to update said channel properties. +message ChannelState { + // Unique ID for the channel within the server. + optional uint32 channel_id = 1; + // channel_id of the parent channel. + optional uint32 parent = 2; + // UTF-8 encoded channel name. + optional string name = 3; + // A collection of channel id values of the linked channels. Absent during + // the first channel listing. + repeated uint32 links = 4; + // UTF-8 encoded channel description. Only if the description is less than + // 128 bytes + optional string description = 5; + // A collection of channel_id values that should be added to links. + repeated uint32 links_add = 6; + // A collection of channel_id values that should be removed from links. + repeated uint32 links_remove = 7; + // True if the channel is temporary. + optional bool temporary = 8 [default = false]; + // Position weight to tweak the channel position in the channel list. + optional int32 position = 9 [default = 0]; + // SHA1 hash of the description if the description is 128 bytes or more. + optional bytes description_hash = 10; + // Maximum number of users allowed in the channel. If this value is zero, + // the maximum number of users allowed in the channel is given by the + // server's "usersperchannel" setting. + optional uint32 max_users = 11; +} + +// Used to communicate user leaving or being kicked. May be sent by the client +// when it attempts to kick a user. Sent by the server when it informs the +// clients that a user is not present anymore. +message UserRemove { + // The user who is being kicked, identified by their session, not present + // when no one is being kicked. + required uint32 session = 1; + // The user who initiated the removal. Either the user who performs the kick + // or the user who is currently leaving. + optional uint32 actor = 2; + // Reason for the kick, stored as the ban reason if the user is banned. + optional string reason = 3; + // True if the kick should result in a ban. + optional bool ban = 4; +} + +// Sent by the server when it communicates new and changed users to client. +// First seen during login procedure. May be sent by the client when it wishes +// to alter its state. +message UserState { + // Unique user session ID of the user whose state this is, may change on + // reconnect. + optional uint32 session = 1; + // The session of the user who is updating this user. + optional uint32 actor = 2; + // User name, UTF-8 encoded. + optional string name = 3; + // Registered user ID if the user is registered. + optional uint32 user_id = 4; + // Channel on which the user is. + optional uint32 channel_id = 5; + // True if the user is muted by admin. + optional bool mute = 6; + // True if the user is deafened by admin. + optional bool deaf = 7; + // True if the user has been suppressed from talking by a reason other than + // being muted. + optional bool suppress = 8; + // True if the user has muted self. + optional bool self_mute = 9; + // True if the user has deafened self. + optional bool self_deaf = 10; + // User image if it is less than 128 bytes. + optional bytes texture = 11; + // The positional audio plugin identifier. + // Positional audio information is only sent to users who share + // identical plugin contexts. + // + // This value is not trasmitted to clients. + optional bytes plugin_context = 12; + // The user's plugin-specific identity. + // This value is not transmitted to clients. + optional string plugin_identity = 13; + // User comment if it is less than 128 bytes. + optional string comment = 14; + // The hash of the user certificate. + optional string hash = 15; + // SHA1 hash of the user comment if it 128 bytes or more. + optional bytes comment_hash = 16; + // SHA1 hash of the user picture if it 128 bytes or more. + optional bytes texture_hash = 17; + // True if the user is a priority speaker. + optional bool priority_speaker = 18; + // True if the user is currently recording. + optional bool recording = 19; +} + +// Relays information on the bans. The client may send the BanList message to +// either modify the list of bans or query them from the server. The server +// sends this list only after a client queries for it. +message BanList { + message BanEntry { + // Banned IP address. + required bytes address = 1; + // The length of the subnet mask for the ban. + required uint32 mask = 2; + // User name for identification purposes (does not affect the ban). + optional string name = 3; + // The certificate hash of the banned user. + optional string hash = 4; + // Reason for the ban (does not affect the ban). + optional string reason = 5; + // Ban start time. + optional string start = 6; + // Ban duration in seconds. + optional uint32 duration = 7; + } + // List of ban entries currently in place. + repeated BanEntry bans = 1; + // True if the server should return the list, false if it should replace old + // ban list with the one provided. + optional bool query = 2 [default = false]; +} + +// Used to send and broadcast text messages. +message TextMessage { + // The message sender, identified by its session. + optional uint32 actor = 1; + // Target users for the message, identified by their session. + repeated uint32 session = 2; + // The channels to which the message is sent, identified by their + // channel_ids. + repeated uint32 channel_id = 3; + // The root channels when sending message recursively to several channels, + // identified by their channel_ids. + repeated uint32 tree_id = 4; + // The UTF-8 encoded message. May be HTML if the server allows. + required string message = 5; +} + +message PermissionDenied { + enum DenyType { + // Operation denied for other reason, see reason field. + Text = 0; + // Permissions were denied. + Permission = 1; + // Cannot modify SuperUser. + SuperUser = 2; + // Invalid channel name. + ChannelName = 3; + // Text message too long. + TextTooLong = 4; + // The flux capacitor was spelled wrong. + H9K = 5; + // Operation not permitted in temporary channel. + TemporaryChannel = 6; + // Operation requires certificate. + MissingCertificate = 7; + // Invalid username. + UserName = 8; + // Channel is full. + ChannelFull = 9; + NestingLimit = 10; + } + // The denied permission when type is Permission. + optional uint32 permission = 1; + // channel_id for the channel where the permission was denied when type is + // Permission. + optional uint32 channel_id = 2; + // The user who was denied permissions, identified by session. + optional uint32 session = 3; + // Textual reason for the denial. + optional string reason = 4; + // Type of the denial. + optional DenyType type = 5; + // The name that is invalid when type is UserName. + optional string name = 6; +} + +message ACL { + message ChanGroup { + // Name of the channel group, UTF-8 encoded. + required string name = 1; + // True if the group has been inherited from the parent (Read only). + optional bool inherited = 2 [default = true]; + // True if the group members are inherited. + optional bool inherit = 3 [default = true]; + // True if the group can be inherited by sub channels. + optional bool inheritable = 4 [default = true]; + // Users explicitly included in this group, identified by user_id. + repeated uint32 add = 5; + // Users explicitly removed from this group in this channel if the group + // has been inherited, identified by user_id. + repeated uint32 remove = 6; + // Users inherited, identified by user_id. + repeated uint32 inherited_members = 7; + } + message ChanACL { + // True if this ACL applies to the current channel. + optional bool apply_here = 1 [default = true]; + // True if this ACL applies to the sub channels. + optional bool apply_subs = 2 [default = true]; + // True if the ACL has been inherited from the parent. + optional bool inherited = 3 [default = true]; + // ID of the user that is affected by this ACL. + optional uint32 user_id = 4; + // ID of the group that is affected by this ACL. + optional string group = 5; + // Bit flag field of the permissions granted by this ACL. + optional uint32 grant = 6; + // Bit flag field of the permissions denied by this ACL. + optional uint32 deny = 7; + } + // Channel ID of the channel this message affects. + required uint32 channel_id = 1; + // True if the channel inherits its parent's ACLs. + optional bool inherit_acls = 2 [default = true]; + // User group specifications. + repeated ChanGroup groups = 3; + // ACL specifications. + repeated ChanACL acls = 4; + // True if the message is a query for ACLs instead of setting them. + optional bool query = 5 [default = false]; +} + +// Client may use this message to refresh its registered user information. The +// client should fill the IDs or Names of the users it wants to refresh. The +// server fills the missing parts and sends the message back. +message QueryUsers { + // user_ids. + repeated uint32 ids = 1; + // User names in the same order as ids. + repeated string names = 2; +} + +// Used to initialize and resync the UDP encryption. Either side may request a +// resync by sending the message without any values filled. The resync is +// performed by sending the message with only the client or server nonce +// filled. +message CryptSetup { + // Encryption key. + optional bytes key = 1; + // Client nonce. + optional bytes client_nonce = 2; + // Server nonce. + optional bytes server_nonce = 3; +} + +message ContextActionModify { + enum Context { + // Action is applicable to the server. + Server = 0x01; + // Action can target a Channel. + Channel = 0x02; + // Action can target a User. + User = 0x04; + } + enum Operation { + Add = 0; + Remove = 1; + } + // The action name. + required string action = 1; + // The display name of the action. + optional string text = 2; + // Context bit flags defining where the action should be displayed. + optional uint32 context = 3; + optional Operation operation = 4; +} + +// Sent by the client when it wants to initiate a Context action. +message ContextAction { + // The target User for the action, identified by session. + optional uint32 session = 1; + // The target Channel for the action, identified by channel_id. + optional uint32 channel_id = 2; + // The action that should be executed. + required string action = 3; +} + +// Lists the registered users. +message UserList { + message User { + // Registered user ID. + required uint32 user_id = 1; + // Registered user name. + optional string name = 2; + optional string last_seen = 3; + optional uint32 last_channel = 4; + } + // A list of registered users. + repeated User users = 1; +} + +// Sent by the client when it wants to register or clear whisper targets. +// +// Note: The first available target ID is 1 as 0 is reserved for normal +// talking. Maximum target ID is 30. +message VoiceTarget { + message Target { + // Users that are included as targets. + repeated uint32 session = 1; + // Channel that is included as a target. + optional uint32 channel_id = 2; + // ACL group that is included as a target. + optional string group = 3; + // True if the voice should follow links from the specified channel. + optional bool links = 4 [default = false]; + // True if the voice should also be sent to children of the specific + // channel. + optional bool children = 5 [default = false]; + } + // Voice target ID. + optional uint32 id = 1; + // The receivers that this voice target includes. + repeated Target targets = 2; +} + +// Sent by the client when it wants permissions for a certain channel. Sent by +// the server when it replies to the query or wants the user to resync all +// channel permissions. +message PermissionQuery { + // channel_id of the channel for which the permissions are queried. + optional uint32 channel_id = 1; + // Channel permissions. + optional uint32 permissions = 2; + // True if the client should drop its current permission information for all + // channels. + optional bool flush = 3 [default = false]; +} + +// Sent by the server to notify the users of the version of the CELT codec they +// should use. This may change during the connection when new users join. +message CodecVersion { + // The version of the CELT Alpha codec. + required int32 alpha = 1; + // The version of the CELT Beta codec. + required int32 beta = 2; + // True if the user should prefer Alpha over Beta. + required bool prefer_alpha = 3 [default = true]; + optional bool opus = 4 [default = false]; +} + +// Used to communicate user stats between the server and clients. +message UserStats { + message Stats { + // The amount of good packets received. + optional uint32 good = 1; + // The amount of late packets received. + optional uint32 late = 2; + // The amount of packets never received. + optional uint32 lost = 3; + // The amount of nonce resyncs. + optional uint32 resync = 4; + } + + // User whose stats these are. + optional uint32 session = 1; + // True if the message contains only mutable stats (packets, ping). + optional bool stats_only = 2 [default = false]; + // Full user certificate chain of the user certificate in DER format. + repeated bytes certificates = 3; + // Packet statistics for packets received from the client. + optional Stats from_client = 4; + // Packet statistics for packets sent by the server. + optional Stats from_server = 5; + + // Amount of UDP packets sent. + optional uint32 udp_packets = 6; + // Amount of TCP packets sent. + optional uint32 tcp_packets = 7; + // UDP ping average. + optional float udp_ping_avg = 8; + // UDP ping variance. + optional float udp_ping_var = 9; + // TCP ping average. + optional float tcp_ping_avg = 10; + // TCP ping variance. + optional float tcp_ping_var = 11; + + // Client version. + optional Version version = 12; + // A list of CELT bitstream version constants supported by the client of this + // user. + repeated int32 celt_versions = 13; + // Client IP address. + optional bytes address = 14; + // Bandwith used by this client. + optional uint32 bandwidth = 15; + // Connection duration. + optional uint32 onlinesecs = 16; + // Duration since last activity. + optional uint32 idlesecs = 17; + // True if the user has a strong certificate. + optional bool strong_certificate = 18 [default = false]; + optional bool opus = 19 [default = false]; +} + +// Used by the client to request binary data from the server. By default large +// comments or textures are not sent within standard messages but instead the +// hash is. If the client does not recognize the hash it may request the +// resource when it needs it. The client does so by sending a RequestBlob +// message with the correct fields filled with the user sessions or channel_ids +// it wants to receive. The server replies to this by sending a new +// UserState/ChannelState message with the resources filled even if they would +// normally be transmitted as hashes. +message RequestBlob { + // sessions of the requested UserState textures. + repeated uint32 session_texture = 1; + // sessions of the requested UserState comments. + repeated uint32 session_comment = 2; + // channel_ids of the requested ChannelState descriptions. + repeated uint32 channel_description = 3; +} + +// Sent by the server when it informs the clients on server configuration +// details. +message ServerConfig { + // The maximum bandwidth the clients should use. + optional uint32 max_bandwidth = 1; + // Server welcome text. + optional string welcome_text = 2; + // True if the server allows HTML. + optional bool allow_html = 3; + // Maximum text message length. + optional uint32 message_length = 4; + // Maximum image message length. + optional uint32 image_message_length = 5; + // The maximum number of users allowed on the server. + optional uint32 max_users = 6; +} + +// Sent by the server to inform the clients of suggested client configuration +// specified by the server administrator. +message SuggestConfig { + // Suggested client version. + optional uint32 version = 1; + // True if the administrator suggests positional audio to be used on this + // server. + optional bool positional = 2; + // True if the administrator suggests push to talk to be used on this server. + optional bool push_to_talk = 3; +} diff --git a/mumble/MurmurRPC.proto b/mumble/MurmurRPC.proto new file mode 100644 index 0000000..ff01a36 --- /dev/null +++ b/mumble/MurmurRPC.proto @@ -0,0 +1,823 @@ +// Copyright 2005-2017 The Mumble Developers. All rights reserved. +// Use of this source code is governed by a BSD-style license +// that can be found in the LICENSE file at the root of the +// Mumble source tree or at . + +syntax = "proto2"; + +package MurmurRPC; + +// Note about embedded messages: +// +// To help save bandwidth, the protocol does not always send complete embedded +// messages (i.e. an embeddded message with all of the fields filled in). These +// incomplete messages only contain enough identifying information to get more +// information from the message's corresponding "Get" method. For example: +// +// User.server only ever contains the server ID. Calling ServerGet(User.server) +// will return a Server message with the server's status and uptime. + +message Void { +} + +message Version { + // 2-byte Major, 1-byte Minor and 1-byte Patch version number. + optional uint32 version = 1; + // Client release name. + optional string release = 2; + // Client OS name. + optional string os = 3; + // Client OS version. + optional string os_version = 4; +} + +message Uptime { + // The number of seconds from the starting time. + optional uint64 secs = 1; +} + +message Server { + // The unique server ID. + required uint32 id = 1; + // Is the server currently running? + optional bool running = 2; + // The update of the server. + optional Uptime uptime = 3; + + message Event { + enum Type { + UserConnected = 0; + UserDisconnected = 1; + UserStateChanged = 2; + UserTextMessage = 3; + ChannelCreated = 4; + ChannelRemoved = 5; + ChannelStateChanged = 6; + }; + // The server on which the event happened. + optional Server server = 1; + // The type of event that happened. + optional Type type = 2; + // The user tied to the event (if applicable). + optional User user = 3; + // The text message tied to the event (if applicable). + optional TextMessage message = 4; + // The channel tied to the event (if applicable). + optional Channel channel = 5; + } + + message Query { + } + + message List { + // The servers. + repeated Server servers = 1; + } +} + +message Event { + enum Type { + ServerStopped = 0; + ServerStarted = 1; + }; + // The server for which the event happened. + optional Server server = 1; + // The type of event that happened. + optional Type type = 2; +} + +message ContextAction { + enum Context { + Server = 0x01; + Channel = 0x02; + User = 0x04; + }; + // The server on which the action is. + optional Server server = 1; + // The context in which the action is. + optional uint32 context = 2; + // The action name. + optional string action = 3; + // The user-visible descriptive name of the action. + optional string text = 4; + // The user that triggered the ContextAction. + optional User actor = 5; + // The user on which the ContextAction was triggered. + optional User user = 6; + // The channel on which the ContextAction was triggered. + optional Channel channel = 7; +} + +message TextMessage { + // The server on which the TextMessage originates. + optional Server server = 1; + // The user who sent the message. + optional User actor = 2; + // The users to whom the message is sent. + repeated User users = 3; + // The channels to which the message is sent. + repeated Channel channels = 4; + // The channels to which the message is sent, including the channels' + // ancestors. + repeated Channel trees = 5; + // The message body that is sent. + optional string text = 6; + + message Filter { + enum Action { + // Accept the message. + Accept = 0; + // Reject the message with a permission error. + Reject = 1; + // Silently drop the message. + Drop = 2; + } + // The server on which the message originated. + optional Server server = 1; + // The action to perform for the message. + optional Action action = 2; + // The text message. + optional TextMessage message = 3; + } +} + +message Log { + // The server on which the log message was generated. + optional Server server = 1; + // The unix timestamp of when the message was generated. + optional int64 timestamp = 2; + // The log message. + optional string text = 3; + + message Query { + // The server whose logs will be queried. + optional Server server = 1; + // The minimum log index to receive. + optional uint32 min = 2; + // The maximum log index to receive. + optional uint32 max = 3; + } + + message List { + // The server where the log entries are from. + optional Server server = 1; + // The total number of logs entries on the server. + optional uint32 total = 2; + // The minimum log index that was sent. + optional uint32 min = 3; + // The maximum log index that was sent. + optional uint32 max = 4; + // The log entries. + repeated Log entries = 5; + } +} + +message Config { + // The server for which the configuration is for. + optional Server server = 1; + // The configuration keys and values. + map fields = 2; + + message Field { + // The server for which the configuration field is for. + optional Server server = 1; + // The field key. + optional string key = 2; + // The field value. + optional string value = 3; + } +} + +message Channel { + // The server on which the channel exists. + optional Server server = 1; + // The unique channel identifier. + optional uint32 id = 2; + // The channel name. + optional string name = 3; + // The channel's parent. + optional Channel parent = 4; + // Linked channels. + repeated Channel links = 5; + // The channel's description. + optional string description = 6; + // Is the channel temporary? + optional bool temporary = 7; + // The position in which the channel should appear in a sorted list. + optional int32 position = 8; + + message Query { + // The server on which the channels are. + optional Server server = 1; + } + + message List { + // The server on which the channels are. + optional Server server = 1; + // The channels. + repeated Channel channels = 2; + } +} + +message User { + // The server to which the user is connected. + optional Server server = 1; + // The user's session ID. + optional uint32 session = 2; + // The user's registered ID. + optional uint32 id = 3; + // The user's name. + optional string name = 4; + // Is the user muted? + optional bool mute = 5; + // Is the user deafened? + optional bool deaf = 6; + // Is the user suppressed? + optional bool suppress = 7; + // Is the user a priority speaker? + optional bool priority_speaker = 8; + // Has the user muted him/herself? + optional bool self_mute = 9; + // Has the user muted him/herself? + optional bool self_deaf = 10; + // Is the user recording? + optional bool recording = 11; + // The channel the user is in. + optional Channel channel = 12; + // How long the user has been connected to the server. + optional uint32 online_secs = 13; + // How long the user has been idle on the server. + optional uint32 idle_secs = 14; + // How many bytes per second is the user transmitting to the server. + optional uint32 bytes_per_sec = 15; + // The user's client version. + optional Version version = 16; + // The user's plugin context. + optional bytes plugin_context = 17; + // The user's plugin identity. + optional string plugin_identity = 18; + // The user's comment. + optional string comment = 19; + // The user's texture. + optional bytes texture = 20; + // The user's IP address. + optional bytes address = 21; + // Is the user in TCP-only mode? + optional bool tcp_only = 22; + // The user's UDP ping in milliseconds. + optional float udp_ping_msecs = 23; + // The user's TCP ping in milliseconds. + optional float tcp_ping_msecs = 24; + + message Query { + // The server whose users will be queried. + optional Server server = 1; + } + + message List { + // The server to which the users are connected. + optional Server server = 1; + // The users. + repeated User users = 2; + } + + message Kick { + // The server to which the user is connected. + optional Server server = 1; + // The user to kick. + optional User user = 2; + // The user who performed the kick. + optional User actor = 3; + // The reason for why the user is being kicked. + optional string reason = 4; + } +} + +message Tree { + // The server which the tree represents. + optional Server server = 1; + // The current channel. + optional Channel channel = 2; + // Channels below the current channel. + repeated Tree children = 3; + // The users in the current channel. + repeated User users = 4; + + message Query { + // The server to query. + optional Server server = 1; + } +} + +message Ban { + // The server on which the ban is applied. + optional Server server = 1; + // The banned IP address. + optional bytes address = 2; + // The number of leading bits in the address to which the ban applies. + optional uint32 bits = 3; + // The name of the banned user. + optional string name = 4; + // The certificate hash of the banned user. + optional string hash = 5; + // The reason for the ban. + optional string reason = 6; + // The ban start time (in epoch form). + optional int64 start = 7; + // The ban duration. + optional int64 duration_secs = 8; + + message Query { + // The server whose bans to query. + optional Server server = 1; + } + + message List { + // The server for which the bans apply. + optional Server server = 1; + // The bans. + repeated Ban bans = 2; + } +} + +message ACL { + enum Permission { + None = 0x00; + Write = 0x01; + Traverse = 0x02; + Enter = 0x04; + Speak = 0x08; + Whisper = 0x100; + MuteDeafen = 0x10; + Move = 0x20; + MakeChannel = 0x40; + MakeTemporaryChannel = 0x400; + LinkChannel = 0x80; + TextMessage = 0x200; + + Kick = 0x10000; + Ban = 0x20000; + Register = 0x40000; + RegisterSelf = 0x80000; + } + + message Group { + // The ACL group name. + optional string name = 1; + // Is the group inherited? + optional bool inherited = 2; + // Does the group inherit members? + optional bool inherit = 3; + // Can this group be inherited by its children? + optional bool inheritable = 4; + + // The users explicitly added by this group. + repeated DatabaseUser users_add = 5; + // The users explicitly removed by this group. + repeated DatabaseUser users_remove = 6; + // All of the users who are part of this group. + repeated DatabaseUser users = 7; + } + + // Does the ACL apply to the current channel? + optional bool apply_here = 3; + // Does the ACL apply to the current channel's sub-channels? + optional bool apply_subs = 4; + // Was the ACL inherited? + optional bool inherited = 5; + + // The user to whom the ACL applies. + optional DatabaseUser user = 6; + // The group to whom the ACL applies. + optional ACL.Group group = 7; + + // The permissions granted by the ACL (bitmask of ACL.Permission). + optional uint32 allow = 8; + // The permissions denied by the ACL (bitmask of ACL.Permission). + optional uint32 deny = 9; + + message Query { + // The server where the user and channel exist. + optional Server server = 1; + // The user to query. + optional User user = 2; + // The channel to query. + optional Channel channel = 3; + } + + message List { + // The server on which the ACLs exist. + optional Server server = 1; + // The channel to which the ACL refers. + optional Channel channel = 2; + // The ACLs part of the given channel. + repeated ACL acls = 3; + // The groups part of the given channel. + repeated ACL.Group groups = 4; + // Should ACLs be inherited from the parent channel. + optional bool inherit = 5; + } + + message TemporaryGroup { + // The server where the temporary group exists. + optional Server server = 1; + // The channel to which the temporary user group is added. + optional Channel channel = 2; + // The user who is added to the group. + optional User user = 3; + // The name of the temporary group. + optional string name = 4; + } +} + +message Authenticator { + message Request { + // An authentication request for a connecting user. + message Authenticate { + // The user's name. + optional string name = 1; + // The user's password. + optional string password = 2; + // The user's certificate chain in DER format. + repeated bytes certificates = 3; + // The hexadecimal hash of the user's certificate. + optional string certificate_hash = 4; + // If the user is connecting with a strong certificate. + optional bool strong_certificate = 5; + } + + // A request for information about a user, given by either the user's ID + // or name. + message Find { + // The user's ID used for lookup. + optional uint32 id = 1; + // The user's name used for lookup. + optional string name = 2; + } + + // A query of all the registered users, optionally filtered by the given + // filter string. + message Query { + // A user name filter (% is often used as a wildcard) + optional string filter = 1; + } + + // A request for a new user registration. + message Register { + // The database user to register. + optional DatabaseUser user = 1; + } + + // A request for deregistering a registered user. + message Deregister { + // The database user to deregister. + optional DatabaseUser user = 1; + } + + // A request to update a registered user's information. The information + // provided should be merged with existing data. + message Update { + // The database user to update. + optional DatabaseUser user = 1; + } + + optional Authenticate authenticate = 1; + optional Find find = 2; + optional Query query = 3; + optional Register register = 4; + optional Deregister deregister = 5; + optional Update update = 6; + } + + message Response { + // The initialization for the authenticator stream. This message must be + // sent before authentication requests will start streaming. + message Initialize { + optional Server server = 1; + } + + enum Status { + // The request should fallthrough to murmur's default action. + Fallthrough = 0; + // The request was successful. + Success = 1; + // The request failed; there was some error. + Failure = 2; + // A temporary failure prevented the request from succeeding (e.g. a + // database was unavailable). + TemporaryFailure = 3; + } + + message Authenticate { + // The status of the request. + optional Status status = 1; + // The user's registered ID. + optional uint32 id = 2; + // The corrected user's name; + optional string name = 3; + // Additional ACL groups that the user belongs too. + repeated ACL.Group groups = 4; + } + + message Find { + // The database user (if found). + optional DatabaseUser user = 1; + } + + message Query { + // The matched database users. + repeated DatabaseUser users = 1; + } + + message Register { + // The status of the request. + optional Status status = 1; + // The registered database user (must contain the registered user's ID). + optional DatabaseUser user = 2; + } + + message Deregister { + // The status of the request. + optional Status status = 1; + } + + message Update { + // The status of the request. + optional Status status = 1; + } + + optional Initialize initialize = 1; + optional Authenticate authenticate = 2; + optional Find find = 3; + optional Query query = 4; + optional Register register = 5; + optional Deregister deregister = 6; + optional Update update = 7; + } +} + +message DatabaseUser { + // The server on which the user is registered. + optional Server server = 1; + // The unique user ID. + optional uint32 id = 2; + // The user's name. + optional string name = 3; + // The user's email address. + optional string email = 4; + // The user's comment. + optional string comment = 5; + // The user's certificate hash. + optional string hash = 6; + // The user's password (never sent; used only when updating). + optional string password = 7; + // When the user was last on the server. + optional string last_active = 8; + // The user's texture. + optional bytes texture = 9; + + message Query { + // The server whose users will be queried. + optional Server server = 1; + // A string to filter the users by. + optional string filter = 2; + } + + message List { + // The server on which the users are registered. + optional Server server = 1; + // The users. + repeated DatabaseUser users = 2; + } + + message Verify { + // The server on which the user-password pair will be authenticated. + optional Server server = 1; + // The user's name. + optional string name = 2; + // The user's password. + optional string password = 3; + } +} + +message RedirectWhisperGroup { + // The server on which the whisper redirection will take place. + optional Server server = 1; + // The user to whom the redirection will be applied. + optional User user = 2; + // The source group. + optional ACL.Group source = 3; + // The target group. + optional ACL.Group target = 4; +} + +service V1 { + // + // Meta + // + + // GetUptime returns murmur's uptime. + rpc GetUptime(Void) returns(Uptime); + // GetVersion returns murmur's version. + rpc GetVersion(Void) returns(Version); + // Events returns a stream of murmur events. + rpc Events(Void) returns(stream Event); + + // + // Servers + // + + // ServerCreate creates a new virtual server. The returned server object + // contains the newly created server's ID. + rpc ServerCreate(Void) returns(Server); + // ServerQuery returns a list of servers that match the given query. + rpc ServerQuery(Server.Query) returns(Server.List); + // ServerGet returns information about the given server. + rpc ServerGet(Server) returns(Server); + // ServerStart starts the given stopped server. + rpc ServerStart(Server) returns(Void); + // ServerStop stops the given virtual server. + rpc ServerStop(Server) returns(Void); + // ServerRemove removes the given virtual server and its configuration. + rpc ServerRemove(Server) returns(Void); + // ServerEvents returns a stream of events that happen on the given server. + rpc ServerEvents(Server) returns(stream Server.Event); + + // + // ContextActions + // + + // ContextActionAdd adds a context action to the given user's client. The + // following ContextAction fields must be set: + // context, action, text, and user. + // + // Added context actions are valid until: + // - The context action is removed with ContextActionRemove, or + // - The user disconnects from the server, or + // - The server stops. + rpc ContextActionAdd(ContextAction) returns(Void); + // ContextActionRemove removes a context action from the given user's client. + // The following ContextAction must be set: + // action + // If no user is given, the context action is removed from all users. + rpc ContextActionRemove(ContextAction) returns(Void); + // ContextActionEvents returns a stream of context action events that are + // triggered by users. + rpc ContextActionEvents(ContextAction) returns(stream ContextAction); + + // + // TextMessage + // + + // TextMessageSend sends the given TextMessage to the server. + // + // If no users, channels, or trees are added to the TextMessage, the message + // will be broadcast the entire server. Otherwise, the message will be + // targeted to the specified users, channels, and trees. + rpc TextMessageSend(TextMessage) returns(Void); + // TextMessageFilter filters text messages on a given server. + + // TextMessageFilter filters text messages for a given server. + // + // When a filter stream is active, text messages sent from users to the + // server are sent over the stream. The RPC client then sends a message back + // on the same stream, containing an action: whether the message should be + // accepted, rejected, or dropped. + // + // To activate the filter stream, an initial TextMessage.Filter message must + // be sent that contains the server on which the filter will be active. + rpc TextMessageFilter(stream TextMessage.Filter) returns(stream TextMessage.Filter); + + // + // Logs + // + + // LogQuery returns a list of log entries from the given server. + // + // To get the total number of log entries, omit min and/or max from the + // query. + rpc LogQuery(Log.Query) returns(Log.List); + + // + // Config + // + + // ConfigGet returns the explicitly set configuration for the given server. + rpc ConfigGet(Server) returns(Config); + // ConfigGetField returns the configuration value for the given key. + rpc ConfigGetField(Config.Field) returns(Config.Field); + // ConfigSetField sets the configuration value to the given value. + rpc ConfigSetField(Config.Field) returns(Void); + // ConfigGetDefault returns the default server configuration. + rpc ConfigGetDefault(Void) returns(Config); + + // + // Channels + // + + // ChannelQuery returns a list of channels that match the given query. + rpc ChannelQuery(Channel.Query) returns(Channel.List); + // ChannelGet returns the channel with the given ID. + rpc ChannelGet(Channel) returns(Channel); + // ChannelAdd adds the channel to the given server. The parent and name of + // the channel must be set. + rpc ChannelAdd(Channel) returns(Channel); + // ChannelRemove removes the given channel from the server. + rpc ChannelRemove(Channel) returns(Void); + // ChannelUpdate updates the given channel's attributes. Only the fields that + // are set will be updated. + rpc ChannelUpdate(Channel) returns(Channel); + + // + // Users + // + + // UserQuery returns a list of connected users who match the given query. + rpc UserQuery(User.Query) returns(User.List); + // UserGet returns information on the connected user, given by the user's + // session or name. + rpc UserGet(User) returns(User); + // UserUpdate changes the given user's state. Only the following fields can + // be changed: + // name, mute, deaf, suppress, priority_speaker, channel, comment. + rpc UserUpdate(User) returns(User); + // UserKick kicks the user from the server. + rpc UserKick(User.Kick) returns(Void); + + // + // Tree + // + + // TreeQuery returns a representation of the given server's channel/user + // tree. + rpc TreeQuery(Tree.Query) returns(Tree); + + // + // Bans + // + + // BansGet returns a list of bans for the given server. + rpc BansGet(Ban.Query) returns(Ban.List); + // BansSet replaces the server's ban list with the given list. + rpc BansSet(Ban.List) returns(Void); + + // + // ACL + // + + // ACLGet returns the ACL for the given channel. + rpc ACLGet(Channel) returns(ACL.List); + // ACLSet overrides the ACL of the given channel to what is provided. + rpc ACLSet(ACL.List) returns(Void); + // ACLGetEffectivePermissions returns the effective permissions for the given + // user in the given channel. + rpc ACLGetEffectivePermissions(ACL.Query) returns(ACL); + // ACLAddTemporaryGroup adds a user to a temporary group. + rpc ACLAddTemporaryGroup(ACL.TemporaryGroup) returns(Void); + // ACLRemoveTemporaryGroup removes a user from a temporary group. + rpc ACLRemoveTemporaryGroup(ACL.TemporaryGroup) returns(Void); + + // + // Authenticator + // + + // AuthenticatorStream opens an authentication stream to the server. + // + // There can only be one RPC client with an open Stream. If a new + // authenticator connects, the open connected will be closed. + rpc AuthenticatorStream(stream Authenticator.Response) returns(stream Authenticator.Request); + + // + // Database + // + + // DatabaseUserQuery returns a list of registered users who match given + // query. + rpc DatabaseUserQuery(DatabaseUser.Query) returns(DatabaseUser.List); + // DatabaseUserGet returns the database user with the given ID. + rpc DatabaseUserGet(DatabaseUser) returns(DatabaseUser); + // DatabaseUserUpdate updates the given database user. + rpc DatabaseUserUpdate(DatabaseUser) returns(Void); + // DatabaseUserRegister registers a user with the given information on the + // server. The returned DatabaseUser will contain the newly registered user's + // ID. + rpc DatabaseUserRegister(DatabaseUser) returns(DatabaseUser); + // DatabaseUserDeregister deregisters the given user. + rpc DatabaseUserDeregister(DatabaseUser) returns(Void); + // DatabaseUserVerify verifies the that the given user-password pair is + // correct. + rpc DatabaseUserVerify(DatabaseUser.Verify) returns(DatabaseUser); + + // + // Audio + // + + // AddRedirectWhisperGroup add a whisper targets redirection for the given + // user. Whenever a user whispers to group "source", the whisper will be + // redirected to group "target". + rpc RedirectWhisperGroupAdd(RedirectWhisperGroup) returns(Void); + + // RemoveRedirectWhisperGroup removes a whisper target redirection for + // the the given user. + rpc RedirectWhisperGroupRemove(RedirectWhisperGroup) returns(Void); +} diff --git a/mumble/MurmurRPC_pb2.py b/mumble/MurmurRPC_pb2.py new file mode 100644 index 0000000..b93b26e --- /dev/null +++ b/mumble/MurmurRPC_pb2.py @@ -0,0 +1,3881 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: MurmurRPC.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='MurmurRPC.proto', + package='MurmurRPC', + syntax='proto2', + serialized_pb=_b('\n\x0fMurmurRPC.proto\x12\tMurmurRPC\"\x06\n\x04Void\"K\n\x07Version\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0f\n\x07release\x18\x02 \x01(\t\x12\n\n\x02os\x18\x03 \x01(\t\x12\x12\n\nos_version\x18\x04 \x01(\t\"\x16\n\x06Uptime\x12\x0c\n\x04secs\x18\x01 \x01(\x04\"\xe1\x03\n\x06Server\x12\n\n\x02id\x18\x01 \x02(\r\x12\x0f\n\x07running\x18\x02 \x01(\x08\x12!\n\x06uptime\x18\x03 \x01(\x0b\x32\x11.MurmurRPC.Uptime\x1a\xe1\x02\n\x05\x45vent\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12*\n\x04type\x18\x02 \x01(\x0e\x32\x1c.MurmurRPC.Server.Event.Type\x12\x1d\n\x04user\x18\x03 \x01(\x0b\x32\x0f.MurmurRPC.User\x12\'\n\x07message\x18\x04 \x01(\x0b\x32\x16.MurmurRPC.TextMessage\x12#\n\x07\x63hannel\x18\x05 \x01(\x0b\x32\x12.MurmurRPC.Channel\"\x9b\x01\n\x04Type\x12\x11\n\rUserConnected\x10\x00\x12\x14\n\x10UserDisconnected\x10\x01\x12\x14\n\x10UserStateChanged\x10\x02\x12\x13\n\x0fUserTextMessage\x10\x03\x12\x12\n\x0e\x43hannelCreated\x10\x04\x12\x12\n\x0e\x43hannelRemoved\x10\x05\x12\x17\n\x13\x43hannelStateChanged\x10\x06\x1a\x07\n\x05Query\x1a*\n\x04List\x12\"\n\x07servers\x18\x01 \x03(\x0b\x32\x11.MurmurRPC.Server\"}\n\x05\x45vent\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12#\n\x04type\x18\x02 \x01(\x0e\x32\x15.MurmurRPC.Event.Type\",\n\x04Type\x12\x11\n\rServerStopped\x10\x00\x12\x11\n\rServerStarted\x10\x01\"\xf3\x01\n\rContextAction\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x0f\n\x07\x63ontext\x18\x02 \x01(\r\x12\x0e\n\x06\x61\x63tion\x18\x03 \x01(\t\x12\x0c\n\x04text\x18\x04 \x01(\t\x12\x1e\n\x05\x61\x63tor\x18\x05 \x01(\x0b\x32\x0f.MurmurRPC.User\x12\x1d\n\x04user\x18\x06 \x01(\x0b\x32\x0f.MurmurRPC.User\x12#\n\x07\x63hannel\x18\x07 \x01(\x0b\x32\x12.MurmurRPC.Channel\",\n\x07\x43ontext\x12\n\n\x06Server\x10\x01\x12\x0b\n\x07\x43hannel\x10\x02\x12\x08\n\x04User\x10\x04\"\x80\x03\n\x0bTextMessage\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x1e\n\x05\x61\x63tor\x18\x02 \x01(\x0b\x32\x0f.MurmurRPC.User\x12\x1e\n\x05users\x18\x03 \x03(\x0b\x32\x0f.MurmurRPC.User\x12$\n\x08\x63hannels\x18\x04 \x03(\x0b\x32\x12.MurmurRPC.Channel\x12!\n\x05trees\x18\x05 \x03(\x0b\x32\x12.MurmurRPC.Channel\x12\x0c\n\x04text\x18\x06 \x01(\t\x1a\xb6\x01\n\x06\x46ilter\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x34\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32$.MurmurRPC.TextMessage.Filter.Action\x12\'\n\x07message\x18\x03 \x01(\x0b\x32\x16.MurmurRPC.TextMessage\"*\n\x06\x41\x63tion\x12\n\n\x06\x41\x63\x63\x65pt\x10\x00\x12\n\n\x06Reject\x10\x01\x12\x08\n\x04\x44rop\x10\x02\"\x84\x02\n\x03Log\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\x12\x0c\n\x04text\x18\x03 \x01(\t\x1a\x44\n\x05Query\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x0b\n\x03min\x18\x02 \x01(\r\x12\x0b\n\x03max\x18\x03 \x01(\r\x1as\n\x04List\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\r\n\x05total\x18\x02 \x01(\r\x12\x0b\n\x03min\x18\x03 \x01(\r\x12\x0b\n\x03max\x18\x04 \x01(\r\x12\x1f\n\x07\x65ntries\x18\x05 \x03(\x0b\x32\x0e.MurmurRPC.Log\"\xd1\x01\n\x06\x43onfig\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12-\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x1d.MurmurRPC.Config.FieldsEntry\x1a-\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x46\n\x05\x46ield\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"\xc4\x02\n\x07\x43hannel\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\n\n\x02id\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\"\n\x06parent\x18\x04 \x01(\x0b\x32\x12.MurmurRPC.Channel\x12!\n\x05links\x18\x05 \x03(\x0b\x32\x12.MurmurRPC.Channel\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x11\n\ttemporary\x18\x07 \x01(\x08\x12\x10\n\x08position\x18\x08 \x01(\x05\x1a*\n\x05Query\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x1aO\n\x04List\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12$\n\x08\x63hannels\x18\x02 \x03(\x0b\x32\x12.MurmurRPC.Channel\"\xf5\x05\n\x04User\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x0f\n\x07session\x18\x02 \x01(\r\x12\n\n\x02id\x18\x03 \x01(\r\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0c\n\x04mute\x18\x05 \x01(\x08\x12\x0c\n\x04\x64\x65\x61\x66\x18\x06 \x01(\x08\x12\x10\n\x08suppress\x18\x07 \x01(\x08\x12\x18\n\x10priority_speaker\x18\x08 \x01(\x08\x12\x11\n\tself_mute\x18\t \x01(\x08\x12\x11\n\tself_deaf\x18\n \x01(\x08\x12\x11\n\trecording\x18\x0b \x01(\x08\x12#\n\x07\x63hannel\x18\x0c \x01(\x0b\x32\x12.MurmurRPC.Channel\x12\x13\n\x0bonline_secs\x18\r \x01(\r\x12\x11\n\tidle_secs\x18\x0e \x01(\r\x12\x15\n\rbytes_per_sec\x18\x0f \x01(\r\x12#\n\x07version\x18\x10 \x01(\x0b\x32\x12.MurmurRPC.Version\x12\x16\n\x0eplugin_context\x18\x11 \x01(\x0c\x12\x17\n\x0fplugin_identity\x18\x12 \x01(\t\x12\x0f\n\x07\x63omment\x18\x13 \x01(\t\x12\x0f\n\x07texture\x18\x14 \x01(\x0c\x12\x0f\n\x07\x61\x64\x64ress\x18\x15 \x01(\x0c\x12\x10\n\x08tcp_only\x18\x16 \x01(\x08\x12\x16\n\x0eudp_ping_msecs\x18\x17 \x01(\x02\x12\x16\n\x0etcp_ping_msecs\x18\x18 \x01(\x02\x1a*\n\x05Query\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x1aI\n\x04List\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x1e\n\x05users\x18\x02 \x03(\x0b\x32\x0f.MurmurRPC.User\x1ax\n\x04Kick\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x1d\n\x04user\x18\x02 \x01(\x0b\x32\x0f.MurmurRPC.User\x12\x1e\n\x05\x61\x63tor\x18\x03 \x01(\x0b\x32\x0f.MurmurRPC.User\x12\x0e\n\x06reason\x18\x04 \x01(\t\"\xbd\x01\n\x04Tree\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12#\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x12.MurmurRPC.Channel\x12!\n\x08\x63hildren\x18\x03 \x03(\x0b\x32\x0f.MurmurRPC.Tree\x12\x1e\n\x05users\x18\x04 \x03(\x0b\x32\x0f.MurmurRPC.User\x1a*\n\x05Query\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\"\x8e\x02\n\x03\x42\x61n\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\x0c\x12\x0c\n\x04\x62its\x18\x03 \x01(\r\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0c\n\x04hash\x18\x05 \x01(\t\x12\x0e\n\x06reason\x18\x06 \x01(\t\x12\r\n\x05start\x18\x07 \x01(\x03\x12\x15\n\rduration_secs\x18\x08 \x01(\x03\x1a*\n\x05Query\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x1aG\n\x04List\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x1c\n\x04\x62\x61ns\x18\x02 \x03(\x0b\x32\x0e.MurmurRPC.Ban\"\x96\x08\n\x03\x41\x43L\x12\x12\n\napply_here\x18\x03 \x01(\x08\x12\x12\n\napply_subs\x18\x04 \x01(\x08\x12\x11\n\tinherited\x18\x05 \x01(\x08\x12%\n\x04user\x18\x06 \x01(\x0b\x32\x17.MurmurRPC.DatabaseUser\x12#\n\x05group\x18\x07 \x01(\x0b\x32\x14.MurmurRPC.ACL.Group\x12\r\n\x05\x61llow\x18\x08 \x01(\r\x12\x0c\n\x04\x64\x65ny\x18\t \x01(\r\x1a\xd1\x01\n\x05Group\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tinherited\x18\x02 \x01(\x08\x12\x0f\n\x07inherit\x18\x03 \x01(\x08\x12\x13\n\x0binheritable\x18\x04 \x01(\x08\x12*\n\tusers_add\x18\x05 \x03(\x0b\x32\x17.MurmurRPC.DatabaseUser\x12-\n\x0cusers_remove\x18\x06 \x03(\x0b\x32\x17.MurmurRPC.DatabaseUser\x12&\n\x05users\x18\x07 \x03(\x0b\x32\x17.MurmurRPC.DatabaseUser\x1an\n\x05Query\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x1d\n\x04user\x18\x02 \x01(\x0b\x32\x0f.MurmurRPC.User\x12#\n\x07\x63hannel\x18\x03 \x01(\x0b\x32\x12.MurmurRPC.Channel\x1a\xa3\x01\n\x04List\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12#\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x12.MurmurRPC.Channel\x12\x1c\n\x04\x61\x63ls\x18\x03 \x03(\x0b\x32\x0e.MurmurRPC.ACL\x12$\n\x06groups\x18\x04 \x03(\x0b\x32\x14.MurmurRPC.ACL.Group\x12\x0f\n\x07inherit\x18\x05 \x01(\x08\x1a\x85\x01\n\x0eTemporaryGroup\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12#\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x12.MurmurRPC.Channel\x12\x1d\n\x04user\x18\x03 \x01(\x0b\x32\x0f.MurmurRPC.User\x12\x0c\n\x04name\x18\x04 \x01(\t\"\xf8\x01\n\nPermission\x12\x08\n\x04None\x10\x00\x12\t\n\x05Write\x10\x01\x12\x0c\n\x08Traverse\x10\x02\x12\t\n\x05\x45nter\x10\x04\x12\t\n\x05Speak\x10\x08\x12\x0c\n\x07Whisper\x10\x80\x02\x12\x0e\n\nMuteDeafen\x10\x10\x12\x08\n\x04Move\x10 \x12\x0f\n\x0bMakeChannel\x10@\x12\x19\n\x14MakeTemporaryChannel\x10\x80\x08\x12\x10\n\x0bLinkChannel\x10\x80\x01\x12\x10\n\x0bTextMessage\x10\x80\x04\x12\n\n\x04Kick\x10\x80\x80\x04\x12\t\n\x03\x42\x61n\x10\x80\x80\x08\x12\x0e\n\x08Register\x10\x80\x80\x10\x12\x12\n\x0cRegisterSelf\x10\x80\x80 \"\xf0\r\n\rAuthenticator\x1a\xc1\x05\n\x07Request\x12\x43\n\x0c\x61uthenticate\x18\x01 \x01(\x0b\x32-.MurmurRPC.Authenticator.Request.Authenticate\x12\x33\n\x04\x66ind\x18\x02 \x01(\x0b\x32%.MurmurRPC.Authenticator.Request.Find\x12\x35\n\x05query\x18\x03 \x01(\x0b\x32&.MurmurRPC.Authenticator.Request.Query\x12;\n\x08register\x18\x04 \x01(\x0b\x32).MurmurRPC.Authenticator.Request.Register\x12?\n\nderegister\x18\x05 \x01(\x0b\x32+.MurmurRPC.Authenticator.Request.Deregister\x12\x37\n\x06update\x18\x06 \x01(\x0b\x32\'.MurmurRPC.Authenticator.Request.Update\x1az\n\x0c\x41uthenticate\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\x12\x14\n\x0c\x63\x65rtificates\x18\x03 \x03(\x0c\x12\x18\n\x10\x63\x65rtificate_hash\x18\x04 \x01(\t\x12\x1a\n\x12strong_certificate\x18\x05 \x01(\x08\x1a \n\x04\x46ind\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x1a\x17\n\x05Query\x12\x0e\n\x06\x66ilter\x18\x01 \x01(\t\x1a\x31\n\x08Register\x12%\n\x04user\x18\x01 \x01(\x0b\x32\x17.MurmurRPC.DatabaseUser\x1a\x33\n\nDeregister\x12%\n\x04user\x18\x01 \x01(\x0b\x32\x17.MurmurRPC.DatabaseUser\x1a/\n\x06Update\x12%\n\x04user\x18\x01 \x01(\x0b\x32\x17.MurmurRPC.DatabaseUser\x1a\x9a\x08\n\x08Response\x12@\n\ninitialize\x18\x01 \x01(\x0b\x32,.MurmurRPC.Authenticator.Response.Initialize\x12\x44\n\x0c\x61uthenticate\x18\x02 \x01(\x0b\x32..MurmurRPC.Authenticator.Response.Authenticate\x12\x34\n\x04\x66ind\x18\x03 \x01(\x0b\x32&.MurmurRPC.Authenticator.Response.Find\x12\x36\n\x05query\x18\x04 \x01(\x0b\x32\'.MurmurRPC.Authenticator.Response.Query\x12<\n\x08register\x18\x05 \x01(\x0b\x32*.MurmurRPC.Authenticator.Response.Register\x12@\n\nderegister\x18\x06 \x01(\x0b\x32,.MurmurRPC.Authenticator.Response.Deregister\x12\x38\n\x06update\x18\x07 \x01(\x0b\x32(.MurmurRPC.Authenticator.Response.Update\x1a/\n\nInitialize\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x1a\x88\x01\n\x0c\x41uthenticate\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32(.MurmurRPC.Authenticator.Response.Status\x12\n\n\x02id\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12$\n\x06groups\x18\x04 \x03(\x0b\x32\x14.MurmurRPC.ACL.Group\x1a-\n\x04\x46ind\x12%\n\x04user\x18\x01 \x01(\x0b\x32\x17.MurmurRPC.DatabaseUser\x1a/\n\x05Query\x12&\n\x05users\x18\x01 \x03(\x0b\x32\x17.MurmurRPC.DatabaseUser\x1ak\n\x08Register\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32(.MurmurRPC.Authenticator.Response.Status\x12%\n\x04user\x18\x02 \x01(\x0b\x32\x17.MurmurRPC.DatabaseUser\x1a\x46\n\nDeregister\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32(.MurmurRPC.Authenticator.Response.Status\x1a\x42\n\x06Update\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32(.MurmurRPC.Authenticator.Response.Status\"I\n\x06Status\x12\x0f\n\x0b\x46\x61llthrough\x10\x00\x12\x0b\n\x07Success\x10\x01\x12\x0b\n\x07\x46\x61ilure\x10\x02\x12\x14\n\x10TemporaryFailure\x10\x03\"\x8d\x03\n\x0c\x44\x61tabaseUser\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\n\n\x02id\x18\x02 \x01(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05\x65mail\x18\x04 \x01(\t\x12\x0f\n\x07\x63omment\x18\x05 \x01(\t\x12\x0c\n\x04hash\x18\x06 \x01(\t\x12\x10\n\x08password\x18\x07 \x01(\t\x12\x13\n\x0blast_active\x18\x08 \x01(\t\x12\x0f\n\x07texture\x18\t \x01(\x0c\x1a:\n\x05Query\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x1aQ\n\x04List\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12&\n\x05users\x18\x02 \x03(\x0b\x32\x17.MurmurRPC.DatabaseUser\x1aK\n\x06Verify\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"\xa4\x01\n\x14RedirectWhisperGroup\x12!\n\x06server\x18\x01 \x01(\x0b\x32\x11.MurmurRPC.Server\x12\x1d\n\x04user\x18\x02 \x01(\x0b\x32\x0f.MurmurRPC.User\x12$\n\x06source\x18\x03 \x01(\x0b\x32\x14.MurmurRPC.ACL.Group\x12$\n\x06target\x18\x04 \x01(\x0b\x32\x14.MurmurRPC.ACL.Group2\x87\x16\n\x02V1\x12/\n\tGetUptime\x12\x0f.MurmurRPC.Void\x1a\x11.MurmurRPC.Uptime\x12\x31\n\nGetVersion\x12\x0f.MurmurRPC.Void\x1a\x12.MurmurRPC.Version\x12-\n\x06\x45vents\x12\x0f.MurmurRPC.Void\x1a\x10.MurmurRPC.Event0\x01\x12\x32\n\x0cServerCreate\x12\x0f.MurmurRPC.Void\x1a\x11.MurmurRPC.Server\x12>\n\x0bServerQuery\x12\x17.MurmurRPC.Server.Query\x1a\x16.MurmurRPC.Server.List\x12\x31\n\tServerGet\x12\x11.MurmurRPC.Server\x1a\x11.MurmurRPC.Server\x12\x31\n\x0bServerStart\x12\x11.MurmurRPC.Server\x1a\x0f.MurmurRPC.Void\x12\x30\n\nServerStop\x12\x11.MurmurRPC.Server\x1a\x0f.MurmurRPC.Void\x12\x32\n\x0cServerRemove\x12\x11.MurmurRPC.Server\x1a\x0f.MurmurRPC.Void\x12<\n\x0cServerEvents\x12\x11.MurmurRPC.Server\x1a\x17.MurmurRPC.Server.Event0\x01\x12=\n\x10\x43ontextActionAdd\x12\x18.MurmurRPC.ContextAction\x1a\x0f.MurmurRPC.Void\x12@\n\x13\x43ontextActionRemove\x12\x18.MurmurRPC.ContextAction\x1a\x0f.MurmurRPC.Void\x12K\n\x13\x43ontextActionEvents\x12\x18.MurmurRPC.ContextAction\x1a\x18.MurmurRPC.ContextAction0\x01\x12:\n\x0fTextMessageSend\x12\x16.MurmurRPC.TextMessage\x1a\x0f.MurmurRPC.Void\x12U\n\x11TextMessageFilter\x12\x1d.MurmurRPC.TextMessage.Filter\x1a\x1d.MurmurRPC.TextMessage.Filter(\x01\x30\x01\x12\x35\n\x08LogQuery\x12\x14.MurmurRPC.Log.Query\x1a\x13.MurmurRPC.Log.List\x12\x31\n\tConfigGet\x12\x11.MurmurRPC.Server\x1a\x11.MurmurRPC.Config\x12\x42\n\x0e\x43onfigGetField\x12\x17.MurmurRPC.Config.Field\x1a\x17.MurmurRPC.Config.Field\x12:\n\x0e\x43onfigSetField\x12\x17.MurmurRPC.Config.Field\x1a\x0f.MurmurRPC.Void\x12\x36\n\x10\x43onfigGetDefault\x12\x0f.MurmurRPC.Void\x1a\x11.MurmurRPC.Config\x12\x41\n\x0c\x43hannelQuery\x12\x18.MurmurRPC.Channel.Query\x1a\x17.MurmurRPC.Channel.List\x12\x34\n\nChannelGet\x12\x12.MurmurRPC.Channel\x1a\x12.MurmurRPC.Channel\x12\x34\n\nChannelAdd\x12\x12.MurmurRPC.Channel\x1a\x12.MurmurRPC.Channel\x12\x34\n\rChannelRemove\x12\x12.MurmurRPC.Channel\x1a\x0f.MurmurRPC.Void\x12\x37\n\rChannelUpdate\x12\x12.MurmurRPC.Channel\x1a\x12.MurmurRPC.Channel\x12\x38\n\tUserQuery\x12\x15.MurmurRPC.User.Query\x1a\x14.MurmurRPC.User.List\x12+\n\x07UserGet\x12\x0f.MurmurRPC.User\x1a\x0f.MurmurRPC.User\x12.\n\nUserUpdate\x12\x0f.MurmurRPC.User\x1a\x0f.MurmurRPC.User\x12\x31\n\x08UserKick\x12\x14.MurmurRPC.User.Kick\x1a\x0f.MurmurRPC.Void\x12\x33\n\tTreeQuery\x12\x15.MurmurRPC.Tree.Query\x1a\x0f.MurmurRPC.Tree\x12\x34\n\x07\x42\x61nsGet\x12\x14.MurmurRPC.Ban.Query\x1a\x13.MurmurRPC.Ban.List\x12/\n\x07\x42\x61nsSet\x12\x13.MurmurRPC.Ban.List\x1a\x0f.MurmurRPC.Void\x12\x31\n\x06\x41\x43LGet\x12\x12.MurmurRPC.Channel\x1a\x13.MurmurRPC.ACL.List\x12.\n\x06\x41\x43LSet\x12\x13.MurmurRPC.ACL.List\x1a\x0f.MurmurRPC.Void\x12\x42\n\x1a\x41\x43LGetEffectivePermissions\x12\x14.MurmurRPC.ACL.Query\x1a\x0e.MurmurRPC.ACL\x12\x46\n\x14\x41\x43LAddTemporaryGroup\x12\x1d.MurmurRPC.ACL.TemporaryGroup\x1a\x0f.MurmurRPC.Void\x12I\n\x17\x41\x43LRemoveTemporaryGroup\x12\x1d.MurmurRPC.ACL.TemporaryGroup\x1a\x0f.MurmurRPC.Void\x12^\n\x13\x41uthenticatorStream\x12!.MurmurRPC.Authenticator.Response\x1a .MurmurRPC.Authenticator.Request(\x01\x30\x01\x12P\n\x11\x44\x61tabaseUserQuery\x12\x1d.MurmurRPC.DatabaseUser.Query\x1a\x1c.MurmurRPC.DatabaseUser.List\x12\x43\n\x0f\x44\x61tabaseUserGet\x12\x17.MurmurRPC.DatabaseUser\x1a\x17.MurmurRPC.DatabaseUser\x12>\n\x12\x44\x61tabaseUserUpdate\x12\x17.MurmurRPC.DatabaseUser\x1a\x0f.MurmurRPC.Void\x12H\n\x14\x44\x61tabaseUserRegister\x12\x17.MurmurRPC.DatabaseUser\x1a\x17.MurmurRPC.DatabaseUser\x12\x42\n\x16\x44\x61tabaseUserDeregister\x12\x17.MurmurRPC.DatabaseUser\x1a\x0f.MurmurRPC.Void\x12M\n\x12\x44\x61tabaseUserVerify\x12\x1e.MurmurRPC.DatabaseUser.Verify\x1a\x17.MurmurRPC.DatabaseUser\x12K\n\x17RedirectWhisperGroupAdd\x12\x1f.MurmurRPC.RedirectWhisperGroup\x1a\x0f.MurmurRPC.Void\x12N\n\x1aRedirectWhisperGroupRemove\x12\x1f.MurmurRPC.RedirectWhisperGroup\x1a\x0f.MurmurRPC.Void') +) + + + +_SERVER_EVENT_TYPE = _descriptor.EnumDescriptor( + name='Type', + full_name='MurmurRPC.Server.Event.Type', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UserConnected', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UserDisconnected', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UserStateChanged', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UserTextMessage', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ChannelCreated', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ChannelRemoved', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ChannelStateChanged', index=6, number=6, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=413, + serialized_end=568, +) +_sym_db.RegisterEnumDescriptor(_SERVER_EVENT_TYPE) + +_EVENT_TYPE = _descriptor.EnumDescriptor( + name='Type', + full_name='MurmurRPC.Event.Type', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ServerStopped', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ServerStarted', index=1, number=1, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=704, + serialized_end=748, +) +_sym_db.RegisterEnumDescriptor(_EVENT_TYPE) + +_CONTEXTACTION_CONTEXT = _descriptor.EnumDescriptor( + name='Context', + full_name='MurmurRPC.ContextAction.Context', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='Server', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Channel', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='User', index=2, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=950, + serialized_end=994, +) +_sym_db.RegisterEnumDescriptor(_CONTEXTACTION_CONTEXT) + +_TEXTMESSAGE_FILTER_ACTION = _descriptor.EnumDescriptor( + name='Action', + full_name='MurmurRPC.TextMessage.Filter.Action', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='Accept', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Reject', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Drop', index=2, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1339, + serialized_end=1381, +) +_sym_db.RegisterEnumDescriptor(_TEXTMESSAGE_FILTER_ACTION) + +_ACL_PERMISSION = _descriptor.EnumDescriptor( + name='Permission', + full_name='MurmurRPC.ACL.Permission', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='None', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Write', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Traverse', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Enter', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Speak', index=4, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Whisper', index=5, number=256, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MuteDeafen', index=6, number=16, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Move', index=7, number=32, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MakeChannel', index=8, number=64, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MakeTemporaryChannel', index=9, number=1024, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LinkChannel', index=10, number=128, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='TextMessage', index=11, number=512, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Kick', index=12, number=65536, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Ban', index=13, number=131072, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Register', index=14, number=262144, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RegisterSelf', index=15, number=524288, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=4209, + serialized_end=4457, +) +_sym_db.RegisterEnumDescriptor(_ACL_PERMISSION) + +_AUTHENTICATOR_RESPONSE_STATUS = _descriptor.EnumDescriptor( + name='Status', + full_name='MurmurRPC.Authenticator.Response.Status', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='Fallthrough', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Success', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='Failure', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='TemporaryFailure', index=3, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=6163, + serialized_end=6236, +) +_sym_db.RegisterEnumDescriptor(_AUTHENTICATOR_RESPONSE_STATUS) + + +_VOID = _descriptor.Descriptor( + name='Void', + full_name='MurmurRPC.Void', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=30, + serialized_end=36, +) + + +_VERSION = _descriptor.Descriptor( + name='Version', + full_name='MurmurRPC.Version', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='version', full_name='MurmurRPC.Version.version', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='release', full_name='MurmurRPC.Version.release', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='os', full_name='MurmurRPC.Version.os', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='os_version', full_name='MurmurRPC.Version.os_version', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=38, + serialized_end=113, +) + + +_UPTIME = _descriptor.Descriptor( + name='Uptime', + full_name='MurmurRPC.Uptime', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='secs', full_name='MurmurRPC.Uptime.secs', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=115, + serialized_end=137, +) + + +_SERVER_EVENT = _descriptor.Descriptor( + name='Event', + full_name='MurmurRPC.Server.Event', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Server.Event.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='MurmurRPC.Server.Event.type', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.Server.Event.user', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='message', full_name='MurmurRPC.Server.Event.message', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel', full_name='MurmurRPC.Server.Event.channel', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _SERVER_EVENT_TYPE, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=215, + serialized_end=568, +) + +_SERVER_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.Server.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=570, + serialized_end=577, +) + +_SERVER_LIST = _descriptor.Descriptor( + name='List', + full_name='MurmurRPC.Server.List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='servers', full_name='MurmurRPC.Server.List.servers', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=579, + serialized_end=621, +) + +_SERVER = _descriptor.Descriptor( + name='Server', + full_name='MurmurRPC.Server', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='MurmurRPC.Server.id', index=0, + number=1, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='running', full_name='MurmurRPC.Server.running', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='uptime', full_name='MurmurRPC.Server.uptime', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_SERVER_EVENT, _SERVER_QUERY, _SERVER_LIST, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=140, + serialized_end=621, +) + + +_EVENT = _descriptor.Descriptor( + name='Event', + full_name='MurmurRPC.Event', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Event.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='MurmurRPC.Event.type', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _EVENT_TYPE, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=623, + serialized_end=748, +) + + +_CONTEXTACTION = _descriptor.Descriptor( + name='ContextAction', + full_name='MurmurRPC.ContextAction', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.ContextAction.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='context', full_name='MurmurRPC.ContextAction.context', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='action', full_name='MurmurRPC.ContextAction.action', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='text', full_name='MurmurRPC.ContextAction.text', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='actor', full_name='MurmurRPC.ContextAction.actor', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.ContextAction.user', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel', full_name='MurmurRPC.ContextAction.channel', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CONTEXTACTION_CONTEXT, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=751, + serialized_end=994, +) + + +_TEXTMESSAGE_FILTER = _descriptor.Descriptor( + name='Filter', + full_name='MurmurRPC.TextMessage.Filter', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.TextMessage.Filter.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='action', full_name='MurmurRPC.TextMessage.Filter.action', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='message', full_name='MurmurRPC.TextMessage.Filter.message', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _TEXTMESSAGE_FILTER_ACTION, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1199, + serialized_end=1381, +) + +_TEXTMESSAGE = _descriptor.Descriptor( + name='TextMessage', + full_name='MurmurRPC.TextMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.TextMessage.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='actor', full_name='MurmurRPC.TextMessage.actor', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='users', full_name='MurmurRPC.TextMessage.users', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channels', full_name='MurmurRPC.TextMessage.channels', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='trees', full_name='MurmurRPC.TextMessage.trees', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='text', full_name='MurmurRPC.TextMessage.text', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_TEXTMESSAGE_FILTER, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=997, + serialized_end=1381, +) + + +_LOG_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.Log.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Log.Query.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min', full_name='MurmurRPC.Log.Query.min', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max', full_name='MurmurRPC.Log.Query.max', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1459, + serialized_end=1527, +) + +_LOG_LIST = _descriptor.Descriptor( + name='List', + full_name='MurmurRPC.Log.List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Log.List.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='total', full_name='MurmurRPC.Log.List.total', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min', full_name='MurmurRPC.Log.List.min', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max', full_name='MurmurRPC.Log.List.max', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='entries', full_name='MurmurRPC.Log.List.entries', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1529, + serialized_end=1644, +) + +_LOG = _descriptor.Descriptor( + name='Log', + full_name='MurmurRPC.Log', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Log.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='timestamp', full_name='MurmurRPC.Log.timestamp', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='text', full_name='MurmurRPC.Log.text', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_LOG_QUERY, _LOG_LIST, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1384, + serialized_end=1644, +) + + +_CONFIG_FIELDSENTRY = _descriptor.Descriptor( + name='FieldsEntry', + full_name='MurmurRPC.Config.FieldsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='MurmurRPC.Config.FieldsEntry.key', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='MurmurRPC.Config.FieldsEntry.value', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1739, + serialized_end=1784, +) + +_CONFIG_FIELD = _descriptor.Descriptor( + name='Field', + full_name='MurmurRPC.Config.Field', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Config.Field.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='key', full_name='MurmurRPC.Config.Field.key', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='MurmurRPC.Config.Field.value', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1786, + serialized_end=1856, +) + +_CONFIG = _descriptor.Descriptor( + name='Config', + full_name='MurmurRPC.Config', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Config.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='fields', full_name='MurmurRPC.Config.fields', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_CONFIG_FIELDSENTRY, _CONFIG_FIELD, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1647, + serialized_end=1856, +) + + +_CHANNEL_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.Channel.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Channel.Query.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1459, + serialized_end=1501, +) + +_CHANNEL_LIST = _descriptor.Descriptor( + name='List', + full_name='MurmurRPC.Channel.List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Channel.List.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channels', full_name='MurmurRPC.Channel.List.channels', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2104, + serialized_end=2183, +) + +_CHANNEL = _descriptor.Descriptor( + name='Channel', + full_name='MurmurRPC.Channel', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Channel.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='MurmurRPC.Channel.id', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.Channel.name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='parent', full_name='MurmurRPC.Channel.parent', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='links', full_name='MurmurRPC.Channel.links', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='description', full_name='MurmurRPC.Channel.description', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='temporary', full_name='MurmurRPC.Channel.temporary', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='position', full_name='MurmurRPC.Channel.position', index=7, + number=8, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_CHANNEL_QUERY, _CHANNEL_LIST, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1859, + serialized_end=2183, +) + + +_USER_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.User.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.User.Query.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1459, + serialized_end=1501, +) + +_USER_LIST = _descriptor.Descriptor( + name='List', + full_name='MurmurRPC.User.List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.User.List.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='users', full_name='MurmurRPC.User.List.users', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2748, + serialized_end=2821, +) + +_USER_KICK = _descriptor.Descriptor( + name='Kick', + full_name='MurmurRPC.User.Kick', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.User.Kick.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.User.Kick.user', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='actor', full_name='MurmurRPC.User.Kick.actor', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reason', full_name='MurmurRPC.User.Kick.reason', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2823, + serialized_end=2943, +) + +_USER = _descriptor.Descriptor( + name='User', + full_name='MurmurRPC.User', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.User.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='session', full_name='MurmurRPC.User.session', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='MurmurRPC.User.id', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.User.name', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='mute', full_name='MurmurRPC.User.mute', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='deaf', full_name='MurmurRPC.User.deaf', index=5, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='suppress', full_name='MurmurRPC.User.suppress', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='priority_speaker', full_name='MurmurRPC.User.priority_speaker', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='self_mute', full_name='MurmurRPC.User.self_mute', index=8, + number=9, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='self_deaf', full_name='MurmurRPC.User.self_deaf', index=9, + number=10, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='recording', full_name='MurmurRPC.User.recording', index=10, + number=11, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel', full_name='MurmurRPC.User.channel', index=11, + number=12, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='online_secs', full_name='MurmurRPC.User.online_secs', index=12, + number=13, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='idle_secs', full_name='MurmurRPC.User.idle_secs', index=13, + number=14, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='bytes_per_sec', full_name='MurmurRPC.User.bytes_per_sec', index=14, + number=15, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='version', full_name='MurmurRPC.User.version', index=15, + number=16, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='plugin_context', full_name='MurmurRPC.User.plugin_context', index=16, + number=17, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='plugin_identity', full_name='MurmurRPC.User.plugin_identity', index=17, + number=18, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comment', full_name='MurmurRPC.User.comment', index=18, + number=19, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='texture', full_name='MurmurRPC.User.texture', index=19, + number=20, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='address', full_name='MurmurRPC.User.address', index=20, + number=21, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tcp_only', full_name='MurmurRPC.User.tcp_only', index=21, + number=22, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='udp_ping_msecs', full_name='MurmurRPC.User.udp_ping_msecs', index=22, + number=23, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tcp_ping_msecs', full_name='MurmurRPC.User.tcp_ping_msecs', index=23, + number=24, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_USER_QUERY, _USER_LIST, _USER_KICK, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2186, + serialized_end=2943, +) + + +_TREE_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.Tree.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Tree.Query.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1459, + serialized_end=1501, +) + +_TREE = _descriptor.Descriptor( + name='Tree', + full_name='MurmurRPC.Tree', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Tree.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel', full_name='MurmurRPC.Tree.channel', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='children', full_name='MurmurRPC.Tree.children', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='users', full_name='MurmurRPC.Tree.users', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_TREE_QUERY, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2946, + serialized_end=3135, +) + + +_BAN_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.Ban.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Ban.Query.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1459, + serialized_end=1501, +) + +_BAN_LIST = _descriptor.Descriptor( + name='List', + full_name='MurmurRPC.Ban.List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Ban.List.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='bans', full_name='MurmurRPC.Ban.List.bans', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3337, + serialized_end=3408, +) + +_BAN = _descriptor.Descriptor( + name='Ban', + full_name='MurmurRPC.Ban', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Ban.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='address', full_name='MurmurRPC.Ban.address', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='bits', full_name='MurmurRPC.Ban.bits', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.Ban.name', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hash', full_name='MurmurRPC.Ban.hash', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reason', full_name='MurmurRPC.Ban.reason', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start', full_name='MurmurRPC.Ban.start', index=6, + number=7, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='duration_secs', full_name='MurmurRPC.Ban.duration_secs', index=7, + number=8, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_BAN_QUERY, _BAN_LIST, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3138, + serialized_end=3408, +) + + +_ACL_GROUP = _descriptor.Descriptor( + name='Group', + full_name='MurmurRPC.ACL.Group', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.ACL.Group.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherited', full_name='MurmurRPC.ACL.Group.inherited', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherit', full_name='MurmurRPC.ACL.Group.inherit', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inheritable', full_name='MurmurRPC.ACL.Group.inheritable', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='users_add', full_name='MurmurRPC.ACL.Group.users_add', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='users_remove', full_name='MurmurRPC.ACL.Group.users_remove', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='users', full_name='MurmurRPC.ACL.Group.users', index=6, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3583, + serialized_end=3792, +) + +_ACL_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.ACL.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.ACL.Query.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.ACL.Query.user', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel', full_name='MurmurRPC.ACL.Query.channel', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3794, + serialized_end=3904, +) + +_ACL_LIST = _descriptor.Descriptor( + name='List', + full_name='MurmurRPC.ACL.List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.ACL.List.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel', full_name='MurmurRPC.ACL.List.channel', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='acls', full_name='MurmurRPC.ACL.List.acls', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='groups', full_name='MurmurRPC.ACL.List.groups', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherit', full_name='MurmurRPC.ACL.List.inherit', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3907, + serialized_end=4070, +) + +_ACL_TEMPORARYGROUP = _descriptor.Descriptor( + name='TemporaryGroup', + full_name='MurmurRPC.ACL.TemporaryGroup', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.ACL.TemporaryGroup.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='channel', full_name='MurmurRPC.ACL.TemporaryGroup.channel', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.ACL.TemporaryGroup.user', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.ACL.TemporaryGroup.name', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4073, + serialized_end=4206, +) + +_ACL = _descriptor.Descriptor( + name='ACL', + full_name='MurmurRPC.ACL', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='apply_here', full_name='MurmurRPC.ACL.apply_here', index=0, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='apply_subs', full_name='MurmurRPC.ACL.apply_subs', index=1, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inherited', full_name='MurmurRPC.ACL.inherited', index=2, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.ACL.user', index=3, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group', full_name='MurmurRPC.ACL.group', index=4, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='allow', full_name='MurmurRPC.ACL.allow', index=5, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='deny', full_name='MurmurRPC.ACL.deny', index=6, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_ACL_GROUP, _ACL_QUERY, _ACL_LIST, _ACL_TEMPORARYGROUP, ], + enum_types=[ + _ACL_PERMISSION, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3411, + serialized_end=4457, +) + + +_AUTHENTICATOR_REQUEST_AUTHENTICATE = _descriptor.Descriptor( + name='Authenticate', + full_name='MurmurRPC.Authenticator.Request.Authenticate', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.Authenticator.Request.Authenticate.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='password', full_name='MurmurRPC.Authenticator.Request.Authenticate.password', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='certificates', full_name='MurmurRPC.Authenticator.Request.Authenticate.certificates', index=2, + number=3, type=12, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='certificate_hash', full_name='MurmurRPC.Authenticator.Request.Authenticate.certificate_hash', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='strong_certificate', full_name='MurmurRPC.Authenticator.Request.Authenticate.strong_certificate', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4849, + serialized_end=4971, +) + +_AUTHENTICATOR_REQUEST_FIND = _descriptor.Descriptor( + name='Find', + full_name='MurmurRPC.Authenticator.Request.Find', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='MurmurRPC.Authenticator.Request.Find.id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.Authenticator.Request.Find.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4973, + serialized_end=5005, +) + +_AUTHENTICATOR_REQUEST_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.Authenticator.Request.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='filter', full_name='MurmurRPC.Authenticator.Request.Query.filter', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5007, + serialized_end=5030, +) + +_AUTHENTICATOR_REQUEST_REGISTER = _descriptor.Descriptor( + name='Register', + full_name='MurmurRPC.Authenticator.Request.Register', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.Authenticator.Request.Register.user', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5032, + serialized_end=5081, +) + +_AUTHENTICATOR_REQUEST_DEREGISTER = _descriptor.Descriptor( + name='Deregister', + full_name='MurmurRPC.Authenticator.Request.Deregister', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.Authenticator.Request.Deregister.user', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5083, + serialized_end=5134, +) + +_AUTHENTICATOR_REQUEST_UPDATE = _descriptor.Descriptor( + name='Update', + full_name='MurmurRPC.Authenticator.Request.Update', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.Authenticator.Request.Update.user', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5136, + serialized_end=5183, +) + +_AUTHENTICATOR_REQUEST = _descriptor.Descriptor( + name='Request', + full_name='MurmurRPC.Authenticator.Request', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='authenticate', full_name='MurmurRPC.Authenticator.Request.authenticate', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='find', full_name='MurmurRPC.Authenticator.Request.find', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='query', full_name='MurmurRPC.Authenticator.Request.query', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='register', full_name='MurmurRPC.Authenticator.Request.register', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='deregister', full_name='MurmurRPC.Authenticator.Request.deregister', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='update', full_name='MurmurRPC.Authenticator.Request.update', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_AUTHENTICATOR_REQUEST_AUTHENTICATE, _AUTHENTICATOR_REQUEST_FIND, _AUTHENTICATOR_REQUEST_QUERY, _AUTHENTICATOR_REQUEST_REGISTER, _AUTHENTICATOR_REQUEST_DEREGISTER, _AUTHENTICATOR_REQUEST_UPDATE, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4478, + serialized_end=5183, +) + +_AUTHENTICATOR_RESPONSE_INITIALIZE = _descriptor.Descriptor( + name='Initialize', + full_name='MurmurRPC.Authenticator.Response.Initialize', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.Authenticator.Response.Initialize.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5630, + serialized_end=5677, +) + +_AUTHENTICATOR_RESPONSE_AUTHENTICATE = _descriptor.Descriptor( + name='Authenticate', + full_name='MurmurRPC.Authenticator.Response.Authenticate', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='status', full_name='MurmurRPC.Authenticator.Response.Authenticate.status', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='MurmurRPC.Authenticator.Response.Authenticate.id', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.Authenticator.Response.Authenticate.name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='groups', full_name='MurmurRPC.Authenticator.Response.Authenticate.groups', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5680, + serialized_end=5816, +) + +_AUTHENTICATOR_RESPONSE_FIND = _descriptor.Descriptor( + name='Find', + full_name='MurmurRPC.Authenticator.Response.Find', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.Authenticator.Response.Find.user', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5818, + serialized_end=5863, +) + +_AUTHENTICATOR_RESPONSE_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.Authenticator.Response.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='users', full_name='MurmurRPC.Authenticator.Response.Query.users', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5865, + serialized_end=5912, +) + +_AUTHENTICATOR_RESPONSE_REGISTER = _descriptor.Descriptor( + name='Register', + full_name='MurmurRPC.Authenticator.Response.Register', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='status', full_name='MurmurRPC.Authenticator.Response.Register.status', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.Authenticator.Response.Register.user', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5914, + serialized_end=6021, +) + +_AUTHENTICATOR_RESPONSE_DEREGISTER = _descriptor.Descriptor( + name='Deregister', + full_name='MurmurRPC.Authenticator.Response.Deregister', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='status', full_name='MurmurRPC.Authenticator.Response.Deregister.status', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6023, + serialized_end=6093, +) + +_AUTHENTICATOR_RESPONSE_UPDATE = _descriptor.Descriptor( + name='Update', + full_name='MurmurRPC.Authenticator.Response.Update', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='status', full_name='MurmurRPC.Authenticator.Response.Update.status', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6095, + serialized_end=6161, +) + +_AUTHENTICATOR_RESPONSE = _descriptor.Descriptor( + name='Response', + full_name='MurmurRPC.Authenticator.Response', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='initialize', full_name='MurmurRPC.Authenticator.Response.initialize', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='authenticate', full_name='MurmurRPC.Authenticator.Response.authenticate', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='find', full_name='MurmurRPC.Authenticator.Response.find', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='query', full_name='MurmurRPC.Authenticator.Response.query', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='register', full_name='MurmurRPC.Authenticator.Response.register', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='deregister', full_name='MurmurRPC.Authenticator.Response.deregister', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='update', full_name='MurmurRPC.Authenticator.Response.update', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_AUTHENTICATOR_RESPONSE_INITIALIZE, _AUTHENTICATOR_RESPONSE_AUTHENTICATE, _AUTHENTICATOR_RESPONSE_FIND, _AUTHENTICATOR_RESPONSE_QUERY, _AUTHENTICATOR_RESPONSE_REGISTER, _AUTHENTICATOR_RESPONSE_DEREGISTER, _AUTHENTICATOR_RESPONSE_UPDATE, ], + enum_types=[ + _AUTHENTICATOR_RESPONSE_STATUS, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5186, + serialized_end=6236, +) + +_AUTHENTICATOR = _descriptor.Descriptor( + name='Authenticator', + full_name='MurmurRPC.Authenticator', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[_AUTHENTICATOR_REQUEST, _AUTHENTICATOR_RESPONSE, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4460, + serialized_end=6236, +) + + +_DATABASEUSER_QUERY = _descriptor.Descriptor( + name='Query', + full_name='MurmurRPC.DatabaseUser.Query', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.DatabaseUser.Query.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='filter', full_name='MurmurRPC.DatabaseUser.Query.filter', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6418, + serialized_end=6476, +) + +_DATABASEUSER_LIST = _descriptor.Descriptor( + name='List', + full_name='MurmurRPC.DatabaseUser.List', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.DatabaseUser.List.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='users', full_name='MurmurRPC.DatabaseUser.List.users', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6478, + serialized_end=6559, +) + +_DATABASEUSER_VERIFY = _descriptor.Descriptor( + name='Verify', + full_name='MurmurRPC.DatabaseUser.Verify', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.DatabaseUser.Verify.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.DatabaseUser.Verify.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='password', full_name='MurmurRPC.DatabaseUser.Verify.password', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6561, + serialized_end=6636, +) + +_DATABASEUSER = _descriptor.Descriptor( + name='DatabaseUser', + full_name='MurmurRPC.DatabaseUser', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.DatabaseUser.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='MurmurRPC.DatabaseUser.id', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='MurmurRPC.DatabaseUser.name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='email', full_name='MurmurRPC.DatabaseUser.email', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comment', full_name='MurmurRPC.DatabaseUser.comment', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hash', full_name='MurmurRPC.DatabaseUser.hash', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='password', full_name='MurmurRPC.DatabaseUser.password', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='last_active', full_name='MurmurRPC.DatabaseUser.last_active', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='texture', full_name='MurmurRPC.DatabaseUser.texture', index=8, + number=9, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[_DATABASEUSER_QUERY, _DATABASEUSER_LIST, _DATABASEUSER_VERIFY, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6239, + serialized_end=6636, +) + + +_REDIRECTWHISPERGROUP = _descriptor.Descriptor( + name='RedirectWhisperGroup', + full_name='MurmurRPC.RedirectWhisperGroup', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='server', full_name='MurmurRPC.RedirectWhisperGroup.server', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='MurmurRPC.RedirectWhisperGroup.user', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='source', full_name='MurmurRPC.RedirectWhisperGroup.source', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='target', full_name='MurmurRPC.RedirectWhisperGroup.target', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6639, + serialized_end=6803, +) + +_SERVER_EVENT.fields_by_name['server'].message_type = _SERVER +_SERVER_EVENT.fields_by_name['type'].enum_type = _SERVER_EVENT_TYPE +_SERVER_EVENT.fields_by_name['user'].message_type = _USER +_SERVER_EVENT.fields_by_name['message'].message_type = _TEXTMESSAGE +_SERVER_EVENT.fields_by_name['channel'].message_type = _CHANNEL +_SERVER_EVENT.containing_type = _SERVER +_SERVER_EVENT_TYPE.containing_type = _SERVER_EVENT +_SERVER_QUERY.containing_type = _SERVER +_SERVER_LIST.fields_by_name['servers'].message_type = _SERVER +_SERVER_LIST.containing_type = _SERVER +_SERVER.fields_by_name['uptime'].message_type = _UPTIME +_EVENT.fields_by_name['server'].message_type = _SERVER +_EVENT.fields_by_name['type'].enum_type = _EVENT_TYPE +_EVENT_TYPE.containing_type = _EVENT +_CONTEXTACTION.fields_by_name['server'].message_type = _SERVER +_CONTEXTACTION.fields_by_name['actor'].message_type = _USER +_CONTEXTACTION.fields_by_name['user'].message_type = _USER +_CONTEXTACTION.fields_by_name['channel'].message_type = _CHANNEL +_CONTEXTACTION_CONTEXT.containing_type = _CONTEXTACTION +_TEXTMESSAGE_FILTER.fields_by_name['server'].message_type = _SERVER +_TEXTMESSAGE_FILTER.fields_by_name['action'].enum_type = _TEXTMESSAGE_FILTER_ACTION +_TEXTMESSAGE_FILTER.fields_by_name['message'].message_type = _TEXTMESSAGE +_TEXTMESSAGE_FILTER.containing_type = _TEXTMESSAGE +_TEXTMESSAGE_FILTER_ACTION.containing_type = _TEXTMESSAGE_FILTER +_TEXTMESSAGE.fields_by_name['server'].message_type = _SERVER +_TEXTMESSAGE.fields_by_name['actor'].message_type = _USER +_TEXTMESSAGE.fields_by_name['users'].message_type = _USER +_TEXTMESSAGE.fields_by_name['channels'].message_type = _CHANNEL +_TEXTMESSAGE.fields_by_name['trees'].message_type = _CHANNEL +_LOG_QUERY.fields_by_name['server'].message_type = _SERVER +_LOG_QUERY.containing_type = _LOG +_LOG_LIST.fields_by_name['server'].message_type = _SERVER +_LOG_LIST.fields_by_name['entries'].message_type = _LOG +_LOG_LIST.containing_type = _LOG +_LOG.fields_by_name['server'].message_type = _SERVER +_CONFIG_FIELDSENTRY.containing_type = _CONFIG +_CONFIG_FIELD.fields_by_name['server'].message_type = _SERVER +_CONFIG_FIELD.containing_type = _CONFIG +_CONFIG.fields_by_name['server'].message_type = _SERVER +_CONFIG.fields_by_name['fields'].message_type = _CONFIG_FIELDSENTRY +_CHANNEL_QUERY.fields_by_name['server'].message_type = _SERVER +_CHANNEL_QUERY.containing_type = _CHANNEL +_CHANNEL_LIST.fields_by_name['server'].message_type = _SERVER +_CHANNEL_LIST.fields_by_name['channels'].message_type = _CHANNEL +_CHANNEL_LIST.containing_type = _CHANNEL +_CHANNEL.fields_by_name['server'].message_type = _SERVER +_CHANNEL.fields_by_name['parent'].message_type = _CHANNEL +_CHANNEL.fields_by_name['links'].message_type = _CHANNEL +_USER_QUERY.fields_by_name['server'].message_type = _SERVER +_USER_QUERY.containing_type = _USER +_USER_LIST.fields_by_name['server'].message_type = _SERVER +_USER_LIST.fields_by_name['users'].message_type = _USER +_USER_LIST.containing_type = _USER +_USER_KICK.fields_by_name['server'].message_type = _SERVER +_USER_KICK.fields_by_name['user'].message_type = _USER +_USER_KICK.fields_by_name['actor'].message_type = _USER +_USER_KICK.containing_type = _USER +_USER.fields_by_name['server'].message_type = _SERVER +_USER.fields_by_name['channel'].message_type = _CHANNEL +_USER.fields_by_name['version'].message_type = _VERSION +_TREE_QUERY.fields_by_name['server'].message_type = _SERVER +_TREE_QUERY.containing_type = _TREE +_TREE.fields_by_name['server'].message_type = _SERVER +_TREE.fields_by_name['channel'].message_type = _CHANNEL +_TREE.fields_by_name['children'].message_type = _TREE +_TREE.fields_by_name['users'].message_type = _USER +_BAN_QUERY.fields_by_name['server'].message_type = _SERVER +_BAN_QUERY.containing_type = _BAN +_BAN_LIST.fields_by_name['server'].message_type = _SERVER +_BAN_LIST.fields_by_name['bans'].message_type = _BAN +_BAN_LIST.containing_type = _BAN +_BAN.fields_by_name['server'].message_type = _SERVER +_ACL_GROUP.fields_by_name['users_add'].message_type = _DATABASEUSER +_ACL_GROUP.fields_by_name['users_remove'].message_type = _DATABASEUSER +_ACL_GROUP.fields_by_name['users'].message_type = _DATABASEUSER +_ACL_GROUP.containing_type = _ACL +_ACL_QUERY.fields_by_name['server'].message_type = _SERVER +_ACL_QUERY.fields_by_name['user'].message_type = _USER +_ACL_QUERY.fields_by_name['channel'].message_type = _CHANNEL +_ACL_QUERY.containing_type = _ACL +_ACL_LIST.fields_by_name['server'].message_type = _SERVER +_ACL_LIST.fields_by_name['channel'].message_type = _CHANNEL +_ACL_LIST.fields_by_name['acls'].message_type = _ACL +_ACL_LIST.fields_by_name['groups'].message_type = _ACL_GROUP +_ACL_LIST.containing_type = _ACL +_ACL_TEMPORARYGROUP.fields_by_name['server'].message_type = _SERVER +_ACL_TEMPORARYGROUP.fields_by_name['channel'].message_type = _CHANNEL +_ACL_TEMPORARYGROUP.fields_by_name['user'].message_type = _USER +_ACL_TEMPORARYGROUP.containing_type = _ACL +_ACL.fields_by_name['user'].message_type = _DATABASEUSER +_ACL.fields_by_name['group'].message_type = _ACL_GROUP +_ACL_PERMISSION.containing_type = _ACL +_AUTHENTICATOR_REQUEST_AUTHENTICATE.containing_type = _AUTHENTICATOR_REQUEST +_AUTHENTICATOR_REQUEST_FIND.containing_type = _AUTHENTICATOR_REQUEST +_AUTHENTICATOR_REQUEST_QUERY.containing_type = _AUTHENTICATOR_REQUEST +_AUTHENTICATOR_REQUEST_REGISTER.fields_by_name['user'].message_type = _DATABASEUSER +_AUTHENTICATOR_REQUEST_REGISTER.containing_type = _AUTHENTICATOR_REQUEST +_AUTHENTICATOR_REQUEST_DEREGISTER.fields_by_name['user'].message_type = _DATABASEUSER +_AUTHENTICATOR_REQUEST_DEREGISTER.containing_type = _AUTHENTICATOR_REQUEST +_AUTHENTICATOR_REQUEST_UPDATE.fields_by_name['user'].message_type = _DATABASEUSER +_AUTHENTICATOR_REQUEST_UPDATE.containing_type = _AUTHENTICATOR_REQUEST +_AUTHENTICATOR_REQUEST.fields_by_name['authenticate'].message_type = _AUTHENTICATOR_REQUEST_AUTHENTICATE +_AUTHENTICATOR_REQUEST.fields_by_name['find'].message_type = _AUTHENTICATOR_REQUEST_FIND +_AUTHENTICATOR_REQUEST.fields_by_name['query'].message_type = _AUTHENTICATOR_REQUEST_QUERY +_AUTHENTICATOR_REQUEST.fields_by_name['register'].message_type = _AUTHENTICATOR_REQUEST_REGISTER +_AUTHENTICATOR_REQUEST.fields_by_name['deregister'].message_type = _AUTHENTICATOR_REQUEST_DEREGISTER +_AUTHENTICATOR_REQUEST.fields_by_name['update'].message_type = _AUTHENTICATOR_REQUEST_UPDATE +_AUTHENTICATOR_REQUEST.containing_type = _AUTHENTICATOR +_AUTHENTICATOR_RESPONSE_INITIALIZE.fields_by_name['server'].message_type = _SERVER +_AUTHENTICATOR_RESPONSE_INITIALIZE.containing_type = _AUTHENTICATOR_RESPONSE +_AUTHENTICATOR_RESPONSE_AUTHENTICATE.fields_by_name['status'].enum_type = _AUTHENTICATOR_RESPONSE_STATUS +_AUTHENTICATOR_RESPONSE_AUTHENTICATE.fields_by_name['groups'].message_type = _ACL_GROUP +_AUTHENTICATOR_RESPONSE_AUTHENTICATE.containing_type = _AUTHENTICATOR_RESPONSE +_AUTHENTICATOR_RESPONSE_FIND.fields_by_name['user'].message_type = _DATABASEUSER +_AUTHENTICATOR_RESPONSE_FIND.containing_type = _AUTHENTICATOR_RESPONSE +_AUTHENTICATOR_RESPONSE_QUERY.fields_by_name['users'].message_type = _DATABASEUSER +_AUTHENTICATOR_RESPONSE_QUERY.containing_type = _AUTHENTICATOR_RESPONSE +_AUTHENTICATOR_RESPONSE_REGISTER.fields_by_name['status'].enum_type = _AUTHENTICATOR_RESPONSE_STATUS +_AUTHENTICATOR_RESPONSE_REGISTER.fields_by_name['user'].message_type = _DATABASEUSER +_AUTHENTICATOR_RESPONSE_REGISTER.containing_type = _AUTHENTICATOR_RESPONSE +_AUTHENTICATOR_RESPONSE_DEREGISTER.fields_by_name['status'].enum_type = _AUTHENTICATOR_RESPONSE_STATUS +_AUTHENTICATOR_RESPONSE_DEREGISTER.containing_type = _AUTHENTICATOR_RESPONSE +_AUTHENTICATOR_RESPONSE_UPDATE.fields_by_name['status'].enum_type = _AUTHENTICATOR_RESPONSE_STATUS +_AUTHENTICATOR_RESPONSE_UPDATE.containing_type = _AUTHENTICATOR_RESPONSE +_AUTHENTICATOR_RESPONSE.fields_by_name['initialize'].message_type = _AUTHENTICATOR_RESPONSE_INITIALIZE +_AUTHENTICATOR_RESPONSE.fields_by_name['authenticate'].message_type = _AUTHENTICATOR_RESPONSE_AUTHENTICATE +_AUTHENTICATOR_RESPONSE.fields_by_name['find'].message_type = _AUTHENTICATOR_RESPONSE_FIND +_AUTHENTICATOR_RESPONSE.fields_by_name['query'].message_type = _AUTHENTICATOR_RESPONSE_QUERY +_AUTHENTICATOR_RESPONSE.fields_by_name['register'].message_type = _AUTHENTICATOR_RESPONSE_REGISTER +_AUTHENTICATOR_RESPONSE.fields_by_name['deregister'].message_type = _AUTHENTICATOR_RESPONSE_DEREGISTER +_AUTHENTICATOR_RESPONSE.fields_by_name['update'].message_type = _AUTHENTICATOR_RESPONSE_UPDATE +_AUTHENTICATOR_RESPONSE.containing_type = _AUTHENTICATOR +_AUTHENTICATOR_RESPONSE_STATUS.containing_type = _AUTHENTICATOR_RESPONSE +_DATABASEUSER_QUERY.fields_by_name['server'].message_type = _SERVER +_DATABASEUSER_QUERY.containing_type = _DATABASEUSER +_DATABASEUSER_LIST.fields_by_name['server'].message_type = _SERVER +_DATABASEUSER_LIST.fields_by_name['users'].message_type = _DATABASEUSER +_DATABASEUSER_LIST.containing_type = _DATABASEUSER +_DATABASEUSER_VERIFY.fields_by_name['server'].message_type = _SERVER +_DATABASEUSER_VERIFY.containing_type = _DATABASEUSER +_DATABASEUSER.fields_by_name['server'].message_type = _SERVER +_REDIRECTWHISPERGROUP.fields_by_name['server'].message_type = _SERVER +_REDIRECTWHISPERGROUP.fields_by_name['user'].message_type = _USER +_REDIRECTWHISPERGROUP.fields_by_name['source'].message_type = _ACL_GROUP +_REDIRECTWHISPERGROUP.fields_by_name['target'].message_type = _ACL_GROUP +DESCRIPTOR.message_types_by_name['Void'] = _VOID +DESCRIPTOR.message_types_by_name['Version'] = _VERSION +DESCRIPTOR.message_types_by_name['Uptime'] = _UPTIME +DESCRIPTOR.message_types_by_name['Server'] = _SERVER +DESCRIPTOR.message_types_by_name['Event'] = _EVENT +DESCRIPTOR.message_types_by_name['ContextAction'] = _CONTEXTACTION +DESCRIPTOR.message_types_by_name['TextMessage'] = _TEXTMESSAGE +DESCRIPTOR.message_types_by_name['Log'] = _LOG +DESCRIPTOR.message_types_by_name['Config'] = _CONFIG +DESCRIPTOR.message_types_by_name['Channel'] = _CHANNEL +DESCRIPTOR.message_types_by_name['User'] = _USER +DESCRIPTOR.message_types_by_name['Tree'] = _TREE +DESCRIPTOR.message_types_by_name['Ban'] = _BAN +DESCRIPTOR.message_types_by_name['ACL'] = _ACL +DESCRIPTOR.message_types_by_name['Authenticator'] = _AUTHENTICATOR +DESCRIPTOR.message_types_by_name['DatabaseUser'] = _DATABASEUSER +DESCRIPTOR.message_types_by_name['RedirectWhisperGroup'] = _REDIRECTWHISPERGROUP +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Void = _reflection.GeneratedProtocolMessageType('Void', (_message.Message,), dict( + DESCRIPTOR = _VOID, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Void) + )) +_sym_db.RegisterMessage(Void) + +Version = _reflection.GeneratedProtocolMessageType('Version', (_message.Message,), dict( + DESCRIPTOR = _VERSION, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Version) + )) +_sym_db.RegisterMessage(Version) + +Uptime = _reflection.GeneratedProtocolMessageType('Uptime', (_message.Message,), dict( + DESCRIPTOR = _UPTIME, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Uptime) + )) +_sym_db.RegisterMessage(Uptime) + +Server = _reflection.GeneratedProtocolMessageType('Server', (_message.Message,), dict( + + Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), dict( + DESCRIPTOR = _SERVER_EVENT, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Server.Event) + )) + , + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _SERVER_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Server.Query) + )) + , + + List = _reflection.GeneratedProtocolMessageType('List', (_message.Message,), dict( + DESCRIPTOR = _SERVER_LIST, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Server.List) + )) + , + DESCRIPTOR = _SERVER, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Server) + )) +_sym_db.RegisterMessage(Server) +_sym_db.RegisterMessage(Server.Event) +_sym_db.RegisterMessage(Server.Query) +_sym_db.RegisterMessage(Server.List) + +Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), dict( + DESCRIPTOR = _EVENT, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Event) + )) +_sym_db.RegisterMessage(Event) + +ContextAction = _reflection.GeneratedProtocolMessageType('ContextAction', (_message.Message,), dict( + DESCRIPTOR = _CONTEXTACTION, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.ContextAction) + )) +_sym_db.RegisterMessage(ContextAction) + +TextMessage = _reflection.GeneratedProtocolMessageType('TextMessage', (_message.Message,), dict( + + Filter = _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), dict( + DESCRIPTOR = _TEXTMESSAGE_FILTER, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.TextMessage.Filter) + )) + , + DESCRIPTOR = _TEXTMESSAGE, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.TextMessage) + )) +_sym_db.RegisterMessage(TextMessage) +_sym_db.RegisterMessage(TextMessage.Filter) + +Log = _reflection.GeneratedProtocolMessageType('Log', (_message.Message,), dict( + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _LOG_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Log.Query) + )) + , + + List = _reflection.GeneratedProtocolMessageType('List', (_message.Message,), dict( + DESCRIPTOR = _LOG_LIST, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Log.List) + )) + , + DESCRIPTOR = _LOG, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Log) + )) +_sym_db.RegisterMessage(Log) +_sym_db.RegisterMessage(Log.Query) +_sym_db.RegisterMessage(Log.List) + +Config = _reflection.GeneratedProtocolMessageType('Config', (_message.Message,), dict( + + FieldsEntry = _reflection.GeneratedProtocolMessageType('FieldsEntry', (_message.Message,), dict( + DESCRIPTOR = _CONFIG_FIELDSENTRY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Config.FieldsEntry) + )) + , + + Field = _reflection.GeneratedProtocolMessageType('Field', (_message.Message,), dict( + DESCRIPTOR = _CONFIG_FIELD, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Config.Field) + )) + , + DESCRIPTOR = _CONFIG, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Config) + )) +_sym_db.RegisterMessage(Config) +_sym_db.RegisterMessage(Config.FieldsEntry) +_sym_db.RegisterMessage(Config.Field) + +Channel = _reflection.GeneratedProtocolMessageType('Channel', (_message.Message,), dict( + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _CHANNEL_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Channel.Query) + )) + , + + List = _reflection.GeneratedProtocolMessageType('List', (_message.Message,), dict( + DESCRIPTOR = _CHANNEL_LIST, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Channel.List) + )) + , + DESCRIPTOR = _CHANNEL, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Channel) + )) +_sym_db.RegisterMessage(Channel) +_sym_db.RegisterMessage(Channel.Query) +_sym_db.RegisterMessage(Channel.List) + +User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), dict( + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _USER_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.User.Query) + )) + , + + List = _reflection.GeneratedProtocolMessageType('List', (_message.Message,), dict( + DESCRIPTOR = _USER_LIST, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.User.List) + )) + , + + Kick = _reflection.GeneratedProtocolMessageType('Kick', (_message.Message,), dict( + DESCRIPTOR = _USER_KICK, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.User.Kick) + )) + , + DESCRIPTOR = _USER, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.User) + )) +_sym_db.RegisterMessage(User) +_sym_db.RegisterMessage(User.Query) +_sym_db.RegisterMessage(User.List) +_sym_db.RegisterMessage(User.Kick) + +Tree = _reflection.GeneratedProtocolMessageType('Tree', (_message.Message,), dict( + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _TREE_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Tree.Query) + )) + , + DESCRIPTOR = _TREE, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Tree) + )) +_sym_db.RegisterMessage(Tree) +_sym_db.RegisterMessage(Tree.Query) + +Ban = _reflection.GeneratedProtocolMessageType('Ban', (_message.Message,), dict( + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _BAN_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Ban.Query) + )) + , + + List = _reflection.GeneratedProtocolMessageType('List', (_message.Message,), dict( + DESCRIPTOR = _BAN_LIST, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Ban.List) + )) + , + DESCRIPTOR = _BAN, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Ban) + )) +_sym_db.RegisterMessage(Ban) +_sym_db.RegisterMessage(Ban.Query) +_sym_db.RegisterMessage(Ban.List) + +ACL = _reflection.GeneratedProtocolMessageType('ACL', (_message.Message,), dict( + + Group = _reflection.GeneratedProtocolMessageType('Group', (_message.Message,), dict( + DESCRIPTOR = _ACL_GROUP, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.ACL.Group) + )) + , + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _ACL_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.ACL.Query) + )) + , + + List = _reflection.GeneratedProtocolMessageType('List', (_message.Message,), dict( + DESCRIPTOR = _ACL_LIST, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.ACL.List) + )) + , + + TemporaryGroup = _reflection.GeneratedProtocolMessageType('TemporaryGroup', (_message.Message,), dict( + DESCRIPTOR = _ACL_TEMPORARYGROUP, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.ACL.TemporaryGroup) + )) + , + DESCRIPTOR = _ACL, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.ACL) + )) +_sym_db.RegisterMessage(ACL) +_sym_db.RegisterMessage(ACL.Group) +_sym_db.RegisterMessage(ACL.Query) +_sym_db.RegisterMessage(ACL.List) +_sym_db.RegisterMessage(ACL.TemporaryGroup) + +Authenticator = _reflection.GeneratedProtocolMessageType('Authenticator', (_message.Message,), dict( + + Request = _reflection.GeneratedProtocolMessageType('Request', (_message.Message,), dict( + + Authenticate = _reflection.GeneratedProtocolMessageType('Authenticate', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_REQUEST_AUTHENTICATE, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Request.Authenticate) + )) + , + + Find = _reflection.GeneratedProtocolMessageType('Find', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_REQUEST_FIND, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Request.Find) + )) + , + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_REQUEST_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Request.Query) + )) + , + + Register = _reflection.GeneratedProtocolMessageType('Register', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_REQUEST_REGISTER, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Request.Register) + )) + , + + Deregister = _reflection.GeneratedProtocolMessageType('Deregister', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_REQUEST_DEREGISTER, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Request.Deregister) + )) + , + + Update = _reflection.GeneratedProtocolMessageType('Update', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_REQUEST_UPDATE, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Request.Update) + )) + , + DESCRIPTOR = _AUTHENTICATOR_REQUEST, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Request) + )) + , + + Response = _reflection.GeneratedProtocolMessageType('Response', (_message.Message,), dict( + + Initialize = _reflection.GeneratedProtocolMessageType('Initialize', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_RESPONSE_INITIALIZE, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Response.Initialize) + )) + , + + Authenticate = _reflection.GeneratedProtocolMessageType('Authenticate', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_RESPONSE_AUTHENTICATE, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Response.Authenticate) + )) + , + + Find = _reflection.GeneratedProtocolMessageType('Find', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_RESPONSE_FIND, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Response.Find) + )) + , + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_RESPONSE_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Response.Query) + )) + , + + Register = _reflection.GeneratedProtocolMessageType('Register', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_RESPONSE_REGISTER, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Response.Register) + )) + , + + Deregister = _reflection.GeneratedProtocolMessageType('Deregister', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_RESPONSE_DEREGISTER, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Response.Deregister) + )) + , + + Update = _reflection.GeneratedProtocolMessageType('Update', (_message.Message,), dict( + DESCRIPTOR = _AUTHENTICATOR_RESPONSE_UPDATE, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Response.Update) + )) + , + DESCRIPTOR = _AUTHENTICATOR_RESPONSE, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator.Response) + )) + , + DESCRIPTOR = _AUTHENTICATOR, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.Authenticator) + )) +_sym_db.RegisterMessage(Authenticator) +_sym_db.RegisterMessage(Authenticator.Request) +_sym_db.RegisterMessage(Authenticator.Request.Authenticate) +_sym_db.RegisterMessage(Authenticator.Request.Find) +_sym_db.RegisterMessage(Authenticator.Request.Query) +_sym_db.RegisterMessage(Authenticator.Request.Register) +_sym_db.RegisterMessage(Authenticator.Request.Deregister) +_sym_db.RegisterMessage(Authenticator.Request.Update) +_sym_db.RegisterMessage(Authenticator.Response) +_sym_db.RegisterMessage(Authenticator.Response.Initialize) +_sym_db.RegisterMessage(Authenticator.Response.Authenticate) +_sym_db.RegisterMessage(Authenticator.Response.Find) +_sym_db.RegisterMessage(Authenticator.Response.Query) +_sym_db.RegisterMessage(Authenticator.Response.Register) +_sym_db.RegisterMessage(Authenticator.Response.Deregister) +_sym_db.RegisterMessage(Authenticator.Response.Update) + +DatabaseUser = _reflection.GeneratedProtocolMessageType('DatabaseUser', (_message.Message,), dict( + + Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), dict( + DESCRIPTOR = _DATABASEUSER_QUERY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.DatabaseUser.Query) + )) + , + + List = _reflection.GeneratedProtocolMessageType('List', (_message.Message,), dict( + DESCRIPTOR = _DATABASEUSER_LIST, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.DatabaseUser.List) + )) + , + + Verify = _reflection.GeneratedProtocolMessageType('Verify', (_message.Message,), dict( + DESCRIPTOR = _DATABASEUSER_VERIFY, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.DatabaseUser.Verify) + )) + , + DESCRIPTOR = _DATABASEUSER, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.DatabaseUser) + )) +_sym_db.RegisterMessage(DatabaseUser) +_sym_db.RegisterMessage(DatabaseUser.Query) +_sym_db.RegisterMessage(DatabaseUser.List) +_sym_db.RegisterMessage(DatabaseUser.Verify) + +RedirectWhisperGroup = _reflection.GeneratedProtocolMessageType('RedirectWhisperGroup', (_message.Message,), dict( + DESCRIPTOR = _REDIRECTWHISPERGROUP, + __module__ = 'MurmurRPC_pb2' + # @@protoc_insertion_point(class_scope:MurmurRPC.RedirectWhisperGroup) + )) +_sym_db.RegisterMessage(RedirectWhisperGroup) + + +_CONFIG_FIELDSENTRY.has_options = True +_CONFIG_FIELDSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')) + +_V1 = _descriptor.ServiceDescriptor( + name='V1', + full_name='MurmurRPC.V1', + file=DESCRIPTOR, + index=0, + options=None, + serialized_start=6806, + serialized_end=9629, + methods=[ + _descriptor.MethodDescriptor( + name='GetUptime', + full_name='MurmurRPC.V1.GetUptime', + index=0, + containing_service=None, + input_type=_VOID, + output_type=_UPTIME, + options=None, + ), + _descriptor.MethodDescriptor( + name='GetVersion', + full_name='MurmurRPC.V1.GetVersion', + index=1, + containing_service=None, + input_type=_VOID, + output_type=_VERSION, + options=None, + ), + _descriptor.MethodDescriptor( + name='Events', + full_name='MurmurRPC.V1.Events', + index=2, + containing_service=None, + input_type=_VOID, + output_type=_EVENT, + options=None, + ), + _descriptor.MethodDescriptor( + name='ServerCreate', + full_name='MurmurRPC.V1.ServerCreate', + index=3, + containing_service=None, + input_type=_VOID, + output_type=_SERVER, + options=None, + ), + _descriptor.MethodDescriptor( + name='ServerQuery', + full_name='MurmurRPC.V1.ServerQuery', + index=4, + containing_service=None, + input_type=_SERVER_QUERY, + output_type=_SERVER_LIST, + options=None, + ), + _descriptor.MethodDescriptor( + name='ServerGet', + full_name='MurmurRPC.V1.ServerGet', + index=5, + containing_service=None, + input_type=_SERVER, + output_type=_SERVER, + options=None, + ), + _descriptor.MethodDescriptor( + name='ServerStart', + full_name='MurmurRPC.V1.ServerStart', + index=6, + containing_service=None, + input_type=_SERVER, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ServerStop', + full_name='MurmurRPC.V1.ServerStop', + index=7, + containing_service=None, + input_type=_SERVER, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ServerRemove', + full_name='MurmurRPC.V1.ServerRemove', + index=8, + containing_service=None, + input_type=_SERVER, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ServerEvents', + full_name='MurmurRPC.V1.ServerEvents', + index=9, + containing_service=None, + input_type=_SERVER, + output_type=_SERVER_EVENT, + options=None, + ), + _descriptor.MethodDescriptor( + name='ContextActionAdd', + full_name='MurmurRPC.V1.ContextActionAdd', + index=10, + containing_service=None, + input_type=_CONTEXTACTION, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ContextActionRemove', + full_name='MurmurRPC.V1.ContextActionRemove', + index=11, + containing_service=None, + input_type=_CONTEXTACTION, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ContextActionEvents', + full_name='MurmurRPC.V1.ContextActionEvents', + index=12, + containing_service=None, + input_type=_CONTEXTACTION, + output_type=_CONTEXTACTION, + options=None, + ), + _descriptor.MethodDescriptor( + name='TextMessageSend', + full_name='MurmurRPC.V1.TextMessageSend', + index=13, + containing_service=None, + input_type=_TEXTMESSAGE, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='TextMessageFilter', + full_name='MurmurRPC.V1.TextMessageFilter', + index=14, + containing_service=None, + input_type=_TEXTMESSAGE_FILTER, + output_type=_TEXTMESSAGE_FILTER, + options=None, + ), + _descriptor.MethodDescriptor( + name='LogQuery', + full_name='MurmurRPC.V1.LogQuery', + index=15, + containing_service=None, + input_type=_LOG_QUERY, + output_type=_LOG_LIST, + options=None, + ), + _descriptor.MethodDescriptor( + name='ConfigGet', + full_name='MurmurRPC.V1.ConfigGet', + index=16, + containing_service=None, + input_type=_SERVER, + output_type=_CONFIG, + options=None, + ), + _descriptor.MethodDescriptor( + name='ConfigGetField', + full_name='MurmurRPC.V1.ConfigGetField', + index=17, + containing_service=None, + input_type=_CONFIG_FIELD, + output_type=_CONFIG_FIELD, + options=None, + ), + _descriptor.MethodDescriptor( + name='ConfigSetField', + full_name='MurmurRPC.V1.ConfigSetField', + index=18, + containing_service=None, + input_type=_CONFIG_FIELD, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ConfigGetDefault', + full_name='MurmurRPC.V1.ConfigGetDefault', + index=19, + containing_service=None, + input_type=_VOID, + output_type=_CONFIG, + options=None, + ), + _descriptor.MethodDescriptor( + name='ChannelQuery', + full_name='MurmurRPC.V1.ChannelQuery', + index=20, + containing_service=None, + input_type=_CHANNEL_QUERY, + output_type=_CHANNEL_LIST, + options=None, + ), + _descriptor.MethodDescriptor( + name='ChannelGet', + full_name='MurmurRPC.V1.ChannelGet', + index=21, + containing_service=None, + input_type=_CHANNEL, + output_type=_CHANNEL, + options=None, + ), + _descriptor.MethodDescriptor( + name='ChannelAdd', + full_name='MurmurRPC.V1.ChannelAdd', + index=22, + containing_service=None, + input_type=_CHANNEL, + output_type=_CHANNEL, + options=None, + ), + _descriptor.MethodDescriptor( + name='ChannelRemove', + full_name='MurmurRPC.V1.ChannelRemove', + index=23, + containing_service=None, + input_type=_CHANNEL, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ChannelUpdate', + full_name='MurmurRPC.V1.ChannelUpdate', + index=24, + containing_service=None, + input_type=_CHANNEL, + output_type=_CHANNEL, + options=None, + ), + _descriptor.MethodDescriptor( + name='UserQuery', + full_name='MurmurRPC.V1.UserQuery', + index=25, + containing_service=None, + input_type=_USER_QUERY, + output_type=_USER_LIST, + options=None, + ), + _descriptor.MethodDescriptor( + name='UserGet', + full_name='MurmurRPC.V1.UserGet', + index=26, + containing_service=None, + input_type=_USER, + output_type=_USER, + options=None, + ), + _descriptor.MethodDescriptor( + name='UserUpdate', + full_name='MurmurRPC.V1.UserUpdate', + index=27, + containing_service=None, + input_type=_USER, + output_type=_USER, + options=None, + ), + _descriptor.MethodDescriptor( + name='UserKick', + full_name='MurmurRPC.V1.UserKick', + index=28, + containing_service=None, + input_type=_USER_KICK, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='TreeQuery', + full_name='MurmurRPC.V1.TreeQuery', + index=29, + containing_service=None, + input_type=_TREE_QUERY, + output_type=_TREE, + options=None, + ), + _descriptor.MethodDescriptor( + name='BansGet', + full_name='MurmurRPC.V1.BansGet', + index=30, + containing_service=None, + input_type=_BAN_QUERY, + output_type=_BAN_LIST, + options=None, + ), + _descriptor.MethodDescriptor( + name='BansSet', + full_name='MurmurRPC.V1.BansSet', + index=31, + containing_service=None, + input_type=_BAN_LIST, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ACLGet', + full_name='MurmurRPC.V1.ACLGet', + index=32, + containing_service=None, + input_type=_CHANNEL, + output_type=_ACL_LIST, + options=None, + ), + _descriptor.MethodDescriptor( + name='ACLSet', + full_name='MurmurRPC.V1.ACLSet', + index=33, + containing_service=None, + input_type=_ACL_LIST, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ACLGetEffectivePermissions', + full_name='MurmurRPC.V1.ACLGetEffectivePermissions', + index=34, + containing_service=None, + input_type=_ACL_QUERY, + output_type=_ACL, + options=None, + ), + _descriptor.MethodDescriptor( + name='ACLAddTemporaryGroup', + full_name='MurmurRPC.V1.ACLAddTemporaryGroup', + index=35, + containing_service=None, + input_type=_ACL_TEMPORARYGROUP, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='ACLRemoveTemporaryGroup', + full_name='MurmurRPC.V1.ACLRemoveTemporaryGroup', + index=36, + containing_service=None, + input_type=_ACL_TEMPORARYGROUP, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='AuthenticatorStream', + full_name='MurmurRPC.V1.AuthenticatorStream', + index=37, + containing_service=None, + input_type=_AUTHENTICATOR_RESPONSE, + output_type=_AUTHENTICATOR_REQUEST, + options=None, + ), + _descriptor.MethodDescriptor( + name='DatabaseUserQuery', + full_name='MurmurRPC.V1.DatabaseUserQuery', + index=38, + containing_service=None, + input_type=_DATABASEUSER_QUERY, + output_type=_DATABASEUSER_LIST, + options=None, + ), + _descriptor.MethodDescriptor( + name='DatabaseUserGet', + full_name='MurmurRPC.V1.DatabaseUserGet', + index=39, + containing_service=None, + input_type=_DATABASEUSER, + output_type=_DATABASEUSER, + options=None, + ), + _descriptor.MethodDescriptor( + name='DatabaseUserUpdate', + full_name='MurmurRPC.V1.DatabaseUserUpdate', + index=40, + containing_service=None, + input_type=_DATABASEUSER, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='DatabaseUserRegister', + full_name='MurmurRPC.V1.DatabaseUserRegister', + index=41, + containing_service=None, + input_type=_DATABASEUSER, + output_type=_DATABASEUSER, + options=None, + ), + _descriptor.MethodDescriptor( + name='DatabaseUserDeregister', + full_name='MurmurRPC.V1.DatabaseUserDeregister', + index=42, + containing_service=None, + input_type=_DATABASEUSER, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='DatabaseUserVerify', + full_name='MurmurRPC.V1.DatabaseUserVerify', + index=43, + containing_service=None, + input_type=_DATABASEUSER_VERIFY, + output_type=_DATABASEUSER, + options=None, + ), + _descriptor.MethodDescriptor( + name='RedirectWhisperGroupAdd', + full_name='MurmurRPC.V1.RedirectWhisperGroupAdd', + index=44, + containing_service=None, + input_type=_REDIRECTWHISPERGROUP, + output_type=_VOID, + options=None, + ), + _descriptor.MethodDescriptor( + name='RedirectWhisperGroupRemove', + full_name='MurmurRPC.V1.RedirectWhisperGroupRemove', + index=45, + containing_service=None, + input_type=_REDIRECTWHISPERGROUP, + output_type=_VOID, + options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_V1) + +DESCRIPTOR.services_by_name['V1'] = _V1 + +# @@protoc_insertion_point(module_scope) diff --git a/mumble/MurmurRPC_pb2_grpc.py b/mumble/MurmurRPC_pb2_grpc.py new file mode 100644 index 0000000..4608e74 --- /dev/null +++ b/mumble/MurmurRPC_pb2_grpc.py @@ -0,0 +1,912 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +import MurmurRPC_pb2 as MurmurRPC__pb2 + + +class V1Stub(object): + """ + Meta + + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetUptime = channel.unary_unary( + '/MurmurRPC.V1/GetUptime', + request_serializer=MurmurRPC__pb2.Void.SerializeToString, + response_deserializer=MurmurRPC__pb2.Uptime.FromString, + ) + self.GetVersion = channel.unary_unary( + '/MurmurRPC.V1/GetVersion', + request_serializer=MurmurRPC__pb2.Void.SerializeToString, + response_deserializer=MurmurRPC__pb2.Version.FromString, + ) + self.Events = channel.unary_stream( + '/MurmurRPC.V1/Events', + request_serializer=MurmurRPC__pb2.Void.SerializeToString, + response_deserializer=MurmurRPC__pb2.Event.FromString, + ) + self.ServerCreate = channel.unary_unary( + '/MurmurRPC.V1/ServerCreate', + request_serializer=MurmurRPC__pb2.Void.SerializeToString, + response_deserializer=MurmurRPC__pb2.Server.FromString, + ) + self.ServerQuery = channel.unary_unary( + '/MurmurRPC.V1/ServerQuery', + request_serializer=MurmurRPC__pb2.Server.Query.SerializeToString, + response_deserializer=MurmurRPC__pb2.Server.List.FromString, + ) + self.ServerGet = channel.unary_unary( + '/MurmurRPC.V1/ServerGet', + request_serializer=MurmurRPC__pb2.Server.SerializeToString, + response_deserializer=MurmurRPC__pb2.Server.FromString, + ) + self.ServerStart = channel.unary_unary( + '/MurmurRPC.V1/ServerStart', + request_serializer=MurmurRPC__pb2.Server.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ServerStop = channel.unary_unary( + '/MurmurRPC.V1/ServerStop', + request_serializer=MurmurRPC__pb2.Server.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ServerRemove = channel.unary_unary( + '/MurmurRPC.V1/ServerRemove', + request_serializer=MurmurRPC__pb2.Server.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ServerEvents = channel.unary_stream( + '/MurmurRPC.V1/ServerEvents', + request_serializer=MurmurRPC__pb2.Server.SerializeToString, + response_deserializer=MurmurRPC__pb2.Server.Event.FromString, + ) + self.ContextActionAdd = channel.unary_unary( + '/MurmurRPC.V1/ContextActionAdd', + request_serializer=MurmurRPC__pb2.ContextAction.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ContextActionRemove = channel.unary_unary( + '/MurmurRPC.V1/ContextActionRemove', + request_serializer=MurmurRPC__pb2.ContextAction.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ContextActionEvents = channel.unary_stream( + '/MurmurRPC.V1/ContextActionEvents', + request_serializer=MurmurRPC__pb2.ContextAction.SerializeToString, + response_deserializer=MurmurRPC__pb2.ContextAction.FromString, + ) + self.TextMessageSend = channel.unary_unary( + '/MurmurRPC.V1/TextMessageSend', + request_serializer=MurmurRPC__pb2.TextMessage.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.TextMessageFilter = channel.stream_stream( + '/MurmurRPC.V1/TextMessageFilter', + request_serializer=MurmurRPC__pb2.TextMessage.Filter.SerializeToString, + response_deserializer=MurmurRPC__pb2.TextMessage.Filter.FromString, + ) + self.LogQuery = channel.unary_unary( + '/MurmurRPC.V1/LogQuery', + request_serializer=MurmurRPC__pb2.Log.Query.SerializeToString, + response_deserializer=MurmurRPC__pb2.Log.List.FromString, + ) + self.ConfigGet = channel.unary_unary( + '/MurmurRPC.V1/ConfigGet', + request_serializer=MurmurRPC__pb2.Server.SerializeToString, + response_deserializer=MurmurRPC__pb2.Config.FromString, + ) + self.ConfigGetField = channel.unary_unary( + '/MurmurRPC.V1/ConfigGetField', + request_serializer=MurmurRPC__pb2.Config.Field.SerializeToString, + response_deserializer=MurmurRPC__pb2.Config.Field.FromString, + ) + self.ConfigSetField = channel.unary_unary( + '/MurmurRPC.V1/ConfigSetField', + request_serializer=MurmurRPC__pb2.Config.Field.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ConfigGetDefault = channel.unary_unary( + '/MurmurRPC.V1/ConfigGetDefault', + request_serializer=MurmurRPC__pb2.Void.SerializeToString, + response_deserializer=MurmurRPC__pb2.Config.FromString, + ) + self.ChannelQuery = channel.unary_unary( + '/MurmurRPC.V1/ChannelQuery', + request_serializer=MurmurRPC__pb2.Channel.Query.SerializeToString, + response_deserializer=MurmurRPC__pb2.Channel.List.FromString, + ) + self.ChannelGet = channel.unary_unary( + '/MurmurRPC.V1/ChannelGet', + request_serializer=MurmurRPC__pb2.Channel.SerializeToString, + response_deserializer=MurmurRPC__pb2.Channel.FromString, + ) + self.ChannelAdd = channel.unary_unary( + '/MurmurRPC.V1/ChannelAdd', + request_serializer=MurmurRPC__pb2.Channel.SerializeToString, + response_deserializer=MurmurRPC__pb2.Channel.FromString, + ) + self.ChannelRemove = channel.unary_unary( + '/MurmurRPC.V1/ChannelRemove', + request_serializer=MurmurRPC__pb2.Channel.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ChannelUpdate = channel.unary_unary( + '/MurmurRPC.V1/ChannelUpdate', + request_serializer=MurmurRPC__pb2.Channel.SerializeToString, + response_deserializer=MurmurRPC__pb2.Channel.FromString, + ) + self.UserQuery = channel.unary_unary( + '/MurmurRPC.V1/UserQuery', + request_serializer=MurmurRPC__pb2.User.Query.SerializeToString, + response_deserializer=MurmurRPC__pb2.User.List.FromString, + ) + self.UserGet = channel.unary_unary( + '/MurmurRPC.V1/UserGet', + request_serializer=MurmurRPC__pb2.User.SerializeToString, + response_deserializer=MurmurRPC__pb2.User.FromString, + ) + self.UserUpdate = channel.unary_unary( + '/MurmurRPC.V1/UserUpdate', + request_serializer=MurmurRPC__pb2.User.SerializeToString, + response_deserializer=MurmurRPC__pb2.User.FromString, + ) + self.UserKick = channel.unary_unary( + '/MurmurRPC.V1/UserKick', + request_serializer=MurmurRPC__pb2.User.Kick.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.TreeQuery = channel.unary_unary( + '/MurmurRPC.V1/TreeQuery', + request_serializer=MurmurRPC__pb2.Tree.Query.SerializeToString, + response_deserializer=MurmurRPC__pb2.Tree.FromString, + ) + self.BansGet = channel.unary_unary( + '/MurmurRPC.V1/BansGet', + request_serializer=MurmurRPC__pb2.Ban.Query.SerializeToString, + response_deserializer=MurmurRPC__pb2.Ban.List.FromString, + ) + self.BansSet = channel.unary_unary( + '/MurmurRPC.V1/BansSet', + request_serializer=MurmurRPC__pb2.Ban.List.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ACLGet = channel.unary_unary( + '/MurmurRPC.V1/ACLGet', + request_serializer=MurmurRPC__pb2.Channel.SerializeToString, + response_deserializer=MurmurRPC__pb2.ACL.List.FromString, + ) + self.ACLSet = channel.unary_unary( + '/MurmurRPC.V1/ACLSet', + request_serializer=MurmurRPC__pb2.ACL.List.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ACLGetEffectivePermissions = channel.unary_unary( + '/MurmurRPC.V1/ACLGetEffectivePermissions', + request_serializer=MurmurRPC__pb2.ACL.Query.SerializeToString, + response_deserializer=MurmurRPC__pb2.ACL.FromString, + ) + self.ACLAddTemporaryGroup = channel.unary_unary( + '/MurmurRPC.V1/ACLAddTemporaryGroup', + request_serializer=MurmurRPC__pb2.ACL.TemporaryGroup.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.ACLRemoveTemporaryGroup = channel.unary_unary( + '/MurmurRPC.V1/ACLRemoveTemporaryGroup', + request_serializer=MurmurRPC__pb2.ACL.TemporaryGroup.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.AuthenticatorStream = channel.stream_stream( + '/MurmurRPC.V1/AuthenticatorStream', + request_serializer=MurmurRPC__pb2.Authenticator.Response.SerializeToString, + response_deserializer=MurmurRPC__pb2.Authenticator.Request.FromString, + ) + self.DatabaseUserQuery = channel.unary_unary( + '/MurmurRPC.V1/DatabaseUserQuery', + request_serializer=MurmurRPC__pb2.DatabaseUser.Query.SerializeToString, + response_deserializer=MurmurRPC__pb2.DatabaseUser.List.FromString, + ) + self.DatabaseUserGet = channel.unary_unary( + '/MurmurRPC.V1/DatabaseUserGet', + request_serializer=MurmurRPC__pb2.DatabaseUser.SerializeToString, + response_deserializer=MurmurRPC__pb2.DatabaseUser.FromString, + ) + self.DatabaseUserUpdate = channel.unary_unary( + '/MurmurRPC.V1/DatabaseUserUpdate', + request_serializer=MurmurRPC__pb2.DatabaseUser.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.DatabaseUserRegister = channel.unary_unary( + '/MurmurRPC.V1/DatabaseUserRegister', + request_serializer=MurmurRPC__pb2.DatabaseUser.SerializeToString, + response_deserializer=MurmurRPC__pb2.DatabaseUser.FromString, + ) + self.DatabaseUserDeregister = channel.unary_unary( + '/MurmurRPC.V1/DatabaseUserDeregister', + request_serializer=MurmurRPC__pb2.DatabaseUser.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.DatabaseUserVerify = channel.unary_unary( + '/MurmurRPC.V1/DatabaseUserVerify', + request_serializer=MurmurRPC__pb2.DatabaseUser.Verify.SerializeToString, + response_deserializer=MurmurRPC__pb2.DatabaseUser.FromString, + ) + self.RedirectWhisperGroupAdd = channel.unary_unary( + '/MurmurRPC.V1/RedirectWhisperGroupAdd', + request_serializer=MurmurRPC__pb2.RedirectWhisperGroup.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + self.RedirectWhisperGroupRemove = channel.unary_unary( + '/MurmurRPC.V1/RedirectWhisperGroupRemove', + request_serializer=MurmurRPC__pb2.RedirectWhisperGroup.SerializeToString, + response_deserializer=MurmurRPC__pb2.Void.FromString, + ) + + +class V1Servicer(object): + """ + Meta + + """ + + def GetUptime(self, request, context): + """GetUptime returns murmur's uptime. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetVersion(self, request, context): + """GetVersion returns murmur's version. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Events(self, request, context): + """Events returns a stream of murmur events. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ServerCreate(self, request, context): + """ + Servers + + + ServerCreate creates a new virtual server. The returned server object + contains the newly created server's ID. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ServerQuery(self, request, context): + """ServerQuery returns a list of servers that match the given query. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ServerGet(self, request, context): + """ServerGet returns information about the given server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ServerStart(self, request, context): + """ServerStart starts the given stopped server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ServerStop(self, request, context): + """ServerStop stops the given virtual server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ServerRemove(self, request, context): + """ServerRemove removes the given virtual server and its configuration. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ServerEvents(self, request, context): + """ServerEvents returns a stream of events that happen on the given server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ContextActionAdd(self, request, context): + """ + ContextActions + + + ContextActionAdd adds a context action to the given user's client. The + following ContextAction fields must be set: + context, action, text, and user. + + Added context actions are valid until: + - The context action is removed with ContextActionRemove, or + - The user disconnects from the server, or + - The server stops. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ContextActionRemove(self, request, context): + """ContextActionRemove removes a context action from the given user's client. + The following ContextAction must be set: + action + If no user is given, the context action is removed from all users. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ContextActionEvents(self, request, context): + """ContextActionEvents returns a stream of context action events that are + triggered by users. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TextMessageSend(self, request, context): + """ + TextMessage + + + TextMessageSend sends the given TextMessage to the server. + + If no users, channels, or trees are added to the TextMessage, the message + will be broadcast the entire server. Otherwise, the message will be + targeted to the specified users, channels, and trees. + TextMessageFilter filters text messages on a given server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TextMessageFilter(self, request_iterator, context): + """TextMessageFilter filters text messages for a given server. + + When a filter stream is active, text messages sent from users to the + server are sent over the stream. The RPC client then sends a message back + on the same stream, containing an action: whether the message should be + accepted, rejected, or dropped. + + To activate the filter stream, an initial TextMessage.Filter message must + be sent that contains the server on which the filter will be active. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def LogQuery(self, request, context): + """ + Logs + + + LogQuery returns a list of log entries from the given server. + + To get the total number of log entries, omit min and/or max from the + query. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ConfigGet(self, request, context): + """ + Config + + + ConfigGet returns the explicitly set configuration for the given server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ConfigGetField(self, request, context): + """ConfigGetField returns the configuration value for the given key. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ConfigSetField(self, request, context): + """ConfigSetField sets the configuration value to the given value. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ConfigGetDefault(self, request, context): + """ConfigGetDefault returns the default server configuration. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ChannelQuery(self, request, context): + """ + Channels + + + ChannelQuery returns a list of channels that match the given query. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ChannelGet(self, request, context): + """ChannelGet returns the channel with the given ID. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ChannelAdd(self, request, context): + """ChannelAdd adds the channel to the given server. The parent and name of + the channel must be set. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ChannelRemove(self, request, context): + """ChannelRemove removes the given channel from the server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ChannelUpdate(self, request, context): + """ChannelUpdate updates the given channel's attributes. Only the fields that + are set will be updated. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UserQuery(self, request, context): + """ + Users + + + UserQuery returns a list of connected users who match the given query. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UserGet(self, request, context): + """UserGet returns information on the connected user, given by the user's + session or name. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UserUpdate(self, request, context): + """UserUpdate changes the given user's state. Only the following fields can + be changed: + name, mute, deaf, suppress, priority_speaker, channel, comment. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UserKick(self, request, context): + """UserKick kicks the user from the server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TreeQuery(self, request, context): + """ + Tree + + + TreeQuery returns a representation of the given server's channel/user + tree. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BansGet(self, request, context): + """ + Bans + + + BansGet returns a list of bans for the given server. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BansSet(self, request, context): + """BansSet replaces the server's ban list with the given list. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ACLGet(self, request, context): + """ + ACL + + + ACLGet returns the ACL for the given channel. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ACLSet(self, request, context): + """ACLSet overrides the ACL of the given channel to what is provided. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ACLGetEffectivePermissions(self, request, context): + """ACLGetEffectivePermissions returns the effective permissions for the given + user in the given channel. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ACLAddTemporaryGroup(self, request, context): + """ACLAddTemporaryGroup adds a user to a temporary group. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ACLRemoveTemporaryGroup(self, request, context): + """ACLRemoveTemporaryGroup removes a user from a temporary group. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AuthenticatorStream(self, request_iterator, context): + """ + Authenticator + + + AuthenticatorStream opens an authentication stream to the server. + + There can only be one RPC client with an open Stream. If a new + authenticator connects, the open connected will be closed. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DatabaseUserQuery(self, request, context): + """ + Database + + + DatabaseUserQuery returns a list of registered users who match given + query. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DatabaseUserGet(self, request, context): + """DatabaseUserGet returns the database user with the given ID. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DatabaseUserUpdate(self, request, context): + """DatabaseUserUpdate updates the given database user. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DatabaseUserRegister(self, request, context): + """DatabaseUserRegister registers a user with the given information on the + server. The returned DatabaseUser will contain the newly registered user's + ID. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DatabaseUserDeregister(self, request, context): + """DatabaseUserDeregister deregisters the given user. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DatabaseUserVerify(self, request, context): + """DatabaseUserVerify verifies the that the given user-password pair is + correct. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def RedirectWhisperGroupAdd(self, request, context): + """ + Audio + + + AddRedirectWhisperGroup add a whisper targets redirection for the given + user. Whenever a user whispers to group "source", the whisper will be + redirected to group "target". + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def RedirectWhisperGroupRemove(self, request, context): + """RemoveRedirectWhisperGroup removes a whisper target redirection for + the the given user. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_V1Servicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetUptime': grpc.unary_unary_rpc_method_handler( + servicer.GetUptime, + request_deserializer=MurmurRPC__pb2.Void.FromString, + response_serializer=MurmurRPC__pb2.Uptime.SerializeToString, + ), + 'GetVersion': grpc.unary_unary_rpc_method_handler( + servicer.GetVersion, + request_deserializer=MurmurRPC__pb2.Void.FromString, + response_serializer=MurmurRPC__pb2.Version.SerializeToString, + ), + 'Events': grpc.unary_stream_rpc_method_handler( + servicer.Events, + request_deserializer=MurmurRPC__pb2.Void.FromString, + response_serializer=MurmurRPC__pb2.Event.SerializeToString, + ), + 'ServerCreate': grpc.unary_unary_rpc_method_handler( + servicer.ServerCreate, + request_deserializer=MurmurRPC__pb2.Void.FromString, + response_serializer=MurmurRPC__pb2.Server.SerializeToString, + ), + 'ServerQuery': grpc.unary_unary_rpc_method_handler( + servicer.ServerQuery, + request_deserializer=MurmurRPC__pb2.Server.Query.FromString, + response_serializer=MurmurRPC__pb2.Server.List.SerializeToString, + ), + 'ServerGet': grpc.unary_unary_rpc_method_handler( + servicer.ServerGet, + request_deserializer=MurmurRPC__pb2.Server.FromString, + response_serializer=MurmurRPC__pb2.Server.SerializeToString, + ), + 'ServerStart': grpc.unary_unary_rpc_method_handler( + servicer.ServerStart, + request_deserializer=MurmurRPC__pb2.Server.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ServerStop': grpc.unary_unary_rpc_method_handler( + servicer.ServerStop, + request_deserializer=MurmurRPC__pb2.Server.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ServerRemove': grpc.unary_unary_rpc_method_handler( + servicer.ServerRemove, + request_deserializer=MurmurRPC__pb2.Server.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ServerEvents': grpc.unary_stream_rpc_method_handler( + servicer.ServerEvents, + request_deserializer=MurmurRPC__pb2.Server.FromString, + response_serializer=MurmurRPC__pb2.Server.Event.SerializeToString, + ), + 'ContextActionAdd': grpc.unary_unary_rpc_method_handler( + servicer.ContextActionAdd, + request_deserializer=MurmurRPC__pb2.ContextAction.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ContextActionRemove': grpc.unary_unary_rpc_method_handler( + servicer.ContextActionRemove, + request_deserializer=MurmurRPC__pb2.ContextAction.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ContextActionEvents': grpc.unary_stream_rpc_method_handler( + servicer.ContextActionEvents, + request_deserializer=MurmurRPC__pb2.ContextAction.FromString, + response_serializer=MurmurRPC__pb2.ContextAction.SerializeToString, + ), + 'TextMessageSend': grpc.unary_unary_rpc_method_handler( + servicer.TextMessageSend, + request_deserializer=MurmurRPC__pb2.TextMessage.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'TextMessageFilter': grpc.stream_stream_rpc_method_handler( + servicer.TextMessageFilter, + request_deserializer=MurmurRPC__pb2.TextMessage.Filter.FromString, + response_serializer=MurmurRPC__pb2.TextMessage.Filter.SerializeToString, + ), + 'LogQuery': grpc.unary_unary_rpc_method_handler( + servicer.LogQuery, + request_deserializer=MurmurRPC__pb2.Log.Query.FromString, + response_serializer=MurmurRPC__pb2.Log.List.SerializeToString, + ), + 'ConfigGet': grpc.unary_unary_rpc_method_handler( + servicer.ConfigGet, + request_deserializer=MurmurRPC__pb2.Server.FromString, + response_serializer=MurmurRPC__pb2.Config.SerializeToString, + ), + 'ConfigGetField': grpc.unary_unary_rpc_method_handler( + servicer.ConfigGetField, + request_deserializer=MurmurRPC__pb2.Config.Field.FromString, + response_serializer=MurmurRPC__pb2.Config.Field.SerializeToString, + ), + 'ConfigSetField': grpc.unary_unary_rpc_method_handler( + servicer.ConfigSetField, + request_deserializer=MurmurRPC__pb2.Config.Field.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ConfigGetDefault': grpc.unary_unary_rpc_method_handler( + servicer.ConfigGetDefault, + request_deserializer=MurmurRPC__pb2.Void.FromString, + response_serializer=MurmurRPC__pb2.Config.SerializeToString, + ), + 'ChannelQuery': grpc.unary_unary_rpc_method_handler( + servicer.ChannelQuery, + request_deserializer=MurmurRPC__pb2.Channel.Query.FromString, + response_serializer=MurmurRPC__pb2.Channel.List.SerializeToString, + ), + 'ChannelGet': grpc.unary_unary_rpc_method_handler( + servicer.ChannelGet, + request_deserializer=MurmurRPC__pb2.Channel.FromString, + response_serializer=MurmurRPC__pb2.Channel.SerializeToString, + ), + 'ChannelAdd': grpc.unary_unary_rpc_method_handler( + servicer.ChannelAdd, + request_deserializer=MurmurRPC__pb2.Channel.FromString, + response_serializer=MurmurRPC__pb2.Channel.SerializeToString, + ), + 'ChannelRemove': grpc.unary_unary_rpc_method_handler( + servicer.ChannelRemove, + request_deserializer=MurmurRPC__pb2.Channel.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ChannelUpdate': grpc.unary_unary_rpc_method_handler( + servicer.ChannelUpdate, + request_deserializer=MurmurRPC__pb2.Channel.FromString, + response_serializer=MurmurRPC__pb2.Channel.SerializeToString, + ), + 'UserQuery': grpc.unary_unary_rpc_method_handler( + servicer.UserQuery, + request_deserializer=MurmurRPC__pb2.User.Query.FromString, + response_serializer=MurmurRPC__pb2.User.List.SerializeToString, + ), + 'UserGet': grpc.unary_unary_rpc_method_handler( + servicer.UserGet, + request_deserializer=MurmurRPC__pb2.User.FromString, + response_serializer=MurmurRPC__pb2.User.SerializeToString, + ), + 'UserUpdate': grpc.unary_unary_rpc_method_handler( + servicer.UserUpdate, + request_deserializer=MurmurRPC__pb2.User.FromString, + response_serializer=MurmurRPC__pb2.User.SerializeToString, + ), + 'UserKick': grpc.unary_unary_rpc_method_handler( + servicer.UserKick, + request_deserializer=MurmurRPC__pb2.User.Kick.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'TreeQuery': grpc.unary_unary_rpc_method_handler( + servicer.TreeQuery, + request_deserializer=MurmurRPC__pb2.Tree.Query.FromString, + response_serializer=MurmurRPC__pb2.Tree.SerializeToString, + ), + 'BansGet': grpc.unary_unary_rpc_method_handler( + servicer.BansGet, + request_deserializer=MurmurRPC__pb2.Ban.Query.FromString, + response_serializer=MurmurRPC__pb2.Ban.List.SerializeToString, + ), + 'BansSet': grpc.unary_unary_rpc_method_handler( + servicer.BansSet, + request_deserializer=MurmurRPC__pb2.Ban.List.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ACLGet': grpc.unary_unary_rpc_method_handler( + servicer.ACLGet, + request_deserializer=MurmurRPC__pb2.Channel.FromString, + response_serializer=MurmurRPC__pb2.ACL.List.SerializeToString, + ), + 'ACLSet': grpc.unary_unary_rpc_method_handler( + servicer.ACLSet, + request_deserializer=MurmurRPC__pb2.ACL.List.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ACLGetEffectivePermissions': grpc.unary_unary_rpc_method_handler( + servicer.ACLGetEffectivePermissions, + request_deserializer=MurmurRPC__pb2.ACL.Query.FromString, + response_serializer=MurmurRPC__pb2.ACL.SerializeToString, + ), + 'ACLAddTemporaryGroup': grpc.unary_unary_rpc_method_handler( + servicer.ACLAddTemporaryGroup, + request_deserializer=MurmurRPC__pb2.ACL.TemporaryGroup.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'ACLRemoveTemporaryGroup': grpc.unary_unary_rpc_method_handler( + servicer.ACLRemoveTemporaryGroup, + request_deserializer=MurmurRPC__pb2.ACL.TemporaryGroup.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'AuthenticatorStream': grpc.stream_stream_rpc_method_handler( + servicer.AuthenticatorStream, + request_deserializer=MurmurRPC__pb2.Authenticator.Response.FromString, + response_serializer=MurmurRPC__pb2.Authenticator.Request.SerializeToString, + ), + 'DatabaseUserQuery': grpc.unary_unary_rpc_method_handler( + servicer.DatabaseUserQuery, + request_deserializer=MurmurRPC__pb2.DatabaseUser.Query.FromString, + response_serializer=MurmurRPC__pb2.DatabaseUser.List.SerializeToString, + ), + 'DatabaseUserGet': grpc.unary_unary_rpc_method_handler( + servicer.DatabaseUserGet, + request_deserializer=MurmurRPC__pb2.DatabaseUser.FromString, + response_serializer=MurmurRPC__pb2.DatabaseUser.SerializeToString, + ), + 'DatabaseUserUpdate': grpc.unary_unary_rpc_method_handler( + servicer.DatabaseUserUpdate, + request_deserializer=MurmurRPC__pb2.DatabaseUser.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'DatabaseUserRegister': grpc.unary_unary_rpc_method_handler( + servicer.DatabaseUserRegister, + request_deserializer=MurmurRPC__pb2.DatabaseUser.FromString, + response_serializer=MurmurRPC__pb2.DatabaseUser.SerializeToString, + ), + 'DatabaseUserDeregister': grpc.unary_unary_rpc_method_handler( + servicer.DatabaseUserDeregister, + request_deserializer=MurmurRPC__pb2.DatabaseUser.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'DatabaseUserVerify': grpc.unary_unary_rpc_method_handler( + servicer.DatabaseUserVerify, + request_deserializer=MurmurRPC__pb2.DatabaseUser.Verify.FromString, + response_serializer=MurmurRPC__pb2.DatabaseUser.SerializeToString, + ), + 'RedirectWhisperGroupAdd': grpc.unary_unary_rpc_method_handler( + servicer.RedirectWhisperGroupAdd, + request_deserializer=MurmurRPC__pb2.RedirectWhisperGroup.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + 'RedirectWhisperGroupRemove': grpc.unary_unary_rpc_method_handler( + servicer.RedirectWhisperGroupRemove, + request_deserializer=MurmurRPC__pb2.RedirectWhisperGroup.FromString, + response_serializer=MurmurRPC__pb2.Void.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'MurmurRPC.V1', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/mumble/grpctest.py b/mumble/grpctest.py index 2a58784..64a68c0 100755 --- a/mumble/grpctest.py +++ b/mumble/grpctest.py @@ -4,4 +4,4 @@ import grpc from grpc.tools import protoc import tempfile -conn = grpc. +channel = grpc.insecure_channel('sysadministrivia.com:50051') diff --git a/net/irc/irssilogparse.py b/net/irc/irssilogparse.py index a5e2b86..7a02e5e 100755 --- a/net/irc/irssilogparse.py +++ b/net/irc/irssilogparse.py @@ -17,7 +17,7 @@ class logParser(object): # We'll need these accessible across the entire class. self.args = args self.data = data - self.bindata = data + self.has_html = False # This is a map to determine which module to use to decompress, # if we should. self.cmprsn_map = {'text/plain': None, # Plain ol' text @@ -28,14 +28,24 @@ class logParser(object): # I though y'all liked GUIs. # ANSI, which is interpreted by the shell. # Only used if args['color'] = True - self.ansi_prefix = '\e[' - # The hex prefex in the logs. We use this to either - # convert to ANSI (hence the value for the key) or - # to strip out coloring entirely. - self.irssi_prefix = {'\x02': '1m', # bold - '\x03': '0m'} # reset; prepare for color change + self.ansi_prefix = '\033[' # irssi to ANSI - self.colormap = {''} + self.colormap = {'00': '1;37m', # White + '01': '0;30m', # Black + '02': '0;34m', # Blue + '03': '0;32m', # Green + '04': '1;31m', # Light Red + '05': '0;31m', # Red + '06': '0;35m', # Magenta (translated as Purple) + '07': '0;33m', # Orange (translated as Brown) + '08': '1;33m', # Yellow + '09': '1:32m', # Light Green + '10': '0;36m', # Cyan + '11': '1;36m', # Light Cyan + '12': '1;34m', # Light Blue + '13': '1;35m', # Light Magenta (translated as Light Purple) + '14': '0;37m', # Gray + '15': '1;37'} # Light Gray (translated as White) # The full, interpreted path. if 'logfile' in self.args.keys(): self.args['logfile'] = os.path.abspath(os.path.expanduser(self.args['logfile'])) @@ -43,33 +53,28 @@ class logParser(object): self.getLog() else: self.data = self.data.decode('utf-8').splitlines() - # We're running as standalone or weren't called with a data buffer. - if not isinstance(self.data, list): - raise ValueError('Log data must be in list format.') self.decompress = None if has_magic: # Determine what decompressor to use, if we need to. - _mime = magic.detect_from_content(self.bindata).mime_type + _mime = magic.detect_from_content(self.data).mime_type self.decompress = self.cmprsn_map[_mime] - if self.args['html'] and self.args['color']: + if self.args['html']: try: import ansi2html - has_html = True + self.has_html = True except ImportError: print(('Warning: you have selected HTML output but do not ' + 'have the ansi2html module installed. Rendering HTML ' + 'output is not possible.')) - has_html = False + self.has_html = False else: - has_html = False + self.has_html = False def getLog(self): if not os.path.isfile(self.args['logfile']): raise FileNotFoundError('{0} does not exist.'.formatself.args['logfile']) with open(self.args['logfile'], 'rb') as f: - self.data = f.read().decode('utf-8').splitlines() - f.seek(0, 0) - self.bindata = f.read() + self.data = f.read() return() def parseLog(self): @@ -77,14 +82,98 @@ class logParser(object): import importlib self.decmp = importlib.import_module(self.decompress) self.data = self.decmp.decompress(self.data) - # TODO: format conversion/stripping if self.args['color']: _idx = 0 - for line in self.data[:]: - for k, v in self.irssi_prefix.items(): - _v = self.ansi_prefix + v - self.data[_idx] = re.sub(k, _v, line) + _datalst = self.data.split(b'\n') + for line in _datalst[:]: # not really "lines", per se, but... + # First we strip out some basic formatting at the beginning + # of lines. Status lines are \x049/, chat lines are \x048/. + # \x04g seem to be formatting resets of sort. + line = re.sub('\x04[89]/'.encode('utf-8'), + ''.encode('utf-8'), + line) + line = re.sub('\x04g'.encode('utf-8'), + ''.encode('utf-8'), + line) + # Formatting resets + line = re.sub('\x04e'.encode('utf-8'), + '\033[0m'.encode('utf-8'), + line) + # Then we substitute bolds in. This is trickier, because + # bolds (\x04c) *alternate*. So does the other? bold, \x02. + for b in ('\x04c'.encode('utf-8'), '\x02'.encode('utf-8')): + _linelst = line.split(b) + _bold = False + _cnt = 0 + for i in _linelst[:]: + if _bold: + _linelst[_cnt] = re.sub('^'.encode('utf-8'), + (self.ansi_prefix + '1m').encode('utf-8'), + i) + else: + _linelst[_cnt] = re.sub('^'.encode('utf-8'), + (self.ansi_prefix + '0m').encode('utf-8'), + i) + _cnt += 1 + _bold = not _bold + line = b''.join(_linelst) + # Then we handle colors. + _cnt = 0 + _linelst = line.split(b'\x03') + for i in _linelst[:]: + _color_idx = re.sub('^([0-9]{2}).*$'.encode('utf-8'), + '\g<1>', + i, + re.MULTILINE).decode('utf-8') + if _color_idx in self.colormap.keys(): + _linelst[_cnt] = re.sub('^[0-9]{2}'.encode('utf-8'), + (self.ansi_prefix + self.colormap[_color_idx]).encode('utf-8'), + i) + _cnt += 1 + line = b''.join(_linelst) + # Lastly, we fix join/part and other messages. + _cnt = 0 + _linelst = line.split(b'\x04;/') + for i in _linelst[:]: + _templine = re.sub('^'.encode('utf-8'), + ''.encode('utf-8'), + i, + re.MULTILINE) + _templine = re.sub('-!-'.encode('utf-8'), + '\033[2m-!-'.encode('utf-8'), + _templine) + _linelst[_cnt] = re.sub('\x043/'.encode('utf-8'), + ''.encode('utf-8'), + _templine) + _cnt += 1 + line = re.sub(b'^\x1b\[0;32m\x1b\[0m\x1b\[0m', b'\033[0m', b''.join(_linelst)) + # Lastly we strip out \x04>/ + line = re.sub(b'\x04>/', b'', line) + ### + _datalst[_idx] = line _idx += 1 + ### + self.data = b'\n'.join(_datalst) + if self.args['html']: + try: + import ansi2html + _has_html = True + except ImportError: + print(('Warning: you have selected HTML output but do not ' + + 'have the ansi2html module installed. Rendering HTML ' + + 'output is not possible.')) + _has_html = False + else: + _has_html = False + if _has_html: + # This... basically sucks. It currently doesn't properly interpret the ANSI. + _html = ansi2html.Ansi2HTMLConverter() + self.data = _html.convert(self.data.decode('utf-8')) + else: # We want plaintext, so strip ALL formatting. + _stripbytes = ['\x04>/', '\x02', '\x043/', '\x048/', '\x049/', '\x04g', '\x04e', '\x04c', '\x04;/'] + for b in _stripbytes: + self.data = re.sub(b.encode('utf-8'), ''.encode('utf-8'), self.data) + self.data = re.sub('\\x03[0-9]{2}'.encode('utf-8'), ''.encode('utf-8'), self.data) return() def parseArgs(): @@ -107,5 +196,4 @@ if __name__ == '__main__': args = vars(parseArgs().parse_args()) l = logParser(args) l.parseLog() - #print(l.data.decode('utf-8')) - print(''.join(l.data)) + print(l.data.decode('utf-8')) \ No newline at end of file diff --git a/ref/rfc.py b/ref/rfc.py index 5e50070..2be5fe1 100755 --- a/ref/rfc.py +++ b/ref/rfc.py @@ -10,6 +10,7 @@ import pydoc from urllib.request import urlopen # TODO: non-txt format support? (i.e. PDF, HTML, etc.) +# TODO: search function? keyword or regex, display RFC number and title def downloadRFC(destdir, rfcnum): rfcnum = (str(rfcnum)).lower() # In case argparse interprets it as an int or it's entered in uppercase diff --git a/txp/pluginpacker.py b/txp/pluginpacker.py new file mode 100755 index 0000000..ce63b64 --- /dev/null +++ b/txp/pluginpacker.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 + +# TODO / INCOMPLETE +# reference: https://github.com/Bloke/ied_plugin_composer/blob/master/ied_plugin_composer.php + +import argparse +import base64 +import gzip +import os +import sys + +class pluginParse(object): + def __init__(self, plugindata): + # fear my list comprehensions! FEAR THEM. + self.data = '\n'.join([i for i in plugindata.decode('utf-8').splitlines() if not i.strip().startswith('#') and i != '']) + self.decompress = not self.isCompressed() + if self.isB64(): + self.data = base64.b64decode(self.data) + self.isPacked = True + else: + self.isPacked = False + print(self.isPacked) + + def isB64(self): + # Elegant AF: https://stackoverflow.com/a/45928164 + # Python wants a single "line" of base64... + s = ''.join(self.data.splitlines()) + print(s) + try: + if base64.b64encode(base64.b64decode(self.data)) == s: + print('is b64') + return(True) + except Exception: + return(False) + return(False) + + def isCompressed(self): + pass + +def parseArgs(): + args = argparse.ArgumentParser() + args.add_argument('-z', '--compress', + dest = 'compress', + action = 'store_true', + help = ('If specified, compress the plugin when packing. (This will be detected and done automatically if needed for unpacking)')) + args.add_argument('-f', '--file', + dest = 'file', + default = None, + help = 'If specified, use this file instead of STDIN for reading the plugin.') + args.add_argument('-o', '--out', + dest = 'output', + default = None, + help = 'If specified, use this filepath instead of STDOUT for writing the result.') + args.add_argument('operation', + choices = ['pack', 'unpack'], + help = 'Which operation to perform.') + return(args) + +def main(): + args = vars(parseArgs().parse_args()) + if args['file']: + args['file'] = os.path.abspath(os.path.expanduser(args['file'])) + with open(args['file'], 'rb') as f: + plugindata = f.read() + else: + plugindata = sys.stdin.read() + plugin = pluginParse(plugindata) + +if __name__ == '__main__': + main() \ No newline at end of file