<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FrankWSweet</id>
		<title>OpenSimulator - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FrankWSweet"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Special:Contributions/FrankWSweet"/>
		<updated>2026-05-11T07:28:24Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/wiki/Public_Hypergrid_Nodes</id>
		<title>Public Hypergrid Nodes</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Public_Hypergrid_Nodes"/>
				<updated>2009-04-01T15:25:47Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: Removed Backintyme sims&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
![[Hypergrid|link-region server and port]]&lt;br /&gt;
!Organization&lt;br /&gt;
!Description&lt;br /&gt;
!Grid Location&lt;br /&gt;
|-&lt;br /&gt;
|'''osl2.nac.uci.edu:9006'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''osl3.nac.uci.edu:9000'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The &amp;quot;UC Irvine&amp;quot; region connected to OSGrid, neighboring Wright Plaza. You can link to it as a way to link to OSGrid.&lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid02.nacs.uci.edu:9000'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid&lt;br /&gt;
|UCIGrid is centered at 8,888, 8,888&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid04.nacs.uci.edu:9003'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid, region &amp;quot;Gateway 3000&amp;quot;. Link your lower-1,000's grid to this node in order to bridge to grids in the 10,000's.&lt;br /&gt;
|This node is positioned at 3,000, 3,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid04.nacs.uci.edu:9007'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid, region &amp;quot;Gateway 7000&amp;quot;. Link your 10,000's grid to this node in order to bridge to grids in the lower-1,000's.&lt;br /&gt;
|This node is positioned at 7,000, 7,000. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''grid.cyberlandia.net:9000'''&lt;br /&gt;
|Cyberlandia&lt;br /&gt;
|The &amp;quot;Cyberlandia Gw&amp;quot; region. http://www.cyberlandia.net Metaverso italiano 3D, more to 250 region and 1000 users. You can link to it as a way to link to Cyberlandia. &lt;br /&gt;
|Cyberlandia is centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''hypergrid.cyberlandia.net:9000'''&lt;br /&gt;
|Cyberlandia &lt;br /&gt;
|The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net. Search on map &amp;quot;Cyberlandia grid&amp;quot; You can link to it as a way to link to OSGrid.  &lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''regionsde.ralf-haifisch.biz:9000'''&lt;br /&gt;
|Ralf Haifisch on osgrid&lt;br /&gt;
|The &amp;quot;Sharkland Tropical&amp;quot; region connected to OSGrid. German welcome aerea, Freebie aerea, region rental, pretty tropical regions  &lt;br /&gt;
|Centered at 10000,10000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''joomla-italia.net:9000'''&lt;br /&gt;
|Social Network Italia&lt;br /&gt;
|The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World,Francogrid and Darwin  &lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''collateral.opensim-italia.net:9000'''&lt;br /&gt;
|Part of Social Network Italia&lt;br /&gt;
|Collateral World &lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''88.191.79.199:9050'''&lt;br /&gt;
|Francogrid&lt;br /&gt;
|Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot; &lt;br /&gt;
|Centered at 1000 1000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''94.23.8.158:9300'''&lt;br /&gt;
|Le Monde de Darwin&lt;br /&gt;
|The Lost World of Darwin http://www.LeMondedeDarwin.com. [[Image:hypergrid.jpg|200px]]&lt;br /&gt;
|Centered at 1000 1000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''sg.k-grid.com:9000'''&lt;br /&gt;
|K-Grid&lt;br /&gt;
|The Kool grid for the Kool KidZ . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump. Adress updated 02/07/09  &lt;br /&gt;
|This node is located at 3700,3700 &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''metropolis.hypergrid.org:9000'''&lt;br /&gt;
|METROPOLIS-Grid&lt;br /&gt;
|The Region &amp;quot;Center-World&amp;quot; connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting. Connected via HG to the most of the Grids listed here &lt;br /&gt;
|Centered at 6000,6000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ascent.bluewallgroup.com:9910'''&lt;br /&gt;
|BlueWall Group&lt;br /&gt;
|This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the (2000,2000) range, or any region within 4096 units. [[Image:Hypernaut 001.png|150px|none|thumb|Get your Hypernaut here :)]]&lt;br /&gt;
|Centered at 6000,6000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''24.248.172.208:9005'''&lt;br /&gt;
|'''MyOpenGrid'''&lt;br /&gt;
|Myopengrid is connected to osl2.nac.uci.edu &amp;quot;Osgrid Gateway&amp;quot; and 88.191.79.199 9050 &amp;quot;Franco Grid&amp;quot;&lt;br /&gt;
|Centered at 7000,7000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''cuonsim1.de:9300'''&lt;br /&gt;
|Cuon-Grid&lt;br /&gt;
|Cuon-Grid is a little grid and has some Main Sims with linux themes, server are in Germany. To login in to the grid use this http://sim-linuxmain.org:8081/CuonGrid/index.html. There are free sims for testing. &lt;br /&gt;
|Centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''metaversesims.net:9000'''&lt;br /&gt;
|Metaverse Sims&lt;br /&gt;
|Standalone mode - 6 regions - linked to several other grids. [[Image:Mtvs09010101.jpg|200px]]&lt;br /&gt;
|Centered at 9000, 9000&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
|-&lt;br /&gt;
|'''ellis.pseudospace.net:9000'''&lt;br /&gt;
|Pseudospace Central Gateway &amp;amp; Welcome Center &lt;br /&gt;
|Pseudospace is a free to play, public access OpenSimulator grid created to provide role players with an immersive environment by which they may play, socialize, and build within.  This is a mature grid which may contain adult content and situations, only those who are 18 or older may enter.&lt;br /&gt;
&lt;br /&gt;
Please be advised, that we are currently under heavy construction. Feel free to look around, but mind the mess and the occasional flying prims! If you have any questions or concerns please feel free to email john(at)pseudospace(dot)net.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All user content such as skins, attachments, textures, etc. are provided for free using a share and share alike, create for the sake of creativity methodology.  All such assets are kept within the content library on Ellis Island and are freely copyable / distributable unless the &amp;quot;No Transfer&amp;quot; option is enabled which simply means that the asset may not be copied off of the grid.  Individual contributions to the grid's content library are greatly welcomed and may be done so by leaving a copyable box containing your contribution on one of the shelves located inside the Ellis Library.&lt;br /&gt;
&lt;br /&gt;
| 9000 9000&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ellis.pseudospace.net:9009'''&lt;br /&gt;
|Pseudospace Lost Gateway &lt;br /&gt;
|Gateway on Pseudospace grid for regions within the 5000x5000 range. - See above description for grid info.&lt;br /&gt;
| 5000 5000&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|'''grid4us.net:9020'''&lt;br /&gt;
|Grid4Us&lt;br /&gt;
|German Grid that is linked to OSGrid and Francogrid.&lt;br /&gt;
|Centered at 8500,8500&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|'''87.230.89.74:9000 '''&lt;br /&gt;
|SCHWARZE WELT&lt;br /&gt;
| inworld location of www.schwarze-welle.de , the maybe biggest dark music streaming readio&lt;br /&gt;
| 100000 10000&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
|'''peak.sciencesim.com:9001'''&lt;br /&gt;
|ScienceSim&lt;br /&gt;
|[http://www.sciencesim.com/ ScienceSim] is a virtual world created for the high performance computing community for scientific visualizations, a number of interesting real world terrains (Mt St Helens and Yellowstone Park) and some astronomical simulations. And some useful, BSD-licensed content.&lt;br /&gt;
| Centered at 10000,10000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''meanduland.com:9124'''&lt;br /&gt;
|Meanduland&lt;br /&gt;
|[http://www.meanduland.com] is a residentual only sim offering beautiful regions with low lag and friendly neighbors. Located on the hypergrid to allow easy access to OSGrid. Links to the most popular OS grids available in our Welcome Island. This grid is up 24/7 and all are welcome to drop in and and look around. If you have trouble connecting, please contact Frank Northmead or Ayana Northmead and let us know so we can help fix the problem.&lt;br /&gt;
| Centered at 8000,8000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''alpha.bubblecloud.org:9000'''&lt;br /&gt;
|Bubble Cloud&lt;br /&gt;
|The alpha 00 is the entrance area to bubble cloud grid. Bubble cloud is test grid where anyone can experiment. If you build something please do it in medieval fantasy setting for others to enjoy.&lt;br /&gt;
|Centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''opensim.mydyn.de:9090'''&lt;br /&gt;
|OpenSIM.de&lt;br /&gt;
|[http://www.opensim.de OpenSim.de], 4 Server (Linux/Windows), hypergrided standalones, 16 Regions, German Users (Deutsche Benutzer), Live-Support, IRC-Gateway, Wiki, FAQ, Howto´s, Downloads. Connected to most of the Grids and some hypergrided standalones.&lt;br /&gt;
|Centered at 4400,4400&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''64.150.180.188:9031'''&lt;br /&gt;
|Virtual World Trade Center&lt;br /&gt;
|[http://PleasurePlanet.net], The VWTC. A repository for freebie items to share with the OS community. Weekly oar files will be made freely available on 4shared.com.&lt;br /&gt;
|VWTC is at 3003, 3003&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''jamland.de:9300'''&lt;br /&gt;
|Grid Jamland&lt;br /&gt;
|[http://Jamland.de], German Grid .. 9 regions with Sandbox (Jamland5) Fort (Jamland11)&lt;br /&gt;
|Centered at 8000, 8000&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Hypergrid]]&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Talk:Hypergrid</id>
		<title>Talk:Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Talk:Hypergrid"/>
				<updated>2009-02-03T17:54:32Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: /* Alternative Architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Diva says:'''&lt;br /&gt;
&lt;br /&gt;
== Some thoughts on how to go about inventory security ==&lt;br /&gt;
&lt;br /&gt;
These thoughts pertain to the problem of inventory security only, not to the other issue of potential property piracy after a sale.&lt;br /&gt;
&lt;br /&gt;
The very first decision point is whether we want to continue to be compatible with Linden Lab's official viewer or whether we should start looking for alternative viewers that are more in sync with where OpenSim is going. Here's why.&lt;br /&gt;
&lt;br /&gt;
Technically, the viewer plays a leading role in this story. Linden Lab's architecture has the viewer always contact the regions for inventory asset downloads. I'm not sure why they did this, but that's how things are. By doing this, there is implicitly a trust relation between the viewer and the region with respect to assets: the viewer requests the inventory assets to the region which, in turn, fetches them from the asset server and then sends them to the viewer; the user trusts that the region is not going to steal or delete or infect those inventory assets. This works well in closed systems like Linden Lab's, but it's terrible for open systems, where different regions are controlled by different people. We really can't trust the regions in general!&lt;br /&gt;
&lt;br /&gt;
=== Alternative Architecture ===&lt;br /&gt;
&lt;br /&gt;
The obvious alternative to that is to have the viewer contact the inventory/asset server(s) directly for all operations related to inventory manipulation, without having the region in between. This would solve *all* the inventory security issues we face by abiding to LL's architecture. Granted, this is a radical architectural change, and I'm not even sure I can foresee all the consequences. It's just makes a lot of sense to me, intuitively. Regions should never be trusted with the users' confidential data, and the viewer should be a hub for interaction with lots of servers that the user needs to interact with. The region should stay out of it.&lt;br /&gt;
:This solution makes two unjustified assumptions. (1) All regions are on a grid with a separate asset server. (2) Grid assets servers are trustworthy. The first assumption ignores the proliferation of standalone sims with built-in asset servers, unconnected to any grid. That the metaverse will come more and more to resemble the anarchy of websites may disturb some. But that is what is happening, like it or not. The second assumption is also false, as demonstrated by Linden Labs. I, like many former SL users, was ripped off by Linden Lab's policy changes depriving me of paid-up (openspace) land and months of construction labor without even refunding my initial fee. Never again will I or others like me trust anyone else with the fruits of my labor. My assets will always remain in my possession on my own asset server. As the Scots put it, &amp;quot;Fool me once, shame on you, fool me twice....&amp;quot; [[User:FrankWSweet|Frank W Sweet]] 17:51, 3 February 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Back to Reality ===&lt;br /&gt;
&lt;br /&gt;
OK, so that probably won't happen any time soon, not in the official LL viewer, and not in all the other derivative viewers out there (anyone wants to prove me wrong? I would love that! :-). What's the next best thing?&lt;br /&gt;
&lt;br /&gt;
* An extra flag in the item's Properties indicating that the item is to be shared with foreign regions. In this case the inventory server can selectively send the user's inventory to the foreign regions, sending only those item marked with that flag. This requires a small change in the viewer to add that extra flag and send out the corresponding bit in a message to the inventory server. However, we need to figure out a way to coerce the viewer to make that contact to the inventory server directly without going through the region, otherwise the region may just flip the bit; we're not sure how to do this.&lt;br /&gt;
&lt;br /&gt;
* A coarse-grained selection via the concept of Suitcase (explained [[Hypergrid_Inventory_Access | here]]). This is the simplest thing to do, it doesn't require any changes to the viewer.&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Talk:Hypergrid</id>
		<title>Talk:Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Talk:Hypergrid"/>
				<updated>2009-02-03T17:51:25Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: /* Alternative Architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Diva says:'''&lt;br /&gt;
&lt;br /&gt;
== Some thoughts on how to go about inventory security ==&lt;br /&gt;
&lt;br /&gt;
These thoughts pertain to the problem of inventory security only, not to the other issue of potential property piracy after a sale.&lt;br /&gt;
&lt;br /&gt;
The very first decision point is whether we want to continue to be compatible with Linden Lab's official viewer or whether we should start looking for alternative viewers that are more in sync with where OpenSim is going. Here's why.&lt;br /&gt;
&lt;br /&gt;
Technically, the viewer plays a leading role in this story. Linden Lab's architecture has the viewer always contact the regions for inventory asset downloads. I'm not sure why they did this, but that's how things are. By doing this, there is implicitly a trust relation between the viewer and the region with respect to assets: the viewer requests the inventory assets to the region which, in turn, fetches them from the asset server and then sends them to the viewer; the user trusts that the region is not going to steal or delete or infect those inventory assets. This works well in closed systems like Linden Lab's, but it's terrible for open systems, where different regions are controlled by different people. We really can't trust the regions in general!&lt;br /&gt;
&lt;br /&gt;
=== Alternative Architecture ===&lt;br /&gt;
&lt;br /&gt;
The obvious alternative to that is to have the viewer contact the inventory/asset server(s) directly for all operations related to inventory manipulation, without having the region in between. This would solve *all* the inventory security issues we face by abiding to LL's architecture. Granted, this is a radical architectural change, and I'm not even sure I can foresee all the consequences. It's just makes a lot of sense to me, intuitively. Regions should never be trusted with the users' confidential data, and the viewer should be a hub for interaction with lots of servers that the user needs to interact with. The region should stay out of it.&lt;br /&gt;
:This solution makes two unjustified assumptions. (1) All regions are on a grid with a separate asset server. (2) Grid assets servers are trustworthy. The first assumption ignores the proliferation of standalone sims with built-in asset servers, unconnected to any grid. That the metaverse will come more and more to resemble the anarchy of websites may disturb some. But that is what is happening, like it or not. The second assumption is also false, as demonstrated by Linden Labs. I, like many former SL users, was ripped off by Linden Lab's policy changes depriving me of paid-up (openspace) land and months of construction labor without even refunding my initial fee. Never again will I or others like me trust anyone else with the fruits of my labor. My assets will always remain on my own standalone asset server. As the Scots put it, &amp;quot;Fool me once, shame on you, fool me twice....&amp;quot; [[User:FrankWSweet|Frank W Sweet]] 17:51, 3 February 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Back to Reality ===&lt;br /&gt;
&lt;br /&gt;
OK, so that probably won't happen any time soon, not in the official LL viewer, and not in all the other derivative viewers out there (anyone wants to prove me wrong? I would love that! :-). What's the next best thing?&lt;br /&gt;
&lt;br /&gt;
* An extra flag in the item's Properties indicating that the item is to be shared with foreign regions. In this case the inventory server can selectively send the user's inventory to the foreign regions, sending only those item marked with that flag. This requires a small change in the viewer to add that extra flag and send out the corresponding bit in a message to the inventory server. However, we need to figure out a way to coerce the viewer to make that contact to the inventory server directly without going through the region, otherwise the region may just flip the bit; we're not sure how to do this.&lt;br /&gt;
&lt;br /&gt;
* A coarse-grained selection via the concept of Suitcase (explained [[Hypergrid_Inventory_Access | here]]). This is the simplest thing to do, it doesn't require any changes to the viewer.&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/OSSL_Implemented</id>
		<title>OSSL Implemented</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/OSSL_Implemented"/>
				<updated>2009-02-03T16:50:52Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=1 style=&amp;quot;border-collapse:collapse;th background-color:#666;width:100%;text-align:left;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Function&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Explanation&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Examples&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Threat Level&lt;br /&gt;
|-&lt;br /&gt;
| string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int refreshTimer);&lt;br /&gt;
| Loads a web texture on a prim. Should work for any image URL (including php scripts) that Opensim can render. [Note refreshTimer may not yet be implemented, use a timer event and recall the function to get  the same effect]&lt;br /&gt;
| [[osSetDynamicTextureURL_example1|example 1]]&lt;br /&gt;
[[osSetDynamictextureURL_example2|example 2]]&lt;br /&gt;
| VeryLow&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osSetDynamicTextureData(&amp;quot;&amp;quot;, &amp;quot;vector&amp;quot;, drawList, &amp;quot;1024&amp;quot;, 0);&lt;br /&gt;
| Writes text and vector graphics onto a prim face. See list of implemented [[OSSL_TextureDrawing|Functions]]. NOTE:As of r8206 (above v0.6.2) width,height and alpha value can be passed e.g.  osSetDynamicTextureData(&amp;quot;&amp;quot;, &amp;quot;vector&amp;quot;, drawList, &amp;quot;width:64,height:1024:alpha:0&amp;quot;, 0);&lt;br /&gt;
| [[osSetDynamicdata_example1|example 1]]&lt;br /&gt;
| VeryLow&lt;br /&gt;
|-&lt;br /&gt;
| double osTerrainGetHeight(int x, int y);&lt;br /&gt;
| Gets height of terrain&lt;br /&gt;
|&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| int osTerrainSetHeight(int x, int y);&lt;br /&gt;
| Sets height of terrain&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| int osRegionRestart(double seconds);&lt;br /&gt;
| Restarts the region&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| void osRegionNotice(string msg);&lt;br /&gt;
| Sends a notice to the region&lt;br /&gt;
|&lt;br /&gt;
| VeryHigh&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| System.Collections.Hashtable osParseJSON(string JSON);&lt;br /&gt;
| returns a hashtable containing the structured JSON contents (c# only)&lt;br /&gt;
| [[osParseJSON_example1|example 1]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osMessageObject(key objectId, string message);&lt;br /&gt;
| sends a string to the object identified by objectId, the receiving object requires to implement the method dataserver( key queryid, string data ) in a contained script(s). The queryid passed will be the id of the calling object.&lt;br /&gt;
|&lt;br /&gt;
| Low&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osTeleportAgent(key agentId, string regionName, vector position, vector lookAt);&lt;br /&gt;
| Teleports agent ''agentId'' to region ''regionName'', region-local position ''position'', with looking direction ''lookAt'' without asking the user first (in contrast to ''llMapDestination''). This function works only in scripts '''owned by''' the region's master-avatar.&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osTeleportAgent(key agentId, vector position, vector lookAt);&lt;br /&gt;
| Teleports agent ''agentId'' to position ''position'' in the same region, with looking direction ''lookAt'' without asking the user first (in contrast to ''llMapDestination''). This function works only in scripts '''owned by''' the region's master-avatar.&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osConsoleCommand(string command);&lt;br /&gt;
| Issues command as if from the server console. &amp;quot;Severe&amp;quot; threat level. Eg.: osConsoleCommand(&amp;quot;link-region X Y URL port&amp;quot;).&lt;br /&gt;
|&lt;br /&gt;
| Severe&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osMakeNotecard(string cardname, list cardlines);&lt;br /&gt;
| Writes a new notecard into the containing prim's inventory. The list parameter may contain only strings. Eg.: osMakeNotecard(&amp;quot;new card&amp;quot;, [&amp;quot;line-1&amp;quot;, &amp;quot;line-2&amp;quot;, &amp;quot;line-3&amp;quot;]).&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
[[Category:Users]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/OSSL_Implemented</id>
		<title>OSSL Implemented</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/OSSL_Implemented"/>
				<updated>2009-02-03T16:30:30Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=1 style=&amp;quot;border-collapse:collapse;th background-color:#666;width:100%;text-align:left;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Function&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Explanation&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Examples&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Threat Level&lt;br /&gt;
|-&lt;br /&gt;
| string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int refreshTimer);&lt;br /&gt;
| Loads a web texture on a prim. Should work for any image URL (including php scripts) that Opensim can render. [Note refreshTimer may not yet be implemented, use a timer event and recall the function to get  the same effect]&lt;br /&gt;
| [[osSetDynamicTextureURL_example1|example 1]]&lt;br /&gt;
[[osSetDynamictextureURL_example2|example 2]]&lt;br /&gt;
| VeryLow&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osSetDynamicTextureData(&amp;quot;&amp;quot;, &amp;quot;vector&amp;quot;, drawList, &amp;quot;1024&amp;quot;, 0);&lt;br /&gt;
| Writes text and vector graphics onto a prim face. See list of implemented [[OSSL_TextureDrawing|Functions]]. NOTE:As of r8206 (above v0.6.2) width,height and alpha value can be passed e.g.  osSetDynamicTextureData(&amp;quot;&amp;quot;, &amp;quot;vector&amp;quot;, drawList, &amp;quot;width:64,height:1024:alpha:0&amp;quot;, 0);&lt;br /&gt;
| [[osSetDynamicdata_example1|example 1]]&lt;br /&gt;
| VeryLow&lt;br /&gt;
|-&lt;br /&gt;
| double osTerrainGetHeight(int x, int y);&lt;br /&gt;
| Gets height of terrain&lt;br /&gt;
|&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| int osTerrainSetHeight(int x, int y);&lt;br /&gt;
| Sets height of terrain&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| int osRegionRestart(double seconds);&lt;br /&gt;
| Restarts the region&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| void osRegionNotice(string msg);&lt;br /&gt;
| Sends a notice to the region&lt;br /&gt;
|&lt;br /&gt;
| VeryHigh&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| System.Collections.Hashtable osParseJSON(string JSON);&lt;br /&gt;
| returns a hashtable containing the structured JSON contents (c# only)&lt;br /&gt;
| [[osParseJSON_example1|example 1]]&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osMessageObject(key objectId, string message);&lt;br /&gt;
| sends a string to the object identified by objectId, the receiving object requires to implement the method dataserver( key queryid, string data ) in a contained script(s). The queryid passed will be the id of the calling object.&lt;br /&gt;
|&lt;br /&gt;
| Low&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osTeleportAgent(key agentId, string regionName, vector position, vector lookAt);&lt;br /&gt;
| Teleports agent ''agentId'' to region ''regionName'', region-local position ''position'', with looking direction ''lookAt'' without asking the user first (in contrast to ''llMapDestination''). This function works only in scripts '''created by''' the region's master-avatar.&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osTeleportAgent(key agentId, vector position, vector lookAt);&lt;br /&gt;
| Teleports agent ''agentId'' to position ''position'' in the same region, with looking direction ''lookAt'' without asking the user first (in contrast to ''llMapDestination''). This function works only in scripts '''created by''' the region's master-avatar.&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osConsoleCommand(string command);&lt;br /&gt;
| Issues command as if from the server console. &amp;quot;Severe&amp;quot; threat level. Eg.: osConsoleCommand(&amp;quot;link-region X Y URL port&amp;quot;).&lt;br /&gt;
|&lt;br /&gt;
| Severe&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osMakeNotecard(string cardname, list cardlines);&lt;br /&gt;
| Writes a new notecard into the containing prim's inventory. The list parameter may contain only strings. Eg.: osMakeNotecard(&amp;quot;new card&amp;quot;, [&amp;quot;line-1&amp;quot;, &amp;quot;line-2&amp;quot;, &amp;quot;line-3&amp;quot;]).&lt;br /&gt;
|&lt;br /&gt;
| High&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
[[Category:Users]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Public_Hypergrid_Nodes</id>
		<title>Public Hypergrid Nodes</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Public_Hypergrid_Nodes"/>
				<updated>2009-01-16T21:05:47Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
![[Hypergrid|link-region server and port]]&lt;br /&gt;
!Organization&lt;br /&gt;
!Description&lt;br /&gt;
!Grid Location&lt;br /&gt;
|-&lt;br /&gt;
|'''osl2.nac.uci.edu 9006'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''osl3.nac.uci.edu 9006'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The &amp;quot;UC Irvine&amp;quot; region connected to OSGrid, neighboring Wright Plaza. You can link to it as a way to link to OSGrid.&lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid02.nacs.uci.edu 9000'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid&lt;br /&gt;
|UCIGrid is centered at 8,888, 8,888&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid04.nacs.uci.edu 9003'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid. Link your lower-1,000's grid to this node in order to bridge to grids in the 10,000's.&lt;br /&gt;
|This node is positioned at 3,000, 3,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid04.nacs.uci.edu 9007'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid. Link your 10,000's grid to this node in order to bridge to grids in the lower-1,000's.&lt;br /&gt;
|This node is positioned at 7,000, 7,000. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''grid.cyberlandia.net 9000'''&lt;br /&gt;
|Cyberlandia&lt;br /&gt;
|The &amp;quot;Cyberlandia Gw&amp;quot; region. http://www.cyberlandia.net Metaverso italiano 3D, more to 250 region and 1000 users. You can link to it as a way to link to Cyberlandia. &lt;br /&gt;
|Cyberlandia is centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''hypergrid.cyberlandia.net 9000'''&lt;br /&gt;
|Cyberlandia &lt;br /&gt;
|The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net. Search on map &amp;quot;Cyberlandia grid&amp;quot; You can link to it as a way to link to OSGrid.  &lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''joomla-italia.net 9000'''&lt;br /&gt;
|Social Network Italia&lt;br /&gt;
|The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World,Francogrid and Darwin  &lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''collateral.opensim-italia.net 9000'''&lt;br /&gt;
|Part of Social Network Italia&lt;br /&gt;
|Collateral World &lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''88.191.79.199 9050'''&lt;br /&gt;
|Francogrid&lt;br /&gt;
|Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot; &lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''94.23.8.158 9999'''&lt;br /&gt;
|Le Monde de Darwin&lt;br /&gt;
|The Lost World of Darwin http://www.LeMondedeDarwin.com. [[Image:hypergrid.jpg|200px]]&lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''grid.k-grid.com 9000'''&lt;br /&gt;
|K-Grid&lt;br /&gt;
|The Kool grid for the Kool KidZ . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump &lt;br /&gt;
|This node is located at 3700,3700&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''metropolis.hypergrid.org 9000'''&lt;br /&gt;
|METROPOLIS-Grid&lt;br /&gt;
|The Region &amp;quot;Center-World&amp;quot; (at 1000:1000) connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting. Connected via HG to the most of the Grids listed here &lt;br /&gt;
|Centered at 1000,1000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ascent.bluewallgroup.com 9910'''&lt;br /&gt;
|BlueWall Group&lt;br /&gt;
|This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the (2000,2000) range, or any region within 4096 units. [[Image:Hypernaut 001.png|150px|none|thumb|Get your Hypernaut here :)]]&lt;br /&gt;
|Centered at 6000,6000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''sim.thestudyofracialism.org 9000'''&lt;br /&gt;
|Backintyme Publishing&lt;br /&gt;
|TSOR1 is a stand-alone sim owned by Backintyme Publishing. It connects to most of the other downrange sites listed here. The sim is intended for an SL study/discussion group's eventual migration from SL to OS.&lt;br /&gt;
|Centered at 4000,4000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''pc.backintyme.com 9100'''&lt;br /&gt;
|Backintyme Publishing&lt;br /&gt;
|TSOR2 is a small teleport relay island, also owned by Backintyme Publishing, intended for jumps to the vicinity of OSGrid. It is linked to most of the uprange sites listed here.&lt;br /&gt;
|Centered at 8000,8000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''myopengrid.com 9000'''&lt;br /&gt;
|MyOpenGrid&lt;br /&gt;
|Myopengrid is connected to osl2.nac.uci.edu &amp;quot;Osgrid Gateway&amp;quot;.&lt;br /&gt;
|Centered at 7000,7000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''cuonsim1.de 9300'''&lt;br /&gt;
|Cuon-Grid&lt;br /&gt;
|Cuon-Grid is a little grid and has some Main Sims with linux themes, Regions are at (10000,10000),server are in Germany. To login in to the grid use this http://sim-linuxmain.org:8081/CuonGrid/index.html. There are free sims for testing. &lt;br /&gt;
|Centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''metaversesims.net 9014'''&lt;br /&gt;
|Metaverse Sims&lt;br /&gt;
|Standalone mode - 6 regions - linked to several other grids. [[Image:Mtvs09010101.jpg|200px]]&lt;br /&gt;
|Centered at 9,000, 9,000&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Public_Hypergrid_Nodes</id>
		<title>Public Hypergrid Nodes</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Public_Hypergrid_Nodes"/>
				<updated>2009-01-16T21:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: Correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
![[Hypergrid|link-region server and port]]&lt;br /&gt;
!Organization&lt;br /&gt;
!Description&lt;br /&gt;
!Grid Location&lt;br /&gt;
|-&lt;br /&gt;
|'''osl2.nac.uci.edu 9006'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''osl3.nac.uci.edu 9006'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The &amp;quot;UC Irvine&amp;quot; region connected to OSGrid, neighboring Wright Plaza. You can link to it as a way to link to OSGrid.&lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid02.nacs.uci.edu 9000'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid&lt;br /&gt;
|UCIGrid is centered at 8,888, 8,888&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid04.nacs.uci.edu 9003'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid. Link your lower-1,000's grid to this node in order to bridge to grids in the 10,000's.&lt;br /&gt;
|This node is positioned at 3,000, 3,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ucigrid04.nacs.uci.edu 9007'''&lt;br /&gt;
|University of California, Irvine&lt;br /&gt;
|The UCI Grid. Link your 10,000's grid to this node in order to bridge to grids in the lower-1,000's.&lt;br /&gt;
|This node is positioned at 7,000, 7,000. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''grid.cyberlandia.net 9000'''&lt;br /&gt;
|Cyberlandia&lt;br /&gt;
|The &amp;quot;Cyberlandia Gw&amp;quot; region. http://www.cyberlandia.net Metaverso italiano 3D, more to 250 region and 1000 users. You can link to it as a way to link to Cyberlandia. &lt;br /&gt;
|Cyberlandia is centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''hypergrid.cyberlandia.net 9000'''&lt;br /&gt;
|Cyberlandia &lt;br /&gt;
|The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net. Search on map &amp;quot;Cyberlandia grid&amp;quot; You can link to it as a way to link to OSGrid.  &lt;br /&gt;
|OSGrid is centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''joomla-italia.net 9000'''&lt;br /&gt;
|Social Network Italia&lt;br /&gt;
|The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World,Francogrid and Darwin  &lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''collateral.opensim-italia.net 9000'''&lt;br /&gt;
|Part of Social Network Italia&lt;br /&gt;
|Collateral World &lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''88.191.79.199 9050'''&lt;br /&gt;
|Francogrid&lt;br /&gt;
|Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot; &lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''94.23.8.158 9999'''&lt;br /&gt;
|Le Monde de Darwin&lt;br /&gt;
|The Lost World of Darwin http://www.LeMondedeDarwin.com. [[Image:hypergrid.jpg|200px]]&lt;br /&gt;
|Centered at ???&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''grid.k-grid.com 9000'''&lt;br /&gt;
|K-Grid&lt;br /&gt;
|The Kool grid for the Kool KidZ . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump &lt;br /&gt;
|This node is located at 3700,3700&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''metropolis.hypergrid.org 9000'''&lt;br /&gt;
|METROPOLIS-Grid&lt;br /&gt;
|The Region &amp;quot;Center-World&amp;quot; (at 1000:1000) connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting. Connected via HG to the most of the Grids listed here &lt;br /&gt;
|Centered at 1000,1000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ascent.bluewallgroup.com 9910'''&lt;br /&gt;
|BlueWall Group&lt;br /&gt;
|This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the (2000,2000) range, or any region within 4096 units. [[Image:Hypernaut 001.png|150px|none|thumb|Get your Hypernaut here :)]]&lt;br /&gt;
|Centered at 6000,6000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''sim.thestudyofracialism.org 9000'''&lt;br /&gt;
|Backintyme Publishing&lt;br /&gt;
|TSOR1 is a stand-alone sim owned by Backintyme Publishing. It connects to most of the other downrange sites listed here. Although currently sparse, the sim is eventually intended for an SL discussion-group's migration from SL to OS.&lt;br /&gt;
|Centered at 4000,4000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''pc.backintyme.com 9100'''&lt;br /&gt;
|Backintyme Publishing&lt;br /&gt;
|TSOR2 is a small teleport relay island, also owned by Backintyme Publishing, intended for jumps to the vicinity of OSGrid. It is linked to most of the uprange sites listed here.&lt;br /&gt;
|Centered at 8000,8000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''myopengrid.com 9000'''&lt;br /&gt;
|MyOpenGrid&lt;br /&gt;
|Myopengrid is connected to osl2.nac.uci.edu &amp;quot;Osgrid Gateway&amp;quot;.&lt;br /&gt;
|Centered at 7000,7000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''cuonsim1.de 9300'''&lt;br /&gt;
|Cuon-Grid&lt;br /&gt;
|Cuon-Grid is a little grid and has some Main Sims with linux themes, Regions are at (10000,10000),server are in Germany. To login in to the grid use this http://sim-linuxmain.org:8081/CuonGrid/index.html. There are free sims for testing. &lt;br /&gt;
|Centered at 10,000, 10,000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''metaversesims.net 9014'''&lt;br /&gt;
|Metaverse Sims&lt;br /&gt;
|Standalone mode - 6 regions - linked to several other grids. [[Image:Mtvs09010101.jpg|200px]]&lt;br /&gt;
|Centered at 9,000, 9,000&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/OSSL_Implemented</id>
		<title>OSSL Implemented</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/OSSL_Implemented"/>
				<updated>2009-01-14T19:17:47Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=1 style=&amp;quot;border-collapse:collapse;th background-color:#666;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Function&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Explanation&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Examples&lt;br /&gt;
|-&lt;br /&gt;
| string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams,int timer);&lt;br /&gt;
| Loads a webtexture on a prim&lt;br /&gt;
| [[osSetDynamicTextureURL_example1|example 1]]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| double osTerrainGetHeight(int x, int y);&lt;br /&gt;
| Gets height of terrain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| int osTerrainSetHeight(int x, int y);&lt;br /&gt;
| Sets height of terrain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| int osRegionRestart(double seconds);&lt;br /&gt;
| Restarts the region&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| void osRegionNotice(string msg);&lt;br /&gt;
| Sends a notice to the region&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| System.Collections.Hashtable osParseJSON(string JSON);&lt;br /&gt;
| returns a hashtable containing the structured JSON contents (c# only)&lt;br /&gt;
| [[osParseJSON_example1|example 1]]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osMessageObject(key objectId, string message);&lt;br /&gt;
| sends a string to the object identified by objectId, the receiving object requires to implement the method dataserver( key queryid, string data ) in a contained script(s). The queryid passed will be the id of the calling object.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osTeleportAgent(key agentId, string regionName, vector position, vector lookAt);&lt;br /&gt;
| Teleports agent ''agentId'' to region ''regionName'', region-local position ''position'', with looking direction ''lookAt'' without asking the user first (in contrast to ''llMapDestination'')&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osTeleportAgent(key agentId, vector position, vector lookAt);&lt;br /&gt;
| Teleports agent ''agentId'' to position ''position'' in the same region, with looking direction ''lookAt'' without asking the user first (in contrast to ''llMapDestination'')&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osConsoleCommand(string command);&lt;br /&gt;
| Issues command as if from the server console. &amp;quot;Severe&amp;quot; threat level. Eg.: osConsoleCommand(&amp;quot;link-region X Y URL port&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osMakeNotecard(string cardname, list cardlines);&lt;br /&gt;
| Writes a new notecard into the containing prim's inventory. The list parameter may contain only strings. Eg.: osMakeNotecard(&amp;quot;new card&amp;quot;, [&amp;quot;line-1&amp;quot;, &amp;quot;line-2&amp;quot;, &amp;quot;line-3&amp;quot;]).&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osSetDynamicTextureData(&amp;quot;&amp;quot;, &amp;quot;vector&amp;quot;, drawList, &amp;quot;1024&amp;quot;, 0);&lt;br /&gt;
| Writes text onto a prim face. Exemplified in two standard library scripts.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
[[Category:Users]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Talk:OSSL_Implemented</id>
		<title>Talk:OSSL Implemented</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Talk:OSSL_Implemented"/>
				<updated>2009-01-14T19:16:35Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;About: osTeleportAgent(key agentId, string regionName, vector position, vector lookAt);&lt;br /&gt;
&lt;br /&gt;
If I use a sensor with this then I can teleport anyone on the sim wherever I want without permission?&lt;br /&gt;
----&lt;br /&gt;
Added three more functions to the documentation. I do not know what the parms are for the last one (osSetDynamicTextureData), so anyone knowledgable please correct the entry. Also, I suggest that each function's description be eventually expanded to a page. --[[User:FrankWSweet|Frank W Sweet]] 19:16, 14 January 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/OSSL_Implemented</id>
		<title>OSSL Implemented</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/OSSL_Implemented"/>
				<updated>2009-01-14T19:10:05Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: See discussion page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=1 style=&amp;quot;border-collapse:collapse;th background-color:#666;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Function&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Explanation&lt;br /&gt;
! style=&amp;quot;background-color:#D2ECD2;&amp;quot; | Examples&lt;br /&gt;
|-&lt;br /&gt;
| string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams,int timer);&lt;br /&gt;
| Loads a webtexture on a prim&lt;br /&gt;
| [[osSetDynamicTextureURL_example1|example 1]]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| double osTerrainGetHeight(int x, int y);&lt;br /&gt;
| Gets height of terrain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| int osTerrainSetHeight(int x, int y);&lt;br /&gt;
| Sets height of terrain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| int osRegionRestart(double seconds);&lt;br /&gt;
| Restarts the region&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| void osRegionNotice(string msg);&lt;br /&gt;
| Sends a notice to the region&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| System.Collections.Hashtable osParseJSON(string JSON);&lt;br /&gt;
| returns a hashtable containing the structured JSON contents (c# only)&lt;br /&gt;
| [[osParseJSON_example1|example 1]]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osMessageObject(key objectId, string message);&lt;br /&gt;
| sends a string to the object identified by objectId, the receiving object requires to implement the method dataserver( key queryid, string data ) in a contained script(s). The queryid passed will be the id of the calling object.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osTeleportAgent(key agentId, string regionName, vector position, vector lookAt);&lt;br /&gt;
| Teleports agent ''agentId'' to region ''regionName'', region-local position ''position'', with looking direction ''lookAt'' without asking the user first (in contrast to ''llMapDestination'')&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osTeleportAgent(key agentId, vector position, vector lookAt);&lt;br /&gt;
| Teleports agent ''agentId'' to position ''position'' in the same region, with looking direction ''lookAt'' without asking the user first (in contrast to ''llMapDestination'')&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osConsoleCommand(string command);&lt;br /&gt;
| Issues command as if from the server console. &amp;quot;Severe&amp;quot; threat level. Eg.: osConsoleCommand(&amp;quot;link-region X Y URL port&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osMakeNotecard(string cardname, list cardlines);&lt;br /&gt;
| Writes a new notecard into the containing prim's inventory. The list parameter may contain only strings. Eg.: osMakeNotecard(&amp;quot;new card&amp;quot;, [&amp;quot;line-1&amp;quot;, &amp;quot;line-2&amp;quot;, &amp;quot;line-3&amp;quot;]).&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| osSetDynamicTextureData(&amp;quot;&amp;quot;, &amp;quot;vector&amp;quot;, drawList, &amp;quot;1024&amp;quot;, 0);&lt;br /&gt;
| Writes text onto prim a face. Exemplified in two standard library scripts.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
[[Category:Users]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Hypergrid</id>
		<title>Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Hypergrid"/>
				<updated>2009-01-07T00:15:40Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: /* Public Hypergrid Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The OpenSim Hypergrid==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the hypergrid? ===&lt;br /&gt;
&amp;lt;!-- [[image:VWV.jpg|250px|thumb|Web of Virtual Worlds]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hypergrid is an extension to opensim that allows you to link your opensim to other opensims on the internet, and that supports seamless agent transfers among those opensims. It can be used both in standalone mode and in grid mode. The hypergrid is effectively supporting the emergence of a Web of virtual worlds. &lt;br /&gt;
&lt;br /&gt;
The basic idea for the hypergrid is that region/grid administrations can place hyperlinks on their map to hypergrided regions run by others. Once those hyperlinks are established, users interact with those regions in exactly the same way as they interact with local regions. Specifically, users can choose to teleport there. Once the user reaches the region behind the hyperlink, she is automatically interacting with a different virtual world without having to logout from the world where she came from, and while still having access to her inventory.&lt;br /&gt;
&lt;br /&gt;
The hypergrid started as a GForge project, but it is now included in the standard distribution of OpenSim. To run your OpenSim instance in hypergrid mode, please see [[Hypergrid#Installing_and_Running_Hypergrid|Installing and Running]].&lt;br /&gt;
&lt;br /&gt;
=== Virtual World Hyperlinks ===&lt;br /&gt;
[[image:hghyperlink.jpg|250px|thumb|A Virtual World Hyperlink]]&lt;br /&gt;
&lt;br /&gt;
We're all familiar with hypertext links on the Web. But what is a virtual world hyperlink?&lt;br /&gt;
&lt;br /&gt;
In the hypergrid model, we consider the 2D map of the virtual world as the equivalent of a web page. As such, a VW hyperlink is simply a region on that map. &lt;br /&gt;
&lt;br /&gt;
The default model of opensim-based virtual worlds already supports this concept of hyperlink, to some extent. When you teleport from one region to another via the map, chances are you are migrating your agent into a different opensim server. This migration is a glorified &amp;quot;agent transfer&amp;quot; that also exists, in rudimentary form, on the web when hypertext links are followed. The default model, however, imposes two very strong constraints on these hyperlinks: &lt;br /&gt;
# The entire map of regions is controlled by a central service known as the grid service, whose job is to provide a uniform view of the world to all of its regions.&lt;br /&gt;
# The only agents that can be transferred are those pertaining to users known to another central service, the user service; if the incoming user is not on that service's database, the agent transfer doesn't go through.&lt;br /&gt;
&lt;br /&gt;
The hypergrid simply removes these two constraints. &lt;br /&gt;
&lt;br /&gt;
First, it allows individual opensim instances to add &amp;quot;neighbors&amp;quot; to their local map, shifting the control of the map down from the grid server to individual opensim instances (although hyperlinks can also be served by grid servers if grid admins so wish). In doing so, the world becomes a lot more interesting and varied. The map that you see in one opensim instance may be completely different from the map that you see after you teleport via an hyperlink. As an opensim administrator, you are free to define what other opensims you want to see on your map.&lt;br /&gt;
&lt;br /&gt;
Second, it allows the transfer of agents pertaining to foreigner users, i.e. users who are registered elsewhere. Instead of assuming one central user service, the hypergrid assumes an arbitrarily large number of such services distributed all over the world. As such, when agents are transferred among hypergrided opensims, a lot more information is passed about the corresponding user. That information includes the collection of servers that the transferring user needs.&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
The following are some usage scenarios. There isn't a clear separation between these scenarios, there's a large overlap between them. This is also not an exhaustive list. The purpose of these descriptions is to give you some starting ideas for how to use the hypergrid in practice. Please feel free to add other interesting scenarios to this list.&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoA.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Personal Worlds'''&lt;br /&gt;
&lt;br /&gt;
This first scenario pertains to standalone opensims. Normally, standalones are completely disconnected from the internet. However, when run in hypergrid mode, standalones become network-able. As such, you can run your own world in your own computer, and link your world to whoever you want. For example, you can link to your friends' hypergrided opensims and to hypergrid gateways in open grids such as OSGrid. &lt;br /&gt;
&lt;br /&gt;
The great thing about this scenario is that all of your assets are stored on your computer, and not on somebody else's server. You can back them up using ordinary backend tools. The not so great thing about this scenario is that all of your assets are stored on your computer! If your disk goes berserk, you loose them. (so make sure you make external backups regularly)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoB.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Communities'''&lt;br /&gt;
&lt;br /&gt;
This second scenario is about communities, broadly construed. The idea here is that a group of people come together to support a small community grid, i.e. a common world where shared activities take place. But at the same time, the members of the community maintain their own standalone worlds. The standalones link to the community grid, and the community grid may link back to the individual members' worlds and other places of interest.&lt;br /&gt;
&lt;br /&gt;
The members' identities are probably the identities they have on their standalones, and their assets are also probably stored there. The assets present in the community regions, however, are stored on the grid asset server.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoC.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Grid Public Regions'''&lt;br /&gt;
&lt;br /&gt;
Walled-gardens are here to stay, and they serve many useful purposes. There is a hybrid mode for the hypergrid that some walled-garden grid operators may be interested in supporting. In this hybrid mode, most opensim instances on the grid run in normal, wall-garden mode, so no foreign visitors are allowed there - technically it is impossible to reach them. However, a few opensim instances on that grid can run in hypergrid mode, so that foreign visitors are allowed. This way, there is a gateway for grid-local users and arbitrary visitors to meet. This is also a good strategy for attracting new users to the grid, since random users are able to visit those gateway regions without having to sign up for an account upfront.&lt;br /&gt;
&lt;br /&gt;
This hybrid mode is very similar to what happens on the web. For example, anyone can visit Facebook's public pages without having to sign up for a Facebook account. However, only Facebook users can go further inside.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoD.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Level Games'''&lt;br /&gt;
&lt;br /&gt;
The normal version of OpenSim enforces a common map for all the regions on a grid. The hypergrid removes that constraint. As such, it becomes easy to design VW games where the world looks different depending of where the player is. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
There is a wide-spread assumption that open grids such as OSGrid and new forms of grids such as the hypergrid are inherently insecure, and that it will be impossible to develop a &amp;quot;goods-based&amp;quot; economy on top of them; only walled-gardens can be secured. This is both true and false. While it is true with the current state of things, open grids, whatever their form, can be made as secure as the web. The first step towards that is to define exactly what the security threats are, and how they affect (or not) open and closed grids. So, let's spell them out, and face them head-on. This will help put our feet on the ground so that we start developing appropriate solutions.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Clients ===&lt;br /&gt;
&lt;br /&gt;
==== CopyBots ====&lt;br /&gt;
&lt;br /&gt;
Everyone knows about the infamous [http://en.wikipedia.org/wiki/CopyBot CopyBot]. Using libraries such as [http://www.libsecondlife.org/wiki/Main_Page LibSL] (now known as OpenMetaverse) it is possible to develop clients for opensim servers that do unorthodox things such as bypassing the permissions system to copy people's assets. Bots written by griefers can do lots of other nasty things.&lt;br /&gt;
&lt;br /&gt;
Malicious bots are a problem for all opensim administrators, including walled-garden grids. They can be prevented, to a certain extent, by exo-technical solutions such as Terms of Service and real-world lawsuits. Technically speaking, the only way to keep intruders out is to run opensim inside a firewall, pretty much like all other pieces of client/server software out there. If that's an acceptable solution for your case, you should do it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately firewalls also keep the public out, and most opensim operators, even the ones running walled-garden grids, want to reach out to the public. In this case, opensim operators may develop additional technical obstacles for bots, similar to those we see on the Web. For example, make sure agents are being run by real people by giving them a human-challenge during the login/TP process, etc.&lt;br /&gt;
&lt;br /&gt;
Every obstacle to malicious clients lowers the risk of an intruder attack. However keep this in mind: no matter how many obstacles one builds, a sufficiently skilled and motivated attacker will be able to overcome them to penetrate opensims connected to the public internet. This affects hypergrid nodes as much as walled-garden grids. In fact, it's more pervasive than that: it affects '''all''' servers (opensim, web, etc.) connected to the public internet. Fighting malicious intruders is a fact of a connected world. Fortunately, those attacks don't happen very often, or the Web would have been dead by now.&lt;br /&gt;
&lt;br /&gt;
==== Web Clients ====&lt;br /&gt;
&lt;br /&gt;
CopyBots are the most well-known bots for opensim-based virtual worlds, but these virtual worlds are also susceptible to attacks by regular web clients. With the current state of things, it is actually easier to copy assets with a web-based client than with a libsl-based one. The weakness is that asset servers are connected to the public internet, and the protocol for interacting with them is public. &lt;br /&gt;
&lt;br /&gt;
OpenSim has some minimal guards in place to fence against these kinds of attacks. Specifically, when the inventory server receives a request for an item, it checks the session identifier of the requester. Web clients aren't logged in, so they are refused service. I don't want to expand much more on this, so not to make life easy for attackers, but let's just say that opensim has the necessary mechanisms in place to fence off web-based attackers.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Hosts ===&lt;br /&gt;
&lt;br /&gt;
==== Actively Malicious Hosts ====&lt;br /&gt;
&lt;br /&gt;
The new security threat introduced by openness, one that does not exist in closed grids, is the possibility of a user to visit a region that is running malicious code. In the current state of opensim, a malicious host can do serious damage to the user's assets. Let's see how.&lt;br /&gt;
&lt;br /&gt;
Assume you have your assets in your hypergrided-standalone opensim, and you go visit another opensim that happens to be running malicious code. Here is a non-exhaustive list of vulnerabilities that you are exposed to:&lt;br /&gt;
&lt;br /&gt;
* The host has your session id, so it can request your inventory items on your behalf and store copies in its local asset server. To add insult to injury, a malicious host could simply wipe out your inventory after having copied it.&lt;br /&gt;
* Even if the malicious host doesn't access your items by itself, every time you access items in your inventory while you are in that region, those items are cached in the region's local cache, and can be stored persistently by the malicious host.&lt;br /&gt;
&lt;br /&gt;
Malicious hosts can do a lot more damage, but those two are enough to illustrate this new kind of vulnerability affecting open grids. Note that this affects all open grids, i.e. those where arbitrary people can plug-in their opensims, and not just the hypergrid.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a family of simple solutions to this problem that can be summarized as &amp;quot;protecting you from yourself.&amp;quot; That proposal is described [[Hypergrid Inventory Access|here]].&lt;br /&gt;
&lt;br /&gt;
==== Piracy ====&lt;br /&gt;
&lt;br /&gt;
A second new security threat affecting open grids is one pertaining to commerce of virtual goods. Suppose you put something out for sale on your hypergrided opensim. A foreign user comes and buys it. What that really means is that that user will physically get a copy of the assets moved to his/her asset server, which is different from your asset server. The permissions will be whatever you define them to be, and using the regular VW client, that user can only do what you defined he/she should could do with the object, as usual. However, if the user has direct backend access to the asset and inventory servers, that person can simply modify the permissions on his/her copy. This is commonly known as '''piracy'''.  (This is also a problem with programmers who have direct access to the cache that their client keeps; in this case, the only thing that needs to be done to enable piracy is for the user to actually see a texture/animation/in-world object.  This does NOT allow scripts to be copied, though, since the script is only interpreted on the server and is never sent for interpretation by the client.)&lt;br /&gt;
&lt;br /&gt;
This situation is the kernel of the belief that open grids are hopeless for a virtual-goods economy. DRM discussion aside, maybe they are hopeless. But then, everyone thought the web was hopeless for selling music, and look at the success of iTunes in spite of all the piracy that still exists out there. Who will be the equivalent of iTunes for virtual hair, skin and clothes?&lt;br /&gt;
&lt;br /&gt;
== Hypergrid Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hyperlinks and Agent Transfers ===&lt;br /&gt;
&lt;br /&gt;
When you establish a link between your opensim and another, a message is sent out to that other opensim requesting information about it; the required information includes the network information of that opensim host, and the coordinates of its first region on its local grid in the form of a region handle. For example, suppose you are linking node X.com:9000, placing it in your local map at 900, 900. That opensim runs one or more regions that likely are not in 900, 900 on their own map; suppose the first region of that opensim is at 1100, 1100. From your point of view, it doesn't matter what those other coordinates are, and you don't need to know -- that's the key to being able to decentralize the &amp;quot;world&amp;quot; as given by a 2D map; you want to place it in your map at 900, 900. The &amp;quot;true&amp;quot; position of that simulator only matters for the LL viewer, when there are teleports between your world and that other opensim. This mapping between coordinate systems is the essence of  hyperlinks for opensim; it's one simple but critical thing that the hypergrid implementation does. The mapping happens on the TeleportFinish event; instead of sending the local coordinates to the viewer, the hypergrid teleport wrapper sends the remote coordinates.&lt;br /&gt;
&lt;br /&gt;
When an agent teleports through that hyperlink the following happens. First, before InformRegionOfChildAgent, the local opensim notifies the remote opensim of this foreign user via the &amp;quot;expect_hg_user&amp;quot; method. That message sends along the addresses of all the servers that this user uses, i.e. user, inventory and asset servers. The remote opensim places an entry for that user in its local user profile cache but not in its user database; the foreign user information is non-persistent. After that, the teleport process is exactly the same as the normal teleport process; the only difference is that the region handles are switched between the remote region's hyperlink position on the local grid and its actual position on its grid. &lt;br /&gt;
&lt;br /&gt;
In summary, the two new concepts introduced by the hypergrid are the concept of an hyperlink and the concept of a &amp;quot;local user&amp;quot; vs. &amp;quot;foreign user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Access ===&lt;br /&gt;
&lt;br /&gt;
Inventory access from abroad is done by wrapping the existing scene-inventory interactions with additional code that gets or posts inventory assets from/to the user's asset server. When inventory is accessed, the hypergrid wrapper checks if the user is foreign and, if she is, the wrapper simply brings the necessary assets from the user's asset server to the local asset cache and server; from then on, the wrapper passes the control to the existing inventory access functions. When something is added to inventory, the hypergrid wrapper is notified via an event, and posts the assets to the user's asset server. A cache of the exchanged item identifiers is maintained so that they aren't brought back over and over again.&lt;br /&gt;
&lt;br /&gt;
The result is that hypergrided opensim instances end up interacting with several asset servers, instead of just one. That interaction is implemented in a straightforward manner by instantiating several GridAssetClient objects, instead of just one.&lt;br /&gt;
&lt;br /&gt;
=== The Hypergrid Namespace ===&lt;br /&gt;
&lt;br /&gt;
Currently, the hypergrid is implemented outside of the OpenSim namespace, so that there is complete separation between what already exists and this new behavior. It has its own namespace, HyperGrid. In it, there are 4 sub-namespaces that follow directly the software architecture of OpenSim, namely:&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Framework''' extends OpenSim.Framework in the following manner:&lt;br /&gt;
** HGUserProfileData extends UserProfileData by introducing information about the user's &amp;quot;home&amp;quot;, namely the home address, port and remoting port. The user's home is not that user's user service; it's the opensim that the user has defined to be her home. This is necessary for supporting the home jump (Ctrl-Shift-H).&lt;br /&gt;
** HGNetworkServersInfo follows the spirit of NetworkServersInfo, although it neither extends it nor uses it. For now, it's a utility class whose two main functions are to convert domain names of servers to IP addresses, and to uniformly provide the answer to the question bool IsLocalUser(...).&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Environment''' extends OpenSim.Region.Environment.Scenes in the following manner:&lt;br /&gt;
** HGSceneCommunicationService extends SceneCommunicationService, overriding RequestTeleportToLocation. There are two very small but critical changes to the base method: (a) on the TeleportFinish event, we switch the region handles when the destination region is an hyperlink; (b) the connections at the end are always closed for hyperlink TPs.&lt;br /&gt;
** HGScene extends Scene, overriding TeleportClientHome(...). The only change to the base method is to stay away from the user server, for now, because the user service is still not completely wrapped up for foreign users. Once the user service is properly wrapped up, this class will become unnecessary.&lt;br /&gt;
** HGScene.Inventory is a partial class of HGScene, just like what happens in the OpenSim framework. This part of HGScene overrides some inventory-scene interaction methods, so that assets are fetched/posted from/to the user's asset server. Once that extra fetching/posting is done, these methods simply pass the ball to the base methods.&lt;br /&gt;
** HGAssetMapper: this is a new class specific to the hypergrid that manages the fetching and posting of assets between foreign regions where the user is and the user's asset server.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Protocol''' is a mashup of OpenSim.Region.Communications.*. This is the place where most of the hypergrid extension lies. One of the reasons for this is that the hypergrid communications part is doing one additional thing: it is making standalones network-able.&lt;br /&gt;
** HGCommunicationsStandalone extends CommuniationsLocal. Just as its base, it is a hub for the several network services available in standalone mode. The main difference is that those services are extensions of what's in OpenSim.&lt;br /&gt;
** HGCommunicationsGridMode extends CommunicationsManager directly. Again, it's a hub for the network services available in grid mode, those services being extensions of OpenSim.&lt;br /&gt;
** The cluster HGGridServices (superclass), HGGridServicesStandalone and HGGridServicesGridMode (subclasses) implements the OpenSim interfaces IGridServices and IInterRegionCommunications. The 2 subclasses are wrappers for LocalBackEndServices and OGS1GridServices, respectively. There is one common pattern throughout these classes: check if the region to talk to is an hyperlink; if it's not, simply delegate the work to LocalBackEndServices/OGS1GridServices; if it is, push the work to the base class HGGridServices. HGGridServices, in turn, does the management of hyperlink regions, and defines two additional pieces of inter-region protocol:&lt;br /&gt;
*** region_uuid: for linking regions&lt;br /&gt;
*** expect_hg_user: similar to the existing expect_user interface, but with a lot more information about the user being passed around, namely all the user's servers (inventory, asset, user, home, etc.)&lt;br /&gt;
** HGInventoryService extends LocalInventoryService and implements ISecureInventoryService. This class is the most obvious mashup of the pack, mixing local service access for standalone users and remote inventory access for when users are out and about. Right now, there is a fair amount of selective copy-and-paste, to stay away from the ugliness coming from OGS1InventoryService and OGS1SecureInventoryService. HGInventoryService is always a ISecureInventoryService. Its methods all follow the same pattern: check if the user is a local standalone user; if it is, pass the work to the base method (in LocalInventoryService); if it's not perform secure remote access.&lt;br /&gt;
** HGUserServices wraps OSG1UserServices, but it's not functional yet.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Modules''' is a collection of 3 region modules:&lt;br /&gt;
** HGWorldMapModule extends WorldMapModule. It reuses almost everything from the base class. The only small change is in RequestMapBlocks, where it tries to send Offline mapblocks to the client.&lt;br /&gt;
** HGStandaloneInventoryService and HGStandaloneAssetService do what their names say. They are region modules that allow access to inventory and assets for standalones, when the standalone user is out and about. In spirit, there is a lot in common between these modules and the REST inventory/asset plugin. Unfortunately, that plugin could not be used because it defines a completely different interface than that used by existing inventory and asset servers, and the access for the hypergrid must use a consistent interface.&lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[image:HypergridImplementation.jpg|600px|center|(Click on the image to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installing and Running Hypergrid ==&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
# Checkout OpenSim, prebuild and build as normal.&lt;br /&gt;
# Make the following changes to your OpenSim.ini:&lt;br /&gt;
#* The map: '''WorldMapModule = &amp;quot;HGWorldMap&amp;quot; ''' If you didn't have this setting in your original OpenSim.ini, make sure you place it under the [Startup] section.&lt;br /&gt;
#* If you're running your opensim in grid mode with the UGAIM servers on other machines, you're done. If you're running in standalone and you want it to be network-able, or if you have your grid on loopback (127.0.0.1) change all the [Network] server addresses to &amp;lt;nowiki&amp;gt;&amp;quot;http://&amp;lt;external_host_name&amp;gt;:&amp;lt;http_port&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;. See below.&lt;br /&gt;
# Run opensim like this: &amp;lt;nowiki&amp;gt;[mono] OpenSim.exe -hypergrid=true&amp;lt;/nowiki&amp;gt;. To make sure the hypergrid is running type this on your console: '''link-region'''. If you don't hear anything back, the hypergrid is not properly installed.&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a standalone:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:9300&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:9300&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:9300&lt;br /&gt;
 inventory_server_url = http://example.com:9300&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a grided opensim:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:8001&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:8002&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:8003&lt;br /&gt;
 inventory_server_url = http://example.com:8004&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Make sure you have a 'home' set. If your home region doesn't exist, the hyperlink TPs may not work. To set your home, go to one of your local regions and &amp;quot;Set Home&amp;quot; from the viewer.&lt;br /&gt;
&lt;br /&gt;
=== Linking regions ===&lt;br /&gt;
&lt;br /&gt;
On the console, type for example:&lt;br /&gt;
&lt;br /&gt;
link-region &amp;lt;Xloc&amp;gt; &amp;lt;Yloc&amp;gt; osl2.nac.uci.edu 9006 OSGrid Gateway&lt;br /&gt;
&lt;br /&gt;
* Use Xloc and Yloc that make sense to your world, i.e. close to your regions, but not adjacent.&lt;br /&gt;
* replace osl2.nac.uci.edu and 9006 with the domain name / ip address and the port of the region you want to link to&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Due to a viewer [https://jira.secondlife.com/browse/SVC-2941 bug], you can only TP between regions that are no more than 4096 cells apart in any dimension. What this means in practice is that if you want to link to OSGrid, you must have your own regions reachable from the (10,000; 10,000) point on the map, which is where OSGrid is centered. Place your regions somewhere in the 8,000s or the 12,000s.&lt;br /&gt;
&lt;br /&gt;
== Public Hypergrid Nodes ==&lt;br /&gt;
&lt;br /&gt;
The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns described above are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''osl2.nac.uci.edu 9006'''&lt;br /&gt;
The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''ucigrid02.nacs.uci.edu 9000'''&lt;br /&gt;
A region in the UCI Grid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine.&lt;br /&gt;
&lt;br /&gt;
* '''grid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Cyberlandia Gw&amp;quot; region.  http://www.cyberlandia.net Metaverso italiano 3D, more to 250 region and 1000 users. You can link to it as a way to link to Cyberlandia.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net.  Search on map &amp;quot;Cyberlandia grid&amp;quot; You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''joomla-italia.net 9000&lt;br /&gt;
The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World,Francogrid and Darwin&lt;br /&gt;
&lt;br /&gt;
* '''collateral.opensim-italia.net 9000&lt;br /&gt;
[Collateral World is CLOSED and now is part of SNI]&lt;br /&gt;
&lt;br /&gt;
* '''88.191.79.199 9050'''&lt;br /&gt;
Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* '''94.23.8.158  9999'''&lt;br /&gt;
Le Monde de Darwin node, The Lost of Darwin http://www.LeMondedeDarwin.com&lt;br /&gt;
----&lt;br /&gt;
[[Image:hypergrid.jpg]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''grid.k-grid.com 9000'''&lt;br /&gt;
K-grid,  [http://k-grid.com the Kool grid for the Kool KidZ] . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump&lt;br /&gt;
&lt;br /&gt;
* '''metropolis.hypergrid.org 9000'''&lt;br /&gt;
The Region &amp;quot;Center-World&amp;quot; (at 1000:1000) connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting. Connected via HG to the most of the Grids listed here. Current SVN-Build: 7934.&lt;br /&gt;
&lt;br /&gt;
* '''ascent.bluewallgroup.com 9910'''&lt;br /&gt;
This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the (2000,2000) range, or any region within 4096 units. [[Image:Hypernaut 001.png|150px|none|thumb|Get your Hypernaut here :)]] &lt;br /&gt;
&lt;br /&gt;
* '''sim.thestudyofracialism.org 9000'''&lt;br /&gt;
TSOR1 is a stand-alone sim (at 4000,4000) owned by '''Backintyme Publishing'''. It connects to most of the other downrange sites listed here. Although currently sparse, the sim is eventually intended for an SL discussion-group's migration from SL to OS.&lt;br /&gt;
&lt;br /&gt;
* '''pc.backintyme.com 9100'''&lt;br /&gt;
TSOR2 is a small teleport relay island (at 8000,8000), also owned by '''Backintyme Publishing''', intended for jumps to the vicinity of OSGrid. It is linked to most of the uprange sites listed here.&lt;br /&gt;
&lt;br /&gt;
* '''http://myopengrid.com 9000'''&lt;br /&gt;
Myopengrid is connected to osl2.nac.uci.edu &amp;quot;Osgrid Gateway&amp;quot; our regions are at (7000,7000).&lt;br /&gt;
&lt;br /&gt;
* '''cuonsim1.de 9300'''&lt;br /&gt;
Cuon-Grid is a little grid and has some Main Sims with linux themes, Regions are at (10000,10000),server are in Germany.To login in to the grid use this http://sim-linuxmain.org:8081/CuonGrid/index.html. There are free sims for testing.&lt;br /&gt;
&lt;br /&gt;
* '''metaversesims.net 9014'''&lt;br /&gt;
Standalone mode - 6 regions at (9000,9000) - linked to the grids shown below&lt;br /&gt;
----&lt;br /&gt;
[[Image:Mtvs09010101.jpg]]&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Hypergrid</id>
		<title>Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Hypergrid"/>
				<updated>2009-01-07T00:14:37Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: /* Public Hypergrid Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The OpenSim Hypergrid==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the hypergrid? ===&lt;br /&gt;
&amp;lt;!-- [[image:VWV.jpg|250px|thumb|Web of Virtual Worlds]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hypergrid is an extension to opensim that allows you to link your opensim to other opensims on the internet, and that supports seamless agent transfers among those opensims. It can be used both in standalone mode and in grid mode. The hypergrid is effectively supporting the emergence of a Web of virtual worlds. &lt;br /&gt;
&lt;br /&gt;
The basic idea for the hypergrid is that region/grid administrations can place hyperlinks on their map to hypergrided regions run by others. Once those hyperlinks are established, users interact with those regions in exactly the same way as they interact with local regions. Specifically, users can choose to teleport there. Once the user reaches the region behind the hyperlink, she is automatically interacting with a different virtual world without having to logout from the world where she came from, and while still having access to her inventory.&lt;br /&gt;
&lt;br /&gt;
The hypergrid started as a GForge project, but it is now included in the standard distribution of OpenSim. To run your OpenSim instance in hypergrid mode, please see [[Hypergrid#Installing_and_Running_Hypergrid|Installing and Running]].&lt;br /&gt;
&lt;br /&gt;
=== Virtual World Hyperlinks ===&lt;br /&gt;
[[image:hghyperlink.jpg|250px|thumb|A Virtual World Hyperlink]]&lt;br /&gt;
&lt;br /&gt;
We're all familiar with hypertext links on the Web. But what is a virtual world hyperlink?&lt;br /&gt;
&lt;br /&gt;
In the hypergrid model, we consider the 2D map of the virtual world as the equivalent of a web page. As such, a VW hyperlink is simply a region on that map. &lt;br /&gt;
&lt;br /&gt;
The default model of opensim-based virtual worlds already supports this concept of hyperlink, to some extent. When you teleport from one region to another via the map, chances are you are migrating your agent into a different opensim server. This migration is a glorified &amp;quot;agent transfer&amp;quot; that also exists, in rudimentary form, on the web when hypertext links are followed. The default model, however, imposes two very strong constraints on these hyperlinks: &lt;br /&gt;
# The entire map of regions is controlled by a central service known as the grid service, whose job is to provide a uniform view of the world to all of its regions.&lt;br /&gt;
# The only agents that can be transferred are those pertaining to users known to another central service, the user service; if the incoming user is not on that service's database, the agent transfer doesn't go through.&lt;br /&gt;
&lt;br /&gt;
The hypergrid simply removes these two constraints. &lt;br /&gt;
&lt;br /&gt;
First, it allows individual opensim instances to add &amp;quot;neighbors&amp;quot; to their local map, shifting the control of the map down from the grid server to individual opensim instances (although hyperlinks can also be served by grid servers if grid admins so wish). In doing so, the world becomes a lot more interesting and varied. The map that you see in one opensim instance may be completely different from the map that you see after you teleport via an hyperlink. As an opensim administrator, you are free to define what other opensims you want to see on your map.&lt;br /&gt;
&lt;br /&gt;
Second, it allows the transfer of agents pertaining to foreigner users, i.e. users who are registered elsewhere. Instead of assuming one central user service, the hypergrid assumes an arbitrarily large number of such services distributed all over the world. As such, when agents are transferred among hypergrided opensims, a lot more information is passed about the corresponding user. That information includes the collection of servers that the transferring user needs.&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
The following are some usage scenarios. There isn't a clear separation between these scenarios, there's a large overlap between them. This is also not an exhaustive list. The purpose of these descriptions is to give you some starting ideas for how to use the hypergrid in practice. Please feel free to add other interesting scenarios to this list.&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoA.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Personal Worlds'''&lt;br /&gt;
&lt;br /&gt;
This first scenario pertains to standalone opensims. Normally, standalones are completely disconnected from the internet. However, when run in hypergrid mode, standalones become network-able. As such, you can run your own world in your own computer, and link your world to whoever you want. For example, you can link to your friends' hypergrided opensims and to hypergrid gateways in open grids such as OSGrid. &lt;br /&gt;
&lt;br /&gt;
The great thing about this scenario is that all of your assets are stored on your computer, and not on somebody else's server. You can back them up using ordinary backend tools. The not so great thing about this scenario is that all of your assets are stored on your computer! If your disk goes berserk, you loose them. (so make sure you make external backups regularly)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoB.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Communities'''&lt;br /&gt;
&lt;br /&gt;
This second scenario is about communities, broadly construed. The idea here is that a group of people come together to support a small community grid, i.e. a common world where shared activities take place. But at the same time, the members of the community maintain their own standalone worlds. The standalones link to the community grid, and the community grid may link back to the individual members' worlds and other places of interest.&lt;br /&gt;
&lt;br /&gt;
The members' identities are probably the identities they have on their standalones, and their assets are also probably stored there. The assets present in the community regions, however, are stored on the grid asset server.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoC.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Grid Public Regions'''&lt;br /&gt;
&lt;br /&gt;
Walled-gardens are here to stay, and they serve many useful purposes. There is a hybrid mode for the hypergrid that some walled-garden grid operators may be interested in supporting. In this hybrid mode, most opensim instances on the grid run in normal, wall-garden mode, so no foreign visitors are allowed there - technically it is impossible to reach them. However, a few opensim instances on that grid can run in hypergrid mode, so that foreign visitors are allowed. This way, there is a gateway for grid-local users and arbitrary visitors to meet. This is also a good strategy for attracting new users to the grid, since random users are able to visit those gateway regions without having to sign up for an account upfront.&lt;br /&gt;
&lt;br /&gt;
This hybrid mode is very similar to what happens on the web. For example, anyone can visit Facebook's public pages without having to sign up for a Facebook account. However, only Facebook users can go further inside.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoD.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Level Games'''&lt;br /&gt;
&lt;br /&gt;
The normal version of OpenSim enforces a common map for all the regions on a grid. The hypergrid removes that constraint. As such, it becomes easy to design VW games where the world looks different depending of where the player is. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
There is a wide-spread assumption that open grids such as OSGrid and new forms of grids such as the hypergrid are inherently insecure, and that it will be impossible to develop a &amp;quot;goods-based&amp;quot; economy on top of them; only walled-gardens can be secured. This is both true and false. While it is true with the current state of things, open grids, whatever their form, can be made as secure as the web. The first step towards that is to define exactly what the security threats are, and how they affect (or not) open and closed grids. So, let's spell them out, and face them head-on. This will help put our feet on the ground so that we start developing appropriate solutions.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Clients ===&lt;br /&gt;
&lt;br /&gt;
==== CopyBots ====&lt;br /&gt;
&lt;br /&gt;
Everyone knows about the infamous [http://en.wikipedia.org/wiki/CopyBot CopyBot]. Using libraries such as [http://www.libsecondlife.org/wiki/Main_Page LibSL] (now known as OpenMetaverse) it is possible to develop clients for opensim servers that do unorthodox things such as bypassing the permissions system to copy people's assets. Bots written by griefers can do lots of other nasty things.&lt;br /&gt;
&lt;br /&gt;
Malicious bots are a problem for all opensim administrators, including walled-garden grids. They can be prevented, to a certain extent, by exo-technical solutions such as Terms of Service and real-world lawsuits. Technically speaking, the only way to keep intruders out is to run opensim inside a firewall, pretty much like all other pieces of client/server software out there. If that's an acceptable solution for your case, you should do it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately firewalls also keep the public out, and most opensim operators, even the ones running walled-garden grids, want to reach out to the public. In this case, opensim operators may develop additional technical obstacles for bots, similar to those we see on the Web. For example, make sure agents are being run by real people by giving them a human-challenge during the login/TP process, etc.&lt;br /&gt;
&lt;br /&gt;
Every obstacle to malicious clients lowers the risk of an intruder attack. However keep this in mind: no matter how many obstacles one builds, a sufficiently skilled and motivated attacker will be able to overcome them to penetrate opensims connected to the public internet. This affects hypergrid nodes as much as walled-garden grids. In fact, it's more pervasive than that: it affects '''all''' servers (opensim, web, etc.) connected to the public internet. Fighting malicious intruders is a fact of a connected world. Fortunately, those attacks don't happen very often, or the Web would have been dead by now.&lt;br /&gt;
&lt;br /&gt;
==== Web Clients ====&lt;br /&gt;
&lt;br /&gt;
CopyBots are the most well-known bots for opensim-based virtual worlds, but these virtual worlds are also susceptible to attacks by regular web clients. With the current state of things, it is actually easier to copy assets with a web-based client than with a libsl-based one. The weakness is that asset servers are connected to the public internet, and the protocol for interacting with them is public. &lt;br /&gt;
&lt;br /&gt;
OpenSim has some minimal guards in place to fence against these kinds of attacks. Specifically, when the inventory server receives a request for an item, it checks the session identifier of the requester. Web clients aren't logged in, so they are refused service. I don't want to expand much more on this, so not to make life easy for attackers, but let's just say that opensim has the necessary mechanisms in place to fence off web-based attackers.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Hosts ===&lt;br /&gt;
&lt;br /&gt;
==== Actively Malicious Hosts ====&lt;br /&gt;
&lt;br /&gt;
The new security threat introduced by openness, one that does not exist in closed grids, is the possibility of a user to visit a region that is running malicious code. In the current state of opensim, a malicious host can do serious damage to the user's assets. Let's see how.&lt;br /&gt;
&lt;br /&gt;
Assume you have your assets in your hypergrided-standalone opensim, and you go visit another opensim that happens to be running malicious code. Here is a non-exhaustive list of vulnerabilities that you are exposed to:&lt;br /&gt;
&lt;br /&gt;
* The host has your session id, so it can request your inventory items on your behalf and store copies in its local asset server. To add insult to injury, a malicious host could simply wipe out your inventory after having copied it.&lt;br /&gt;
* Even if the malicious host doesn't access your items by itself, every time you access items in your inventory while you are in that region, those items are cached in the region's local cache, and can be stored persistently by the malicious host.&lt;br /&gt;
&lt;br /&gt;
Malicious hosts can do a lot more damage, but those two are enough to illustrate this new kind of vulnerability affecting open grids. Note that this affects all open grids, i.e. those where arbitrary people can plug-in their opensims, and not just the hypergrid.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a family of simple solutions to this problem that can be summarized as &amp;quot;protecting you from yourself.&amp;quot; That proposal is described [[Hypergrid Inventory Access|here]].&lt;br /&gt;
&lt;br /&gt;
==== Piracy ====&lt;br /&gt;
&lt;br /&gt;
A second new security threat affecting open grids is one pertaining to commerce of virtual goods. Suppose you put something out for sale on your hypergrided opensim. A foreign user comes and buys it. What that really means is that that user will physically get a copy of the assets moved to his/her asset server, which is different from your asset server. The permissions will be whatever you define them to be, and using the regular VW client, that user can only do what you defined he/she should could do with the object, as usual. However, if the user has direct backend access to the asset and inventory servers, that person can simply modify the permissions on his/her copy. This is commonly known as '''piracy'''.  (This is also a problem with programmers who have direct access to the cache that their client keeps; in this case, the only thing that needs to be done to enable piracy is for the user to actually see a texture/animation/in-world object.  This does NOT allow scripts to be copied, though, since the script is only interpreted on the server and is never sent for interpretation by the client.)&lt;br /&gt;
&lt;br /&gt;
This situation is the kernel of the belief that open grids are hopeless for a virtual-goods economy. DRM discussion aside, maybe they are hopeless. But then, everyone thought the web was hopeless for selling music, and look at the success of iTunes in spite of all the piracy that still exists out there. Who will be the equivalent of iTunes for virtual hair, skin and clothes?&lt;br /&gt;
&lt;br /&gt;
== Hypergrid Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hyperlinks and Agent Transfers ===&lt;br /&gt;
&lt;br /&gt;
When you establish a link between your opensim and another, a message is sent out to that other opensim requesting information about it; the required information includes the network information of that opensim host, and the coordinates of its first region on its local grid in the form of a region handle. For example, suppose you are linking node X.com:9000, placing it in your local map at 900, 900. That opensim runs one or more regions that likely are not in 900, 900 on their own map; suppose the first region of that opensim is at 1100, 1100. From your point of view, it doesn't matter what those other coordinates are, and you don't need to know -- that's the key to being able to decentralize the &amp;quot;world&amp;quot; as given by a 2D map; you want to place it in your map at 900, 900. The &amp;quot;true&amp;quot; position of that simulator only matters for the LL viewer, when there are teleports between your world and that other opensim. This mapping between coordinate systems is the essence of  hyperlinks for opensim; it's one simple but critical thing that the hypergrid implementation does. The mapping happens on the TeleportFinish event; instead of sending the local coordinates to the viewer, the hypergrid teleport wrapper sends the remote coordinates.&lt;br /&gt;
&lt;br /&gt;
When an agent teleports through that hyperlink the following happens. First, before InformRegionOfChildAgent, the local opensim notifies the remote opensim of this foreign user via the &amp;quot;expect_hg_user&amp;quot; method. That message sends along the addresses of all the servers that this user uses, i.e. user, inventory and asset servers. The remote opensim places an entry for that user in its local user profile cache but not in its user database; the foreign user information is non-persistent. After that, the teleport process is exactly the same as the normal teleport process; the only difference is that the region handles are switched between the remote region's hyperlink position on the local grid and its actual position on its grid. &lt;br /&gt;
&lt;br /&gt;
In summary, the two new concepts introduced by the hypergrid are the concept of an hyperlink and the concept of a &amp;quot;local user&amp;quot; vs. &amp;quot;foreign user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Access ===&lt;br /&gt;
&lt;br /&gt;
Inventory access from abroad is done by wrapping the existing scene-inventory interactions with additional code that gets or posts inventory assets from/to the user's asset server. When inventory is accessed, the hypergrid wrapper checks if the user is foreign and, if she is, the wrapper simply brings the necessary assets from the user's asset server to the local asset cache and server; from then on, the wrapper passes the control to the existing inventory access functions. When something is added to inventory, the hypergrid wrapper is notified via an event, and posts the assets to the user's asset server. A cache of the exchanged item identifiers is maintained so that they aren't brought back over and over again.&lt;br /&gt;
&lt;br /&gt;
The result is that hypergrided opensim instances end up interacting with several asset servers, instead of just one. That interaction is implemented in a straightforward manner by instantiating several GridAssetClient objects, instead of just one.&lt;br /&gt;
&lt;br /&gt;
=== The Hypergrid Namespace ===&lt;br /&gt;
&lt;br /&gt;
Currently, the hypergrid is implemented outside of the OpenSim namespace, so that there is complete separation between what already exists and this new behavior. It has its own namespace, HyperGrid. In it, there are 4 sub-namespaces that follow directly the software architecture of OpenSim, namely:&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Framework''' extends OpenSim.Framework in the following manner:&lt;br /&gt;
** HGUserProfileData extends UserProfileData by introducing information about the user's &amp;quot;home&amp;quot;, namely the home address, port and remoting port. The user's home is not that user's user service; it's the opensim that the user has defined to be her home. This is necessary for supporting the home jump (Ctrl-Shift-H).&lt;br /&gt;
** HGNetworkServersInfo follows the spirit of NetworkServersInfo, although it neither extends it nor uses it. For now, it's a utility class whose two main functions are to convert domain names of servers to IP addresses, and to uniformly provide the answer to the question bool IsLocalUser(...).&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Environment''' extends OpenSim.Region.Environment.Scenes in the following manner:&lt;br /&gt;
** HGSceneCommunicationService extends SceneCommunicationService, overriding RequestTeleportToLocation. There are two very small but critical changes to the base method: (a) on the TeleportFinish event, we switch the region handles when the destination region is an hyperlink; (b) the connections at the end are always closed for hyperlink TPs.&lt;br /&gt;
** HGScene extends Scene, overriding TeleportClientHome(...). The only change to the base method is to stay away from the user server, for now, because the user service is still not completely wrapped up for foreign users. Once the user service is properly wrapped up, this class will become unnecessary.&lt;br /&gt;
** HGScene.Inventory is a partial class of HGScene, just like what happens in the OpenSim framework. This part of HGScene overrides some inventory-scene interaction methods, so that assets are fetched/posted from/to the user's asset server. Once that extra fetching/posting is done, these methods simply pass the ball to the base methods.&lt;br /&gt;
** HGAssetMapper: this is a new class specific to the hypergrid that manages the fetching and posting of assets between foreign regions where the user is and the user's asset server.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Protocol''' is a mashup of OpenSim.Region.Communications.*. This is the place where most of the hypergrid extension lies. One of the reasons for this is that the hypergrid communications part is doing one additional thing: it is making standalones network-able.&lt;br /&gt;
** HGCommunicationsStandalone extends CommuniationsLocal. Just as its base, it is a hub for the several network services available in standalone mode. The main difference is that those services are extensions of what's in OpenSim.&lt;br /&gt;
** HGCommunicationsGridMode extends CommunicationsManager directly. Again, it's a hub for the network services available in grid mode, those services being extensions of OpenSim.&lt;br /&gt;
** The cluster HGGridServices (superclass), HGGridServicesStandalone and HGGridServicesGridMode (subclasses) implements the OpenSim interfaces IGridServices and IInterRegionCommunications. The 2 subclasses are wrappers for LocalBackEndServices and OGS1GridServices, respectively. There is one common pattern throughout these classes: check if the region to talk to is an hyperlink; if it's not, simply delegate the work to LocalBackEndServices/OGS1GridServices; if it is, push the work to the base class HGGridServices. HGGridServices, in turn, does the management of hyperlink regions, and defines two additional pieces of inter-region protocol:&lt;br /&gt;
*** region_uuid: for linking regions&lt;br /&gt;
*** expect_hg_user: similar to the existing expect_user interface, but with a lot more information about the user being passed around, namely all the user's servers (inventory, asset, user, home, etc.)&lt;br /&gt;
** HGInventoryService extends LocalInventoryService and implements ISecureInventoryService. This class is the most obvious mashup of the pack, mixing local service access for standalone users and remote inventory access for when users are out and about. Right now, there is a fair amount of selective copy-and-paste, to stay away from the ugliness coming from OGS1InventoryService and OGS1SecureInventoryService. HGInventoryService is always a ISecureInventoryService. Its methods all follow the same pattern: check if the user is a local standalone user; if it is, pass the work to the base method (in LocalInventoryService); if it's not perform secure remote access.&lt;br /&gt;
** HGUserServices wraps OSG1UserServices, but it's not functional yet.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Modules''' is a collection of 3 region modules:&lt;br /&gt;
** HGWorldMapModule extends WorldMapModule. It reuses almost everything from the base class. The only small change is in RequestMapBlocks, where it tries to send Offline mapblocks to the client.&lt;br /&gt;
** HGStandaloneInventoryService and HGStandaloneAssetService do what their names say. They are region modules that allow access to inventory and assets for standalones, when the standalone user is out and about. In spirit, there is a lot in common between these modules and the REST inventory/asset plugin. Unfortunately, that plugin could not be used because it defines a completely different interface than that used by existing inventory and asset servers, and the access for the hypergrid must use a consistent interface.&lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[image:HypergridImplementation.jpg|600px|center|(Click on the image to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installing and Running Hypergrid ==&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
# Checkout OpenSim, prebuild and build as normal.&lt;br /&gt;
# Make the following changes to your OpenSim.ini:&lt;br /&gt;
#* The map: '''WorldMapModule = &amp;quot;HGWorldMap&amp;quot; ''' If you didn't have this setting in your original OpenSim.ini, make sure you place it under the [Startup] section.&lt;br /&gt;
#* If you're running your opensim in grid mode with the UGAIM servers on other machines, you're done. If you're running in standalone and you want it to be network-able, or if you have your grid on loopback (127.0.0.1) change all the [Network] server addresses to &amp;lt;nowiki&amp;gt;&amp;quot;http://&amp;lt;external_host_name&amp;gt;:&amp;lt;http_port&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;. See below.&lt;br /&gt;
# Run opensim like this: &amp;lt;nowiki&amp;gt;[mono] OpenSim.exe -hypergrid=true&amp;lt;/nowiki&amp;gt;. To make sure the hypergrid is running type this on your console: '''link-region'''. If you don't hear anything back, the hypergrid is not properly installed.&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a standalone:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:9300&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:9300&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:9300&lt;br /&gt;
 inventory_server_url = http://example.com:9300&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a grided opensim:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:8001&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:8002&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:8003&lt;br /&gt;
 inventory_server_url = http://example.com:8004&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Make sure you have a 'home' set. If your home region doesn't exist, the hyperlink TPs may not work. To set your home, go to one of your local regions and &amp;quot;Set Home&amp;quot; from the viewer.&lt;br /&gt;
&lt;br /&gt;
=== Linking regions ===&lt;br /&gt;
&lt;br /&gt;
On the console, type for example:&lt;br /&gt;
&lt;br /&gt;
link-region &amp;lt;Xloc&amp;gt; &amp;lt;Yloc&amp;gt; osl2.nac.uci.edu 9006 OSGrid Gateway&lt;br /&gt;
&lt;br /&gt;
* Use Xloc and Yloc that make sense to your world, i.e. close to your regions, but not adjacent.&lt;br /&gt;
* replace osl2.nac.uci.edu and 9006 with the domain name / ip address and the port of the region you want to link to&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Due to a viewer [https://jira.secondlife.com/browse/SVC-2941 bug], you can only TP between regions that are no more than 4096 cells apart in any dimension. What this means in practice is that if you want to link to OSGrid, you must have your own regions reachable from the (10,000; 10,000) point on the map, which is where OSGrid is centered. Place your regions somewhere in the 8,000s or the 12,000s.&lt;br /&gt;
&lt;br /&gt;
== Public Hypergrid Nodes ==&lt;br /&gt;
&lt;br /&gt;
The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns described above are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''osl2.nac.uci.edu 9006'''&lt;br /&gt;
The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''ucigrid02.nacs.uci.edu 9000'''&lt;br /&gt;
A region in the UCI Grid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine.&lt;br /&gt;
&lt;br /&gt;
* '''grid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Cyberlandia Gw&amp;quot; region.  http://www.cyberlandia.net Metaverso italiano 3D, more to 250 region and 1000 users. You can link to it as a way to link to Cyberlandia.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net.  Search on map &amp;quot;Cyberlandia grid&amp;quot; You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''joomla-italia.net 9000&lt;br /&gt;
The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World,Francogrid and Darwin&lt;br /&gt;
&lt;br /&gt;
* '''collateral.opensim-italia.net 9000&lt;br /&gt;
[Collateral World is CLOSED and now is part of SNI]&lt;br /&gt;
&lt;br /&gt;
* '''88.191.79.199 9050'''&lt;br /&gt;
Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* '''94.23.8.158  9999'''&lt;br /&gt;
Le Monde de Darwin node, The Lost of Darwin http://www.LeMondedeDarwin.com&lt;br /&gt;
----&lt;br /&gt;
[[Image:hypergrid.jpg]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''grid.k-grid.com 9000'''&lt;br /&gt;
K-grid,  [http://k-grid.com the Kool grid for the Kool KidZ] . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump&lt;br /&gt;
&lt;br /&gt;
* '''metropolis.hypergrid.org 9000'''&lt;br /&gt;
The Region &amp;quot;Center-World&amp;quot; (at 1000:1000) connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting. Connected via HG to the most of the Grids listed here. Current SVN-Build: 7934.&lt;br /&gt;
&lt;br /&gt;
* '''ascent.bluewallgroup.com 9910'''&lt;br /&gt;
This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the (2000,2000) range, or any region within 4096 units. [[Image:Hypernaut 001.png|150px|none|thumb|Get your Hypernaut here :)]] &lt;br /&gt;
&lt;br /&gt;
* '''sim.thestudyofracialism.org 9000'''&lt;br /&gt;
TSOR1 is a stand-alone sim (at 4000,4000) owned by '''Backintyme Publishing'''. It connects to most of the other downrange sites listed here. Although currently sparse, the sim is eventually intended for an SL discussion-group's migration from SL to OS.&lt;br /&gt;
&lt;br /&gt;
* '''pc.backintyme.com 9100'''&lt;br /&gt;
TSOR2 is a small teleport relay island, also owned by '''Backintyme Publishing''', intended for jumps to the vicinity of OSGrid. It is linked to most of the uprange sites listed here.&lt;br /&gt;
&lt;br /&gt;
* '''http://myopengrid.com 9000'''&lt;br /&gt;
Myopengrid is connected to osl2.nac.uci.edu &amp;quot;Osgrid Gateway&amp;quot; our regions are at (7000,7000).&lt;br /&gt;
&lt;br /&gt;
* '''cuonsim1.de 9300'''&lt;br /&gt;
Cuon-Grid is a little grid and has some Main Sims with linux themes, Regions are at (10000,10000),server are in Germany.To login in to the grid use this http://sim-linuxmain.org:8081/CuonGrid/index.html. There are free sims for testing.&lt;br /&gt;
&lt;br /&gt;
* '''metaversesims.net 9014'''&lt;br /&gt;
Standalone mode - 6 regions at (9000,9000) - linked to the grids shown below&lt;br /&gt;
----&lt;br /&gt;
[[Image:Mtvs09010101.jpg]]&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Hypergrid</id>
		<title>Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Hypergrid"/>
				<updated>2009-01-07T00:12:57Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: /* Public Hypergrid Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The OpenSim Hypergrid==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the hypergrid? ===&lt;br /&gt;
&amp;lt;!-- [[image:VWV.jpg|250px|thumb|Web of Virtual Worlds]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hypergrid is an extension to opensim that allows you to link your opensim to other opensims on the internet, and that supports seamless agent transfers among those opensims. It can be used both in standalone mode and in grid mode. The hypergrid is effectively supporting the emergence of a Web of virtual worlds. &lt;br /&gt;
&lt;br /&gt;
The basic idea for the hypergrid is that region/grid administrations can place hyperlinks on their map to hypergrided regions run by others. Once those hyperlinks are established, users interact with those regions in exactly the same way as they interact with local regions. Specifically, users can choose to teleport there. Once the user reaches the region behind the hyperlink, she is automatically interacting with a different virtual world without having to logout from the world where she came from, and while still having access to her inventory.&lt;br /&gt;
&lt;br /&gt;
The hypergrid started as a GForge project, but it is now included in the standard distribution of OpenSim. To run your OpenSim instance in hypergrid mode, please see [[Hypergrid#Installing_and_Running_Hypergrid|Installing and Running]].&lt;br /&gt;
&lt;br /&gt;
=== Virtual World Hyperlinks ===&lt;br /&gt;
[[image:hghyperlink.jpg|250px|thumb|A Virtual World Hyperlink]]&lt;br /&gt;
&lt;br /&gt;
We're all familiar with hypertext links on the Web. But what is a virtual world hyperlink?&lt;br /&gt;
&lt;br /&gt;
In the hypergrid model, we consider the 2D map of the virtual world as the equivalent of a web page. As such, a VW hyperlink is simply a region on that map. &lt;br /&gt;
&lt;br /&gt;
The default model of opensim-based virtual worlds already supports this concept of hyperlink, to some extent. When you teleport from one region to another via the map, chances are you are migrating your agent into a different opensim server. This migration is a glorified &amp;quot;agent transfer&amp;quot; that also exists, in rudimentary form, on the web when hypertext links are followed. The default model, however, imposes two very strong constraints on these hyperlinks: &lt;br /&gt;
# The entire map of regions is controlled by a central service known as the grid service, whose job is to provide a uniform view of the world to all of its regions.&lt;br /&gt;
# The only agents that can be transferred are those pertaining to users known to another central service, the user service; if the incoming user is not on that service's database, the agent transfer doesn't go through.&lt;br /&gt;
&lt;br /&gt;
The hypergrid simply removes these two constraints. &lt;br /&gt;
&lt;br /&gt;
First, it allows individual opensim instances to add &amp;quot;neighbors&amp;quot; to their local map, shifting the control of the map down from the grid server to individual opensim instances (although hyperlinks can also be served by grid servers if grid admins so wish). In doing so, the world becomes a lot more interesting and varied. The map that you see in one opensim instance may be completely different from the map that you see after you teleport via an hyperlink. As an opensim administrator, you are free to define what other opensims you want to see on your map.&lt;br /&gt;
&lt;br /&gt;
Second, it allows the transfer of agents pertaining to foreigner users, i.e. users who are registered elsewhere. Instead of assuming one central user service, the hypergrid assumes an arbitrarily large number of such services distributed all over the world. As such, when agents are transferred among hypergrided opensims, a lot more information is passed about the corresponding user. That information includes the collection of servers that the transferring user needs.&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
The following are some usage scenarios. There isn't a clear separation between these scenarios, there's a large overlap between them. This is also not an exhaustive list. The purpose of these descriptions is to give you some starting ideas for how to use the hypergrid in practice. Please feel free to add other interesting scenarios to this list.&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoA.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Personal Worlds'''&lt;br /&gt;
&lt;br /&gt;
This first scenario pertains to standalone opensims. Normally, standalones are completely disconnected from the internet. However, when run in hypergrid mode, standalones become network-able. As such, you can run your own world in your own computer, and link your world to whoever you want. For example, you can link to your friends' hypergrided opensims and to hypergrid gateways in open grids such as OSGrid. &lt;br /&gt;
&lt;br /&gt;
The great thing about this scenario is that all of your assets are stored on your computer, and not on somebody else's server. You can back them up using ordinary backend tools. The not so great thing about this scenario is that all of your assets are stored on your computer! If your disk goes berserk, you loose them. (so make sure you make external backups regularly)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoB.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Communities'''&lt;br /&gt;
&lt;br /&gt;
This second scenario is about communities, broadly construed. The idea here is that a group of people come together to support a small community grid, i.e. a common world where shared activities take place. But at the same time, the members of the community maintain their own standalone worlds. The standalones link to the community grid, and the community grid may link back to the individual members' worlds and other places of interest.&lt;br /&gt;
&lt;br /&gt;
The members' identities are probably the identities they have on their standalones, and their assets are also probably stored there. The assets present in the community regions, however, are stored on the grid asset server.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoC.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Grid Public Regions'''&lt;br /&gt;
&lt;br /&gt;
Walled-gardens are here to stay, and they serve many useful purposes. There is a hybrid mode for the hypergrid that some walled-garden grid operators may be interested in supporting. In this hybrid mode, most opensim instances on the grid run in normal, wall-garden mode, so no foreign visitors are allowed there - technically it is impossible to reach them. However, a few opensim instances on that grid can run in hypergrid mode, so that foreign visitors are allowed. This way, there is a gateway for grid-local users and arbitrary visitors to meet. This is also a good strategy for attracting new users to the grid, since random users are able to visit those gateway regions without having to sign up for an account upfront.&lt;br /&gt;
&lt;br /&gt;
This hybrid mode is very similar to what happens on the web. For example, anyone can visit Facebook's public pages without having to sign up for a Facebook account. However, only Facebook users can go further inside.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoD.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Level Games'''&lt;br /&gt;
&lt;br /&gt;
The normal version of OpenSim enforces a common map for all the regions on a grid. The hypergrid removes that constraint. As such, it becomes easy to design VW games where the world looks different depending of where the player is. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
There is a wide-spread assumption that open grids such as OSGrid and new forms of grids such as the hypergrid are inherently insecure, and that it will be impossible to develop a &amp;quot;goods-based&amp;quot; economy on top of them; only walled-gardens can be secured. This is both true and false. While it is true with the current state of things, open grids, whatever their form, can be made as secure as the web. The first step towards that is to define exactly what the security threats are, and how they affect (or not) open and closed grids. So, let's spell them out, and face them head-on. This will help put our feet on the ground so that we start developing appropriate solutions.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Clients ===&lt;br /&gt;
&lt;br /&gt;
==== CopyBots ====&lt;br /&gt;
&lt;br /&gt;
Everyone knows about the infamous [http://en.wikipedia.org/wiki/CopyBot CopyBot]. Using libraries such as [http://www.libsecondlife.org/wiki/Main_Page LibSL] (now known as OpenMetaverse) it is possible to develop clients for opensim servers that do unorthodox things such as bypassing the permissions system to copy people's assets. Bots written by griefers can do lots of other nasty things.&lt;br /&gt;
&lt;br /&gt;
Malicious bots are a problem for all opensim administrators, including walled-garden grids. They can be prevented, to a certain extent, by exo-technical solutions such as Terms of Service and real-world lawsuits. Technically speaking, the only way to keep intruders out is to run opensim inside a firewall, pretty much like all other pieces of client/server software out there. If that's an acceptable solution for your case, you should do it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately firewalls also keep the public out, and most opensim operators, even the ones running walled-garden grids, want to reach out to the public. In this case, opensim operators may develop additional technical obstacles for bots, similar to those we see on the Web. For example, make sure agents are being run by real people by giving them a human-challenge during the login/TP process, etc.&lt;br /&gt;
&lt;br /&gt;
Every obstacle to malicious clients lowers the risk of an intruder attack. However keep this in mind: no matter how many obstacles one builds, a sufficiently skilled and motivated attacker will be able to overcome them to penetrate opensims connected to the public internet. This affects hypergrid nodes as much as walled-garden grids. In fact, it's more pervasive than that: it affects '''all''' servers (opensim, web, etc.) connected to the public internet. Fighting malicious intruders is a fact of a connected world. Fortunately, those attacks don't happen very often, or the Web would have been dead by now.&lt;br /&gt;
&lt;br /&gt;
==== Web Clients ====&lt;br /&gt;
&lt;br /&gt;
CopyBots are the most well-known bots for opensim-based virtual worlds, but these virtual worlds are also susceptible to attacks by regular web clients. With the current state of things, it is actually easier to copy assets with a web-based client than with a libsl-based one. The weakness is that asset servers are connected to the public internet, and the protocol for interacting with them is public. &lt;br /&gt;
&lt;br /&gt;
OpenSim has some minimal guards in place to fence against these kinds of attacks. Specifically, when the inventory server receives a request for an item, it checks the session identifier of the requester. Web clients aren't logged in, so they are refused service. I don't want to expand much more on this, so not to make life easy for attackers, but let's just say that opensim has the necessary mechanisms in place to fence off web-based attackers.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Hosts ===&lt;br /&gt;
&lt;br /&gt;
==== Actively Malicious Hosts ====&lt;br /&gt;
&lt;br /&gt;
The new security threat introduced by openness, one that does not exist in closed grids, is the possibility of a user to visit a region that is running malicious code. In the current state of opensim, a malicious host can do serious damage to the user's assets. Let's see how.&lt;br /&gt;
&lt;br /&gt;
Assume you have your assets in your hypergrided-standalone opensim, and you go visit another opensim that happens to be running malicious code. Here is a non-exhaustive list of vulnerabilities that you are exposed to:&lt;br /&gt;
&lt;br /&gt;
* The host has your session id, so it can request your inventory items on your behalf and store copies in its local asset server. To add insult to injury, a malicious host could simply wipe out your inventory after having copied it.&lt;br /&gt;
* Even if the malicious host doesn't access your items by itself, every time you access items in your inventory while you are in that region, those items are cached in the region's local cache, and can be stored persistently by the malicious host.&lt;br /&gt;
&lt;br /&gt;
Malicious hosts can do a lot more damage, but those two are enough to illustrate this new kind of vulnerability affecting open grids. Note that this affects all open grids, i.e. those where arbitrary people can plug-in their opensims, and not just the hypergrid.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a family of simple solutions to this problem that can be summarized as &amp;quot;protecting you from yourself.&amp;quot; That proposal is described [[Hypergrid Inventory Access|here]].&lt;br /&gt;
&lt;br /&gt;
==== Piracy ====&lt;br /&gt;
&lt;br /&gt;
A second new security threat affecting open grids is one pertaining to commerce of virtual goods. Suppose you put something out for sale on your hypergrided opensim. A foreign user comes and buys it. What that really means is that that user will physically get a copy of the assets moved to his/her asset server, which is different from your asset server. The permissions will be whatever you define them to be, and using the regular VW client, that user can only do what you defined he/she should could do with the object, as usual. However, if the user has direct backend access to the asset and inventory servers, that person can simply modify the permissions on his/her copy. This is commonly known as '''piracy'''.  (This is also a problem with programmers who have direct access to the cache that their client keeps; in this case, the only thing that needs to be done to enable piracy is for the user to actually see a texture/animation/in-world object.  This does NOT allow scripts to be copied, though, since the script is only interpreted on the server and is never sent for interpretation by the client.)&lt;br /&gt;
&lt;br /&gt;
This situation is the kernel of the belief that open grids are hopeless for a virtual-goods economy. DRM discussion aside, maybe they are hopeless. But then, everyone thought the web was hopeless for selling music, and look at the success of iTunes in spite of all the piracy that still exists out there. Who will be the equivalent of iTunes for virtual hair, skin and clothes?&lt;br /&gt;
&lt;br /&gt;
== Hypergrid Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hyperlinks and Agent Transfers ===&lt;br /&gt;
&lt;br /&gt;
When you establish a link between your opensim and another, a message is sent out to that other opensim requesting information about it; the required information includes the network information of that opensim host, and the coordinates of its first region on its local grid in the form of a region handle. For example, suppose you are linking node X.com:9000, placing it in your local map at 900, 900. That opensim runs one or more regions that likely are not in 900, 900 on their own map; suppose the first region of that opensim is at 1100, 1100. From your point of view, it doesn't matter what those other coordinates are, and you don't need to know -- that's the key to being able to decentralize the &amp;quot;world&amp;quot; as given by a 2D map; you want to place it in your map at 900, 900. The &amp;quot;true&amp;quot; position of that simulator only matters for the LL viewer, when there are teleports between your world and that other opensim. This mapping between coordinate systems is the essence of  hyperlinks for opensim; it's one simple but critical thing that the hypergrid implementation does. The mapping happens on the TeleportFinish event; instead of sending the local coordinates to the viewer, the hypergrid teleport wrapper sends the remote coordinates.&lt;br /&gt;
&lt;br /&gt;
When an agent teleports through that hyperlink the following happens. First, before InformRegionOfChildAgent, the local opensim notifies the remote opensim of this foreign user via the &amp;quot;expect_hg_user&amp;quot; method. That message sends along the addresses of all the servers that this user uses, i.e. user, inventory and asset servers. The remote opensim places an entry for that user in its local user profile cache but not in its user database; the foreign user information is non-persistent. After that, the teleport process is exactly the same as the normal teleport process; the only difference is that the region handles are switched between the remote region's hyperlink position on the local grid and its actual position on its grid. &lt;br /&gt;
&lt;br /&gt;
In summary, the two new concepts introduced by the hypergrid are the concept of an hyperlink and the concept of a &amp;quot;local user&amp;quot; vs. &amp;quot;foreign user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Access ===&lt;br /&gt;
&lt;br /&gt;
Inventory access from abroad is done by wrapping the existing scene-inventory interactions with additional code that gets or posts inventory assets from/to the user's asset server. When inventory is accessed, the hypergrid wrapper checks if the user is foreign and, if she is, the wrapper simply brings the necessary assets from the user's asset server to the local asset cache and server; from then on, the wrapper passes the control to the existing inventory access functions. When something is added to inventory, the hypergrid wrapper is notified via an event, and posts the assets to the user's asset server. A cache of the exchanged item identifiers is maintained so that they aren't brought back over and over again.&lt;br /&gt;
&lt;br /&gt;
The result is that hypergrided opensim instances end up interacting with several asset servers, instead of just one. That interaction is implemented in a straightforward manner by instantiating several GridAssetClient objects, instead of just one.&lt;br /&gt;
&lt;br /&gt;
=== The Hypergrid Namespace ===&lt;br /&gt;
&lt;br /&gt;
Currently, the hypergrid is implemented outside of the OpenSim namespace, so that there is complete separation between what already exists and this new behavior. It has its own namespace, HyperGrid. In it, there are 4 sub-namespaces that follow directly the software architecture of OpenSim, namely:&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Framework''' extends OpenSim.Framework in the following manner:&lt;br /&gt;
** HGUserProfileData extends UserProfileData by introducing information about the user's &amp;quot;home&amp;quot;, namely the home address, port and remoting port. The user's home is not that user's user service; it's the opensim that the user has defined to be her home. This is necessary for supporting the home jump (Ctrl-Shift-H).&lt;br /&gt;
** HGNetworkServersInfo follows the spirit of NetworkServersInfo, although it neither extends it nor uses it. For now, it's a utility class whose two main functions are to convert domain names of servers to IP addresses, and to uniformly provide the answer to the question bool IsLocalUser(...).&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Environment''' extends OpenSim.Region.Environment.Scenes in the following manner:&lt;br /&gt;
** HGSceneCommunicationService extends SceneCommunicationService, overriding RequestTeleportToLocation. There are two very small but critical changes to the base method: (a) on the TeleportFinish event, we switch the region handles when the destination region is an hyperlink; (b) the connections at the end are always closed for hyperlink TPs.&lt;br /&gt;
** HGScene extends Scene, overriding TeleportClientHome(...). The only change to the base method is to stay away from the user server, for now, because the user service is still not completely wrapped up for foreign users. Once the user service is properly wrapped up, this class will become unnecessary.&lt;br /&gt;
** HGScene.Inventory is a partial class of HGScene, just like what happens in the OpenSim framework. This part of HGScene overrides some inventory-scene interaction methods, so that assets are fetched/posted from/to the user's asset server. Once that extra fetching/posting is done, these methods simply pass the ball to the base methods.&lt;br /&gt;
** HGAssetMapper: this is a new class specific to the hypergrid that manages the fetching and posting of assets between foreign regions where the user is and the user's asset server.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Protocol''' is a mashup of OpenSim.Region.Communications.*. This is the place where most of the hypergrid extension lies. One of the reasons for this is that the hypergrid communications part is doing one additional thing: it is making standalones network-able.&lt;br /&gt;
** HGCommunicationsStandalone extends CommuniationsLocal. Just as its base, it is a hub for the several network services available in standalone mode. The main difference is that those services are extensions of what's in OpenSim.&lt;br /&gt;
** HGCommunicationsGridMode extends CommunicationsManager directly. Again, it's a hub for the network services available in grid mode, those services being extensions of OpenSim.&lt;br /&gt;
** The cluster HGGridServices (superclass), HGGridServicesStandalone and HGGridServicesGridMode (subclasses) implements the OpenSim interfaces IGridServices and IInterRegionCommunications. The 2 subclasses are wrappers for LocalBackEndServices and OGS1GridServices, respectively. There is one common pattern throughout these classes: check if the region to talk to is an hyperlink; if it's not, simply delegate the work to LocalBackEndServices/OGS1GridServices; if it is, push the work to the base class HGGridServices. HGGridServices, in turn, does the management of hyperlink regions, and defines two additional pieces of inter-region protocol:&lt;br /&gt;
*** region_uuid: for linking regions&lt;br /&gt;
*** expect_hg_user: similar to the existing expect_user interface, but with a lot more information about the user being passed around, namely all the user's servers (inventory, asset, user, home, etc.)&lt;br /&gt;
** HGInventoryService extends LocalInventoryService and implements ISecureInventoryService. This class is the most obvious mashup of the pack, mixing local service access for standalone users and remote inventory access for when users are out and about. Right now, there is a fair amount of selective copy-and-paste, to stay away from the ugliness coming from OGS1InventoryService and OGS1SecureInventoryService. HGInventoryService is always a ISecureInventoryService. Its methods all follow the same pattern: check if the user is a local standalone user; if it is, pass the work to the base method (in LocalInventoryService); if it's not perform secure remote access.&lt;br /&gt;
** HGUserServices wraps OSG1UserServices, but it's not functional yet.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Modules''' is a collection of 3 region modules:&lt;br /&gt;
** HGWorldMapModule extends WorldMapModule. It reuses almost everything from the base class. The only small change is in RequestMapBlocks, where it tries to send Offline mapblocks to the client.&lt;br /&gt;
** HGStandaloneInventoryService and HGStandaloneAssetService do what their names say. They are region modules that allow access to inventory and assets for standalones, when the standalone user is out and about. In spirit, there is a lot in common between these modules and the REST inventory/asset plugin. Unfortunately, that plugin could not be used because it defines a completely different interface than that used by existing inventory and asset servers, and the access for the hypergrid must use a consistent interface.&lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[image:HypergridImplementation.jpg|600px|center|(Click on the image to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installing and Running Hypergrid ==&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
# Checkout OpenSim, prebuild and build as normal.&lt;br /&gt;
# Make the following changes to your OpenSim.ini:&lt;br /&gt;
#* The map: '''WorldMapModule = &amp;quot;HGWorldMap&amp;quot; ''' If you didn't have this setting in your original OpenSim.ini, make sure you place it under the [Startup] section.&lt;br /&gt;
#* If you're running your opensim in grid mode with the UGAIM servers on other machines, you're done. If you're running in standalone and you want it to be network-able, or if you have your grid on loopback (127.0.0.1) change all the [Network] server addresses to &amp;lt;nowiki&amp;gt;&amp;quot;http://&amp;lt;external_host_name&amp;gt;:&amp;lt;http_port&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;. See below.&lt;br /&gt;
# Run opensim like this: &amp;lt;nowiki&amp;gt;[mono] OpenSim.exe -hypergrid=true&amp;lt;/nowiki&amp;gt;. To make sure the hypergrid is running type this on your console: '''link-region'''. If you don't hear anything back, the hypergrid is not properly installed.&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a standalone:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:9300&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:9300&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:9300&lt;br /&gt;
 inventory_server_url = http://example.com:9300&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a grided opensim:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:8001&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:8002&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:8003&lt;br /&gt;
 inventory_server_url = http://example.com:8004&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Make sure you have a 'home' set. If your home region doesn't exist, the hyperlink TPs may not work. To set your home, go to one of your local regions and &amp;quot;Set Home&amp;quot; from the viewer.&lt;br /&gt;
&lt;br /&gt;
=== Linking regions ===&lt;br /&gt;
&lt;br /&gt;
On the console, type for example:&lt;br /&gt;
&lt;br /&gt;
link-region &amp;lt;Xloc&amp;gt; &amp;lt;Yloc&amp;gt; osl2.nac.uci.edu 9006 OSGrid Gateway&lt;br /&gt;
&lt;br /&gt;
* Use Xloc and Yloc that make sense to your world, i.e. close to your regions, but not adjacent.&lt;br /&gt;
* replace osl2.nac.uci.edu and 9006 with the domain name / ip address and the port of the region you want to link to&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Due to a viewer [https://jira.secondlife.com/browse/SVC-2941 bug], you can only TP between regions that are no more than 4096 cells apart in any dimension. What this means in practice is that if you want to link to OSGrid, you must have your own regions reachable from the (10,000; 10,000) point on the map, which is where OSGrid is centered. Place your regions somewhere in the 8,000s or the 12,000s.&lt;br /&gt;
&lt;br /&gt;
== Public Hypergrid Nodes ==&lt;br /&gt;
&lt;br /&gt;
The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns described above are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''osl2.nac.uci.edu 9006'''&lt;br /&gt;
The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''ucigrid02.nacs.uci.edu 9000'''&lt;br /&gt;
A region in the UCI Grid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine.&lt;br /&gt;
&lt;br /&gt;
* '''grid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Cyberlandia Gw&amp;quot; region.  http://www.cyberlandia.net Metaverso italiano 3D, more to 250 region and 1000 users. You can link to it as a way to link to Cyberlandia.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net.  Search on map &amp;quot;Cyberlandia grid&amp;quot; You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''joomla-italia.net 9000&lt;br /&gt;
The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World,Francogrid and Darwin&lt;br /&gt;
&lt;br /&gt;
* '''collateral.opensim-italia.net 9000&lt;br /&gt;
[Collateral World is CLOSED and now is part of SNI]&lt;br /&gt;
&lt;br /&gt;
* '''88.191.79.199 9050'''&lt;br /&gt;
Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* '''94.23.8.158  9999'''&lt;br /&gt;
Le Monde de Darwin node, The Lost of Darwin http://www.LeMondedeDarwin.com&lt;br /&gt;
----&lt;br /&gt;
[[Image:hypergrid.jpg]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''grid.k-grid.com 9000'''&lt;br /&gt;
K-grid,  [http://k-grid.com the Kool grid for the Kool KidZ] . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump&lt;br /&gt;
&lt;br /&gt;
* '''metropolis.hypergrid.org 9000'''&lt;br /&gt;
The Region &amp;quot;Center-World&amp;quot; (at 1000:1000) connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting. Connected via HG to the most of the Grids listed here. Current SVN-Build: 7934.&lt;br /&gt;
&lt;br /&gt;
* '''ascent.bluewallgroup.com 9910'''&lt;br /&gt;
This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the (2000,2000) range, or any region within 4096 units. [[Image:Hypernaut 001.png|150px|none|thumb|Get your Hypernaut here :)]] &lt;br /&gt;
&lt;br /&gt;
* '''sim.thestudyofracialism.org 9000'''&lt;br /&gt;
TSOR1 is a stand-alone 2-region sim (at 4000,4000) owned by '''Backintyme Publishing'''. It connects to most of the other downrange sites listed here. Although currently sparse, the sim is eventually intended for an SL discussion-group's migration from SL to OS.&lt;br /&gt;
&lt;br /&gt;
* '''pc.backintyme.com 9100'''&lt;br /&gt;
A small teleport relay island, also owned by '''Backintyme Publishing''', intended for jumps to the vicinity of OSGrid. It is linked to most of the uprange sites listed here.&lt;br /&gt;
&lt;br /&gt;
* '''http://myopengrid.com 9000'''&lt;br /&gt;
Myopengrid is connected to osl2.nac.uci.edu &amp;quot;Osgrid Gateway&amp;quot; our regions are at (7000,7000).&lt;br /&gt;
&lt;br /&gt;
* '''cuonsim1.de 9300'''&lt;br /&gt;
Cuon-Grid is a little grid and has some Main Sims with linux themes, Regions are at (10000,10000),server are in Germany.To login in to the grid use this http://sim-linuxmain.org:8081/CuonGrid/index.html. There are free sims for testing.&lt;br /&gt;
&lt;br /&gt;
* '''metaversesims.net 9014'''&lt;br /&gt;
Standalone mode - 6 regions at (9000,9000) - linked to the grids shown below&lt;br /&gt;
----&lt;br /&gt;
[[Image:Mtvs09010101.jpg]]&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Hypergrid</id>
		<title>Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Hypergrid"/>
				<updated>2008-12-29T22:33:32Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: /* Public Hypergrid Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The OpenSim Hypergrid==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the hypergrid? ===&lt;br /&gt;
&amp;lt;!-- [[image:VWV.jpg|250px|thumb|Web of Virtual Worlds]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hypergrid is an extension to opensim that allows you to link your opensim to other opensims on the internet, and that supports seamless agent transfers among those opensims. It can be used both in standalone mode and in grid mode. The hypergrid is effectively supporting the emergence of a Web of virtual worlds. &lt;br /&gt;
&lt;br /&gt;
The basic idea for the hypergrid is that region/grid administrations can place hyperlinks on their map to hypergrided regions run by others. Once those hyperlinks are established, users interact with those regions in exactly the same way as they interact with local regions. Specifically, users can choose to teleport there. Once the user reaches the region behind the hyperlink, she is automatically interacting with a different virtual world without having to logout from the world where she came from, and while still having access to her inventory.&lt;br /&gt;
&lt;br /&gt;
The hypergrid started as a GForge project, but it is now included in the standard distribution of OpenSim. To run your OpenSim instance in hypergrid mode, please see [[Hypergrid#Installing_and_Running_Hypergrid|Installing and Running]].&lt;br /&gt;
&lt;br /&gt;
=== Virtual World Hyperlinks ===&lt;br /&gt;
[[image:hghyperlink.jpg|250px|thumb|A Virtual World Hyperlink]]&lt;br /&gt;
&lt;br /&gt;
We're all familiar with hypertext links on the Web. But what is a virtual world hyperlink?&lt;br /&gt;
&lt;br /&gt;
In the hypergrid model, we consider the 2D map of the virtual world as the equivalent of a web page. As such, a VW hyperlink is simply a region on that map. &lt;br /&gt;
&lt;br /&gt;
The default model of opensim-based virtual worlds already supports this concept of hyperlink, to some extent. When you teleport from one region to another via the map, chances are you are migrating your agent into a different opensim server. This migration is a glorified &amp;quot;agent transfer&amp;quot; that also exists, in rudimentary form, on the web when hypertext links are followed. The default model, however, imposes two very strong constraints on these hyperlinks: &lt;br /&gt;
# The entire map of regions is controlled by a central service known as the grid service, whose job is to provide a uniform view of the world to all of its regions.&lt;br /&gt;
# The only agents that can be transferred are those pertaining to users known to another central service, the user service; if the incoming user is not on that service's database, the agent transfer doesn't go through.&lt;br /&gt;
&lt;br /&gt;
The hypergrid simply removes these two constraints. &lt;br /&gt;
&lt;br /&gt;
First, it allows individual opensim instances to add &amp;quot;neighbors&amp;quot; to their local map, shifting the control of the map down from the grid server to individual opensim instances (although hyperlinks can also be served by grid servers if grid admins so wish). In doing so, the world becomes a lot more interesting and varied. The map that you see in one opensim instance may be completely different from the map that you see after you teleport via an hyperlink. As an opensim administrator, you are free to define what other opensims you want to see on your map.&lt;br /&gt;
&lt;br /&gt;
Second, it allows the transfer of agents pertaining to foreigner users, i.e. users who are registered elsewhere. Instead of assuming one central user service, the hypergrid assumes an arbitrarily large number of such services distributed all over the world. As such, when agents are transferred among hypergrided opensims, a lot more information is passed about the corresponding user. That information includes the collection of servers that the transferring user needs.&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
The following are some usage scenarios. There isn't a clear separation between these scenarios, there's a large overlap between them. This is also not an exhaustive list. The purpose of these descriptions is to give you some starting ideas for how to use the hypergrid in practice. Please feel free to add other interesting scenarios to this list.&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoA.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Personal Worlds'''&lt;br /&gt;
&lt;br /&gt;
This first scenario pertains to standalone opensims. Normally, standalones are completely disconnected from the internet. However, when run in hypergrid mode, standalones become network-able. As such, you can run your own world in your own computer, and link your world to whoever you want. For example, you can link to your friends' hypergrided opensims and to hypergrid gateways in open grids such as OSGrid. &lt;br /&gt;
&lt;br /&gt;
The great thing about this scenario is that all of your assets are stored on your computer, and not on somebody else's server. You can back them up using ordinary backend tools. The not so great thing about this scenario is that all of your assets are stored on your computer! If your disk goes berserk, you loose them. (so make sure you make external backups regularly)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoB.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Communities'''&lt;br /&gt;
&lt;br /&gt;
This second scenario is about communities, broadly construed. The idea here is that a group of people come together to support a small community grid, i.e. a common world where shared activities take place. But at the same time, the members of the community maintain their own standalone worlds. The standalones link to the community grid, and the community grid may link back to the individual members' worlds and other places of interest.&lt;br /&gt;
&lt;br /&gt;
The members' identities are probably the identities they have on their standalones, and their assets are also probably stored there. The assets present in the community regions, however, are stored on the grid asset server.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoC.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Grid Public Regions'''&lt;br /&gt;
&lt;br /&gt;
Walled-gardens are here to stay, and they serve many useful purposes. There is a hybrid mode for the hypergrid that some walled-garden grid operators may be interested in supporting. In this hybrid mode, most opensim instances on the grid run in normal, wall-garden mode, so no foreign visitors are allowed there - technically it is impossible to reach them. However, a few opensim instances on that grid can run in hypergrid mode, so that foreign visitors are allowed. This way, there is a gateway for grid-local users and arbitrary visitors to meet. This is also a good strategy for attracting new users to the grid, since random users are able to visit those gateway regions without having to sign up for an account upfront.&lt;br /&gt;
&lt;br /&gt;
This hybrid mode is very similar to what happens on the web. For example, anyone can visit Facebook's public pages without having to sign up for a Facebook account. However, only Facebook users can go further inside.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoD.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Level Games'''&lt;br /&gt;
&lt;br /&gt;
The normal version of OpenSim enforces a common map for all the regions on a grid. The hypergrid removes that constraint. As such, it becomes easy to design VW games where the world looks different depending of where the player is. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
There is a wide-spread assumption that open grids such as OSGrid and new forms of grids such as the hypergrid are inherently insecure, and that it will be impossible to develop a &amp;quot;goods-based&amp;quot; economy on top of them; only walled-gardens can be secured. This is both true and false. While it is true with the current state of things, open grids, whatever their form, can be made as secure as the web. The first step towards that is to define exactly what the security threats are, and how they affect (or not) open and closed grids. So, let's spell them out, and face them head-on. This will help put our feet on the ground so that we start developing appropriate solutions.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Clients ===&lt;br /&gt;
&lt;br /&gt;
==== CopyBots ====&lt;br /&gt;
&lt;br /&gt;
Everyone knows about the infamous [http://en.wikipedia.org/wiki/CopyBot CopyBot]. Using libraries such as [http://www.libsecondlife.org/wiki/Main_Page LibSL] (now known as OpenMetaverse) it is possible to develop clients for opensim servers that do unorthodox things such as bypassing the permissions system to copy people's assets. Bots written by griefers can do lots of other nasty things.&lt;br /&gt;
&lt;br /&gt;
Malicious bots are a problem for all opensim administrators, including walled-garden grids. They can be prevented, to a certain extent, by exo-technical solutions such as Terms of Service and real-world lawsuits. Technically speaking, the only way to keep intruders out is to run opensim inside a firewall, pretty much like all other pieces of client/server software out there. If that's an acceptable solution for your case, you should do it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately firewalls also keep the public out, and most opensim operators, even the ones running walled-garden grids, want to reach out to the public. In this case, opensim operators may develop additional technical obstacles for bots, similar to those we see on the Web. For example, make sure agents are being run by real people by giving them a human-challenge during the login/TP process, etc.&lt;br /&gt;
&lt;br /&gt;
Every obstacle to malicious clients lowers the risk of an intruder attack. However keep this in mind: no matter how many obstacles one builds, a sufficiently skilled and motivated attacker will be able to overcome them to penetrate opensims connected to the public internet. This affects hypergrid nodes as much as walled-garden grids. In fact, it's more pervasive than that: it affects '''all''' servers (opensim, web, etc.) connected to the public internet. Fighting malicious intruders is a fact of a connected world. Fortunately, those attacks don't happen very often, or the Web would have been dead by now.&lt;br /&gt;
&lt;br /&gt;
==== Web Clients ====&lt;br /&gt;
&lt;br /&gt;
CopyBots are the most well-known bots for opensim-based virtual worlds, but these virtual worlds are also susceptible to attacks by regular web clients. With the current state of things, it is actually easier to copy assets with a web-based client than with a libsl-based one. The weakness is that asset servers are connected to the public internet, and the protocol for interacting with them is public. &lt;br /&gt;
&lt;br /&gt;
OpenSim has some minimal guards in place to fence against these kinds of attacks. Specifically, when the inventory server receives a request for an item, it checks the session identifier of the requester. Web clients aren't logged in, so they are refused service. I don't want to expand much more on this, so not to make life easy for attackers, but let's just say that opensim has the necessary mechanisms in place to fence off web-based attackers.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Hosts ===&lt;br /&gt;
&lt;br /&gt;
==== Actively Malicious Hosts ====&lt;br /&gt;
&lt;br /&gt;
The new security threat introduced by openness, one that does not exist in closed grids, is the possibility of a user to visit a region that is running malicious code. In the current state of opensim, a malicious host can do serious damage to the user's assets. Let's see how.&lt;br /&gt;
&lt;br /&gt;
Assume you have your assets in your hypergrided-standalone opensim, and you go visit another opensim that happens to be running malicious code. Here is a non-exhaustive list of vulnerabilities that you are exposed to:&lt;br /&gt;
&lt;br /&gt;
* The host has your session id, so it can request your inventory items on your behalf and store copies in its local asset server. To add insult to injury, a malicious host could simply wipe out your inventory after having copied it.&lt;br /&gt;
* Even if the malicious host doesn't access your items by itself, every time you access items in your inventory while you are in that region, those items are cached in the region's local cache, and can be stored persistently by the malicious host.&lt;br /&gt;
&lt;br /&gt;
Malicious hosts can do a lot more damage, but those two are enough to illustrate this new kind of vulnerability affecting open grids. Note that this affects all open grids, i.e. those where arbitrary people can plug-in their opensims, and not just the hypergrid.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a family of simple solutions to this problem that can be summarized as &amp;quot;protecting you from yourself.&amp;quot; That proposal is described [[Hypergrid Inventory Access|here]].&lt;br /&gt;
&lt;br /&gt;
==== Piracy ====&lt;br /&gt;
&lt;br /&gt;
A second new security threat affecting open grids is one pertaining to commerce of virtual goods. Suppose you put something out for sale on your hypergrided opensim. A foreign user comes and buys it. What that really means is that that user will physically get a copy of the assets moved to his/her asset server, which is different from your asset server. The permissions will be whatever you define them to be, and using the regular VW client, that user can only do what you defined he/she should could do with the object, as usual. However, if the user has direct backend access to the asset and inventory servers, that person can simply modify the permissions on his/her copy. This is commonly known as '''piracy'''.  (This is also a problem with programmers who have direct access to the cache that their client keeps; in this case, the only thing that needs to be done to enable piracy is for the user to actually see a texture/animation/in-world object.  This does NOT allow scripts to be copied, though, since the script is only interpreted on the server and is never sent for interpretation by the client.)&lt;br /&gt;
&lt;br /&gt;
This situation is the kernel of the belief that open grids are hopeless for a virtual-goods economy. DRM discussion aside, maybe they are hopeless. But then, everyone thought the web was hopeless for selling music, and look at the success of iTunes in spite of all the piracy that still exists out there. Who will be the equivalent of iTunes for virtual hair, skin and clothes?&lt;br /&gt;
&lt;br /&gt;
== Hypergrid Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hyperlinks and Agent Transfers ===&lt;br /&gt;
&lt;br /&gt;
When you establish a link between your opensim and another, a message is sent out to that other opensim requesting information about it; the required information includes the network information of that opensim host, and the coordinates of its first region on its local grid in the form of a region handle. For example, suppose you are linking node X.com:9000, placing it in your local map at 900, 900. That opensim runs one or more regions that likely are not in 900, 900 on their own map; suppose the first region of that opensim is at 1100, 1100. From your point of view, it doesn't matter what those other coordinates are, and you don't need to know -- that's the key to being able to decentralize the &amp;quot;world&amp;quot; as given by a 2D map; you want to place it in your map at 900, 900. The &amp;quot;true&amp;quot; position of that simulator only matters for the LL viewer, when there are teleports between your world and that other opensim. This mapping between coordinate systems is the essence of  hyperlinks for opensim; it's one simple but critical thing that the hypergrid implementation does. The mapping happens on the TeleportFinish event; instead of sending the local coordinates to the viewer, the hypergrid teleport wrapper sends the remote coordinates.&lt;br /&gt;
&lt;br /&gt;
When an agent teleports through that hyperlink the following happens. First, before InformRegionOfChildAgent, the local opensim notifies the remote opensim of this foreign user via the &amp;quot;expect_hg_user&amp;quot; method. That message sends along the addresses of all the servers that this user uses, i.e. user, inventory and asset servers. The remote opensim places an entry for that user in its local user profile cache but not in its user database; the foreign user information is non-persistent. After that, the teleport process is exactly the same as the normal teleport process; the only difference is that the region handles are switched between the remote region's hyperlink position on the local grid and its actual position on its grid. &lt;br /&gt;
&lt;br /&gt;
In summary, the two new concepts introduced by the hypergrid are the concept of an hyperlink and the concept of a &amp;quot;local user&amp;quot; vs. &amp;quot;foreign user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Access ===&lt;br /&gt;
&lt;br /&gt;
Inventory access from abroad is done by wrapping the existing scene-inventory interactions with additional code that gets or posts inventory assets from/to the user's asset server. When inventory is accessed, the hypergrid wrapper checks if the user is foreign and, if she is, the wrapper simply brings the necessary assets from the user's asset server to the local asset cache and server; from then on, the wrapper passes the control to the existing inventory access functions. When something is added to inventory, the hypergrid wrapper is notified via an event, and posts the assets to the user's asset server. A cache of the exchanged item identifiers is maintained so that they aren't brought back over and over again.&lt;br /&gt;
&lt;br /&gt;
The result is that hypergrided opensim instances end up interacting with several asset servers, instead of just one. That interaction is implemented in a straightforward manner by instantiating several GridAssetClient objects, instead of just one.&lt;br /&gt;
&lt;br /&gt;
=== The Hypergrid Namespace ===&lt;br /&gt;
&lt;br /&gt;
Currently, the hypergrid is implemented outside of the OpenSim namespace, so that there is complete separation between what already exists and this new behavior. It has its own namespace, HyperGrid. In it, there are 4 sub-namespaces that follow directly the software architecture of OpenSim, namely:&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Framework''' extends OpenSim.Framework in the following manner:&lt;br /&gt;
** HGUserProfileData extends UserProfileData by introducing information about the user's &amp;quot;home&amp;quot;, namely the home address, port and remoting port. The user's home is not that user's user service; it's the opensim that the user has defined to be her home. This is necessary for supporting the home jump (Ctrl-Shift-H).&lt;br /&gt;
** HGNetworkServersInfo follows the spirit of NetworkServersInfo, although it neither extends it nor uses it. For now, it's a utility class whose two main functions are to convert domain names of servers to IP addresses, and to uniformly provide the answer to the question bool IsLocalUser(...).&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Environment''' extends OpenSim.Region.Environment.Scenes in the following manner:&lt;br /&gt;
** HGSceneCommunicationService extends SceneCommunicationService, overriding RequestTeleportToLocation. There are two very small but critical changes to the base method: (a) on the TeleportFinish event, we switch the region handles when the destination region is an hyperlink; (b) the connections at the end are always closed for hyperlink TPs.&lt;br /&gt;
** HGScene extends Scene, overriding TeleportClientHome(...). The only change to the base method is to stay away from the user server, for now, because the user service is still not completely wrapped up for foreign users. Once the user service is properly wrapped up, this class will become unnecessary.&lt;br /&gt;
** HGScene.Inventory is a partial class of HGScene, just like what happens in the OpenSim framework. This part of HGScene overrides some inventory-scene interaction methods, so that assets are fetched/posted from/to the user's asset server. Once that extra fetching/posting is done, these methods simply pass the ball to the base methods.&lt;br /&gt;
** HGAssetMapper: this is a new class specific to the hypergrid that manages the fetching and posting of assets between foreign regions where the user is and the user's asset server.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Protocol''' is a mashup of OpenSim.Region.Communications.*. This is the place where most of the hypergrid extension lies. One of the reasons for this is that the hypergrid communications part is doing one additional thing: it is making standalones network-able.&lt;br /&gt;
** HGCommunicationsStandalone extends CommuniationsLocal. Just as its base, it is a hub for the several network services available in standalone mode. The main difference is that those services are extensions of what's in OpenSim.&lt;br /&gt;
** HGCommunicationsGridMode extends CommunicationsManager directly. Again, it's a hub for the network services available in grid mode, those services being extensions of OpenSim.&lt;br /&gt;
** The cluster HGGridServices (superclass), HGGridServicesStandalone and HGGridServicesGridMode (subclasses) implements the OpenSim interfaces IGridServices and IInterRegionCommunications. The 2 subclasses are wrappers for LocalBackEndServices and OGS1GridServices, respectively. There is one common pattern throughout these classes: check if the region to talk to is an hyperlink; if it's not, simply delegate the work to LocalBackEndServices/OGS1GridServices; if it is, push the work to the base class HGGridServices. HGGridServices, in turn, does the management of hyperlink regions, and defines two additional pieces of inter-region protocol:&lt;br /&gt;
*** region_uuid: for linking regions&lt;br /&gt;
*** expect_hg_user: similar to the existing expect_user interface, but with a lot more information about the user being passed around, namely all the user's servers (inventory, asset, user, home, etc.)&lt;br /&gt;
** HGInventoryService extends LocalInventoryService and implements ISecureInventoryService. This class is the most obvious mashup of the pack, mixing local service access for standalone users and remote inventory access for when users are out and about. Right now, there is a fair amount of selective copy-and-paste, to stay away from the ugliness coming from OGS1InventoryService and OGS1SecureInventoryService. HGInventoryService is always a ISecureInventoryService. Its methods all follow the same pattern: check if the user is a local standalone user; if it is, pass the work to the base method (in LocalInventoryService); if it's not perform secure remote access.&lt;br /&gt;
** HGUserServices wraps OSG1UserServices, but it's not functional yet.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Modules''' is a collection of 3 region modules:&lt;br /&gt;
** HGWorldMapModule extends WorldMapModule. It reuses almost everything from the base class. The only small change is in RequestMapBlocks, where it tries to send Offline mapblocks to the client.&lt;br /&gt;
** HGStandaloneInventoryService and HGStandaloneAssetService do what their names say. They are region modules that allow access to inventory and assets for standalones, when the standalone user is out and about. In spirit, there is a lot in common between these modules and the REST inventory/asset plugin. Unfortunately, that plugin could not be used because it defines a completely different interface than that used by existing inventory and asset servers, and the access for the hypergrid must use a consistent interface.&lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[image:HypergridImplementation.jpg|600px|center|(Click on the image to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installing and Running Hypergrid ==&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
# Checkout OpenSim, prebuild and build as normal.&lt;br /&gt;
# Make the following changes to your OpenSim.ini:&lt;br /&gt;
#* The map: '''WorldMapModule = &amp;quot;HGWorldMap&amp;quot; ''' If you didn't have this setting in your original OpenSim.ini, make sure you place it under the [Startup] section.&lt;br /&gt;
#* If you're running your opensim in grid mode with the UGAIM servers on other machines, you're done. If you're running in standalone and you want it to be network-able, or if you have your grid on loopback (127.0.0.1) change all the [Network] server addresses to &amp;lt;nowiki&amp;gt;&amp;quot;http://&amp;lt;external_host_name&amp;gt;:&amp;lt;http_port&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;. See below.&lt;br /&gt;
# Run opensim like this: &amp;lt;nowiki&amp;gt;[mono] OpenSim.exe -hypergrid=true&amp;lt;/nowiki&amp;gt;. To make sure the hypergrid is running type this on your console: '''link-region'''. If you don't hear anything back, the hypergrid is not properly installed.&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a standalone:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:9300&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:9300&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:9300&lt;br /&gt;
 inventory_server_url = http://example.com:9300&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a grided opensim:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:8001&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:8002&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:8003&lt;br /&gt;
 inventory_server_url = http://example.com:8004&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Make sure you have a 'home' set. If your home region doesn't exist, the hyperlink TPs may not work. To set your home, go to one of your local regions and &amp;quot;Set Home&amp;quot; from the viewer.&lt;br /&gt;
&lt;br /&gt;
=== Linking regions ===&lt;br /&gt;
&lt;br /&gt;
On the console, type for example:&lt;br /&gt;
&lt;br /&gt;
link-region &amp;lt;Xloc&amp;gt; &amp;lt;Yloc&amp;gt; osl2.nac.uci.edu 9006 OSGrid Gateway&lt;br /&gt;
&lt;br /&gt;
* Use Xloc and Yloc that make sense to your world, i.e. close to your regions, but not adjacent.&lt;br /&gt;
* replace osl2.nac.uci.edu and 9006 with the domain name / ip address and the port of the region you want to link to&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Due to a viewer [https://jira.secondlife.com/browse/SVC-2941 bug], you can only TP between regions that are no more than 4096 cells apart in any dimension. What this means in practice is that if you want to link to OSGrid, you must have your own regions reachable from the (10,000; 10,000) point on the map, which is where OSGrid is centered. Place your regions somewhere in the 8,000s or the 12,000s.&lt;br /&gt;
&lt;br /&gt;
== Public Hypergrid Nodes ==&lt;br /&gt;
&lt;br /&gt;
The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns described above are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''osl2.nac.uci.edu 9006'''&lt;br /&gt;
The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''ucigrid02.nacs.uci.edu 9000'''&lt;br /&gt;
A region in the UCI Grid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Cyberlandia Gw&amp;quot; region connected to OSGrid.  Search on map &amp;quot;cyberlandia grid&amp;quot; Is link to cyberlandia Italian Opensim grid. You can link to it as a way to link to Cyberlandia.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9300'''&lt;br /&gt;
The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net.  Search on map &amp;quot;Osgrid grid&amp;quot; You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''joomla-italia.net 9000&lt;br /&gt;
The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World,Francogrid and Darwin&lt;br /&gt;
&lt;br /&gt;
* '''collateral.opensim-italia.net 9000&lt;br /&gt;
The &amp;quot;Collateral&amp;quot; region connected to Collateral World Grid http://collateral.opensim-italia.net. This grid is connected with Social Network Italia, Osgrid and Francogrid '''[This grid is temporarily offline for maintenance]'''&lt;br /&gt;
&lt;br /&gt;
* '''88.191.79.199 9050'''&lt;br /&gt;
Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* '''94.23.8.158  9999'''&lt;br /&gt;
Le Monde de Darwin node, The Lost of Darwin http://www.LeMondedeDarwin.com&lt;br /&gt;
----&lt;br /&gt;
[[Image:hypergrid.jpg]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''grid.k-grid.com 9000'''&lt;br /&gt;
K-grid,  [http://k-grid.com the Kool grid for the Kool KidZ] . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump&lt;br /&gt;
&lt;br /&gt;
* '''81.169.166.109 9000'''&lt;br /&gt;
The Region &amp;quot;Center-World&amp;quot; (at 1000:1000) connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting. Connected via HG to the most of the Grids listed here.&lt;br /&gt;
&lt;br /&gt;
* '''ascent.bluewallgroup.com 9910'''&lt;br /&gt;
This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the (2000,2000) range, or any region within 4096 units. [[Image:Hypernaut 001.png|150px|none|thumb|Get your Hypernaut here :)]] &lt;br /&gt;
&lt;br /&gt;
* '''sim.thestudyofracialism.org 9000'''&lt;br /&gt;
TSOR1 is a stand-alone 2-region sim (at 8000,8000). It connects via HG to most of the other sites listed here. Although currently sparse, the sim is eventually intended for an SL discussion-group's migration from SL to OS.&lt;br /&gt;
&lt;br /&gt;
* '''http://myopengrid.com 9000'''&lt;br /&gt;
Myopengrid is connected to osl2.nac.uci.edu &amp;quot;Osgrid Gateway&amp;quot; our regions are at (7000,7000).&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Hypergrid</id>
		<title>Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Hypergrid"/>
				<updated>2008-12-23T12:35:36Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: /* Public Hypergrid Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The OpenSim Hypergrid==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the hypergrid? ===&lt;br /&gt;
&amp;lt;!-- [[image:VWV.jpg|250px|thumb|Web of Virtual Worlds]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hypergrid is an extension to opensim that allows you to link your opensim to other opensims on the internet, and that supports seamless agent transfers among those opensims. It can be used both in standalone mode and in grid mode. The hypergrid is effectively supporting the emergence of a Web of virtual worlds. &lt;br /&gt;
&lt;br /&gt;
The basic idea for the hypergrid is that region/grid administrations can place hyperlinks on their map to hypergrided regions run by others. Once those hyperlinks are established, users interact with those regions in exactly the same way as they interact with local regions. Specifically, users can choose to teleport there. Once the user reaches the region behind the hyperlink, she is automatically interacting with a different virtual world without having to logout from the world where she came from, and while still having access to her inventory.&lt;br /&gt;
&lt;br /&gt;
The hypergrid started as a GForge project, but it is now included in the standard distribution of OpenSim. To run your OpenSim instance in hypergrid mode, please see [[Hypergrid#Installing_and_Running_Hypergrid|Installing and Running]].&lt;br /&gt;
&lt;br /&gt;
=== Virtual World Hyperlinks ===&lt;br /&gt;
[[image:hghyperlink.jpg|250px|thumb|A Virtual World Hyperlink]]&lt;br /&gt;
&lt;br /&gt;
We're all familiar with hypertext links on the Web. But what is a virtual world hyperlink?&lt;br /&gt;
&lt;br /&gt;
In the hypergrid model, we consider the 2D map of the virtual world as the equivalent of a web page. As such, a VW hyperlink is simply a region on that map. &lt;br /&gt;
&lt;br /&gt;
The default model of opensim-based virtual worlds already supports this concept of hyperlink, to some extent. When you teleport from one region to another via the map, chances are you are migrating your agent into a different opensim server. This migration is a glorified &amp;quot;agent transfer&amp;quot; that also exists, in rudimentary form, on the web when hypertext links are followed. The default model, however, imposes two very strong constraints on these hyperlinks: &lt;br /&gt;
# The entire map of regions is controlled by a central service known as the grid service, whose job is to provide a uniform view of the world to all of its regions.&lt;br /&gt;
# The only agents that can be transferred are those pertaining to users known to another central service, the user service; if the incoming user is not on that service's database, the agent transfer doesn't go through.&lt;br /&gt;
&lt;br /&gt;
The hypergrid simply removes these two constraints. &lt;br /&gt;
&lt;br /&gt;
First, it allows individual opensim instances to add &amp;quot;neighbors&amp;quot; to their local map, shifting the control of the map down from the grid server to individual opensim instances (although hyperlinks can also be served by grid servers if grid admins so wish). In doing so, the world becomes a lot more interesting and varied. The map that you see in one opensim instance may be completely different from the map that you see after you teleport via an hyperlink. As an opensim administrator, you are free to define what other opensims you want to see on your map.&lt;br /&gt;
&lt;br /&gt;
Second, it allows the transfer of agents pertaining to foreigner users, i.e. users who are registered elsewhere. Instead of assuming one central user service, the hypergrid assumes an arbitrarily large number of such services distributed all over the world. As such, when agents are transferred among hypergrided opensims, a lot more information is passed about the corresponding user. That information includes the collection of servers that the transferring user needs.&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
The following are some usage scenarios. There isn't a clear separation between these scenarios, there's a large overlap between them. This is also not an exhaustive list. The purpose of these descriptions is to give you some starting ideas for how to use the hypergrid in practice. Please feel free to add other interesting scenarios to this list.&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoA.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Personal Worlds'''&lt;br /&gt;
&lt;br /&gt;
This first scenario pertains to standalone opensims. Normally, standalones are completely disconnected from the internet. However, when run in hypergrid mode, standalones become network-able. As such, you can run your own world in your own computer, and link your world to whoever you want. For example, you can link to your friends' hypergrided opensims and to hypergrid gateways in open grids such as OSGrid. &lt;br /&gt;
&lt;br /&gt;
The great thing about this scenario is that all of your assets are stored on your computer, and not on somebody else's server. You can back them up using ordinary backend tools. The not so great thing about this scenario is that all of your assets are stored on your computer! If your disk goes berserk, you loose them. (so make sure you make external backups regularly)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoB.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Communities'''&lt;br /&gt;
&lt;br /&gt;
This second scenario is about communities, broadly construed. The idea here is that a group of people come together to support a small community grid, i.e. a common world where shared activities take place. But at the same time, the members of the community maintain their own standalone worlds. The standalones link to the community grid, and the community grid may link back to the individual members' worlds and other places of interest.&lt;br /&gt;
&lt;br /&gt;
The members' identities are probably the identities they have on their standalones, and their assets are also probably stored there. The assets present in the community regions, however, are stored on the grid asset server.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoC.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Grid Public Regions'''&lt;br /&gt;
&lt;br /&gt;
Walled-gardens are here to stay, and they serve many useful purposes. There is a hybrid mode for the hypergrid that some walled-garden grid operators may be interested in supporting. In this hybrid mode, most opensim instances on the grid run in normal, wall-garden mode, so no foreign visitors are allowed there - technically it is impossible to reach them. However, a few opensim instances on that grid can run in hypergrid mode, so that foreign visitors are allowed. This way, there is a gateway for grid-local users and arbitrary visitors to meet. This is also a good strategy for attracting new users to the grid, since random users are able to visit those gateway regions without having to sign up for an account upfront.&lt;br /&gt;
&lt;br /&gt;
This hybrid mode is very similar to what happens on the web. For example, anyone can visit Facebook's public pages without having to sign up for a Facebook account. However, only Facebook users can go further inside.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoD.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Level Games'''&lt;br /&gt;
&lt;br /&gt;
The normal version of OpenSim enforces a common map for all the regions on a grid. The hypergrid removes that constraint. As such, it becomes easy to design VW games where the world looks different depending of where the player is. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
There is a wide-spread assumption that open grids such as OSGrid and new forms of grids such as the hypergrid are inherently insecure, and that it will be impossible to develop a &amp;quot;goods-based&amp;quot; economy on top of them; only walled-gardens can be secured. This is both true and false. While it is true with the current state of things, open grids, whatever their form, can be made as secure as the web. The first step towards that is to define exactly what the security threats are, and how they affect (or not) open and closed grids. So, let's spell them out, and face them head-on. This will help put our feet on the ground so that we start developing appropriate solutions.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Clients ===&lt;br /&gt;
&lt;br /&gt;
==== CopyBots ====&lt;br /&gt;
&lt;br /&gt;
Everyone knows about the infamous [http://en.wikipedia.org/wiki/CopyBot CopyBot]. Using libraries such as [http://www.libsecondlife.org/wiki/Main_Page LibSL] (now known as OpenMetaverse) it is possible to develop clients for opensim servers that do unorthodox things such as bypassing the permissions system to copy people's assets. Bots written by griefers can do lots of other nasty things.&lt;br /&gt;
&lt;br /&gt;
Malicious bots are a problem for all opensim administrators, including walled-garden grids. They can be prevented, to a certain extent, by exo-technical solutions such as Terms of Service and real-world lawsuits. Technically speaking, the only way to keep intruders out is to run opensim inside a firewall, pretty much like all other pieces of client/server software out there. If that's an acceptable solution for your case, you should do it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately firewalls also keep the public out, and most opensim operators, even the ones running walled-garden grids, want to reach out to the public. In this case, opensim operators may develop additional technical obstacles for bots, similar to those we see on the Web. For example, make sure agents are being run by real people by giving them a human-challenge during the login/TP process, etc.&lt;br /&gt;
&lt;br /&gt;
Every obstacle to malicious clients lowers the risk of an intruder attack. However keep this in mind: no matter how many obstacles one builds, a sufficiently skilled and motivated attacker will be able to overcome them to penetrate opensims connected to the public internet. This affects hypergrid nodes as much as walled-garden grids. In fact, it's more pervasive than that: it affects '''all''' servers (opensim, web, etc.) connected to the public internet. Fighting malicious intruders is a fact of a connected world. Fortunately, those attacks don't happen very often, or the Web would have been dead by now.&lt;br /&gt;
&lt;br /&gt;
==== Web Clients ====&lt;br /&gt;
&lt;br /&gt;
CopyBots are the most well-known bots for opensim-based virtual worlds, but these virtual worlds are also susceptible to attacks by regular web clients. With the current state of things, it is actually easier to copy assets with a web-based client than with a libsl-based one. The weakness is that asset servers are connected to the public internet, and the protocol for interacting with them is public. &lt;br /&gt;
&lt;br /&gt;
OpenSim has some minimal guards in place to fence against these kinds of attacks. Specifically, when the inventory server receives a request for an item, it checks the session identifier of the requester. Web clients aren't logged in, so they are refused service. I don't want to expand much more on this, so not to make life easy for attackers, but let's just say that opensim has the necessary mechanisms in place to fence off web-based attackers.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Hosts ===&lt;br /&gt;
&lt;br /&gt;
==== Actively Malicious Hosts ====&lt;br /&gt;
&lt;br /&gt;
The new security threat introduced by openness, one that does not exist in closed grids, is the possibility of a user to visit a region that is running malicious code. In the current state of opensim, a malicious host can do serious damage to the user's assets. Let's see how.&lt;br /&gt;
&lt;br /&gt;
Assume you have your assets in your hypergrided-standalone opensim, and you go visit another opensim that happens to be running malicious code. Here is a non-exhaustive list of vulnerabilities that you are exposed to:&lt;br /&gt;
&lt;br /&gt;
* The host has your session id, so it can request your inventory items on your behalf and store copies in its local asset server. To add insult to injury, a malicious host could simply wipe out your inventory after having copied it.&lt;br /&gt;
* Even if the malicious host doesn't access your items by itself, every time you access items in your inventory while you are in that region, those items are cached in the region's local cache, and can be stored persistently by the malicious host.&lt;br /&gt;
&lt;br /&gt;
Malicious hosts can do a lot more damage, but those two are enough to illustrate this new kind of vulnerability affecting open grids. Note that this affects all open grids, i.e. those where arbitrary people can plug-in their opensims, and not just the hypergrid.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a family of simple solutions to this problem that can be summarized as &amp;quot;protecting you from yourself.&amp;quot; That proposal is described [[Hypergrid Inventory Access|here]].&lt;br /&gt;
&lt;br /&gt;
==== Piracy ====&lt;br /&gt;
&lt;br /&gt;
A second new security threat affecting open grids is one pertaining to commerce of virtual goods. Suppose you put something out for sale on your hypergrided opensim. A foreign user comes and buys it. What that really means is that that user will physically get a copy of the assets moved to his/her asset server, which is different from your asset server. The permissions will be whatever you define them to be, and using the regular VW client, that user can only do what you defined he/she should could do with the object, as usual. However, if the user has direct backend access to the asset and inventory servers, that person can simply modify the permissions on his/her copy. This is commonly known as '''piracy'''.  (This is also a problem with programmers who have direct access to the cache that their client keeps; in this case, the only thing that needs to be done to enable piracy is for the user to actually see a texture/animation/in-world object.  This does NOT allow scripts to be copied, though, since the script is only interpreted on the server and is never sent for interpretation by the client.)&lt;br /&gt;
&lt;br /&gt;
This situation is the kernel of the belief that open grids are hopeless for a virtual-goods economy. DRM discussion aside, maybe they are hopeless. But then, everyone thought the web was hopeless for selling music, and look at the success of iTunes in spite of all the piracy that still exists out there. Who will be the equivalent of iTunes for virtual hair, skin and clothes?&lt;br /&gt;
&lt;br /&gt;
== Hypergrid Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hyperlinks and Agent Transfers ===&lt;br /&gt;
&lt;br /&gt;
When you establish a link between your opensim and another, a message is sent out to that other opensim requesting information about it; the required information includes the network information of that opensim host, and the coordinates of its first region on its local grid in the form of a region handle. For example, suppose you are linking node X.com:9000, placing it in your local map at 900, 900. That opensim runs one or more regions that likely are not in 900, 900 on their own map; suppose the first region of that opensim is at 1100, 1100. From your point of view, it doesn't matter what those other coordinates are, and you don't need to know -- that's the key to being able to decentralize the &amp;quot;world&amp;quot; as given by a 2D map; you want to place it in your map at 900, 900. The &amp;quot;true&amp;quot; position of that simulator only matters for the LL viewer, when there are teleports between your world and that other opensim. This mapping between coordinate systems is the essence of  hyperlinks for opensim; it's one simple but critical thing that the hypergrid implementation does. The mapping happens on the TeleportFinish event; instead of sending the local coordinates to the viewer, the hypergrid teleport wrapper sends the remote coordinates.&lt;br /&gt;
&lt;br /&gt;
When an agent teleports through that hyperlink the following happens. First, before InformRegionOfChildAgent, the local opensim notifies the remote opensim of this foreign user via the &amp;quot;expect_hg_user&amp;quot; method. That message sends along the addresses of all the servers that this user uses, i.e. user, inventory and asset servers. The remote opensim places an entry for that user in its local user profile cache but not in its user database; the foreign user information is non-persistent. After that, the teleport process is exactly the same as the normal teleport process; the only difference is that the region handles are switched between the remote region's hyperlink position on the local grid and its actual position on its grid. &lt;br /&gt;
&lt;br /&gt;
In summary, the two new concepts introduced by the hypergrid are the concept of an hyperlink and the concept of a &amp;quot;local user&amp;quot; vs. &amp;quot;foreign user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Access ===&lt;br /&gt;
&lt;br /&gt;
Inventory access from abroad is done by wrapping the existing scene-inventory interactions with additional code that gets or posts inventory assets from/to the user's asset server. When inventory is accessed, the hypergrid wrapper checks if the user is foreign and, if she is, the wrapper simply brings the necessary assets from the user's asset server to the local asset cache and server; from then on, the wrapper passes the control to the existing inventory access functions. When something is added to inventory, the hypergrid wrapper is notified via an event, and posts the assets to the user's asset server. A cache of the exchanged item identifiers is maintained so that they aren't brought back over and over again.&lt;br /&gt;
&lt;br /&gt;
The result is that hypergrided opensim instances end up interacting with several asset servers, instead of just one. That interaction is implemented in a straightforward manner by instantiating several GridAssetClient objects, instead of just one.&lt;br /&gt;
&lt;br /&gt;
=== The Hypergrid Namespace ===&lt;br /&gt;
&lt;br /&gt;
Currently, the hypergrid is implemented outside of the OpenSim namespace, so that there is complete separation between what already exists and this new behavior. It has its own namespace, HyperGrid. In it, there are 4 sub-namespaces that follow directly the software architecture of OpenSim, namely:&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Framework''' extends OpenSim.Framework in the following manner:&lt;br /&gt;
** HGUserProfileData extends UserProfileData by introducing information about the user's &amp;quot;home&amp;quot;, namely the home address, port and remoting port. The user's home is not that user's user service; it's the opensim that the user has defined to be her home. This is necessary for supporting the home jump (Ctrl-Shift-H).&lt;br /&gt;
** HGNetworkServersInfo follows the spirit of NetworkServersInfo, although it neither extends it nor uses it. For now, it's a utility class whose two main functions are to convert domain names of servers to IP addresses, and to uniformly provide the answer to the question bool IsLocalUser(...).&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Environment''' extends OpenSim.Region.Environment.Scenes in the following manner:&lt;br /&gt;
** HGSceneCommunicationService extends SceneCommunicationService, overriding RequestTeleportToLocation. There are two very small but critical changes to the base method: (a) on the TeleportFinish event, we switch the region handles when the destination region is an hyperlink; (b) the connections at the end are always closed for hyperlink TPs.&lt;br /&gt;
** HGScene extends Scene, overriding TeleportClientHome(...). The only change to the base method is to stay away from the user server, for now, because the user service is still not completely wrapped up for foreign users. Once the user service is properly wrapped up, this class will become unnecessary.&lt;br /&gt;
** HGScene.Inventory is a partial class of HGScene, just like what happens in the OpenSim framework. This part of HGScene overrides some inventory-scene interaction methods, so that assets are fetched/posted from/to the user's asset server. Once that extra fetching/posting is done, these methods simply pass the ball to the base methods.&lt;br /&gt;
** HGAssetMapper: this is a new class specific to the hypergrid that manages the fetching and posting of assets between foreign regions where the user is and the user's asset server.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Protocol''' is a mashup of OpenSim.Region.Communications.*. This is the place where most of the hypergrid extension lies. One of the reasons for this is that the hypergrid communications part is doing one additional thing: it is making standalones network-able.&lt;br /&gt;
** HGCommunicationsStandalone extends CommuniationsLocal. Just as its base, it is a hub for the several network services available in standalone mode. The main difference is that those services are extensions of what's in OpenSim.&lt;br /&gt;
** HGCommunicationsGridMode extends CommunicationsManager directly. Again, it's a hub for the network services available in grid mode, those services being extensions of OpenSim.&lt;br /&gt;
** The cluster HGGridServices (superclass), HGGridServicesStandalone and HGGridServicesGridMode (subclasses) implements the OpenSim interfaces IGridServices and IInterRegionCommunications. The 2 subclasses are wrappers for LocalBackEndServices and OGS1GridServices, respectively. There is one common pattern throughout these classes: check if the region to talk to is an hyperlink; if it's not, simply delegate the work to LocalBackEndServices/OGS1GridServices; if it is, push the work to the base class HGGridServices. HGGridServices, in turn, does the management of hyperlink regions, and defines two additional pieces of inter-region protocol:&lt;br /&gt;
*** region_uuid: for linking regions&lt;br /&gt;
*** expect_hg_user: similar to the existing expect_user interface, but with a lot more information about the user being passed around, namely all the user's servers (inventory, asset, user, home, etc.)&lt;br /&gt;
** HGInventoryService extends LocalInventoryService and implements ISecureInventoryService. This class is the most obvious mashup of the pack, mixing local service access for standalone users and remote inventory access for when users are out and about. Right now, there is a fair amount of selective copy-and-paste, to stay away from the ugliness coming from OGS1InventoryService and OGS1SecureInventoryService. HGInventoryService is always a ISecureInventoryService. Its methods all follow the same pattern: check if the user is a local standalone user; if it is, pass the work to the base method (in LocalInventoryService); if it's not perform secure remote access.&lt;br /&gt;
** HGUserServices wraps OSG1UserServices, but it's not functional yet.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Modules''' is a collection of 3 region modules:&lt;br /&gt;
** HGWorldMapModule extends WorldMapModule. It reuses almost everything from the base class. The only small change is in RequestMapBlocks, where it tries to send Offline mapblocks to the client.&lt;br /&gt;
** HGStandaloneInventoryService and HGStandaloneAssetService do what their names say. They are region modules that allow access to inventory and assets for standalones, when the standalone user is out and about. In spirit, there is a lot in common between these modules and the REST inventory/asset plugin. Unfortunately, that plugin could not be used because it defines a completely different interface than that used by existing inventory and asset servers, and the access for the hypergrid must use a consistent interface.&lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[image:HypergridImplementation.jpg|600px|center|(Click on the image to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installing and Running Hypergrid ==&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
# Checkout OpenSim, prebuild and build as normal.&lt;br /&gt;
# Make the following changes to your OpenSim.ini:&lt;br /&gt;
#* The map: '''WorldMapModule = &amp;quot;HGWorldMap&amp;quot; ''' If you didn't have this setting in your original OpenSim.ini, make sure you place it under the [Startup] section.&lt;br /&gt;
#* If you're running your opensim in grid mode with the UGAIM servers on other machines, you're done. If you're running in standalone and you want it to be network-able, or if you have your grid on loopback (127.0.0.1) change all the [Network] server addresses to &amp;lt;nowiki&amp;gt;&amp;quot;http://&amp;lt;external_host_name&amp;gt;:&amp;lt;http_port&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;. See below.&lt;br /&gt;
# Run opensim like this: &amp;lt;nowiki&amp;gt;[mono] OpenSim.exe -hypergrid=true&amp;lt;/nowiki&amp;gt;. To make sure the hypergrid is running type this on your console: '''link-region'''. If you don't hear anything back, the hypergrid is not properly installed.&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a standalone:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:9300&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:9300&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:9300&lt;br /&gt;
 inventory_server_url = http://example.com:9300&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a grided opensim:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:8001&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:8002&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:8003&lt;br /&gt;
 inventory_server_url = http://example.com:8004&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Make sure you have a 'home' set. If your home region doesn't exist, the hyperlink TPs may not work. To set your home, go to one of your local regions and &amp;quot;Set Home&amp;quot; from the viewer.&lt;br /&gt;
&lt;br /&gt;
=== Linking regions ===&lt;br /&gt;
&lt;br /&gt;
On the console, type for example:&lt;br /&gt;
&lt;br /&gt;
link-region &amp;lt;Xloc&amp;gt; &amp;lt;Yloc&amp;gt; osl2.nac.uci.edu 9006 OSGrid Gateway&lt;br /&gt;
&lt;br /&gt;
* Use Xloc and Yloc that make sense to your world, i.e. close to your regions, but not adjacent.&lt;br /&gt;
* replace osl2.nac.uci.edu and 9006 with the domain name / ip address and the port of the region you want to link to&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Due to a viewer [https://jira.secondlife.com/browse/SVC-2941 bug], you can only TP between regions that are no more than 4096 cells apart in any dimension. What this means in practice is that if you want to link to OSGrid, you must have your own regions reachable from the (10,000; 10,000) point on the map, which is where OSGrid is centered. Place your regions somewhere in the 8,000s or the 12,000s.&lt;br /&gt;
&lt;br /&gt;
== Public Hypergrid Nodes ==&lt;br /&gt;
&lt;br /&gt;
The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns described above are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''osl2.nac.uci.edu 9006'''&lt;br /&gt;
The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''ucigrid02.nacs.uci.edu 9000'''&lt;br /&gt;
A region in the UCI Grid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Cyberlandia Gw&amp;quot; region connected to OSGrid.  Search on map &amp;quot;cyberlandia grid&amp;quot; Is link to cyberlandia Italian Opensim grid. You can link to it as a way to link to Cyberlandia.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9300'''&lt;br /&gt;
The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net.  Search on map &amp;quot;Osgrid grid&amp;quot; You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''joomla-italia.net 9000&lt;br /&gt;
The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World and Francogrid&lt;br /&gt;
&lt;br /&gt;
* '''collateral.opensim-italia.net 9000&lt;br /&gt;
The &amp;quot;Collateral&amp;quot; region connected to Collateral World Grid http://collateral.opensim-italia.net. This grid is connected with Social Network Italia, Osgrid and Francogrid '''[This grid is temporarily offline for maintenance]'''&lt;br /&gt;
&lt;br /&gt;
* '''88.191.79.199 9050'''&lt;br /&gt;
Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* '''94.23.8.158  9999'''&lt;br /&gt;
Le Monde de Darwin node, The Lost of Darwin&lt;br /&gt;
&lt;br /&gt;
* '''k-grid.net 9000'''&lt;br /&gt;
K-grid,  [http://k-grid.net the Kool grid for the Kool KidZ] . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump&lt;br /&gt;
&lt;br /&gt;
* '''81.169.166.109 9000'''&lt;br /&gt;
The Region &amp;quot;Center-World&amp;quot; (at 1000:1000) connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting. Connected via HG to the most of the Grids listed here.&lt;br /&gt;
&lt;br /&gt;
* '''ascent.bluewallgroup.com 9910'''&lt;br /&gt;
This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the default (1000,1000) range, or any region within 4096 units.&lt;br /&gt;
&lt;br /&gt;
* '''sim.thestudyofracialism.org 9000'''&lt;br /&gt;
TSOR is a stand-alone 2-region sim (at 8500,8500). It connects via HG to most of the other sites listed here. Although currently sparse, the sim is eventually intended for an SL discussion-group's migration from SL to OS.&lt;br /&gt;
&lt;br /&gt;
* '''http://myopengrid.com 9000'''&lt;br /&gt;
Myopengrid is connected to osl2.nac.uci.edu &amp;quot;Osgrid Gateway&amp;quot; our regions are at (7000,7000).&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Hypergrid</id>
		<title>Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Hypergrid"/>
				<updated>2008-12-18T22:00:34Z</updated>
		
		<summary type="html">&lt;p&gt;FrankWSweet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The OpenSim Hypergrid==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the hypergrid? ===&lt;br /&gt;
&amp;lt;!-- [[image:VWV.jpg|250px|thumb|Web of Virtual Worlds]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hypergrid is an extension to opensim that allows you to link your opensim to other opensims on the internet, and that supports seamless agent transfers among those opensims. It can be used both in standalone mode and in grid mode. The hypergrid is effectively supporting the emergence of a Web of virtual worlds. &lt;br /&gt;
&lt;br /&gt;
The basic idea for the hypergrid is that region/grid administrations can place hyperlinks on their map to hypergrided regions run by others. Once those hyperlinks are established, users interact with those regions in exactly the same way as they interact with local regions. Specifically, users can choose to teleport there. Once the user reaches the region behind the hyperlink, she is automatically interacting with a different virtual world without having to logout from the world where she came from, and while still having access to her inventory.&lt;br /&gt;
&lt;br /&gt;
The hypergrid started as a GForge project, but it is now included in the standard distribution of OpenSim. To run your OpenSim instance in hypergrid mode, please see [[Hypergrid#Installing_and_Running_Hypergrid|Installing and Running]].&lt;br /&gt;
&lt;br /&gt;
=== Virtual World Hyperlinks ===&lt;br /&gt;
[[image:hghyperlink.jpg|250px|thumb|A Virtual World Hyperlink]]&lt;br /&gt;
&lt;br /&gt;
We're all familiar with hypertext links on the Web. But what is a virtual world hyperlink?&lt;br /&gt;
&lt;br /&gt;
In the hypergrid model, we consider the 2D map of the virtual world as the equivalent of a web page. As such, a VW hyperlink is simply a region on that map. &lt;br /&gt;
&lt;br /&gt;
The default model of opensim-based virtual worlds already supports this concept of hyperlink, to some extent. When you teleport from one region to another via the map, chances are you are migrating your agent into a different opensim server. This migration is a glorified &amp;quot;agent transfer&amp;quot; that also exists, in rudimentary form, on the web when hypertext links are followed. The default model, however, imposes two very strong constraints on these hyperlinks: &lt;br /&gt;
# The entire map of regions is controlled by a central service known as the grid service, whose job is to provide a uniform view of the world to all of its regions.&lt;br /&gt;
# The only agents that can be transferred are those pertaining to users known to another central service, the user service; if the incoming user is not on that service's database, the agent transfer doesn't go through.&lt;br /&gt;
&lt;br /&gt;
The hypergrid simply removes these two constraints. &lt;br /&gt;
&lt;br /&gt;
First, it allows individual opensim instances to add &amp;quot;neighbors&amp;quot; to their local map, shifting the control of the map down from the grid server to individual opensim instances (although hyperlinks can also be served by grid servers if grid admins so wish). In doing so, the world becomes a lot more interesting and varied. The map that you see in one opensim instance may be completely different from the map that you see after you teleport via an hyperlink. As an opensim administrator, you are free to define what other opensims you want to see on your map.&lt;br /&gt;
&lt;br /&gt;
Second, it allows the transfer of agents pertaining to foreigner users, i.e. users who are registered elsewhere. Instead of assuming one central user service, the hypergrid assumes an arbitrarily large number of such services distributed all over the world. As such, when agents are transferred among hypergrided opensims, a lot more information is passed about the corresponding user. That information includes the collection of servers that the transferring user needs.&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
The following are some usage scenarios. There isn't a clear separation between these scenarios, there's a large overlap between them. This is also not an exhaustive list. The purpose of these descriptions is to give you some starting ideas for how to use the hypergrid in practice. Please feel free to add other interesting scenarios to this list.&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoA.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Personal Worlds'''&lt;br /&gt;
&lt;br /&gt;
This first scenario pertains to standalone opensims. Normally, standalones are completely disconnected from the internet. However, when run in hypergrid mode, standalones become network-able. As such, you can run your own world in your own computer, and link your world to whoever you want. For example, you can link to your friends' hypergrided opensims and to hypergrid gateways in open grids such as OSGrid. &lt;br /&gt;
&lt;br /&gt;
The great thing about this scenario is that all of your assets are stored on your computer, and not on somebody else's server. You can back them up using ordinary backend tools. The not so great thing about this scenario is that all of your assets are stored on your computer! If your disk goes berserk, you loose them. (so make sure you make external backups regularly)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoB.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Communities'''&lt;br /&gt;
&lt;br /&gt;
This second scenario is about communities, broadly construed. The idea here is that a group of people come together to support a small community grid, i.e. a common world where shared activities take place. But at the same time, the members of the community maintain their own standalone worlds. The standalones link to the community grid, and the community grid may link back to the individual members' worlds and other places of interest.&lt;br /&gt;
&lt;br /&gt;
The members' identities are probably the identities they have on their standalones, and their assets are also probably stored there. The assets present in the community regions, however, are stored on the grid asset server.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoC.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Grid Public Regions'''&lt;br /&gt;
&lt;br /&gt;
Walled-gardens are here to stay, and they serve many useful purposes. There is a hybrid mode for the hypergrid that some walled-garden grid operators may be interested in supporting. In this hybrid mode, most opensim instances on the grid run in normal, wall-garden mode, so no foreign visitors are allowed there - technically it is impossible to reach them. However, a few opensim instances on that grid can run in hypergrid mode, so that foreign visitors are allowed. This way, there is a gateway for grid-local users and arbitrary visitors to meet. This is also a good strategy for attracting new users to the grid, since random users are able to visit those gateway regions without having to sign up for an account upfront.&lt;br /&gt;
&lt;br /&gt;
This hybrid mode is very similar to what happens on the web. For example, anyone can visit Facebook's public pages without having to sign up for a Facebook account. However, only Facebook users can go further inside.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoD.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Level Games'''&lt;br /&gt;
&lt;br /&gt;
The normal version of OpenSim enforces a common map for all the regions on a grid. The hypergrid removes that constraint. As such, it becomes easy to design VW games where the world looks different depending of where the player is. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
There is a wide-spread assumption that open grids such as OSGrid and new forms of grids such as the hypergrid are inherently insecure, and that it will be impossible to develop a &amp;quot;goods-based&amp;quot; economy on top of them; only walled-gardens can be secured. This is both true and false. While it is true with the current state of things, open grids, whatever their form, can be made as secure as the web. The first step towards that is to define exactly what the security threats are, and how they affect (or not) open and closed grids. So, let's spell them out, and face them head-on. This will help put our feet on the ground so that we start developing appropriate solutions.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Clients ===&lt;br /&gt;
&lt;br /&gt;
==== CopyBots ====&lt;br /&gt;
&lt;br /&gt;
Everyone knows about the infamous [http://en.wikipedia.org/wiki/CopyBot CopyBot]. Using libraries such as [http://www.libsecondlife.org/wiki/Main_Page LibSL] (now known as OpenMetaverse) it is possible to develop clients for opensim servers that do unorthodox things such as bypassing the permissions system to copy people's assets. Bots written by griefers can do lots of other nasty things.&lt;br /&gt;
&lt;br /&gt;
Malicious bots are a problem for all opensim administrators, including walled-garden grids. They can be prevented, to a certain extent, by exo-technical solutions such as Terms of Service and real-world lawsuits. Technically speaking, the only way to keep intruders out is to run opensim inside a firewall, pretty much like all other pieces of client/server software out there. If that's an acceptable solution for your case, you should do it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately firewalls also keep the public out, and most opensim operators, even the ones running walled-garden grids, want to reach out to the public. In this case, opensim operators may develop additional technical obstacles for bots, similar to those we see on the Web. For example, make sure agents are being run by real people by giving them a human-challenge during the login/TP process, etc.&lt;br /&gt;
&lt;br /&gt;
Every obstacle to malicious clients lowers the risk of an intruder attack. However keep this in mind: no matter how many obstacles one builds, a sufficiently skilled and motivated attacker will be able to overcome them to penetrate opensims connected to the public internet. This affects hypergrid nodes as much as walled-garden grids. In fact, it's more pervasive than that: it affects '''all''' servers (opensim, web, etc.) connected to the public internet. Fighting malicious intruders is a fact of a connected world. Fortunately, those attacks don't happen very often, or the Web would have been dead by now.&lt;br /&gt;
&lt;br /&gt;
==== Web Clients ====&lt;br /&gt;
&lt;br /&gt;
CopyBots are the most well-known bots for opensim-based virtual worlds, but these virtual worlds are also susceptible to attacks by regular web clients. With the current state of things, it is actually easier to copy assets with a web-based client than with a libsl-based one. The weakness is that asset servers are connected to the public internet, and the protocol for interacting with them is public. &lt;br /&gt;
&lt;br /&gt;
OpenSim has some minimal guards in place to fence against these kinds of attacks. Specifically, when the inventory server receives a request for an item, it checks the session identifier of the requester. Web clients aren't logged in, so they are refused service. I don't want to expand much more on this, so not to make life easy for attackers, but let's just say that opensim has the necessary mechanisms in place to fence off web-based attackers.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Hosts ===&lt;br /&gt;
&lt;br /&gt;
==== Actively Malicious Hosts ====&lt;br /&gt;
&lt;br /&gt;
The new security threat introduced by openness, one that does not exist in closed grids, is the possibility of a user to visit a region that is running malicious code. In the current state of opensim, a malicious host can do serious damage to the user's assets. Let's see how.&lt;br /&gt;
&lt;br /&gt;
Assume you have your assets in your hypergrided-standalone opensim, and you go visit another opensim that happens to be running malicious code. Here is a non-exhaustive list of vulnerabilities that you are exposed to:&lt;br /&gt;
&lt;br /&gt;
* The host has your session id, so it can request your inventory items on your behalf and store copies in its local asset server. To add insult to injury, a malicious host could simply wipe out your inventory after having copied it.&lt;br /&gt;
* Even if the malicious host doesn't access your items by itself, every time you access items in your inventory while you are in that region, those items are cached in the region's local cache, and can be stored persistently by the malicious host.&lt;br /&gt;
&lt;br /&gt;
Malicious hosts can do a lot more damage, but those two are enough to illustrate this new kind of vulnerability affecting open grids. Note that this affects all open grids, i.e. those where arbitrary people can plug-in their opensims, and not just the hypergrid.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a family of simple solutions to this problem that can be summarized as &amp;quot;protecting you from yourself.&amp;quot; That proposal is described [[Hypergrid Inventory Access|here]].&lt;br /&gt;
&lt;br /&gt;
==== Piracy ====&lt;br /&gt;
&lt;br /&gt;
A second new security threat affecting open grids is one pertaining to commerce of virtual goods. Suppose you put something out for sale on your hypergrided opensim. A foreign user comes and buys it. What that really means is that that user will physically get a copy of the assets moved to his/her asset server, which is different from your asset server. The permissions will be whatever you define them to be, and using the regular VW client, that user can only do what you defined he/she should could do with the object, as usual. However, if the user has direct backend access to the asset and inventory servers, that person can simply modify the permissions on his/her copy. This is commonly known as '''piracy'''.&lt;br /&gt;
&lt;br /&gt;
This situation is the kernel of the belief that open grids are hopeless for a virtual-goods economy. DRM discussion aside, maybe they are hopeless. But then, everyone thought the web was hopeless for selling music, and look at the success of iTunes in spite of all the piracy that still exists out there. Who will be the equivalent of iTunes for virtual hair, skin and clothes?  &lt;br /&gt;
&lt;br /&gt;
== Hypergrid Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hyperlinks and Agent Transfers ===&lt;br /&gt;
&lt;br /&gt;
When you establish a link between your opensim and another, a message is sent out to that other opensim requesting information about it; the required information includes the network information of that opensim host, and the coordinates of its first region on its local grid in the form of a region handle. For example, suppose you are linking node X.com:9000, placing it in your local map at 900, 900. That opensim runs one or more regions that likely are not in 900, 900 on their own map; suppose the first region of that opensim is at 1100, 1100. From your point of view, it doesn't matter what those other coordinates are, and you don't need to know -- that's the key to being able to decentralize the &amp;quot;world&amp;quot; as given by a 2D map; you want to place it in your map at 900, 900. The &amp;quot;true&amp;quot; position of that simulator only matters for the LL viewer, when there are teleports between your world and that other opensim. This mapping between coordinate systems is the essence of  hyperlinks for opensim; it's one simple but critical thing that the hypergrid implementation does. The mapping happens on the TeleportFinish event; instead of sending the local coordinates to the viewer, the hypergrid teleport wrapper sends the remote coordinates.&lt;br /&gt;
&lt;br /&gt;
When an agent teleports through that hyperlink the following happens. First, before InformRegionOfChildAgent, the local opensim notifies the remote opensim of this foreign user via the &amp;quot;expect_hg_user&amp;quot; method. That message sends along the addresses of all the servers that this user uses, i.e. user, inventory and asset servers. The remote opensim places an entry for that user in its local user profile cache but not in its user database; the foreign user information is non-persistent. After that, the teleport process is exactly the same as the normal teleport process; the only difference is that the region handles are switched between the remote region's hyperlink position on the local grid and its actual position on its grid. &lt;br /&gt;
&lt;br /&gt;
In summary, the two new concepts introduced by the hypergrid are the concept of an hyperlink and the concept of a &amp;quot;local user&amp;quot; vs. &amp;quot;foreign user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Access ===&lt;br /&gt;
&lt;br /&gt;
Inventory access from abroad is done by wrapping the existing scene-inventory interactions with additional code that gets or posts inventory assets from/to the user's asset server. When inventory is accessed, the hypergrid wrapper checks if the user is foreign and, if she is, the wrapper simply brings the necessary assets from the user's asset server to the local asset cache and server; from then on, the wrapper passes the control to the existing inventory access functions. When something is added to inventory, the hypergrid wrapper is notified via an event, and posts the assets to the user's asset server. A cache of the exchanged item identifiers is maintained so that they aren't brought back over and over again.&lt;br /&gt;
&lt;br /&gt;
The result is that hypergrided opensim instances end up interacting with several asset servers, instead of just one. That interaction is implemented in a straightforward manner by instantiating several GridAssetClient objects, instead of just one.&lt;br /&gt;
&lt;br /&gt;
=== The Hypergrid Namespace ===&lt;br /&gt;
&lt;br /&gt;
Currently, the hypergrid is implemented outside of the OpenSim namespace, so that there is complete separation between what already exists and this new behavior. It has its own namespace, HyperGrid. In it, there are 4 sub-namespaces that follow directly the software architecture of OpenSim, namely:&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Framework''' extends OpenSim.Framework in the following manner:&lt;br /&gt;
** HGUserProfileData extends UserProfileData by introducing information about the user's &amp;quot;home&amp;quot;, namely the home address, port and remoting port. The user's home is not that user's user service; it's the opensim that the user has defined to be her home. This is necessary for supporting the home jump (Ctrl-Shift-H).&lt;br /&gt;
** HGNetworkServersInfo follows the spirit of NetworkServersInfo, although it neither extends it nor uses it. For now, it's a utility class whose two main functions are to convert domain names of servers to IP addresses, and to uniformly provide the answer to the question bool IsLocalUser(...).&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Environment''' extends OpenSim.Region.Environment.Scenes in the following manner:&lt;br /&gt;
** HGSceneCommunicationService extends SceneCommunicationService, overriding RequestTeleportToLocation. There are two very small but critical changes to the base method: (a) on the TeleportFinish event, we switch the region handles when the destination region is an hyperlink; (b) the connections at the end are always closed for hyperlink TPs.&lt;br /&gt;
** HGScene extends Scene, overriding TeleportClientHome(...). The only change to the base method is to stay away from the user server, for now, because the user service is still not completely wrapped up for foreign users. Once the user service is properly wrapped up, this class will become unnecessary.&lt;br /&gt;
** HGScene.Inventory is a partial class of HGScene, just like what happens in the OpenSim framework. This part of HGScene overrides some inventory-scene interaction methods, so that assets are fetched/posted from/to the user's asset server. Once that extra fetching/posting is done, these methods simply pass the ball to the base methods.&lt;br /&gt;
** HGAssetMapper: this is a new class specific to the hypergrid that manages the fetching and posting of assets between foreign regions where the user is and the user's asset server.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Protocol''' is a mashup of OpenSim.Region.Communications.*. This is the place where most of the hypergrid extension lies. One of the reasons for this is that the hypergrid communications part is doing one additional thing: it is making standalones network-able.&lt;br /&gt;
** HGCommunicationsStandalone extends CommuniationsLocal. Just as its base, it is a hub for the several network services available in standalone mode. The main difference is that those services are extensions of what's in OpenSim.&lt;br /&gt;
** HGCommunicationsGridMode extends CommunicationsManager directly. Again, it's a hub for the network services available in grid mode, those services being extensions of OpenSim.&lt;br /&gt;
** The cluster HGGridServices (superclass), HGGridServicesStandalone and HGGridServicesGridMode (subclasses) implements the OpenSim interfaces IGridServices and IInterRegionCommunications. The 2 subclasses are wrappers for LocalBackEndServices and OGS1GridServices, respectively. There is one common pattern throughout these classes: check if the region to talk to is an hyperlink; if it's not, simply delegate the work to LocalBackEndServices/OGS1GridServices; if it is, push the work to the base class HGGridServices. HGGridServices, in turn, does the management of hyperlink regions, and defines two additional pieces of inter-region protocol:&lt;br /&gt;
*** region_uuid: for linking regions&lt;br /&gt;
*** expect_hg_user: similar to the existing expect_user interface, but with a lot more information about the user being passed around, namely all the user's servers (inventory, asset, user, home, etc.)&lt;br /&gt;
** HGInventoryService extends LocalInventoryService and implements ISecureInventoryService. This class is the most obvious mashup of the pack, mixing local service access for standalone users and remote inventory access for when users are out and about. Right now, there is a fair amount of selective copy-and-paste, to stay away from the ugliness coming from OGS1InventoryService and OGS1SecureInventoryService. HGInventoryService is always a ISecureInventoryService. Its methods all follow the same pattern: check if the user is a local standalone user; if it is, pass the work to the base method (in LocalInventoryService); if it's not perform secure remote access.&lt;br /&gt;
** HGUserServices wraps OSG1UserServices, but it's not functional yet.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Modules''' is a collection of 3 region modules:&lt;br /&gt;
** HGWorldMapModule extends WorldMapModule. It reuses almost everything from the base class. The only small change is in RequestMapBlocks, where it tries to send Offline mapblocks to the client.&lt;br /&gt;
** HGStandaloneInventoryService and HGStandaloneAssetService do what their names say. They are region modules that allow access to inventory and assets for standalones, when the standalone user is out and about. In spirit, there is a lot in common between these modules and the REST inventory/asset plugin. Unfortunately, that plugin could not be used because it defines a completely different interface than that used by existing inventory and asset servers, and the access for the hypergrid must use a consistent interface.&lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[image:HypergridImplementation.jpg|600px|center|(Click on the image to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installing and Running Hypergrid ==&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
# Checkout OpenSim, prebuild and build as normal.&lt;br /&gt;
# Make the following changes to your OpenSim.ini:&lt;br /&gt;
#* The map: '''WorldMapModule = &amp;quot;HGWorldMap&amp;quot; ''' If you didn't have this setting in your original OpenSim.ini, make sure you place it under the [Startup] section.&lt;br /&gt;
#* If you're running your opensim in grid mode with the UGAIM servers on other machines, you're done. If you're running in standalone and you want it to be network-able, or if you have your grid on loopback (127.0.0.1) change all the [Network] server addresses to &amp;lt;nowiki&amp;gt;&amp;quot;http://&amp;lt;external_host_name&amp;gt;:&amp;lt;http_port&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;. See below.&lt;br /&gt;
# Run opensim like this: &amp;lt;nowiki&amp;gt;[mono] OpenSim.exe -hypergrid=true&amp;lt;/nowiki&amp;gt;. To make sure the hypergrid is running type this on your console: '''link-region'''. If you don't hear anything back, the hypergrid is not properly installed.&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a standalone:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:9300&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:9300&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:9300&lt;br /&gt;
 inventory_server_url = http://example.com:9300&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a grided opensim:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:8001&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:8002&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:8003&lt;br /&gt;
 inventory_server_url = http://example.com:8004&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Make sure you have a 'home' set. If your home region doesn't exist, the hyperlink TPs may not work. To set your home, go to one of your local regions and &amp;quot;Set Home&amp;quot; from the viewer.&lt;br /&gt;
&lt;br /&gt;
=== Linking regions ===&lt;br /&gt;
&lt;br /&gt;
On the console, type for example:&lt;br /&gt;
&lt;br /&gt;
link-region &amp;lt;Xloc&amp;gt; &amp;lt;Yloc&amp;gt; osl2.nac.uci.edu 9006 OSGrid Gateway&lt;br /&gt;
&lt;br /&gt;
* Use Xloc and Yloc that make sense to your world, i.e. close to your regions, but not adjacent.&lt;br /&gt;
* replace osl2.nac.uci.edu and 9006 with the domain name / ip address and the port of the region you want to link to&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Due to a viewer [https://jira.secondlife.com/browse/SVC-2941 bug], you can only TP between regions that are no more than 4096 cells apart in any dimension. What this means in practice is that if you want to link to OSGrid, you must have your own regions reachable from the (10,000; 10,000) point on the map, which is where OSGrid is centered. Place your regions somewhere in the 8,000s or the 12,000s.&lt;br /&gt;
&lt;br /&gt;
== Public Hypergrid Nodes ==&lt;br /&gt;
&lt;br /&gt;
The following is a list of hypergrid-ready nodes that you can use for testing your installation and for linking your world. Please add your public node here if you wish to help build a web of opensims!&lt;br /&gt;
&lt;br /&gt;
For the time being, and until the security concerns described above are addressed, we advise you to be careful about who you link to. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''osl2.nac.uci.edu 9006'''&lt;br /&gt;
The &amp;quot;UCI Welcome&amp;quot; region connected to OSGrid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine. You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''ucigrid02.nacs.uci.edu 9000'''&lt;br /&gt;
A region in the UCI Grid. It is run by Diva (Crista Lopes) on a machine owned by the University of California, Irvine.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9000'''&lt;br /&gt;
The &amp;quot;Cyberlandia Gw&amp;quot; region connected to OSGrid.  Search on map &amp;quot;cyberlandia grid&amp;quot; Is link to cyberlandia Italian Opensim grid. You can link to it as a way to link to Cyberlandia.&lt;br /&gt;
&lt;br /&gt;
* '''hypergrid.cyberlandia.net 9300'''&lt;br /&gt;
The &amp;quot;Osgrid Gw&amp;quot; region connected to Cyberlandia grid http://www.cyberlandia.net.  Search on map &amp;quot;Osgrid grid&amp;quot; You can link to it as a way to link to OSGrid.&lt;br /&gt;
&lt;br /&gt;
* '''joomla-italia.net 9000&lt;br /&gt;
The &amp;quot;SNI City&amp;quot; region connected to SNI (Social Network Italia) grid http://www.opensim-italia.net. This grid is connected with Osgrid,Collateral World and Francogrid&lt;br /&gt;
&lt;br /&gt;
* '''collateral.opensim-italia.net 9000&lt;br /&gt;
The &amp;quot;Collateral&amp;quot; region connected to Collateral World Grid http://collateral.opensim-italia.net. This grid is connected with Social Network Italia, Osgrid and Francogrid '''[This grid is temporarily offline for maintenance]'''&lt;br /&gt;
&lt;br /&gt;
* '''88.191.79.199 9050'''&lt;br /&gt;
Francogrid node, connected to &amp;quot;City&amp;quot;, behind the welcome land of Francogrid &amp;quot;Orion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* '''94.23.8.158  9999'''&lt;br /&gt;
Le Monde de Darwin node, The Lost of Darwin&lt;br /&gt;
&lt;br /&gt;
* '''k-grid.net 9000'''&lt;br /&gt;
K-grid,  [http://k-grid.net the Kool grid for the Kool KidZ] . Feel free to visit us. The main Gateway is located at 3700,3700 so take that in account before any HyperJump&lt;br /&gt;
&lt;br /&gt;
* '''81.169.166.109 9000'''&lt;br /&gt;
The Region &amp;quot;Center-World&amp;quot; (at 1000:1000) connected to the METROPOLIS-Grid http://metropolis.hypergrid.org . German Grid with a lot of free Content and free SIM-hosting.&lt;br /&gt;
&lt;br /&gt;
* '''ascent.bluewallgroup.com 9910'''&lt;br /&gt;
This region is in a good proximity @ (6000,6000) for intermediate jumps to OSGrid from grids in the default (1000,1000) range, or any region within 4096 units.&lt;br /&gt;
&lt;br /&gt;
* '''sim.thestudyofracialism.org 9000'''&lt;br /&gt;
Stand-alone 2-region sim (at 8500,8500). Connects via HG to most of the other sites listed here. Although currently sparse, the sim is eventually intended for an SL discussion-group's migration from SL to OS.&lt;/div&gt;</summary>
		<author><name>FrankWSweet</name></author>	</entry>

	</feed>