diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Util.cs | 5 | ||||
-rw-r--r-- | OpenSim/Server/Handlers/Web/WebServerInConnector.cs | 107 | ||||
-rw-r--r-- | bin/Robust.ini | 21 | ||||
-rw-r--r-- | bin/config-include/config_IG.ini | 23 | ||||
-rw-r--r-- | bin/config-include/config_MG.ini | 23 | ||||
-rw-r--r-- | bin/config-include/config_localhost.ini | 1 | ||||
-rw-r--r-- | example/config/config.ini | 2 | ||||
-rw-r--r-- | example/web/SledjHamr.png | bin | 0 -> 2025959 bytes | |||
-rw-r--r-- | example/web/about.html | 9 | ||||
-rw-r--r-- | example/web/help.html | 9 | ||||
-rw-r--r-- | example/web/loginpage.html | 24 | ||||
-rw-r--r-- | example/web/password_help.html | 9 | ||||
-rw-r--r-- | example/web/register.html | 11 |
13 files changed, 236 insertions, 8 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 18d6e4a..1afc5a4 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -1303,6 +1303,11 @@ namespace OpenSim.Framework | |||
1303 | return Path.Combine("..", "logs"); | 1303 | return Path.Combine("..", "logs"); |
1304 | } | 1304 | } |
1305 | 1305 | ||
1306 | public static string webDir() | ||
1307 | { | ||
1308 | return Path.Combine("..", Path.Combine("..", "web")); | ||
1309 | } | ||
1310 | |||
1306 | public static string logFile() | 1311 | public static string logFile() |
1307 | { | 1312 | { |
1308 | foreach (IAppender appender in LogManager.GetRepository().GetAppenders()) | 1313 | foreach (IAppender appender in LogManager.GetRepository().GetAppenders()) |
diff --git a/OpenSim/Server/Handlers/Web/WebServerInConnector.cs b/OpenSim/Server/Handlers/Web/WebServerInConnector.cs new file mode 100644 index 0000000..94c636f --- /dev/null +++ b/OpenSim/Server/Handlers/Web/WebServerInConnector.cs | |||
@@ -0,0 +1,107 @@ | |||
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 | |||
28 | using System; | ||
29 | using System.Collections; | ||
30 | using System.Collections.Generic; | ||
31 | using System.IO; | ||
32 | using System.Net; | ||
33 | using System.Reflection; | ||
34 | using System.Security; | ||
35 | using System.Text; | ||
36 | using log4net; | ||
37 | using OpenMetaverse; | ||
38 | using OpenMetaverse.StructuredData; | ||
39 | using Nini.Config; | ||
40 | using OpenSim.Framework; | ||
41 | using OpenSim.Framework.Servers.HttpServer; | ||
42 | using OpenSim.Server.Handlers.Base; | ||
43 | |||
44 | namespace OpenSim.Server.Handlers.Web | ||
45 | { | ||
46 | public class WebServerInConnector : ServiceConnector | ||
47 | { | ||
48 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
49 | private IConfigSource m_Config; | ||
50 | private Hashtable mime = new Hashtable(); | ||
51 | |||
52 | public WebServerInConnector(IConfigSource config, IHttpServer server, string configName) : base(config, server, configName) | ||
53 | { | ||
54 | m_Config = config; | ||
55 | mime.Add(".html", "text/html"); | ||
56 | mime.Add(".htm", "text/html"); | ||
57 | mime.Add(".shtml", "text/html"); | ||
58 | mime.Add(".txt", "text/plain"); | ||
59 | mime.Add(".css", "text/css"); | ||
60 | mime.Add(".js", "application/javascript"); | ||
61 | mime.Add(".png", "image/png"); | ||
62 | mime.Add(".jpeg", "image/jpeg"); | ||
63 | server.AddHTTPHandler("/web/", WebRequestHandler); | ||
64 | } | ||
65 | |||
66 | private Hashtable WebRequestHandler(Hashtable request) | ||
67 | { | ||
68 | Hashtable reply = new Hashtable(); | ||
69 | |||
70 | string reqpath = (string) request["uri"]; | ||
71 | string[] query = (string[]) request["querystringkeys"]; | ||
72 | Hashtable headers = (Hashtable) request["headers"]; | ||
73 | string method = (string) request["http-method"]; | ||
74 | string type = (string) request["content-type"]; | ||
75 | string body = (string) request["body"]; | ||
76 | string file = Path.Combine(Util.webDir(), reqpath.Remove(0, 5)); | ||
77 | |||
78 | reply["int_response_code"] = 200; | ||
79 | if (File.Exists(file)) | ||
80 | { | ||
81 | string m = (string) mime[Path.GetExtension(file)]; | ||
82 | reply["content_type"] = m; | ||
83 | if (("image/jpeg" == m) || ("image/png" == m)) | ||
84 | { | ||
85 | reply["bin_response_data"] = File.ReadAllBytes(file); | ||
86 | } | ||
87 | else | ||
88 | { | ||
89 | StreamReader csr = File.OpenText(file); | ||
90 | reply["str_response_string"] = csr.ReadToEnd(); | ||
91 | csr.Close(); | ||
92 | } | ||
93 | } | ||
94 | else | ||
95 | { | ||
96 | m_log.ErrorFormat("[WEB SERVICE]: Unable to read {0}.", file); | ||
97 | reply["int_response_code"] = 404; | ||
98 | reply["content_type"] = "text/html"; | ||
99 | reply["str_response_string"] = "<html><title>404 Unknown page</title><head></head><body bgcolor=\"black\" text=\"white\" alink=\"red\" link=\"blue\" vlink=\"purple\">" + | ||
100 | "404 error, can't find the " + reqpath + " page.<p> </p></body></html>"; | ||
101 | } | ||
102 | |||
103 | return reply; | ||
104 | } | ||
105 | |||
106 | } | ||
107 | } | ||
diff --git a/bin/Robust.ini b/bin/Robust.ini index 00ad2ca..ca5829c 100644 --- a/bin/Robust.ini +++ b/bin/Robust.ini | |||
@@ -87,6 +87,10 @@ | |||
87 | ;; Uncomment this if you want Groups V2, HG to work | 87 | ;; Uncomment this if you want Groups V2, HG to work |
88 | HGGroupsServiceConnector = "${Const|PublicPort}/OpenSim.Addons.Groups.dll:HGGroupsServiceRobustConnector" | 88 | HGGroupsServiceConnector = "${Const|PublicPort}/OpenSim.Addons.Groups.dll:HGGroupsServiceRobustConnector" |
89 | 89 | ||
90 | ;; Basic web server. | ||
91 | WebServerInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:WebServerInConnector" | ||
92 | |||
93 | |||
90 | ; * This is common for all services, it's the network setup for the entire | 94 | ; * This is common for all services, it's the network setup for the entire |
91 | ; * server instance, if none is specified above | 95 | ; * server instance, if none is specified above |
92 | ; * | 96 | ; * |
@@ -563,32 +567,32 @@ | |||
563 | 567 | ||
564 | ; login page: optional: if it exists it will be used to tell the client to use | 568 | ; login page: optional: if it exists it will be used to tell the client to use |
565 | ; this as splash page | 569 | ; this as splash page |
566 | welcome = ${Const|BaseURL}/drupal/loginpage | 570 | welcome = ${Const|BaseURL}:${Const|PublicPort}/web/loginpage.html |
567 | 571 | ||
568 | ; helper uri: optional: if it exists it will be used to tell the client to use | 572 | ; helper uri: optional: if it exists it will be used to tell the client to use |
569 | ; this for all economy related things | 573 | ; this for all economy related things |
570 | ;economy = ${Const|BaseURL}/economy | 574 | ;economy = ${Const|BaseURL}/economy |
571 | 575 | ||
572 | ; web page of grid: optional: page providing further information about your grid | 576 | ; web page of grid: optional: page providing further information about your grid |
573 | about = ${Const|BaseURL}/drupal/ | 577 | about = ${Const|BaseURL}:${Const|PublicPort}/web/about.html |
574 | 578 | ||
575 | ; account creation: optional: page providing further information about obtaining | 579 | ; account creation: optional: page providing further information about obtaining |
576 | ; a user account on your grid | 580 | ; a user account on your grid |
577 | register = ${Const|BaseURL}/drupal/content/How_to_join | 581 | register = ${Const|BaseURL}:${Const|PublicPort}/web/register.html |
578 | 582 | ||
579 | ; help: optional: page providing further assistance for users of your grid | 583 | ; help: optional: page providing further assistance for users of your grid |
580 | help = ${Const|BaseURL}/drupal/Tags/help | 584 | help = ${Const|BaseURL}:${Const|PublicPort}/web/help.html |
581 | 585 | ||
582 | ; password help: optional: page providing password assistance for users of your grid | 586 | ; password help: optional: page providing password assistance for users of your grid |
583 | password = ${Const|BaseURL}/drupal | 587 | password = ${Const|BaseURL}:${Const|PublicPort}/web/password_help.html |
584 | 588 | ||
585 | ; HG address of the gatekeeper, if you have one | 589 | ; HG address of the gatekeeper, if you have one |
586 | ; this is the entry point for all the regions of the world | 590 | ; this is the entry point for all the regions of the world |
587 | ; gatekeeper = ${Const|BaseURL}:${Const|PublicPort}/ | 591 | gatekeeper = ${Const|BaseURL}:${Const|PublicPort}/ |
588 | 592 | ||
589 | ; HG user domain, if you have one | 593 | ; HG user domain, if you have one |
590 | ; this is the entry point for all user-related HG services | 594 | ; this is the entry point for all user-related HG services |
591 | ; uas = ${Const|BaseURL}:${Const|PublicPort}/ | 595 | uas = ${Const|BaseURL}:${Const|PublicPort}/ |
592 | 596 | ||
593 | 597 | ||
594 | [GatekeeperService] | 598 | [GatekeeperService] |
@@ -783,3 +787,6 @@ | |||
783 | 787 | ||
784 | [MuteListService] | 788 | [MuteListService] |
785 | LocalServiceModule = "OpenSim.Services.MuteListService.dll:MuteListService" | 789 | LocalServiceModule = "OpenSim.Services.MuteListService.dll:MuteListService" |
790 | |||
791 | |||
792 | [WebService] | ||
diff --git a/bin/config-include/config_IG.ini b/bin/config-include/config_IG.ini index abe159b..81c5c9d 100644 --- a/bin/config-include/config_IG.ini +++ b/bin/config-include/config_IG.ini | |||
@@ -18,6 +18,7 @@ | |||
18 | ConfigPath = "../../config" | 18 | ConfigPath = "../../config" |
19 | DbPath = "../../db" | 19 | DbPath = "../../db" |
20 | LogPath = "../../logs" | 20 | LogPath = "../../logs" |
21 | WebPath = "../../web" | ||
21 | 22 | ||
22 | [Const] | 23 | [Const] |
23 | MOTD = "onefang needs a little coding or sysadmin work to keep IG going. Please help me find some." | 24 | MOTD = "onefang needs a little coding or sysadmin work to keep IG going. Please help me find some." |
@@ -77,3 +78,25 @@ | |||
77 | Region_Welcome = "DefaultRegion, FallbackRegion, Persistent" | 78 | Region_Welcome = "DefaultRegion, FallbackRegion, Persistent" |
78 | Region_Sandbox = "DefaultRegion, FallbackRegion, Persistent" | 79 | Region_Sandbox = "DefaultRegion, FallbackRegion, Persistent" |
79 | Region_Kellietown = "DefaultRegion, FallbackRegion, Persistent" | 80 | Region_Kellietown = "DefaultRegion, FallbackRegion, Persistent" |
81 | |||
82 | [GridInfoService] | ||
83 | ; login page: optional: if it exists it will be used to tell the client to use | ||
84 | ; this as splash page | ||
85 | welcome = ${Const|BaseURL}/drupal/loginpage | ||
86 | |||
87 | ; helper uri: optional: if it exists it will be used to tell the client to use | ||
88 | ; this for all economy related things | ||
89 | ;economy = ${Const|BaseURL}/economy | ||
90 | |||
91 | ; web page of grid: optional: page providing further information about your grid | ||
92 | about = ${Const|BaseURL}/drupal/ | ||
93 | |||
94 | ; account creation: optional: page providing further information about obtaining | ||
95 | ; a user account on your grid | ||
96 | register = ${Const|BaseURL}/drupal/content/How_to_join | ||
97 | |||
98 | ; help: optional: page providing further assistance for users of your grid | ||
99 | help = ${Const|BaseURL}/drupal/Tags/help | ||
100 | |||
101 | ; password help: optional: page providing password assistance for users of your grid | ||
102 | password = ${Const|BaseURL}/drupal | ||
diff --git a/bin/config-include/config_MG.ini b/bin/config-include/config_MG.ini index a8992f8..62b523c 100644 --- a/bin/config-include/config_MG.ini +++ b/bin/config-include/config_MG.ini | |||
@@ -18,6 +18,7 @@ | |||
18 | ConfigPath = "../../config" | 18 | ConfigPath = "../../config" |
19 | DbPath = "../../db" | 19 | DbPath = "../../db" |
20 | LogPath = "../../logs" | 20 | LogPath = "../../logs" |
21 | WebPath = "../../web" | ||
21 | 22 | ||
22 | [Const] | 23 | [Const] |
23 | MOTD = "All of the World is a Stage, and Everyone's a Critic." | 24 | MOTD = "All of the World is a Stage, and Everyone's a Critic." |
@@ -98,3 +99,25 @@ | |||
98 | Region_MisFitz_HyperPort = "FallbackRegion" | 99 | Region_MisFitz_HyperPort = "FallbackRegion" |
99 | Region_MisFitz_Sandbox = "FallbackRegion" | 100 | Region_MisFitz_Sandbox = "FallbackRegion" |
100 | Region_MisFitz_Continuum= "DefaultHGRegion" | 101 | Region_MisFitz_Continuum= "DefaultHGRegion" |
102 | |||
103 | [GridInfoService] | ||
104 | ; login page: optional: if it exists it will be used to tell the client to use | ||
105 | ; this as splash page | ||
106 | welcome = ${Const|jOpensimURL}/index.php?option=com_opensim | ||
107 | |||
108 | ; helper uri: optional: if it exists it will be used to tell the client to use | ||
109 | ; this for all economy related things | ||
110 | economy = ${Const|BaseURL}/_tools/helper/ | ||
111 | |||
112 | ; web page of grid: optional: page providing further information about your grid | ||
113 | ;about = ${Const|BaseURL}/about | ||
114 | |||
115 | ; account creation: optional: page providing further information about obtaining | ||
116 | ; a user account on your grid | ||
117 | ;register = ${Const|BaseURL}/register | ||
118 | |||
119 | ; help: optional: page providing further assistance for users of your grid | ||
120 | ;help = ${Const|BaseURL}/help | ||
121 | |||
122 | ; password help: optional: page providing password assistance for users of your grid | ||
123 | ;password = ${Const|BaseURL}/password | ||
diff --git a/bin/config-include/config_localhost.ini b/bin/config-include/config_localhost.ini index 9959ae1..e95b04c 100644 --- a/bin/config-include/config_localhost.ini +++ b/bin/config-include/config_localhost.ini | |||
@@ -18,6 +18,7 @@ | |||
18 | ConfigPath = "../../config" | 18 | ConfigPath = "../../config" |
19 | DbPath = "../../db" | 19 | DbPath = "../../db" |
20 | LogPath = "../../logs" | 20 | LogPath = "../../logs" |
21 | WebPath = "../../web" | ||
21 | 22 | ||
22 | [Const] | 23 | [Const] |
23 | MOTD = "Welcome to your local grid." | 24 | MOTD = "Welcome to your local grid." |
diff --git a/example/config/config.ini b/example/config/config.ini index 7efdb44..e95b04c 100644 --- a/example/config/config.ini +++ b/example/config/config.ini | |||
@@ -18,7 +18,7 @@ | |||
18 | ConfigPath = "../../config" | 18 | ConfigPath = "../../config" |
19 | DbPath = "../../db" | 19 | DbPath = "../../db" |
20 | LogPath = "../../logs" | 20 | LogPath = "../../logs" |
21 | 21 | WebPath = "../../web" | |
22 | 22 | ||
23 | [Const] | 23 | [Const] |
24 | MOTD = "Welcome to your local grid." | 24 | MOTD = "Welcome to your local grid." |
diff --git a/example/web/SledjHamr.png b/example/web/SledjHamr.png new file mode 100644 index 0000000..1660a90 --- /dev/null +++ b/example/web/SledjHamr.png | |||
Binary files differ | |||
diff --git a/example/web/about.html b/example/web/about.html new file mode 100644 index 0000000..e45f00a --- /dev/null +++ b/example/web/about.html | |||
@@ -0,0 +1,9 @@ | |||
1 | <html> | ||
2 | <title>About this grid</title> | ||
3 | <head> | ||
4 | </head> | ||
5 | <body bgcolor="black" text="white" alink="red" link="blue" vlink="purple"> | ||
6 | This is a virtual world, usually called a grid, based on <a href="https://sledjhamr.org/cgit/opensim-SC/?h=SledjChisl">OpenSim_SC</a>. | ||
7 | <p> </p> | ||
8 | </body> | ||
9 | </html> | ||
diff --git a/example/web/help.html b/example/web/help.html new file mode 100644 index 0000000..64194ca --- /dev/null +++ b/example/web/help.html | |||
@@ -0,0 +1,9 @@ | |||
1 | <html> | ||
2 | <title>Help for this grid</title> | ||
3 | <head> | ||
4 | </head> | ||
5 | <body bgcolor="black" text="white" alink="red" link="blue" vlink="purple"> | ||
6 | Include help for your grid here. | ||
7 | <p> </p> | ||
8 | </body> | ||
9 | </html> | ||
diff --git a/example/web/loginpage.html b/example/web/loginpage.html new file mode 100644 index 0000000..aa58e6b --- /dev/null +++ b/example/web/loginpage.html | |||
@@ -0,0 +1,24 @@ | |||
1 | <html> | ||
2 | <title>This grid</title> | ||
3 | <head> | ||
4 | </head> | ||
5 | <body bgcolor="black" text="white" alink="red" link="blue" vlink="purple" background="SledjHamr.png"> | ||
6 | <p> </p> | ||
7 | <p> </p> | ||
8 | <h1>Add your fancy splash page for your grid here.</h1> | ||
9 | <p> </p> | ||
10 | <p> </p> | ||
11 | <p>There may be some new members. Welcome new members.</p> | ||
12 | <p> </p> | ||
13 | <p>There are likely some members of this grid.</p> | ||
14 | <p> </p> | ||
15 | <p>There maybe some people online now.</p> | ||
16 | <p> </p> | ||
17 | <p>There maybe some visitors from the hypergrid.</p> | ||
18 | <p> </p> | ||
19 | <p>There is probably at least one region, maybe more.</p> | ||
20 | <p> </p> | ||
21 | <p>Some people might have been on in the last month.</p> | ||
22 | <p> </p> | ||
23 | </body> | ||
24 | </html> | ||
diff --git a/example/web/password_help.html b/example/web/password_help.html new file mode 100644 index 0000000..129fb7d --- /dev/null +++ b/example/web/password_help.html | |||
@@ -0,0 +1,9 @@ | |||
1 | <html> | ||
2 | <title>Password help for this grid</title> | ||
3 | <head> | ||
4 | </head> | ||
5 | <body bgcolor="black" text="white" alink="red" link="blue" vlink="purple"> | ||
6 | Include password help for your grid here. | ||
7 | <p> </p> | ||
8 | </body> | ||
9 | </html> | ||
diff --git a/example/web/register.html b/example/web/register.html new file mode 100644 index 0000000..a316f41 --- /dev/null +++ b/example/web/register.html | |||
@@ -0,0 +1,11 @@ | |||
1 | <html> | ||
2 | <title>Account for this grid</title> | ||
3 | <head> | ||
4 | </head> | ||
5 | <body bgcolor="black" text="white" alink="red" link="blue" vlink="purple"> | ||
6 | Include account registration help for your grid here. | ||
7 | <p> </p> | ||
8 | <p>If you want to register an acocunt on this grid, ask the person that runs it to do that for you.</p> | ||
9 | <p> </p> | ||
10 | </body> | ||
11 | </html> | ||