aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Data/SQLite/SQLiteAuthenticationData.cs61
-rw-r--r--OpenSim/Data/SQLite/SQLiteFramework.cs13
-rw-r--r--OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs16
-rw-r--r--OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs13
4 files changed, 71 insertions, 32 deletions
diff --git a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
index 271ed47..7dab6bf 100644
--- a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
@@ -52,12 +52,16 @@ namespace OpenSim.Data.SQLite
52 52
53 if (!m_initialized) 53 if (!m_initialized)
54 { 54 {
55 m_Connection = new SqliteConnection(connectionString);
56 m_Connection.Open();
57
55 using (SqliteConnection dbcon = new SqliteConnection(m_connectionString)) 58 using (SqliteConnection dbcon = new SqliteConnection(m_connectionString))
56 { 59 {
57 dbcon.Open(); 60 dbcon.Open();
58 Migration m = new Migration(dbcon, GetType().Assembly, "AuthStore"); 61 Migration m = new Migration(dbcon, GetType().Assembly, "AuthStore");
59 m.Update(); 62 m.Update();
60 } 63 }
64
61 m_initialized = true; 65 m_initialized = true;
62 } 66 }
63 } 67 }
@@ -105,7 +109,7 @@ namespace OpenSim.Data.SQLite
105 } 109 }
106 110
107 public bool Store(AuthenticationData data) 111 public bool Store(AuthenticationData data)
108 { 112 {
109 if (data.Data.ContainsKey("UUID")) 113 if (data.Data.ContainsKey("UUID"))
110 data.Data.Remove("UUID"); 114 data.Data.Remove("UUID");
111 115
@@ -117,31 +121,60 @@ namespace OpenSim.Data.SQLite
117 121
118 SqliteCommand cmd = new SqliteCommand(); 122 SqliteCommand cmd = new SqliteCommand();
119 123
120 string update = "update `"+m_Realm+"` set "; 124 if (Get(data.PrincipalID) != null)
121 bool first = true;
122 foreach (string field in fields)
123 { 125 {
124 if (!first)
125 update += ", ";
126 update += "`" + field + "` = " + data.Data[field];
127 126
128 first = false;
129 127
130 } 128 string update = "update `" + m_Realm + "` set ";
129 bool first = true;
130 foreach (string field in fields)
131 {
132 if (!first)
133 update += ", ";
134 update += "`" + field + "` = '" + data.Data[field] + "'";
131 135
132 update += " where UUID = '" + data.PrincipalID.ToString() + "'"; 136 first = false;
133 137
134 cmd.CommandText = update; 138 }
139
140 update += " where UUID = '" + data.PrincipalID.ToString() + "'";
141
142 cmd.CommandText = update;
143 Console.WriteLine("XXX " + cmd.CommandText);
144 try
145 {
146 if (ExecuteNonQuery(cmd) < 1)
147 {
148 cmd.Dispose();
149 return false;
150 }
151 }
152 catch
153 {
154 cmd.Dispose();
155 return false;
156 }
157 }
135 158
136 if (ExecuteNonQuery(cmd) < 1) 159 else
137 { 160 {
138 string insert = "insert into `" + m_Realm + "` (`UUID`, `" + 161 string insert = "insert into `" + m_Realm + "` (`UUID`, `" +
139 String.Join("`, `", fields) + 162 String.Join("`, `", fields) +
140 "`) values ('" + data.PrincipalID.ToString() + "', " + String.Join(", '", values) + "')"; 163 "`) values ('" + data.PrincipalID.ToString() + "', '" + String.Join("', '", values) + "')";
141 164
142 cmd.CommandText = insert; 165 cmd.CommandText = insert;
143 166
144 if (ExecuteNonQuery(cmd) < 1) 167 Console.WriteLine("XXX " + cmd.CommandText);
168
169 try
170 {
171 if (ExecuteNonQuery(cmd) < 1)
172 {
173 cmd.Dispose();
174 return false;
175 }
176 }
177 catch
145 { 178 {
146 cmd.Dispose(); 179 cmd.Dispose();
147 return false; 180 return false;
diff --git a/OpenSim/Data/SQLite/SQLiteFramework.cs b/OpenSim/Data/SQLite/SQLiteFramework.cs
index d745c92..2a8a022 100644
--- a/OpenSim/Data/SQLite/SQLiteFramework.cs
+++ b/OpenSim/Data/SQLite/SQLiteFramework.cs
@@ -40,17 +40,12 @@ namespace OpenSim.Data.SQLite
40 /// </summary> 40 /// </summary>
41 public class SQLiteFramework 41 public class SQLiteFramework
42 { 42 {
43 protected static SqliteConnection m_Connection; 43 protected SqliteConnection m_Connection;
44 private bool m_initialized;
45 44
46 protected SQLiteFramework(string connectionString) 45 protected SQLiteFramework(string connectionString)
47 { 46 {
48 if (!m_initialized) 47 //m_Connection = new SqliteConnection(connectionString);
49 { 48 //m_Connection.Open();
50 m_Connection = new SqliteConnection(connectionString);
51 m_Connection.Open();
52 m_initialized = true;
53 }
54 } 49 }
55 50
56 ////////////////////////////////////////////////////////////// 51 //////////////////////////////////////////////////////////////
@@ -63,6 +58,7 @@ namespace OpenSim.Data.SQLite
63 lock (m_Connection) 58 lock (m_Connection)
64 { 59 {
65 cmd.Connection = m_Connection; 60 cmd.Connection = m_Connection;
61 Console.WriteLine("XXX " + cmd.CommandText);
66 62
67 return cmd.ExecuteNonQuery(); 63 return cmd.ExecuteNonQuery();
68 } 64 }
@@ -75,6 +71,7 @@ namespace OpenSim.Data.SQLite
75 newConnection.Open(); 71 newConnection.Open();
76 72
77 cmd.Connection = newConnection; 73 cmd.Connection = newConnection;
74 Console.WriteLine("XXX " + cmd.CommandText);
78 return cmd.ExecuteReader(); 75 return cmd.ExecuteReader();
79 } 76 }
80 77
diff --git a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
index d29efa0..98943a0 100644
--- a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
+++ b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
@@ -57,6 +57,9 @@ namespace OpenSim.Data.SQLite
57 57
58 if (!m_initialized) 58 if (!m_initialized)
59 { 59 {
60 m_Connection = new SqliteConnection(connectionString);
61 m_Connection.Open();
62
60 if (storeName != String.Empty) 63 if (storeName != String.Empty)
61 { 64 {
62 Assembly assem = GetType().Assembly; 65 Assembly assem = GetType().Assembly;
@@ -64,6 +67,7 @@ namespace OpenSim.Data.SQLite
64 Migration m = new Migration(m_Connection, assem, storeName); 67 Migration m = new Migration(m_Connection, assem, storeName);
65 m.Update(); 68 m.Update();
66 } 69 }
70
67 m_initialized = true; 71 m_initialized = true;
68 } 72 }
69 73
@@ -117,7 +121,7 @@ namespace OpenSim.Data.SQLite
117 for (int i = 0 ; i < fields.Length ; i++) 121 for (int i = 0 ; i < fields.Length ; i++)
118 { 122 {
119 cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); 123 cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i]));
120 terms.Add("`" + fields[i] + "` = :" + fields[i]); 124 terms.Add("`" + fields[i] + "`='" + keys[i] + "'");
121 } 125 }
122 126
123 string where = String.Join(" and ", terms.ToArray()); 127 string where = String.Join(" and ", terms.ToArray());
@@ -215,8 +219,8 @@ namespace OpenSim.Data.SQLite
215 foreach (FieldInfo fi in m_Fields.Values) 219 foreach (FieldInfo fi in m_Fields.Values)
216 { 220 {
217 names.Add(fi.Name); 221 names.Add(fi.Name);
218 values.Add(":" + fi.Name); 222 values.Add(fi.GetValue(row).ToString());
219 cmd.Parameters.Add(new SqliteParameter(":" + fi.Name, fi.GetValue(row).ToString())); 223 cmd.Parameters.Add(new SqliteParameter(fi.Name, fi.GetValue(row).ToString()));
220 } 224 }
221 225
222 if (m_DataField != null) 226 if (m_DataField != null)
@@ -227,12 +231,12 @@ namespace OpenSim.Data.SQLite
227 foreach (KeyValuePair<string, string> kvp in data) 231 foreach (KeyValuePair<string, string> kvp in data)
228 { 232 {
229 names.Add(kvp.Key); 233 names.Add(kvp.Key);
230 values.Add(":" + kvp.Key); 234 values.Add(kvp.Value);
231 cmd.Parameters.Add(new SqliteParameter(":" + kvp.Key, kvp.Value)); 235 cmd.Parameters.Add(new SqliteParameter(kvp.Key, kvp.Value));
232 } 236 }
233 } 237 }
234 238
235 query = String.Format("replace into {0} (`", m_Realm) + String.Join("`,`", names.ToArray()) + "`) values (" + String.Join(",", values.ToArray()) + ")"; 239 query = String.Format("replace into {0} (`", m_Realm) + String.Join("`,`", names.ToArray()) + "`) values ('" + String.Join("', '", values.ToArray()) + "')";
236 240
237 cmd.CommandText = query; 241 cmd.CommandText = query;
238 242
diff --git a/OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs b/OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs
index f6dd085..9af61a9 100644
--- a/OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs
+++ b/OpenSim/Services/AuthenticationService/AuthenticationServiceBase.cs
@@ -106,12 +106,17 @@ namespace OpenSim.Services.AuthenticationService
106 string passwordSalt = Util.Md5Hash(UUID.Random().ToString()); 106 string passwordSalt = Util.Md5Hash(UUID.Random().ToString());
107 string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + passwordSalt); 107 string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + passwordSalt);
108 108
109 AuthenticationData auth = new AuthenticationData(); 109 AuthenticationData auth = m_Database.Get(principalID);
110 auth.PrincipalID = principalID; 110 if (auth == null)
111 auth.Data = new System.Collections.Generic.Dictionary<string, object>(); 111 {
112 auth = new AuthenticationData();
113 auth.PrincipalID = principalID;
114 auth.Data = new System.Collections.Generic.Dictionary<string, object>();
115 auth.Data["accountType"] = "UserAccount";
116 auth.Data["webLoginKey"] = UUID.Zero.ToString();
117 }
112 auth.Data["passwordHash"] = md5PasswdHash; 118 auth.Data["passwordHash"] = md5PasswdHash;
113 auth.Data["passwordSalt"] = passwordSalt; 119 auth.Data["passwordSalt"] = passwordSalt;
114 auth.Data["webLoginKey"] = UUID.Zero.ToString();
115 if (!m_Database.Store(auth)) 120 if (!m_Database.Store(auth))
116 { 121 {
117 m_log.DebugFormat("[AUTHENTICATION DB]: Failed to store authentication data"); 122 m_log.DebugFormat("[AUTHENTICATION DB]: Failed to store authentication data");