aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Application/RegionApplicationBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Application/RegionApplicationBase.cs')
-rw-r--r--OpenSim/Region/Application/RegionApplicationBase.cs115
1 files changed, 115 insertions, 0 deletions
diff --git a/OpenSim/Region/Application/RegionApplicationBase.cs b/OpenSim/Region/Application/RegionApplicationBase.cs
new file mode 100644
index 0000000..ba92fd6
--- /dev/null
+++ b/OpenSim/Region/Application/RegionApplicationBase.cs
@@ -0,0 +1,115 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System.Collections.Generic;
29using System.Net;
30using System.Reflection;
31using log4net;
32using Nini.Config;
33using OpenMetaverse;
34using OpenSim.Framework;
35using OpenSim.Framework.Servers;
36using OpenSim.Framework.Servers.HttpServer;
37using OpenSim.Region.Framework;
38using OpenSim.Region.Framework.Interfaces;
39using OpenSim.Region.Framework.Scenes;
40using OpenSim.Region.PhysicsModules.SharedBase;
41using OpenSim.Services.Interfaces;
42
43namespace OpenSim
44{
45 public abstract class RegionApplicationBase : BaseOpenSimServer
46 {
47 private static readonly ILog m_log
48 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
49
50 protected Dictionary<EndPoint, uint> m_clientCircuits = new Dictionary<EndPoint, uint>();
51 protected NetworkServersInfo m_networkServersInfo;
52 protected uint m_httpServerPort;
53 protected ISimulationDataService m_simulationDataService;
54 protected IEstateDataService m_estateDataService;
55
56 public SceneManager SceneManager { get; protected set; }
57 public NetworkServersInfo NetServersInfo { get { return m_networkServersInfo; } }
58 public ISimulationDataService SimulationDataService { get { return m_simulationDataService; } }
59 public IEstateDataService EstateDataService { get { return m_estateDataService; } }
60
61 protected abstract void Initialize();
62
63 protected abstract Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService, IEstateDataService estateDataService, AgentCircuitManager circuitManager);
64
65 protected override void StartupSpecific()
66 {
67 SceneManager = SceneManager.Instance;
68
69 Initialize();
70
71 m_httpServer
72 = new BaseHttpServer(
73 m_httpServerPort, m_networkServersInfo.HttpUsesSSL, m_networkServersInfo.httpSSLPort,
74 m_networkServersInfo.HttpSSLCN);
75
76 if (m_networkServersInfo.HttpUsesSSL && (m_networkServersInfo.HttpListenerPort == m_networkServersInfo.httpSSLPort))
77 {
78 m_log.Error("[REGION SERVER]: HTTP Server config failed. HTTP Server and HTTPS server must be on different ports");
79 }
80
81 m_log.InfoFormat("[REGION SERVER]: Starting HTTP server on port {0}", m_httpServerPort);
82 m_httpServer.Start();
83
84 MainServer.AddHttpServer(m_httpServer);
85 MainServer.Instance = m_httpServer;
86
87 // "OOB" Server
88 if (m_networkServersInfo.ssl_listener)
89 {
90 if (!m_networkServersInfo.ssl_external)
91 {
92 BaseHttpServer server = new BaseHttpServer(
93 m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener, m_networkServersInfo.cert_path,
94 m_networkServersInfo.cert_pass);
95
96 m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port);
97 MainServer.AddHttpServer(server);
98 server.Start();
99 }
100 else
101 {
102 BaseHttpServer server = new BaseHttpServer(
103 m_networkServersInfo.https_port);
104
105 m_log.InfoFormat("[REGION SERVER]: Starting HTTP server on port {0} for external HTTPS", server.Port);
106 MainServer.AddHttpServer(server);
107 server.Start();
108 }
109 }
110
111 base.StartupSpecific();
112 }
113
114 }
115}