From 12108bf6e9dc16b6b4b1fe344c1b12ed31a1e4b4 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 23 Nov 2014 14:25:48 -0500 Subject: Fix handling of user preference updates where no email address is supplied --- OpenSim/Data/MySQL/MySQLUserProfilesData.cs | 13 ++++++---- OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs | 11 ++++++--- OpenSim/Data/SQLite/SQLiteUserProfilesData.cs | 9 +++++-- .../UserProfilesService/UserProfilesService.cs | 28 +++++++++------------- .../UserProfilesService/UserProfilesServiceBase.cs | 2 +- 5 files changed, 36 insertions(+), 27 deletions(-) diff --git a/OpenSim/Data/MySQL/MySQLUserProfilesData.cs b/OpenSim/Data/MySQL/MySQLUserProfilesData.cs index cab0ca8..da05ff0 100644 --- a/OpenSim/Data/MySQL/MySQLUserProfilesData.cs +++ b/OpenSim/Data/MySQL/MySQLUserProfilesData.cs @@ -915,7 +915,10 @@ namespace OpenSim.Data.MySQL reader.Read(); bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail); bool.TryParse((string)reader["visible"], out pref.Visible); - pref.EMail = (string)reader["email"]; + pref.EMail = (string)reader["email"]; + + if(string.IsNullOrEmpty(pref.EMail)) + pref.EMail = "No EMail Address Provided"; } else { @@ -954,7 +957,8 @@ namespace OpenSim.Data.MySQL query += "UPDATE usersettings SET "; query += "imviaemail=?ImViaEmail, "; - query += "visible=?Visible "; + query += "visible=?Visible, "; + query += "email=?EMail "; query += "WHERE useruuid=?uuid"; try @@ -966,7 +970,8 @@ namespace OpenSim.Data.MySQL { cmd.Parameters.AddWithValue("?ImViaEmail", pref.IMViaEmail.ToString().ToLower()); cmd.Parameters.AddWithValue("?Visible", pref.Visible.ToString().ToLower()); - cmd.Parameters.AddWithValue("?uuid", pref.UserId.ToString()); + cmd.Parameters.AddWithValue("?uuid", pref.UserId.ToString()); + cmd.Parameters.AddWithValue("?EMail", pref.EMail.ToString().ToLower()); cmd.ExecuteNonQuery(); } @@ -975,7 +980,7 @@ namespace OpenSim.Data.MySQL catch (Exception e) { m_log.ErrorFormat("[PROFILES_DATA]" + - ": AgentInterestsUpdate exception {0}", e.Message); + ": UserPreferencesUpdate exception {0} {1}", e.Message, e.InnerException); result = e.Message; return false; } diff --git a/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs b/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs index 4a08100..e263857 100644 --- a/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs +++ b/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs @@ -901,7 +901,10 @@ namespace OpenSim.Data.PGSQL reader.Read(); bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail); bool.TryParse((string)reader["visible"], out pref.Visible); - pref.EMail = (string)reader["email"]; + pref.EMail = (string)reader["email"]; + + if(string.IsNullOrEmpty(pref.EMail)) + pref.EMail = "No EMail Address Provided"; } else { @@ -935,7 +938,8 @@ namespace OpenSim.Data.PGSQL query += "UPDATE usersettings SET "; query += "imviaemail=:ImViaEmail, "; - query += "visible=:Visible,"; + query += "visible=:Visible, "; + query += "email=:Email "; query += "WHERE useruuid=:uuid"; try @@ -946,7 +950,8 @@ namespace OpenSim.Data.PGSQL using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) { cmd.Parameters.Add(m_database.CreateParameter("ImViaEmail", pref.IMViaEmail.ToString().ToLower ())); - cmd.Parameters.Add(m_database.CreateParameter("Visible", pref.Visible.ToString().ToLower ())); + cmd.Parameters.Add(m_database.CreateParameter("Visible", pref.Visible.ToString().ToLower ())); + cmd.Parameters.Add(m_database.CreateParameter("EMail", pref.EMail.ToString().ToLower ())); cmd.Parameters.Add(m_database.CreateParameter("uuid", pref.UserId.ToString())); lock(Lock) diff --git a/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs b/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs index 7bf3bd5..fd6a1c5 100644 --- a/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs +++ b/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs @@ -747,7 +747,8 @@ namespace OpenSim.Data.SQLite query += "UPDATE usersettings SET "; query += "imviaemail=:ImViaEmail, "; - query += "visible=:Visible "; + query += "visible=:Visible, "; + query += "email=:EMail "; query += "WHERE useruuid=:uuid"; try @@ -757,6 +758,7 @@ namespace OpenSim.Data.SQLite cmd.CommandText = query; cmd.Parameters.AddWithValue(":ImViaEmail", pref.IMViaEmail); cmd.Parameters.AddWithValue(":Visible", pref.Visible); + cmd.Parameters.AddWithValue(":EMail", pref.EMail); cmd.Parameters.AddWithValue(":uuid", pref.UserId.ToString()); cmd.ExecuteNonQuery(); @@ -796,7 +798,10 @@ namespace OpenSim.Data.SQLite { bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail); bool.TryParse((string)reader["visible"], out pref.Visible); - pref.EMail = (string)reader["email"]; + pref.EMail = (string)reader["email"]; + + if(string.IsNullOrEmpty(pref.EMail)) + pref.EMail = "No EMail Address Provided"; } else { diff --git a/OpenSim/Services/UserProfilesService/UserProfilesService.cs b/OpenSim/Services/UserProfilesService/UserProfilesService.cs index c752055..675cd07 100644 --- a/OpenSim/Services/UserProfilesService/UserProfilesService.cs +++ b/OpenSim/Services/UserProfilesService/UserProfilesService.cs @@ -47,7 +47,6 @@ namespace OpenSim.Services.ProfilesService MethodBase.GetCurrentMethod().DeclaringType); IUserAccountService userAccounts; - IAuthenticationService authService; public UserProfilesService(IConfigSource config, string configName): base(config, configName) @@ -55,7 +54,7 @@ namespace OpenSim.Services.ProfilesService IConfig Config = config.Configs[configName]; if (Config == null) { - m_log.Warn("[PROFILES]: No configuration found!"); + m_log.Warn("[PROFILES SERVICE]: No configuration found!"); return; } Object[] args = null; @@ -66,9 +65,6 @@ namespace OpenSim.Services.ProfilesService userAccounts = ServerUtils.LoadPlugin(accountService, args); args = new Object[] { config }; - string authServiceConfig = Config.GetString("AuthenticationServiceModule", String.Empty); - if (accountService != string.Empty) - authService = ServerUtils.LoadPlugin(authServiceConfig, args); } #region Classifieds @@ -176,23 +172,22 @@ namespace OpenSim.Services.ProfilesService account = userAccounts.GetUserAccount(UUID.Zero, pref.UserId); if(string.IsNullOrEmpty(account.Email)) { - result = "No Email address on record!"; - return false; + pref.EMail = string.Empty; } else pref.EMail = account.Email; } catch { - m_log.Info ("[PROFILES]: UserAccountService Exception: Could not get user account"); - result = "Missing Email address!"; + m_log.Error ("[PROFILES SERVICE]: UserAccountService Exception: Could not get user account"); + result = "UserAccountService settings error in UserProfileService!"; return false; } } else { - m_log.Info ("[PROFILES]: UserAccountService: Could not get user account"); - result = "Missing Email address!"; + m_log.Error ("[PROFILES SERVICE]: UserAccountService: Could not get user account"); + result = "UserAccountService settings error in UserProfileService!"; return false; } } @@ -211,23 +206,22 @@ namespace OpenSim.Services.ProfilesService account = userAccounts.GetUserAccount(UUID.Zero, pref.UserId); if(string.IsNullOrEmpty(account.Email)) { - result = "No Email address on record!"; - return false; + pref.EMail = string.Empty; } else pref.EMail = account.Email; } catch { - m_log.Info ("[PROFILES]: UserAccountService Exception: Could not get user account"); - result = "Missing Email address!"; + m_log.Error ("[PROFILES SERVICE]: UserAccountService Exception: Could not get user account"); + result = "UserAccountService settings error in UserProfileService!"; return false; } } else { - m_log.Info ("[PROFILES]: UserAccountService: Could not get user account"); - result = "Missing Email address!"; + m_log.Error ("[PROFILES SERVICE]: UserAccountService: Could not get user account"); + result = "UserAccountService settings error in UserProfileService!"; return false; } } diff --git a/OpenSim/Services/UserProfilesService/UserProfilesServiceBase.cs b/OpenSim/Services/UserProfilesService/UserProfilesServiceBase.cs index bc24ec2..c31578f 100644 --- a/OpenSim/Services/UserProfilesService/UserProfilesServiceBase.cs +++ b/OpenSim/Services/UserProfilesService/UserProfilesServiceBase.cs @@ -52,7 +52,7 @@ namespace OpenSim.Services.ProfilesService { if(string.IsNullOrEmpty(configName)) { - m_log.WarnFormat("[PROFILES]: Configuration section not given!"); + m_log.WarnFormat("[PROFILES SERVICE]: Configuration section not given!"); return; } -- cgit v1.1