void
  FilesystemEntry::utimes(time_t time)
  {
    mode_t st_mode;
    uid_t st_uid;
    gid_t st_gid;
    time_t dummy_time; // will not be used
    stat(gridfile(), st_mode, st_uid, st_gid, dummy_time); // we need the mode/uid/gid to leave it unchanged

    updateContentType(gridfile(), st_mode /*unchanged*/, st_uid /*unchanged*/, st_gid /*unchanged*/, time);
  }
  void
  FilesystemEntry::chmod(mode_t mode)
  {
    mode_t dummy_mode;// will not be used
    uid_t st_uid;
    gid_t st_gid;
    time_t st_time;
    stat(gridfile(), dummy_mode, st_uid, st_gid, st_time); // we need the uid/gid/time to leave it unchanged

    updateContentType(gridfile(), mode, st_uid /*unchanged*/, st_gid /*unchanged*/, st_time /*unchanged*/);
  }
  void
  FilesystemEntry::chown(uid_t uid, gid_t gid)
  {
    mode_t st_mode;
    uid_t dummy_uid;// will not be used
    gid_t dummy_gid;// will not be used
    time_t st_time;
    stat(gridfile(), st_mode, dummy_uid, dummy_gid, st_time); // we need the mode/time to leave it unchanged

    updateContentType(gridfile(), st_mode /*unchanged*/, uid, gid, st_time /*unchanged*/);
  }
Beispiel #4
0
  void
  Symlink::read(char* link, size_t size)
  {
    size_t length = gridfile().getContentLength();
    std::stringstream linkstream;
    gridfile().write(linkstream);
    
    // If the linkname is too long to fit in the buffer, it should be truncated.
    // The buffer size argument includes the space for the terminating null character.
    size_t aligned_length = (length >= size)?( size - 1 ):length;

    memcpy(link, linkstream.str().c_str(), aligned_length);
    link[aligned_length] = '\0';
  }
	void viewerNetworkTestObject::test<10>()
	{
		
		llofstream gridfile("grid_test.xml");
		gridfile << gSampleGridFile;
		gridfile.close();
		
		LLGridManager::getInstance()->initialize("grid_test.xml");
		LLSD grid = LLSD::emptyMap();
		grid[GRID_VALUE] = std::string("mynewgridname");
		LLGridManager::getInstance()->addGrid(grid);
		LLGridManager::getInstance()->saveFavorites();
		// validate we didn't lose existing favorites
		LLGridManager::getInstance()->initialize("grid_test.xml");
		std::map<std::string, std::string> known_grids = LLGridManager::getInstance()->getKnownGrids();
		ensure("New grid wasn't added to persisted list after being marked a favorite",
			   known_grids.find(std::string("grid1")) !=
			   known_grids.end());
		
		// add a grid
		LLGridManager::getInstance()->addGrid(grid);
		LLGridManager::getInstance()->setGridChoice("mynewgridname");
		LLGridManager::getInstance()->setFavorite();
		LLGridManager::getInstance()->saveFavorites();
		known_grids = LLGridManager::getInstance()->getKnownGrids();
		ensure("New grid wasn't added to persisted list after being marked a favorite",
			   known_grids.find(std::string("grid1")) !=
			   known_grids.end());
		known_grids = LLGridManager::getInstance()->getKnownGrids();
		ensure("New grid wasn't added to persisted list after being marked a favorite",
			   known_grids.find(std::string("mynewgridname")) !=
			   known_grids.end());
	}
Beispiel #6
0
	void slurlTestObject::test<2>()
	{
		llofstream gridfile(TEST_FILENAME);
		gridfile << gSampleGridFile;
		gridfile.close();

		LLGridManager::getInstance()->initialize(TEST_FILENAME);

		LLSLURL slurl = LLSLURL("my.grid.com", "my region");
		ensure_equals("grid/region - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("grid/region", slurl.getSLURLString(),
					  "https://my.grid.com/region/my%20region/128/128/0");

		slurl = LLSLURL("my.grid.com", "my region", LLVector3(1,2,3));
		ensure_equals("grid/region/vector - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals(" grid/region/vector", slurl.getSLURLString(),
					  "https://my.grid.com/region/my%20region/1/2/3");

		LLGridManager::getInstance()->setGridChoice("util.agni.lindenlab.com");
		slurl = LLSLURL("my region", LLVector3(1,2,3));
		ensure_equals("default grid/region/vector - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals(" default grid/region/vector", slurl.getSLURLString(),
					  "http://maps.secondlife.com/secondlife/my%20region/1/2/3");

		LLGridManager::getInstance()->setGridChoice("MyGrid");
		slurl = LLSLURL("my region", LLVector3(1,2,3));
		ensure_equals("default grid/region/vector - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals(" default grid/region/vector", slurl.getSLURLString(),
					  "https://my.grid.com/region/my%20region/1/2/3");

	}
