diff options
Diffstat (limited to 'OpenSim/Data/SQLite/SQLiteAuthenticationData.cs')
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteAuthenticationData.cs | 69 |
1 files changed, 41 insertions, 28 deletions
diff --git a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs index d71c7eb..84ce775 100644 --- a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs +++ b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs | |||
@@ -42,6 +42,7 @@ namespace OpenSim.Data.SQLite | |||
42 | private int m_LastExpire; | 42 | private int m_LastExpire; |
43 | private string m_connectionString; | 43 | private string m_connectionString; |
44 | 44 | ||
45 | protected static SqliteConnection m_Connection; | ||
45 | private static bool m_initialized = false; | 46 | private static bool m_initialized = false; |
46 | 47 | ||
47 | public SQLiteAuthenticationData(string connectionString, string realm) | 48 | public SQLiteAuthenticationData(string connectionString, string realm) |
@@ -55,11 +56,12 @@ namespace OpenSim.Data.SQLite | |||
55 | m_Connection = new SqliteConnection(connectionString); | 56 | m_Connection = new SqliteConnection(connectionString); |
56 | m_Connection.Open(); | 57 | m_Connection.Open(); |
57 | 58 | ||
58 | using (SqliteConnection dbcon = new SqliteConnection(m_connectionString)) | 59 | using (SqliteConnection dbcon = (SqliteConnection)((ICloneable)m_Connection).Clone()) |
59 | { | 60 | { |
60 | //dbcon.Open(); | 61 | dbcon.Open(); |
61 | Migration m = new Migration(m_Connection, GetType().Assembly, "AuthStore"); | 62 | Migration m = new Migration(dbcon, GetType().Assembly, "AuthStore"); |
62 | m.Update(); | 63 | m.Update(); |
64 | dbcon.Close(); | ||
63 | } | 65 | } |
64 | 66 | ||
65 | m_initialized = true; | 67 | m_initialized = true; |
@@ -71,13 +73,13 @@ namespace OpenSim.Data.SQLite | |||
71 | AuthenticationData ret = new AuthenticationData(); | 73 | AuthenticationData ret = new AuthenticationData(); |
72 | ret.Data = new Dictionary<string, object>(); | 74 | ret.Data = new Dictionary<string, object>(); |
73 | 75 | ||
74 | using (SqliteConnection dbcon = new SqliteConnection(m_connectionString)) | 76 | SqliteCommand cmd = new SqliteCommand("select * from `" + m_Realm + "` where UUID = :PrincipalID"); |
75 | { | 77 | cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); |
76 | dbcon.Open(); | ||
77 | SqliteCommand cmd = new SqliteCommand("select * from `" + m_Realm + "` where UUID = '" + principalID.ToString() + "'", dbcon); | ||
78 | 78 | ||
79 | IDataReader result = cmd.ExecuteReader(); | 79 | IDataReader result = ExecuteReader(cmd, m_Connection); |
80 | 80 | ||
81 | try | ||
82 | { | ||
81 | if (result.Read()) | 83 | if (result.Read()) |
82 | { | 84 | { |
83 | ret.PrincipalID = principalID; | 85 | ret.PrincipalID = principalID; |
@@ -106,6 +108,15 @@ namespace OpenSim.Data.SQLite | |||
106 | return null; | 108 | return null; |
107 | } | 109 | } |
108 | } | 110 | } |
111 | catch | ||
112 | { | ||
113 | } | ||
114 | finally | ||
115 | { | ||
116 | CloseCommand(cmd); | ||
117 | } | ||
118 | |||
119 | return null; | ||
109 | } | 120 | } |
110 | 121 | ||
111 | public bool Store(AuthenticationData data) | 122 | public bool Store(AuthenticationData data) |
@@ -131,28 +142,28 @@ namespace OpenSim.Data.SQLite | |||
131 | { | 142 | { |
132 | if (!first) | 143 | if (!first) |
133 | update += ", "; | 144 | update += ", "; |
134 | update += "`" + field + "` = '" + data.Data[field] + "'"; | 145 | update += "`" + field + "` = :" + field; |
146 | cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field])); | ||
135 | 147 | ||
136 | first = false; | 148 | first = false; |
137 | |||
138 | } | 149 | } |
139 | 150 | ||
140 | update += " where UUID = '" + data.PrincipalID.ToString() + "'"; | 151 | update += " where UUID = :UUID"; |
152 | cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); | ||
141 | 153 | ||
142 | cmd.CommandText = update; | 154 | cmd.CommandText = update; |
143 | Console.WriteLine("XXX " + cmd.CommandText); | ||
144 | try | 155 | try |
145 | { | 156 | { |
146 | if (ExecuteNonQuery(cmd) < 1) | 157 | if (ExecuteNonQuery(cmd, m_Connection) < 1) |
147 | { | 158 | { |
148 | cmd.Dispose(); | 159 | CloseCommand(cmd); |
149 | return false; | 160 | return false; |
150 | } | 161 | } |
151 | } | 162 | } |
152 | catch (Exception e) | 163 | catch (Exception e) |
153 | { | 164 | { |
154 | Console.WriteLine(e.ToString()); | 165 | Console.WriteLine(e.ToString()); |
155 | cmd.Dispose(); | 166 | CloseCommand(cmd); |
156 | return false; | 167 | return false; |
157 | } | 168 | } |
158 | } | 169 | } |
@@ -161,29 +172,31 @@ namespace OpenSim.Data.SQLite | |||
161 | { | 172 | { |
162 | string insert = "insert into `" + m_Realm + "` (`UUID`, `" + | 173 | string insert = "insert into `" + m_Realm + "` (`UUID`, `" + |
163 | String.Join("`, `", fields) + | 174 | String.Join("`, `", fields) + |
164 | "`) values ('" + data.PrincipalID.ToString() + "', '" + String.Join("', '", values) + "')"; | 175 | "`) values (:UUID, :" + String.Join(", :", fields) + ")"; |
165 | 176 | ||
166 | cmd.CommandText = insert; | 177 | cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); |
178 | foreach (string field in fields) | ||
179 | cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field])); | ||
167 | 180 | ||
168 | Console.WriteLine("XXX " + cmd.CommandText); | 181 | cmd.CommandText = insert; |
169 | 182 | ||
170 | try | 183 | try |
171 | { | 184 | { |
172 | if (ExecuteNonQuery(cmd) < 1) | 185 | if (ExecuteNonQuery(cmd, m_Connection) < 1) |
173 | { | 186 | { |
174 | cmd.Dispose(); | 187 | CloseCommand(cmd); |
175 | return false; | 188 | return false; |
176 | } | 189 | } |
177 | } | 190 | } |
178 | catch (Exception e) | 191 | catch (Exception e) |
179 | { | 192 | { |
180 | Console.WriteLine(e.ToString()); | 193 | Console.WriteLine(e.ToString()); |
181 | cmd.Dispose(); | 194 | CloseCommand(cmd); |
182 | return false; | 195 | return false; |
183 | } | 196 | } |
184 | } | 197 | } |
185 | 198 | ||
186 | cmd.Dispose(); | 199 | CloseCommand(cmd); |
187 | 200 | ||
188 | return true; | 201 | return true; |
189 | } | 202 | } |
@@ -193,7 +206,7 @@ namespace OpenSim.Data.SQLite | |||
193 | SqliteCommand cmd = new SqliteCommand("update `" + m_Realm + | 206 | SqliteCommand cmd = new SqliteCommand("update `" + m_Realm + |
194 | "` set `" + item + "` = " + value + " where UUID = '" + principalID.ToString() + "'"); | 207 | "` set `" + item + "` = " + value + " where UUID = '" + principalID.ToString() + "'"); |
195 | 208 | ||
196 | if (ExecuteNonQuery(cmd) > 0) | 209 | if (ExecuteNonQuery(cmd, m_Connection) > 0) |
197 | return true; | 210 | return true; |
198 | 211 | ||
199 | return false; | 212 | return false; |
@@ -205,9 +218,9 @@ namespace OpenSim.Data.SQLite | |||
205 | DoExpire(); | 218 | DoExpire(); |
206 | 219 | ||
207 | SqliteCommand cmd = new SqliteCommand("insert into tokens (UUID, token, validity) values ('" + principalID.ToString() + | 220 | SqliteCommand cmd = new SqliteCommand("insert into tokens (UUID, token, validity) values ('" + principalID.ToString() + |
208 | "', '" + token + "', datetime('now, 'localtime', '+" + lifetime.ToString() + " minutes'))"); | 221 | "', '" + token + "', datetime('now', 'localtime', '+" + lifetime.ToString() + " minutes'))"); |
209 | 222 | ||
210 | if (ExecuteNonQuery(cmd) > 0) | 223 | if (ExecuteNonQuery(cmd, m_Connection) > 0) |
211 | { | 224 | { |
212 | cmd.Dispose(); | 225 | cmd.Dispose(); |
213 | return true; | 226 | return true; |
@@ -225,7 +238,7 @@ namespace OpenSim.Data.SQLite | |||
225 | SqliteCommand cmd = new SqliteCommand("update tokens set validity = datetime('now, 'localtime', '+" + lifetime.ToString() + | 238 | SqliteCommand cmd = new SqliteCommand("update tokens set validity = datetime('now, 'localtime', '+" + lifetime.ToString() + |
226 | " minutes') where UUID = '" + principalID.ToString() + "' and token = '" + token + "' and validity > datetime('now', 'localtime')"); | 239 | " minutes') where UUID = '" + principalID.ToString() + "' and token = '" + token + "' and validity > datetime('now', 'localtime')"); |
227 | 240 | ||
228 | if (ExecuteNonQuery(cmd) > 0) | 241 | if (ExecuteNonQuery(cmd, m_Connection) > 0) |
229 | { | 242 | { |
230 | cmd.Dispose(); | 243 | cmd.Dispose(); |
231 | return true; | 244 | return true; |
@@ -238,8 +251,8 @@ namespace OpenSim.Data.SQLite | |||
238 | 251 | ||
239 | private void DoExpire() | 252 | private void DoExpire() |
240 | { | 253 | { |
241 | SqliteCommand cmd = new SqliteCommand("delete from tokens where validity < datetime('now, 'localtime')"); | 254 | SqliteCommand cmd = new SqliteCommand("delete from tokens where validity < datetime('now', 'localtime')"); |
242 | ExecuteNonQuery(cmd); | 255 | ExecuteNonQuery(cmd, m_Connection); |
243 | 256 | ||
244 | cmd.Dispose(); | 257 | cmd.Dispose(); |
245 | 258 | ||