Develop and Download Open Source Software

Browse CVS Repository

Contents of /xoonips/AL/commonal.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.6 - (show annotations) (download) (as text)
Fri Nov 26 04:35:55 2004 UTC (19 years, 4 months ago) by aga
Branch: MAIN
Changes since 1.5: +64 -8 lines
File MIME type: text/x-c++src
・loginUser(), logoutUser()を作成.

1 /*
2 *
3 * $Revision: 1.5 $
4 * $Log: commonal.cc,v $
5 * Revision 1.5 2004/11/26 01:08:25 aga
6 * ??ddSlashes()篏???.
7 *
8 * Revision 1.4 2004/11/25 12:14:29 youi
9 * getUid????????絎?臂?????.
10 *
11 * Revision 1.3 2004/11/25 11:13:59 youi
12 * getLastErrorString/setLastErrorString??絎?臂?
13 *
14 * Revision 1.2 2004/11/25 08:55:19 youi
15 * 綣??違??????篆??.
16 * freeResult??菴遵??.
17 *
18 * Revision 1.1 2004/11/25 05:14:58 youi
19 * initial version
20 *
21 *
22 */
23
24 #include <stdio.h>
25 #include <stdlib.h>
26 #include <string.h>
27 #include <mysql.h>
28 #include <string>
29
30 #include "common.h"
31 #include "account.h"
32 #include "group.h"
33 #include "session.h"
34 #include "criteria.h"
35 #include "commonal.h"
36
37 static MYSQL* mysql = NULL; //!< MySQL????潟????/span>
38
39 /**
40 *
41 * php??ddslashes????????
42 *
43 * @param addslashes???鴻????絖?????NULL??絎?筝?????
44 * @return addslashes????????絖???
45 */
46 string addSlashes( const char *str )
47 {
48 int len = strlen(str);
49 char *buf = new char[len*2+1];
50 int bufLen = mysql_real_escape_string( mysql, buf, str, len );
51 string s( buf, bufLen );
52 return s;
53 }
54
55
56 /**
57 *
58 * ???若?帥???若?鴻????????
59 *
60 * @param host ???若?帥???若?鴻?????鴻????
61 * @param user ???若?帥???若?鴻???≪???祉?鴻???????若?九??
62 * @param password 筝?荐????若?吟?????鴻???若??
63 * @param dbname ???若?帥???若?鴻??????
64 * @param prefix XOOPS???若?帥???若?鴻???若??????REFIX
65 * @return result_t
66 * @refer result_t
67 */
68 result_t initializeDB( const char* host, const char* user, const char* password, const char* dbname, const char* prefix )
69 {
70 // ?≪??・膓?筝???????筝???????/span>
71 if ( mysql != NULL )
72 mysql_close( mysql );
73
74 // ????????・膓?
75 mysql = mysql_init(NULL);
76 if ( mysql == NULL ){
77 return RES_DB_INITIALIZE_ERROR;
78 }
79 char *unix_socket = NULL; // ?
80 uint flag = 0; // ?
81 if ( NULL == mysql_real_connect( mysql, host, user, password, dbname, 3306, unix_socket, flag ) ){
82 return RES_DB_CONNECT_ERROR;
83 }
84
85 return RES_OK;
86 }
87
88
89 /**
90 *
91 * Platform???若?倶?粋??倶????緇?
92 *
93 * @param
94 * @return
95 *
96 */
97 bool isActivated( sessionid_t sid, userid_t uid )
98 {
99 return false;
100 }
101
102 /**
103 *
104 * Platform???若?倶?粋??倶??紊???/span>
105 *
106 * @param
107 * @return
108 *
109 */
110 result_t activate( sessionid_t sid, userid_t uid, bool activate )
111 {
112 return RES_ERROR;
113 }
114
115 /**
116 *
117 * ?≪?????潟????/span>
118 *
119 * @param
120 * @return
121 *
122 */
123 int getAccountCount( sessionid_t sid )
124 {
125 return 0;
126 }
127
128 /**
129 *
130 * ?≪?????潟??????/span>
131 *
132 * @param
133 * @return
134 *
135 */
136 result_t deleteAccount( sessionid_t sid, userid_t uid )
137 {
138 return RES_ERROR;
139 }
140
141 /**
142 *
143 * ?≪?????潟?????怨??
144 *
145 * @param
146 * @return
147 *
148 */
149 result_t getAccount( sessionid_t sid, userid_t uid, const account_t** )
150 {
151 return RES_ERROR;
152 }
153
154 /**
155 *
156 * ?≪?????潟?????怨??
157 *
158 * @param
159 * @return
160 *
161 */
162 result_t getAccounts( sessionid_t sid, const userid_t* uids, int uidsLen, const criteria_t* cri, const account_t** accounts, int* accountsLen )
163 {
164 return RES_ERROR;
165 }
166
167 /**
168 *
169 * ?≪?????潟???脂??/span>
170 *
171 * @param
172 * @return
173 *
174 */
175 result_t insertAccount( sessionid_t sid, const account_t* account )
176 {
177 return RES_ERROR;
178 }
179
180 /**
181 *
182 * ?≪?????潟??紊???/span>
183 *
184 * @param
185 * @return
186 *
187 */
188 result_t updateAccount( sessionid_t sid, const account_t* account )
189 {
190 return RES_ERROR;
191 }
192
193 /**
194 *
195 * ???若??D筝?荀?/span>
196 *
197 * @param
198 * @return
199 *
200 */
201 result_t dumpUids( sessionid_t sid, const criteria_t* cri, userid_t** uids, int* uidsLen )
202 {
203 return RES_ERROR;
204 }
205
206 /**
207 *
208 * ?違???若????/span>
209 *
210 * @param
211 * @return
212 *
213 */
214 int getGroupCount( sessionid_t sid )
215 {
216 return 0;
217 }
218
219 /**
220 *
221 * ??絮??違???若??筝?荀у??
222 *
223 * @param
224 * @return
225 *
226 */
227 result_t getGroupsByUid( sessionid_t sid, userid_t uid, const criteria_t* cri, groupid_t** gids, int* gidsLen )
228 {
229 return RES_ERROR;
230 }
231
232 /**
233 *
234 * ?違???若??膊∞??罔????????
235 *
236 * @param
237 * @return
238 *
239 */
240 bool isGroupAdmin( sessionid_t sid, groupid_t gid, userid_t uid )
241 {
242 return RES_ERROR;
243 }
244
245 /**
246 *
247 * ?違???若??ID筝?荀?/span>
248 *
249 * @param
250 * @return
251 *
252 */
253 result_t dumpGids( sessionid_t sid, const criteria_t* cri, groupid_t** gids, int* gidsLen )
254 {
255 return RES_ERROR;
256 }
257
258 /**
259 *
260 * ?違???若??膊∞????ID??緇?
261 *
262 * @param
263 * @return
264 *
265 */
266 result_t dumpGroupAdmins( sessionid_t sid, groupid_t gid, const criteria_t* cri, userid_t** uids, int* uidsLen )
267 {
268 return RES_ERROR;
269 }
270
271 /**
272 *
273 * ?違???若????絮????若?九????/span>
274 *
275 * @param
276 * @return
277 *
278 */
279 result_t deleteMember( sessionid_t sid, groupid_t gid, userid_t uid )
280 {
281 return RES_ERROR;
282 }
283
284 /**
285 *
286 * ?違???若????絮????若?区申??
287 *
288 * @param
289 * @return
290 *
291 */
292 result_t insertMember( sessionid_t sid, groupid_t gid, userid_t uid )
293 {
294 return RES_ERROR;
295 }
296
297 /**
298 *
299 * ?違???若????絮????若?九??
300 *
301 * @param
302 * @return
303 *
304 */
305 result_t getMembers( sessionid_t sid, groupid_t gid, const criteria_t* cri, userid_t** uids, int* uidsLen )
306 {
307 return RES_ERROR;
308 }
309
310 /**
311 *
312 * ?違???若????????/span>
313 *
314 * @param
315 * @return
316 *
317 */
318 result_t deleteGroup( sessionid_t sid, groupid_t gid )
319 {
320 return RES_ERROR;
321 }
322
323 /**
324 *
325 * ?違???若?????脂??/span>
326 *
327 * @param
328 * @return
329 *
330 */
331 result_t insertGroup( sessionid_t sid, const group_t* group )
332 {
333 return RES_ERROR;
334 }
335
336 /**
337 *
338 * ?違???若???????/span>
339 *
340 * @param
341 * @return
342 *
343 */
344 result_t updateGroup( sessionid_t sid, const group_t* group )
345 {
346 return RES_ERROR;
347 }
348
349 /**
350 *
351 * ?違???若?????怨??
352 *
353 * @param
354 * @return
355 *
356 */
357 result_t getGroup( sessionid_t sid, groupid_t gid, const group_t** group )
358 {
359 return RES_ERROR;
360 }
361
362 /**
363 *
364 * ?違???若?????怨??
365 *
366 * @param
367 * @return
368 *
369 */
370 result_t getGroups( sessionid_t sid, groupid_t* gids, int gidsLen, const criteria_t* cri, const group_t** groups, int* groupsLen )
371 {
372 return RES_ERROR;
373 }
374
375 /**
376 *
377 * ?≪?????若?炊┤???????
378 *
379 * @param
380 * @return
381 *
382 */
383 bool isModerator( sessionid_t sid, userid_t uid )
384 {
385 return RES_ERROR;
386 }
387
388 /**
389 *
390 * ???若??D??緇?
391 *
392 * @param
393 * @return
394 *
395 */
396 result_t getUid( const char* uname, userid_t* uid )
397 {
398 string sql;
399
400 sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + uname + "'";
401 if( mysql_query( mysql, sql.c_str( ) ) ){
402 return RES_DB_QUERY_ERROR;
403 }
404 MYSQL_RES* result = mysql_use_result( mysql ) ;
405 MYSQL_ROW row = mysql_fetch_row(result);
406 if( row ){
407 *uid = atoi( row[0] );
408 mysql_free_result( result );
409 return RES_OK;
410 }else{
411 mysql_free_result( result );
412 return RES_NO_SUCH_USER;
413 }
414 }
415
416 /**
417 *
418 * ???違?ゃ?活?荐若???祉???激?с?割???
419 *
420 * @param uname ???違?ゃ?喝??
421 * @param passwd ???鴻???若??
422 * @param session sessionid_t???????????????????ゃ?潟?帥??
423 * @return RES_OK ???違?ゃ?恰??????session??essionid_t???吾??莨若??????
424 * @return RES_LOGIN_FAILURE uname?障????asswd???医幻
425 * @return RES_DB_QUERY_ERROR DB????????筝?????????/span>
426 *
427 */
428 result_t loginUser(const char* uname, const char* passwd, sessionid_t* session )
429 {
430 result_t ret;
431 string sql;
432
433 // uname, passwd -> uid
434 string escUname = addSlashes( uname );
435 string escPasswd = addSlashes( passwd );
436 sql = "SELECT uid FROM " + dbprefix + "_users WHERE uname='" + escUname + "' and paswd=md5('" + escPasswd + "')";
437 if( 0 == mysql_query( mysql, sql.c_str( ) ) ){
438 MYSQL_RES* result = mysql_store_result( mysql );
439 if( result ){
440 MYSQL_ROW row = mysql_fetch_row(result);
441 if( row ){
442 // uid -> create session
443 sql = "INSERT INTO " + dbprefix + "_vpaccount_session (uid,remote_host) values (" + row[0] + ",0)";
444 if ( 0 == mysql_query( mysql, sql.c_str() ) ){
445 *session = (int)mysql_insert_id(mysql);
446 ret = RES_OK;
447 }
448 else {
449 ret = RES_DB_QUERY_ERROR;
450 }
451 }else{
452 ret = RES_LOGIN_FAILUE;
453 }
454 mysql_free_result( result );
455 }else {
456 ret = RES_DB_QUERY_ERROR;
457 }
458 }else{
459 ret = RES_DB_QUERY_ERROR;
460 }
461
462 return ret;
463 }
464
465 /**
466 *
467 * ???違?≪???????祉???激?с?括?篋?
468 *
469 * @param sid session id
470 * @return ????
471 *
472 */
473 void logoutUser( sessionid_t sid ){
474 result_t ret;
475 string sql;
476 sprintf( sidstr,
477 sql = "DELETE FROM " + dbprefix + "_vpaccount_session WHERE sid=" + intToString((int)sid);
478 if ( 0 == mysql_query( mysql, sql.c_str() ) ){
479 if ( mysql_affected_rows(mysql) == 1 ){
480 // ???違?≪????????
481 }
482 else {
483 // sid???≦??/span>
484 }
485 }
486 else {
487 // DB????????筝?????????/span>
488 }
489 }
490
491 /**
492 *
493 * ?祉???激?с?潟?????.<br>
494 * XOOPS??ession???若????????蚊??????sess_id?????essionid??膈???????
495 * ?逸?session_t??篏?????????
496 * ???若?帥???若?鴻???祉???激?с?潟????違?????宴??荐??蚊????
497 *
498 * @param
499 * @return
500 *
501 */
502 result_t createSession( const char* sessionid, userid_t uid, unsigned long remoteHost, sessionid_t* sessions )
503 {
504 return RES_ERROR;
505 }
506
507 /**
508 *
509 * ?祉???激?с?潟???膣違??session_t?у??????.<br>
510 *
511 * @param
512 * @return
513 *
514 */
515 result_t getSessionDetail( sessionid_t sess_id, const session_t** session )
516 {
517 return RES_ERROR;
518 }
519
520 void freeResult( account_t* ptr ){ delete[] ptr; }
521
522 void freeResult( group_t* ptr ){ delete[] ptr; }
523
524 void freeResult( session_t* ptr ){ delete[] ptr; }
525
526 void freeResult( int* ptr ){ delete[] ptr; }
527
528 using namespace std;
529 static string errstr;
530 const char* getLastErrorString()
531 {
532 return errstr.c_str( );
533 }
534
535 void setLastErrorString( const char* str )
536 {
537 errstr = str;
538 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26