diff options
-rw-r--r-- | OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 3 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/MainServer.cs | 60 | ||||
-rw-r--r-- | OpenSim/Region/Application/OpenSim.cs | 34 | ||||
-rw-r--r-- | OpenSim/Server/Base/HttpServerBase.cs | 78 | ||||
-rw-r--r-- | OpenSim/Server/ServerMain.cs | 26 | ||||
-rw-r--r-- | prebuild.xml | 1 |
6 files changed, 92 insertions, 110 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 0db1329..3de7f9c 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | |||
@@ -1557,6 +1557,9 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
1557 | 1557 | ||
1558 | private void StartHTTP() | 1558 | private void StartHTTP() |
1559 | { | 1559 | { |
1560 | m_log.InfoFormat( | ||
1561 | "[BASE HTTP SERVER]: Starting {0} server on port {1}", UseSSL ? "HTTPS" : "HTTP", Port); | ||
1562 | |||
1560 | try | 1563 | try |
1561 | { | 1564 | { |
1562 | //m_httpListener = new HttpListener(); | 1565 | //m_httpListener = new HttpListener(); |
diff --git a/OpenSim/Framework/Servers/MainServer.cs b/OpenSim/Framework/Servers/MainServer.cs index becbbc2..07ff60c 100644 --- a/OpenSim/Framework/Servers/MainServer.cs +++ b/OpenSim/Framework/Servers/MainServer.cs | |||
@@ -30,13 +30,15 @@ using System.Collections.Generic; | |||
30 | using System.Reflection; | 30 | using System.Reflection; |
31 | using System.Net; | 31 | using System.Net; |
32 | using log4net; | 32 | using log4net; |
33 | using OpenSim.Framework; | ||
34 | using OpenSim.Framework.Console; | ||
33 | using OpenSim.Framework.Servers.HttpServer; | 35 | using OpenSim.Framework.Servers.HttpServer; |
34 | 36 | ||
35 | namespace OpenSim.Framework.Servers | 37 | namespace OpenSim.Framework.Servers |
36 | { | 38 | { |
37 | public class MainServer | 39 | public class MainServer |
38 | { | 40 | { |
39 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 41 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
40 | 42 | ||
41 | private static BaseHttpServer instance = null; | 43 | private static BaseHttpServer instance = null; |
42 | private static Dictionary<uint, BaseHttpServer> m_Servers = new Dictionary<uint, BaseHttpServer>(); | 44 | private static Dictionary<uint, BaseHttpServer> m_Servers = new Dictionary<uint, BaseHttpServer>(); |
@@ -88,6 +90,57 @@ namespace OpenSim.Framework.Servers | |||
88 | } | 90 | } |
89 | 91 | ||
90 | /// <summary> | 92 | /// <summary> |
93 | /// Get all the registered servers. | ||
94 | /// </summary> | ||
95 | /// <remarks> | ||
96 | /// Returns a copy of the dictionary so this can be iterated through without locking. | ||
97 | /// </remarks> | ||
98 | /// <value></value> | ||
99 | public static Dictionary<uint, BaseHttpServer> Servers | ||
100 | { | ||
101 | get { return new Dictionary<uint, BaseHttpServer>(m_Servers); } | ||
102 | } | ||
103 | |||
104 | |||
105 | public static void RegisterHttpConsoleCommands(ICommandConsole console) | ||
106 | { | ||
107 | console.Commands.AddCommand( | ||
108 | "Comms", false, "debug http", "debug http [<level>]", | ||
109 | "Turn on inbound non-poll http request debugging.", | ||
110 | "If level <= 0, then no extra logging is done.\n" | ||
111 | + "If level >= 1, then short warnings are logged when receiving bad input data.\n" | ||
112 | + "If level >= 2, then long warnings are logged when receiving bad input data.\n" | ||
113 | + "If level >= 3, then short notices about all incoming non-poll HTTP requests are logged.\n" | ||
114 | + "If no level is specified then the current level is returned.", | ||
115 | HandleDebugHttpCommand); | ||
116 | } | ||
117 | |||
118 | /// <summary> | ||
119 | /// Turn on some debugging values for OpenSim. | ||
120 | /// </summary> | ||
121 | /// <param name="args"></param> | ||
122 | private static void HandleDebugHttpCommand(string module, string[] args) | ||
123 | { | ||
124 | if (args.Length == 3) | ||
125 | { | ||
126 | int newDebug; | ||
127 | if (int.TryParse(args[2], out newDebug)) | ||
128 | { | ||
129 | MainServer.DebugLevel = newDebug; | ||
130 | MainConsole.Instance.OutputFormat("Debug http level set to {0}", newDebug); | ||
131 | } | ||
132 | } | ||
133 | else if (args.Length == 2) | ||
134 | { | ||
135 | MainConsole.Instance.OutputFormat("Current debug http level is {0}", MainServer.DebugLevel); | ||
136 | } | ||
137 | else | ||
138 | { | ||
139 | MainConsole.Instance.Output("Usage: debug http 0..3"); | ||
140 | } | ||
141 | } | ||
142 | |||
143 | /// <summary> | ||
91 | /// Register an already started HTTP server to the collection of known servers. | 144 | /// Register an already started HTTP server to the collection of known servers. |
92 | /// </summary> | 145 | /// </summary> |
93 | /// <param name='server'></param> | 146 | /// <param name='server'></param> |
@@ -171,11 +224,10 @@ namespace OpenSim.Framework.Servers | |||
171 | if (ipaddr != null) | 224 | if (ipaddr != null) |
172 | m_Servers[port].ListenIPAddress = ipaddr; | 225 | m_Servers[port].ListenIPAddress = ipaddr; |
173 | 226 | ||
174 | m_log.InfoFormat("[MAIN HTTP SERVER]: Starting main http server on port {0}", port); | ||
175 | m_Servers[port].Start(); | 227 | m_Servers[port].Start(); |
176 | } | ||
177 | 228 | ||
178 | return m_Servers[port]; | 229 | return m_Servers[port]; |
230 | } | ||
179 | } | 231 | } |
180 | } | 232 | } |
181 | } \ No newline at end of file | 233 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index abb30a9..faa9e09 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -231,6 +231,8 @@ namespace OpenSim | |||
231 | /// </summary> | 231 | /// </summary> |
232 | private void RegisterConsoleCommands() | 232 | private void RegisterConsoleCommands() |
233 | { | 233 | { |
234 | MainServer.RegisterHttpConsoleCommands(m_console); | ||
235 | |||
234 | m_console.Commands.AddCommand("Objects", false, "force update", | 236 | m_console.Commands.AddCommand("Objects", false, "force update", |
235 | "force update", | 237 | "force update", |
236 | "Force the update of all objects on clients", | 238 | "Force the update of all objects on clients", |
@@ -248,16 +250,6 @@ namespace OpenSim | |||
248 | + "If an avatar name is given then only packets from that avatar are logged", | 250 | + "If an avatar name is given then only packets from that avatar are logged", |
249 | Debug); | 251 | Debug); |
250 | 252 | ||
251 | m_console.Commands.AddCommand("Comms", false, "debug http", | ||
252 | "debug http [<level>]", | ||
253 | "Turn on inbound non-poll http request debugging for everything except the event queue (see debug eq).", | ||
254 | "If level <= 0, then no extra logging is done.\n" | ||
255 | + "If level >= 1, then short warnings are logged when receiving bad input data.\n" | ||
256 | + "If level >= 2, then long warnings are logged when receiving bad input data.\n" | ||
257 | + "If level >= 3, then short notices about all incoming non-poll HTTP requests are logged.\n" | ||
258 | + "If no level is specified then the current level is returned.", | ||
259 | Debug); | ||
260 | |||
261 | m_console.Commands.AddCommand("Comms", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug); | 253 | m_console.Commands.AddCommand("Comms", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug); |
262 | 254 | ||
263 | m_console.Commands.AddCommand("Regions", false, "debug scene", | 255 | m_console.Commands.AddCommand("Regions", false, "debug scene", |
@@ -916,28 +908,6 @@ namespace OpenSim | |||
916 | 908 | ||
917 | break; | 909 | break; |
918 | 910 | ||
919 | case "http": | ||
920 | if (args.Length == 3) | ||
921 | { | ||
922 | int newDebug; | ||
923 | if (int.TryParse(args[2], out newDebug)) | ||
924 | { | ||
925 | MainServer.DebugLevel = newDebug; | ||
926 | MainConsole.Instance.OutputFormat("Debug http level set to {0}", newDebug); | ||
927 | break; | ||
928 | } | ||
929 | } | ||
930 | else if (args.Length == 2) | ||
931 | { | ||
932 | MainConsole.Instance.OutputFormat("Current debug http level is {0}", MainServer.DebugLevel); | ||
933 | } | ||
934 | else | ||
935 | { | ||
936 | MainConsole.Instance.Output("Usage: debug http 0..3"); | ||
937 | } | ||
938 | |||
939 | break; | ||
940 | |||
941 | case "scene": | 911 | case "scene": |
942 | if (args.Length == 4) | 912 | if (args.Length == 4) |
943 | { | 913 | { |
diff --git a/OpenSim/Server/Base/HttpServerBase.cs b/OpenSim/Server/Base/HttpServerBase.cs index 7014303..7ba0ca8 100644 --- a/OpenSim/Server/Base/HttpServerBase.cs +++ b/OpenSim/Server/Base/HttpServerBase.cs | |||
@@ -42,42 +42,9 @@ namespace OpenSim.Server.Base | |||
42 | { | 42 | { |
43 | // Logger | 43 | // Logger |
44 | // | 44 | // |
45 | private static readonly ILog m_Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 45 | private static readonly ILog m_Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
46 | 46 | ||
47 | // The http server instance | 47 | private uint m_consolePort; |
48 | // | ||
49 | protected BaseHttpServer m_HttpServer = null; | ||
50 | protected uint m_Port = 0; | ||
51 | protected Dictionary<uint, BaseHttpServer> m_Servers = | ||
52 | new Dictionary<uint, BaseHttpServer>(); | ||
53 | protected uint m_consolePort = 0; | ||
54 | |||
55 | public IHttpServer HttpServer | ||
56 | { | ||
57 | get { return m_HttpServer; } | ||
58 | } | ||
59 | |||
60 | public uint DefaultPort | ||
61 | { | ||
62 | get { return m_Port; } | ||
63 | } | ||
64 | |||
65 | public IHttpServer GetHttpServer(uint port) | ||
66 | { | ||
67 | m_Log.InfoFormat("[SERVER]: Requested port {0}", port); | ||
68 | if (port == m_Port) | ||
69 | return HttpServer; | ||
70 | |||
71 | if (m_Servers.ContainsKey(port)) | ||
72 | return m_Servers[port]; | ||
73 | |||
74 | m_Servers[port] = new BaseHttpServer(port); | ||
75 | |||
76 | m_Log.InfoFormat("[SERVER]: Starting new HTTP server on port {0}", port); | ||
77 | m_Servers[port].Start(); | ||
78 | |||
79 | return m_Servers[port]; | ||
80 | } | ||
81 | 48 | ||
82 | // Handle all the automagical stuff | 49 | // Handle all the automagical stuff |
83 | // | 50 | // |
@@ -94,19 +61,21 @@ namespace OpenSim.Server.Base | |||
94 | System.Console.WriteLine("Section 'Network' not found, server can't start"); | 61 | System.Console.WriteLine("Section 'Network' not found, server can't start"); |
95 | Thread.CurrentThread.Abort(); | 62 | Thread.CurrentThread.Abort(); |
96 | } | 63 | } |
64 | |||
97 | uint port = (uint)networkConfig.GetInt("port", 0); | 65 | uint port = (uint)networkConfig.GetInt("port", 0); |
98 | 66 | ||
99 | if (port == 0) | 67 | if (port == 0) |
100 | { | 68 | { |
101 | |||
102 | Thread.CurrentThread.Abort(); | 69 | Thread.CurrentThread.Abort(); |
103 | } | 70 | } |
104 | // | 71 | |
105 | bool ssl_main = networkConfig.GetBoolean("https_main",false); | 72 | bool ssl_main = networkConfig.GetBoolean("https_main",false); |
106 | bool ssl_listener = networkConfig.GetBoolean("https_listener",false); | 73 | bool ssl_listener = networkConfig.GetBoolean("https_listener",false); |
107 | 74 | ||
108 | m_consolePort = (uint)networkConfig.GetInt("ConsolePort", 0); | 75 | m_consolePort = (uint)networkConfig.GetInt("ConsolePort", 0); |
109 | m_Port = port; | 76 | |
77 | BaseHttpServer httpServer = null; | ||
78 | |||
110 | // | 79 | // |
111 | // This is where to make the servers: | 80 | // This is where to make the servers: |
112 | // | 81 | // |
@@ -118,8 +87,7 @@ namespace OpenSim.Server.Base | |||
118 | // | 87 | // |
119 | if ( !ssl_main ) | 88 | if ( !ssl_main ) |
120 | { | 89 | { |
121 | m_HttpServer = new BaseHttpServer(port); | 90 | httpServer = new BaseHttpServer(port); |
122 | |||
123 | } | 91 | } |
124 | else | 92 | else |
125 | { | 93 | { |
@@ -135,11 +103,12 @@ namespace OpenSim.Server.Base | |||
135 | System.Console.WriteLine("Password for X509 certificate is missing, server can't start."); | 103 | System.Console.WriteLine("Password for X509 certificate is missing, server can't start."); |
136 | Thread.CurrentThread.Abort(); | 104 | Thread.CurrentThread.Abort(); |
137 | } | 105 | } |
138 | m_HttpServer = new BaseHttpServer(port, ssl_main, cert_path, cert_pass); | 106 | |
107 | httpServer = new BaseHttpServer(port, ssl_main, cert_path, cert_pass); | ||
139 | } | 108 | } |
140 | 109 | ||
141 | MainServer.AddHttpServer(m_HttpServer); | 110 | MainServer.AddHttpServer(httpServer); |
142 | MainServer.Instance = m_HttpServer; | 111 | MainServer.Instance = httpServer; |
143 | 112 | ||
144 | // If https_listener = true, then add an ssl listener on the https_port... | 113 | // If https_listener = true, then add an ssl listener on the https_port... |
145 | if ( ssl_listener == true ) { | 114 | if ( ssl_listener == true ) { |
@@ -159,34 +128,23 @@ namespace OpenSim.Server.Base | |||
159 | Thread.CurrentThread.Abort(); | 128 | Thread.CurrentThread.Abort(); |
160 | } | 129 | } |
161 | 130 | ||
162 | m_Servers.Add(https_port, new BaseHttpServer(https_port, ssl_listener, cert_path, cert_pass)); | 131 | MainServer.AddHttpServer(new BaseHttpServer(https_port, ssl_listener, cert_path, cert_pass)); |
163 | } | 132 | } |
164 | } | 133 | } |
165 | 134 | ||
166 | protected override void Initialise() | 135 | protected override void Initialise() |
167 | { | 136 | { |
168 | m_Log.InfoFormat("[SERVER]: Starting HTTP server on port {0}", m_HttpServer.Port); | 137 | foreach (BaseHttpServer s in MainServer.Servers.Values) |
169 | m_HttpServer.Start(); | 138 | s.Start(); |
170 | |||
171 | if (m_Servers.Count > 0) | ||
172 | { | ||
173 | foreach (BaseHttpServer s in m_Servers.Values) | ||
174 | { | ||
175 | if (!s.UseSSL) | ||
176 | m_Log.InfoFormat("[SERVER]: Starting HTTP server on port {0}", s.Port); | ||
177 | else | ||
178 | m_Log.InfoFormat("[SERVER]: Starting HTTPS server on port {0}", s.Port); | ||
179 | 139 | ||
180 | s.Start(); | 140 | MainServer.RegisterHttpConsoleCommands(MainConsole.Instance); |
181 | } | ||
182 | } | ||
183 | 141 | ||
184 | if (MainConsole.Instance is RemoteConsole) | 142 | if (MainConsole.Instance is RemoteConsole) |
185 | { | 143 | { |
186 | if (m_consolePort == 0) | 144 | if (m_consolePort == 0) |
187 | ((RemoteConsole)MainConsole.Instance).SetServer(m_HttpServer); | 145 | ((RemoteConsole)MainConsole.Instance).SetServer(MainServer.Instance); |
188 | else | 146 | else |
189 | ((RemoteConsole)MainConsole.Instance).SetServer(GetHttpServer(m_consolePort)); | 147 | ((RemoteConsole)MainConsole.Instance).SetServer(MainServer.GetHttpServer(m_consolePort)); |
190 | } | 148 | } |
191 | } | 149 | } |
192 | } | 150 | } |
diff --git a/OpenSim/Server/ServerMain.cs b/OpenSim/Server/ServerMain.cs index 9503c4c..21fb678 100644 --- a/OpenSim/Server/ServerMain.cs +++ b/OpenSim/Server/ServerMain.cs | |||
@@ -30,6 +30,7 @@ using log4net; | |||
30 | using System.Reflection; | 30 | using System.Reflection; |
31 | using System; | 31 | using System; |
32 | using System.Collections.Generic; | 32 | using System.Collections.Generic; |
33 | using OpenSim.Framework.Servers; | ||
33 | using OpenSim.Framework.Servers.HttpServer; | 34 | using OpenSim.Framework.Servers.HttpServer; |
34 | using OpenSim.Server.Base; | 35 | using OpenSim.Server.Base; |
35 | using OpenSim.Server.Handlers.Base; | 36 | using OpenSim.Server.Handlers.Base; |
@@ -92,27 +93,24 @@ namespace OpenSim.Server | |||
92 | if (parts.Length > 1) | 93 | if (parts.Length > 1) |
93 | friendlyName = parts[1]; | 94 | friendlyName = parts[1]; |
94 | 95 | ||
95 | IHttpServer server = m_Server.HttpServer; | 96 | IHttpServer server; |
96 | if (port != 0) | ||
97 | server = m_Server.GetHttpServer(port); | ||
98 | 97 | ||
99 | if (port != m_Server.DefaultPort && port != 0) | 98 | if (port != 0) |
100 | m_log.InfoFormat("[SERVER]: Loading {0} on port {1}", friendlyName, port); | 99 | server = MainServer.GetHttpServer(port); |
101 | else | 100 | else |
102 | m_log.InfoFormat("[SERVER]: Loading {0}", friendlyName); | 101 | server = MainServer.Instance; |
102 | |||
103 | m_log.InfoFormat("[SERVER]: Loading {0} on port {1}", friendlyName, server.Port); | ||
103 | 104 | ||
104 | IServiceConnector connector = null; | 105 | IServiceConnector connector = null; |
105 | 106 | ||
106 | Object[] modargs = new Object[] { m_Server.Config, server, | 107 | Object[] modargs = new Object[] { m_Server.Config, server, configName }; |
107 | configName }; | 108 | connector = ServerUtils.LoadPlugin<IServiceConnector>(conn, modargs); |
108 | connector = ServerUtils.LoadPlugin<IServiceConnector>(conn, | 109 | |
109 | modargs); | ||
110 | if (connector == null) | 110 | if (connector == null) |
111 | { | 111 | { |
112 | modargs = new Object[] { m_Server.Config, server }; | 112 | modargs = new Object[] { m_Server.Config, server }; |
113 | connector = | 113 | connector = ServerUtils.LoadPlugin<IServiceConnector>(conn, modargs); |
114 | ServerUtils.LoadPlugin<IServiceConnector>(conn, | ||
115 | modargs); | ||
116 | } | 114 | } |
117 | 115 | ||
118 | if (connector != null) | 116 | if (connector != null) |
@@ -132,4 +130,4 @@ namespace OpenSim.Server | |||
132 | return 0; | 130 | return 0; |
133 | } | 131 | } |
134 | } | 132 | } |
135 | } | 133 | } \ No newline at end of file |
diff --git a/prebuild.xml b/prebuild.xml index d02f2b9..45f58c7 100644 --- a/prebuild.xml +++ b/prebuild.xml | |||
@@ -1385,6 +1385,7 @@ | |||
1385 | <Reference name="OpenMetaverse.StructuredData" path="../../bin/"/> | 1385 | <Reference name="OpenMetaverse.StructuredData" path="../../bin/"/> |
1386 | <Reference name="OpenSim.Framework"/> | 1386 | <Reference name="OpenSim.Framework"/> |
1387 | <Reference name="OpenSim.Framework.Console"/> | 1387 | <Reference name="OpenSim.Framework.Console"/> |
1388 | <Reference name="OpenSim.Framework.Servers"/> | ||
1388 | <Reference name="OpenSim.Framework.Servers.HttpServer"/> | 1389 | <Reference name="OpenSim.Framework.Servers.HttpServer"/> |
1389 | <Reference name="OpenSim.Server.Base"/> | 1390 | <Reference name="OpenSim.Server.Base"/> |
1390 | <Reference name="OpenSim.Server.Handlers"/> | 1391 | <Reference name="OpenSim.Server.Handlers"/> |