Skip to content

Commit

Permalink
Merge branch 'develop' of github.com:realXtend/taiga into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonne Nauha committed May 10, 2010
2 parents 466c5e4 + 6d978d9 commit 7ed9f66
Show file tree
Hide file tree
Showing 3 changed files with 215 additions and 0 deletions.
172 changes: 172 additions & 0 deletions addon-modules/MumbleVoice/MumbleVoice.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
using System;
using System.Reflection;
using log4net;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;

namespace MumbleVoice
{
/// Offer Mumble server information via REST method.
/// Request headers:
/// - avatar_uuid ... The uuid of the avatar requesting voice
///
/// @todo Return xml insted of reponse headers
/// @todo Access control using eq. user specifig passwords
public class MumbleVoiceModule : IRegionModule
{
private static readonly ILog m_Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

public Type ReplaceableInterface { get { return null; } }

private string m_server_address = null;
private string m_server_password = "";
private string m_server_version = "";
private string m_channel = "";
private string m_context = "Mumbe voice system";
private static string SERVICE_REST_URL = "/mumble_server_info";

public MumbleVoiceModule()
{
}

public void Initialise(Scene scene, IConfigSource source)
{
ReadConfig(source);

scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
scene.EventManager.OnMakeRootAgent += OnMakeRootAgent;

m_Log.Info("[MUMBLE VOIP]: MumbleVoiceModule initialized");
}

private void ReadConfig(IConfigSource source)
{
if (source != null)
{
try
{
m_server_address = source.Configs["mumblevoice"].GetString("server_address", "");
m_server_password = source.Configs["mumblevoice"].GetString("server_password", "");
m_server_version = source.Configs["mumblevoice"].GetString("server_version", "");
m_channel = source.Configs["mumblevoice"].GetString("channel", "Root");
}
catch (Exception)
{
m_Log.Error("[MUMBLE VOIP]: Cannot find server configuration");
}
}
else
{
m_Log.Error("[MUMBLE VOIP]: Cannot find server configuration");
}
}

public void PostInitialise()
{
MainServer.Instance.AddStreamHandler(new RestStreamHandler("GET", SERVICE_REST_URL, RestGetMumbleServerInfo));
}

/// <summary>
/// Returns information about a mumble server via a REST Request
/// </summary>
/// <param name="request"></param>
/// <param name="path"></param>
/// <param name="param">A string representing the sim's UUID</param>
/// <param name="httpRequest">HTTP request header object</param>
/// <param name="httpResponse">HTTP response header object</param>
/// <returns>Information about the mumble server in http response headers</returns>
public string RestGetMumbleServerInfo(string request, string path, string param,
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
{
if (m_server_address == null)
{
httpResponse.StatusCode = 404;
httpResponse.StatusDescription = "Not Found";

string message = "[MUMBLE VOIP]: Server info request from " + httpRequest.RemoteIPEndPoint.Address + ". Cannot send response, module is not configured properly.";
m_Log.Warn(message);
return "Mumble server info is not available.";
}
if (httpRequest.Headers.GetValues("avatar_uuid") == null)
{
httpResponse.StatusCode = 400;
httpResponse.StatusDescription = "Bad Request";

string message = "[MUMBLE VOIP]: Invalid server info request from " + httpRequest.RemoteIPEndPoint.Address +"";
m_Log.Warn(message);
return "avatar_uuid header is missing";
}
string avatar_uuid = httpRequest.Headers.GetValues("avatar_uuid")[0];

httpResponse.AddHeader("Mumble-Server", m_server_address);
httpResponse.AddHeader("Mumble-Version", m_server_version);
httpResponse.AddHeader("Mumble-Channel", m_channel);
httpResponse.AddHeader("Mumble-User", avatar_uuid);
httpResponse.AddHeader("Mumble-Password", m_server_password);
httpResponse.AddHeader("Mumble-Avatar-Id", avatar_uuid);
httpResponse.AddHeader("Mumble-Context-Id", m_context);

string responseBody = String.Empty;
responseBody += "Mumble-Server: " + m_server_address + "\n";
responseBody += "Mumble-Version: " + m_server_version + "\n";
responseBody += "Mumble-Channel: " + m_channel + "\n";
responseBody += "Mumble-User: " + avatar_uuid + "\n";
responseBody += "Mumble-Password: " + m_server_password + "\n";
responseBody += "Mumble-Avatar-Id: " + avatar_uuid + "\n";
responseBody += "Mumble-Context-Id: " + m_context + "\n";

string log_message = "[MUMBLE VOIP]: Server info request handled for " + httpRequest.RemoteIPEndPoint.Address + "";
m_Log.Info(log_message);

return responseBody;
}

public void Close()
{

}

public string Name
{
get { return "Mumble Voice Module"; }
}

public bool IsSharedModule
{
get { return false; }
}

public void AddRegion(Scene scene)
{
}

public void RemoveRegion(Scene scene)
{
}

public void RegionLoaded(Scene scene)
{
}

protected void InitializeScene(IScene scene)
{
}

private void OnMakeRootAgent(ScenePresence presence)
{
m_Log.Info("[MUMBLE VOIP]: new root agent.");
}

private void OnMakeChildAgent(ScenePresence presence)
{
m_Log.Info("[MUMBLE VOIP]: new child agent.");
}

protected void HandleNewClient(IClientAPI client)
{
}
}
}
37 changes: 37 additions & 0 deletions addon-modules/MumbleVoice/prebuild.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<Project name="MumbleVoice" frameworkVersion="v3_5" path="addon-modules/MumbleVoice" type="Library">
<Configuration name="Debug">
<Options>
<OutputPath>../../bin/</OutputPath>
</Options>
</Configuration>
<Configuration name="Release">
<Options>
<OutputPath>../../../bin/</OutputPath>
</Options>
</Configuration>

<ReferencePath>../../bin/</ReferencePath>
<Reference name="System"/>
<Reference name="System.Web"/>
<Reference name="System.Xml"/>
<Reference name="DotNetOpenAuth"/>
<Reference name="log4net"/>
<Reference name="Mono.Addins"/>
<Reference name="Nini"/>
<Reference name="OpenSim.Data"/>
<Reference name="OpenSim.Framework"/>
<Reference name="OpenSim.Framework.Capabilities"/>
<Reference name="OpenSim.Framework.Communications"/>
<Reference name="OpenSim.Framework.Servers.HttpServer"/>
<Reference name="OpenSim.Region.Framework"/>
<Reference name="OpenSim.Server.Base"/>
<Reference name="OpenSim.Server.Handlers"/>
<Reference name="OpenSim.Services.Interfaces"/>
<Reference name="OpenMetaverseTypes"/>
<Reference name="OpenMetaverse.StructuredData"/>
<Reference name="OpenMetaverse.Http"/>
<Files>
<Match pattern="*.cs" recurse="true"/>
<!--<Match path="Resources" pattern="*.xml" buildAction="EmbeddedResource" recurse="true"/>-->
</Files>
</Project>
6 changes: 6 additions & 0 deletions bin/addon-modules/MumbleVoice/config/mumblevoice.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[mumblevoice]
; Mumble server configuration
server_address = world.realxtend.org
server_password = server123
server_version = 1.2.2
channel = voip

0 comments on commit 7ed9f66

Please sign in to comment.