Beispiel #7
0
	void slurlTestObject::test<3>()
	{
		llofstream gridfile(TEST_FILENAME);
		gridfile << gSampleGridFile;
		gridfile.close();

		LLGridManager::getInstance()->initialize(TEST_FILENAME);

		LLGridManager::getInstance()->setGridChoice("my.grid.com");
		LLSLURL slurl = LLSLURL("https://my.grid.com/region/my%20region/1/2/3");
		ensure_equals("login string", slurl.getLoginString(), "uri:my region&amp;1&amp;2&amp;3");
		ensure_equals("location string", slurl.getLocationString(), "my region/1/2/3");
		ensure_equals("grid", slurl.getGrid(), "my.grid.com");
		ensure_equals("region", slurl.getRegion(), "my region");
		ensure_equals("position", slurl.getPosition(), LLVector3(1, 2, 3));

	}
	void viewerNetworkTestObject::test<8>()
	{
		LLGridManager::getInstance()->initialize("grid_test.xml");
		LLSD grid = LLSD::emptyMap();
		// adding a grid with simply a name will populate the values.
		grid[GRID_VALUE] = "myaddedgrid";
		LLGridManager::getInstance()->addGrid(grid);
		LLGridManager::getInstance()->getGridInfo("myaddedgrid", grid);
		
		ensure_equals("name based grid has name value", 
					  grid[GRID_VALUE].asString(),
					  std::string("myaddedgrid"));
		ensure_equals("name based grid has label value", 
					  grid[GRID_LABEL_VALUE].asString(),
					  std::string("myaddedgrid"));
		ensure_equals("name based grid has name value", 
					  grid[GRID_HELPER_URI_VALUE].asString(),
					  std::string("https://myaddedgrid/helpers/"));
		ensure_equals("name based grid has name value", 
					  grid[GRID_LOGIN_PAGE_VALUE].asString(),
					  std::string("http://myaddedgrid/app/login/"));
		ensure("name based grid has array loginuri", 
			   grid[GRID_LOGIN_URI_VALUE].isArray());
		ensure_equals("name based grid has single login uri value",
			   grid[GRID_LOGIN_URI_VALUE].size(), 1);
		ensure_equals("Name based grid login uri is correct",
					  grid[GRID_LOGIN_URI_VALUE][0].asString(),
					  std::string("https://myaddedgrid/cgi-bin/login.cgi"));
		ensure("name based grid is not a favorite yet", 
			   !grid.has(GRID_IS_FAVORITE_VALUE));
		ensure("name based grid does not have system setting",
			   !grid.has(GRID_IS_SYSTEM_GRID_VALUE));
		
		llofstream gridfile("grid_test.xml");
		gridfile << gSampleGridFile;
		gridfile.close();
	}
	void viewerNetworkTestObject::test<2>()
	{
		llofstream gridfile("grid_test.xml");
		gridfile << gSampleGridFile;
		gridfile.close();
		
		LLGridManager::getInstance()->initialize("grid_test.xml");
		std::map<std::string, std::string> known_grids = LLGridManager::getInstance()->getKnownGrids();
		ensure_equals("adding a grid via a grid file increases known grid size", 
					  known_grids.size(), 24);
		ensure_equals("Agni is still there after we've added a grid via a grid file", 
					  known_grids["util.agni.lindenlab.com"], std::string("Agni"));
	
		
		// assure Agni doesn't get overwritten
		LLSD grid;
		LLGridManager::getInstance()->getGridInfo("util.agni.lindenlab.com", grid);

		ensure_equals("Agni grid label was not modified by grid file", 
					  grid[GRID_LABEL_VALUE].asString(), std::string("Agni"));
		
		ensure_equals("Agni name wasn't modified by grid file",
					  grid[GRID_VALUE].asString(), std::string("util.agni.lindenlab.com"));
		ensure("Agni grid URI is still an array after grid file", 
			   grid[GRID_LOGIN_URI_VALUE].isArray());
		ensure_equals("Agni login uri still the same after grid file", 
					  grid[GRID_LOGIN_URI_VALUE][0].asString(),  
					  std::string("https://login.agni.lindenlab.com/cgi-bin/login.cgi"));
		ensure_equals("Agni helper uri still the same after grid file", 
					  grid[GRID_HELPER_URI_VALUE].asString(), 
					  std::string("https://secondlife.com/helpers/"));
		ensure_equals("Agni login page the same after grid file", 
					  grid[GRID_LOGIN_PAGE_VALUE].asString(), 
					  std::string("http://viewer-login.agni.lindenlab.com/"));
		ensure("Agni still a favorite after grid file", 
			   grid.has(GRID_IS_FAVORITE_VALUE));
		ensure("Agni system grid still set after grid file", 
			   grid.has(GRID_IS_SYSTEM_GRID_VALUE));
		
		ensure_equals("Grid file adds to name<->label map", 
					  known_grids["grid1"], std::string("mylabel"));
		LLGridManager::getInstance()->getGridInfo("grid1", grid);
		ensure_equals("grid file grid name is set",
					  grid[GRID_VALUE].asString(), std::string("grid1"));
		ensure_equals("grid file label is set", 
					  grid[GRID_LABEL_VALUE].asString(), std::string("mylabel"));
		ensure("grid file login uri is an array",
			   grid[GRID_LOGIN_URI_VALUE].isArray());
		ensure_equals("grid file login uri is set",
					  grid[GRID_LOGIN_URI_VALUE][0].asString(), 
					  std::string("myloginuri"));
		ensure_equals("grid file helper uri is set",
					  grid[GRID_HELPER_URI_VALUE].asString(), 
					  std::string("https://helper1/helpers/"));
		ensure_equals("grid file login page is set",
					  grid[GRID_LOGIN_PAGE_VALUE].asString(), 
					  std::string("loginpage"));
		ensure("grid file favorite is set",
			   grid.has(GRID_IS_FAVORITE_VALUE));
		ensure("grid file isn't a system grid",
			   !grid.has(GRID_IS_SYSTEM_GRID_VALUE));		
		ensure("Grid file still exists after loading", 
			   LLFile::isfile("grid_test.xml"));
	}
