summaryrefslogtreecommitdiff
path: root/indra/newview/llstartup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llstartup.cpp')
-rw-r--r--indra/newview/llstartup.cpp192
1 files changed, 64 insertions, 128 deletions
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index d5af7243a0..267b2340d0 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -329,6 +329,7 @@ BOOL idle_startup()
static std::string auth_message;
static LLString firstname;
static LLString lastname;
+ static LLUUID web_login_key;
static LLString password;
static std::vector<const char*> requested_options;
@@ -348,7 +349,6 @@ BOOL idle_startup()
static S32 location_which = START_LOCATION_ID_LAST;
static BOOL show_connect_box = TRUE;
- static BOOL remember_password = TRUE;
static BOOL stipend_since_login = FALSE;
@@ -634,28 +634,34 @@ BOOL idle_startup()
//
// Log on to system
//
- if( !gCmdLineFirstName.empty()
+ if ((!gLoginHandler.mFirstName.empty() &&
+ !gLoginHandler.mLastName.empty() &&
+ !gLoginHandler.mWebLoginKey.isNull())
+ || gLoginHandler.parseDirectLogin(LLStartUp::sSLURLCommand) )
+ {
+ firstname = gLoginHandler.mFirstName;
+ lastname = gLoginHandler.mLastName;
+ web_login_key = gLoginHandler.mWebLoginKey;
+
+ show_connect_box = FALSE;
+ }
+ else if( !gCmdLineFirstName.empty()
&& !gCmdLineLastName.empty()
&& !gCmdLinePassword.empty())
{
firstname = gCmdLineFirstName;
lastname = gCmdLineLastName;
- LLMD5 pass((unsigned char*)gCmdLinePassword.c_str());
- char md5pass[33]; /* Flawfinder: ignore */
- pass.hex_digest(md5pass);
- password = md5pass;
-
- remember_password = gSavedSettings.getBOOL("RememberPassword");
- show_connect_box = FALSE;
+ show_connect_box = TRUE;
+ gAutoLogin = TRUE;
}
else if (gAutoLogin || gSavedSettings.getBOOL("AutoLogin"))
{
firstname = gSavedSettings.getString("FirstName");
lastname = gSavedSettings.getString("LastName");
password = load_password_from_disk();
- remember_password = TRUE;
- show_connect_box = FALSE;
+ gSavedSettings.setBOOL("RememberPassword", TRUE);
+ show_connect_box = TRUE;
}
else
{
@@ -664,7 +670,6 @@ BOOL idle_startup()
firstname = gSavedSettings.getString("FirstName");
lastname = gSavedSettings.getString("LastName");
password = load_password_from_disk();
- remember_password = gSavedSettings.getBOOL("RememberPassword");
show_connect_box = TRUE;
}
@@ -674,7 +679,8 @@ BOOL idle_startup()
}
if (STATE_LOGIN_SHOW == LLStartUp::getStartupState())
- {
+ {
+
llinfos << "Initializing Window" << llendl;
gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
@@ -695,8 +701,6 @@ BOOL idle_startup()
// Show the login dialog
login_show();
- // connect dialog is already shown, so fill in the names
- LLPanelLogin::setFields( firstname, lastname, password, remember_password );
LLPanelLogin::giveFocus();
gSavedSettings.setBOOL("FirstRunThisInstall", FALSE);
@@ -708,6 +712,31 @@ BOOL idle_startup()
// skip directly to message template verification
LLStartUp::setStartupState( STATE_LOGIN_CLEANUP );
}
+
+ // Create selection manager
+ // Must be done before menus created, because many enabled callbacks
+ // require its existance.
+ gSelectMgr = new LLSelectMgr();
+ gParcelMgr = new LLViewerParcelMgr();
+ gHUDManager = new LLHUDManager();
+ gMuteListp = new LLMuteList();
+
+ // Initialize UI
+ if (!gNoRender)
+ {
+ // Initialize all our tools. Must be done after saved settings loaded.
+ if ( gToolMgr == NULL )
+ {
+ gToolMgr = new LLToolMgr();
+ gToolMgr->initTools();
+ }
+
+ // Quickly get something onscreen to look at.
+ gViewerWindow->initWorldUI();
+ }
+
+ gViewerWindow->setNormalControlsVisible( FALSE );
+ gLoginMenuBarView->setVisible( TRUE );
timeout.reset();
return do_normal_idle;
@@ -725,11 +754,16 @@ BOOL idle_startup()
if (STATE_LOGIN_CLEANUP == LLStartUp::getStartupState())
{
+ //reset the values that could have come in from a slurl
+ if (!gLoginHandler.mWebLoginKey.isNull())
+ {
+ firstname = gLoginHandler.mFirstName;
+ lastname = gLoginHandler.mLastName;
+ web_login_key = gLoginHandler.mWebLoginKey;
+ }
+
if (show_connect_box)
{
- // Load all the name information out of the login view
- LLPanelLogin::getFields(firstname, lastname, password, remember_password);
-
// HACK: Try to make not jump on login
gKeyboard->resetKeys();
}
@@ -789,25 +823,6 @@ BOOL idle_startup()
if (show_connect_box)
{
- LLString server_label;
- S32 domain_name_index;
- BOOL user_picked_server = LLPanelLogin::getServer( server_label, domain_name_index );
- gGridChoice = (EGridInfo) domain_name_index;
- gSavedSettings.setS32("ServerChoice", gGridChoice);
- if (gGridChoice == GRID_INFO_OTHER)
- {
- snprintf(gGridName, MAX_STRING, "%s", server_label.c_str()); /* Flawfinder: ignore */
- }
-
- if ( user_picked_server )
- { // User picked a grid from the popup, so clear the stored urls and they will be re-generated from gGridChoice
- sAuthUris.clear();
- LLAppViewer::instance()->resetURIs();
- }
-
- LLString location;
- LLPanelLogin::getLocation( location );
- LLURLSimString::setString( location );
LLPanelLogin::close();
}
@@ -940,11 +955,12 @@ BOOL idle_startup()
// a startup URL was specified
std::stringstream unescaped_start;
unescaped_start << "uri:"
- << LLURLSimString::sInstance.mSimName << "&"
- << LLURLSimString::sInstance.mX << "&"
- << LLURLSimString::sInstance.mY << "&"
- << LLURLSimString::sInstance.mZ;
+ << LLURLSimString::sInstance.mSimName << "&"
+ << LLURLSimString::sInstance.mX << "&"
+ << LLURLSimString::sInstance.mY << "&"
+ << LLURLSimString::sInstance.mZ;
start << xml_escape_string(unescaped_start.str().c_str());
+
}
else if (gSavedSettings.getBOOL("LoginLastLocation"))
{
@@ -960,13 +976,13 @@ BOOL idle_startup()
hashed_mac.update( gMACAddress, MAC_ADDRESS_BYTES );
hashed_mac.finalize();
hashed_mac.hex_digest(hashed_mac_string);
-
+
gUserAuthp->authenticate(
sAuthUris[sAuthUriNum].c_str(),
auth_method.c_str(),
firstname.c_str(),
lastname.c_str(),
- password.c_str(),
+ web_login_key,
start.str().c_str(),
gSkipOptionalUpdate,
gAcceptTOS,
@@ -976,6 +992,7 @@ BOOL idle_startup()
requested_options,
hashed_mac_string,
LLAppViewer::instance()->getSerialNumber());
+
// reset globals
gAcceptTOS = FALSE;
gAcceptCriticalMessage = FALSE;
@@ -1237,15 +1254,7 @@ BOOL idle_startup()
if(text) lastname.assign(text);
gSavedSettings.setString("FirstName", firstname);
gSavedSettings.setString("LastName", lastname);
- if (remember_password)
- {
- save_password_to_disk(password.c_str());
- }
- else
- {
- save_password_to_disk(NULL);
- }
- gSavedSettings.setBOOL("RememberPassword", remember_password);
+
gSavedSettings.setBOOL("LoginLastLocation", gSavedSettings.getBOOL("LoginLastLocation"));
text = gUserAuthp->getResponse("agent_access");
@@ -1471,14 +1480,6 @@ BOOL idle_startup()
// type the name/password again if we crash.
gSavedSettings.saveToFile(gSettingsFileName, TRUE);
- // Create selection manager
- // Must be done before menus created, because many enabled callbacks
- // require its existance.
- gSelectMgr = new LLSelectMgr();
- gParcelMgr = new LLViewerParcelMgr();
- gHUDManager = new LLHUDManager();
- gMuteListp = new LLMuteList();
-
//
// Initialize classes w/graphics stuff.
//
@@ -1547,21 +1548,11 @@ BOOL idle_startup()
if ( gViewerWindow != NULL && gToolMgr != NULL )
{ // This isn't the first logon attempt, so show the UI
gViewerWindow->setNormalControlsVisible( TRUE );
- }
+ }
+ gLoginMenuBarView->setVisible( FALSE );
- // Initialize UI
if (!gNoRender)
{
- // Initialize all our tools. Must be done after saved settings loaded.
- if ( gToolMgr == NULL )
- {
- gToolMgr = new LLToolMgr();
- gToolMgr->initTools();
- }
-
- // Quickly get something onscreen to look at.
- gViewerWindow->initWorldUI();
-
// Move the progress view in front of the UI
gViewerWindow->moveProgressViewToFront();
@@ -2344,68 +2335,12 @@ void login_show()
// UI textures have been previously loaded in doPreloadImages()
llinfos << "Setting Servers" << llendl;
-
- if( GRID_INFO_OTHER == gGridChoice )
- {
- LLPanelLogin::addServer( gGridName, GRID_INFO_OTHER );
- }
- else
- {
- LLPanelLogin::addServer( gGridInfo[gGridChoice].mLabel, gGridChoice );
- }
-
- // Arg! We hate loops!
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_DMZ].mLabel, GRID_INFO_DMZ );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_LOCAL].mLabel, GRID_INFO_LOCAL );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_AGNI].mLabel, GRID_INFO_AGNI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_ADITI].mLabel, GRID_INFO_ADITI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_SIVA].mLabel, GRID_INFO_SIVA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_DURGA].mLabel, GRID_INFO_DURGA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_SHAKTI].mLabel, GRID_INFO_SHAKTI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_GANGA].mLabel, GRID_INFO_GANGA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_UMA].mLabel, GRID_INFO_UMA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_SOMA].mLabel, GRID_INFO_SOMA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_VAAK].mLabel, GRID_INFO_VAAK );
}
// Callback for when login screen is closed. Option 0 = connect, option 1 = quit.
void login_callback(S32 option, void *userdata)
{
- const S32 CONNECT_OPTION = 0;
- const S32 QUIT_OPTION = 1;
- if (CONNECT_OPTION == option)
- {
- LLStartUp::setStartupState( STATE_LOGIN_CLEANUP );
- return;
- }
- else if (QUIT_OPTION == option)
- {
- // Make sure we don't save the password if the user is trying to clear it.
- LLString first, last, password;
- BOOL remember = TRUE;
- LLPanelLogin::getFields(first, last, password, remember);
- if (!remember)
- {
- // turn off the setting and write out to disk
- gSavedSettings.setBOOL("RememberPassword", FALSE);
- gSavedSettings.saveToFile(gSettingsFileName, TRUE);
-
- // stomp the saved password on disk
- save_password_to_disk(NULL);
- }
-
- LLPanelLogin::close();
-
- // Next iteration through main loop should shut down the app cleanly.
- LLAppViewer::instance()->userQuit(); // gQuit = TRUE;
-
- return;
- }
- else
- {
- llwarns << "Unknown login button clicked" << llendl;
- }
}
LLString load_password_from_disk()
@@ -3645,6 +3580,7 @@ void reset_login()
if ( gViewerWindow )
{ // Hide menus and normal buttons
gViewerWindow->setNormalControlsVisible( FALSE );
+ gLoginMenuBarView->setVisible( TRUE );
}
// Hide any other stuff