Beispiel #10
0
 void
 FilesystemEntry::stat(struct stat *stbuf)
 {
   stat(gridfile(), stbuf);
 }
Beispiel #11
0
	void slurlTestObject::test<1>()
	{
		llofstream gridfile(TEST_FILENAME);
		gridfile << gSampleGridFile;
		gridfile.close();

		LLGridManager::getInstance()->initialize(TEST_FILENAME);

		LLGridManager::getInstance()->setGridChoice("util.agni.lindenlab.com");

		LLSLURL slurl = LLSLURL("");
		ensure_equals("null slurl", (int)slurl.getType(), LLSLURL::LAST_LOCATION);

		slurl = LLSLURL("http://slurl.com/secondlife/myregion");
		ensure_equals("slurl.com slurl, region only - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("slurl.com slurl, region only", slurl.getSLURLString(),
					  "http://maps.secondlife.com/secondlife/myregion/128/128/0");

		slurl = LLSLURL("http://maps.secondlife.com/secondlife/myregion/1/2/3");
		ensure_equals("maps.secondlife.com slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("maps.secondlife.com slurl, region + coords", slurl.getSLURLString(),
					  "http://maps.secondlife.com/secondlife/myregion/1/2/3");

		slurl = LLSLURL("secondlife://myregion");
		ensure_equals("secondlife: slurl, region only - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("secondlife: slurl, region only", slurl.getSLURLString(),
					  "http://maps.secondlife.com/secondlife/myregion/128/128/0");

		slurl = LLSLURL("secondlife://myregion/1/2/3");
		ensure_equals("secondlife: slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("secondlife slurl, region + coords", slurl.getSLURLString(),
					  "http://maps.secondlife.com/secondlife/myregion/1/2/3");

		slurl = LLSLURL("/myregion");
		ensure_equals("/region slurl, region- type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("/region slurl, region ", slurl.getSLURLString(),
					  "http://maps.secondlife.com/secondlife/myregion/128/128/0");

		slurl = LLSLURL("/myregion/1/2/3");
		ensure_equals("/: slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("/ slurl, region + coords", slurl.getSLURLString(),
					  "http://maps.secondlife.com/secondlife/myregion/1/2/3");

		slurl = LLSLURL("my region/1/2/3");
		ensure_equals(" slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals(" slurl, region + coords", slurl.getSLURLString(),
					  "http://maps.secondlife.com/secondlife/my%20region/1/2/3");

		LLGridManager::getInstance()->setGridChoice("my.grid.com");
		slurl = LLSLURL("https://my.grid.com/region/my%20region/1/2/3");
		ensure_equals("grid slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("grid slurl, region + coords", slurl.getSLURLString(),
					  "https://my.grid.com/region/my%20region/1/2/3");

		slurl = LLSLURL("https://my.grid.com/region/my region");
		ensure_equals("grid slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("grid slurl, region + coords", slurl.getSLURLString(),
					  "https://my.grid.com/region/my%20region/128/128/0");

		LLGridManager::getInstance()->setGridChoice("foo.bar.com");
		slurl = LLSLURL("/myregion/1/2/3");
		ensure_equals("/: slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("/ slurl, region + coords", slurl.getSLURLString(),
					  "https://foo.bar.com/region/myregion/1/2/3");

		slurl = LLSLURL("myregion/1/2/3");
		ensure_equals(": slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals(" slurl, region + coords", slurl.getSLURLString(),
					  "https://foo.bar.com/region/myregion/1/2/3");

		slurl = LLSLURL(LLSLURL::SIM_LOCATION_HOME);
		ensure_equals("home", slurl.getType(), LLSLURL::HOME_LOCATION);

		slurl = LLSLURL(LLSLURL::SIM_LOCATION_LAST);
		ensure_equals("last", slurl.getType(), LLSLURL::LAST_LOCATION);

		slurl = LLSLURL("secondlife:///app/foo/bar?12345");
		ensure_equals("app", slurl.getType(), LLSLURL::APP);
		ensure_equals("appcmd", slurl.getAppCmd(), "foo");
		ensure_equals("apppath", slurl.getAppPath().size(), 1);
		ensure_equals("apppath2", slurl.getAppPath()[0].asString(), "bar");
		ensure_equals("appquery", slurl.getAppQuery(), "12345");
		ensure_equals("grid1", slurl.getGrid(), "FooBar");

		slurl = LLSLURL("secondlife://Aditi/app/foo/bar?12345");
		ensure_equals("app", slurl.getType(), LLSLURL::APP);
		ensure_equals("appcmd", slurl.getAppCmd(), "foo");
		ensure_equals("apppath", slurl.getAppPath().size(), 1);
		ensure_equals("apppath2", slurl.getAppPath()[0].asString(), "bar");
		ensure_equals("appquery", slurl.getAppQuery(), "12345");
		ensure_equals("grid2",  slurl.getGrid(), "Aditi");

		LLGridManager::getInstance()->setGridChoice("foo.bar.com");
		slurl = LLSLURL("secondlife:///secondlife/myregion/1/2/3");
		ensure_equals("/: slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("location", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("region" , "myregion", slurl.getRegion());
		ensure_equals("grid3", slurl.getGrid(), "util.agni.lindenlab.com");

		slurl = LLSLURL("secondlife://Aditi/secondlife/myregion/1/2/3");
		ensure_equals("/: slurl, region + coords - type", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("location", slurl.getType(), LLSLURL::LOCATION);
		ensure_equals("region" , "myregion", slurl.getRegion());
		ensure_equals("grid4", slurl.getGrid(), "Aditi" );

		LLGridManager::getInstance()->setGridChoice("my.grid.com");
		slurl = LLSLURL("https://my.grid.com/app/foo/bar?12345");
		ensure_equals("app", slurl.getType(), LLSLURL::APP);
		ensure_equals("appcmd", slurl.getAppCmd(), "foo");
		ensure_equals("apppath", slurl.getAppPath().size(), 1);
		ensure_equals("apppath2", slurl.getAppPath()[0].asString(), "bar");
		ensure_equals("appquery", slurl.getAppQuery(), "12345");

	}