Develop and Download Open Source Software

Browse CVS Repository

Annotation of /xoonips/AL/commonal.cc

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


Revision 1.6 - (hide 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 youi 1.1 /*
2     *
3 aga 1.6 * $Revision: 1.5 $
4 youi 1.2 * $Log: commonal.cc,v $
5 aga 1.6 * Revision 1.5 2004/11/26 01:08:25 aga
6     * ??ddSlashes()篏???.
7     *
8 aga 1.5 * Revision 1.4 2004/11/25 12:14:29 youi
9     * getUid????????絎?臂?????.
10     *
11 youi 1.4 * Revision 1.3 2004/11/25 11:13:59 youi
12     * getLastErrorString/setLastErrorString??絎?臂?
13     *
14 youi 1.3 * Revision 1.2 2004/11/25 08:55:19 youi
15     * 綣??違??????篆??.
16     * freeResult??菴遵??.
17     *
18 youi 1.2 * Revision 1.1 2004/11/25 05:14:58 youi
19     * initial version
20     *
21 youi 1.1 *
22     */
23    
24     #include <stdio.h>
25 aga 1.6 #include <stdlib.h>
26 youi 1.1 #include <string.h>
27     #include <mysql.h>
28 youi 1.3 #include <string>
29 youi 1.1
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 aga 1.5
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 youi 1.1
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 youi 1.2 return RES_OK;
86 youi 1.1 }
87    
88    
89     /**
90     *
91     * Platform???若?倶?粋??倶????緇?
92     *
93     * @param
94     * @return
95     *
96     */
97 youi 1.2 bool isActivated( sessionid_t sid, userid_t uid )
98 youi 1.1 {
99     return false;
100     }
101    
102     /**
103     *
104     * Platform???若?倶?粋??倶??紊???/span>
105     *
106     * @param
107     * @return
108     *
109     */
110 youi 1.2 result_t activate( sessionid_t sid, userid_t uid, bool activate )
111 youi 1.1 {
112     return RES_ERROR;
113     }
114    
115     /**
116     *
117     * ?≪?????潟????/span>
118     *
119     * @param
120     * @return
121     *
122     */
123 youi 1.2 int getAccountCount( sessionid_t sid )
124 youi 1.1 {
125     return 0;
126     }
127    
128     /**
129     *
130     * ?≪?????潟??????/span>
131     *
132     * @param
133     * @return
134     *
135     */
136 youi 1.2 result_t deleteAccount( sessionid_t sid, userid_t uid )
137 youi 1.1 {
138     return RES_ERROR;
139     }
140    
141     /**
142     *
143     * ?≪?????潟?????怨??
144     *
145     * @param
146     * @return
147     *
148     */
149 youi 1.2 result_t getAccount( sessionid_t sid, userid_t uid, const account_t** )
150 youi 1.1 {
151     return RES_ERROR;
152     }
153    
154     /**
155     *
156     * ?≪?????潟?????怨??
157     *
158     * @param
159     * @return
160     *
161     */
162 youi 1.2 result_t getAccounts( sessionid_t sid, const userid_t* uids, int uidsLen, const criteria_t* cri, const account_t** accounts, int* accountsLen )
163 youi 1.1 {
164     return RES_ERROR;
165     }
166    
167     /**
168     *
169     * ?≪?????潟???脂??/span>
170     *
171     * @param
172     * @return
173     *
174     */
175 youi 1.2 result_t insertAccount( sessionid_t sid, const account_t* account )
176 youi 1.1 {
177     return RES_ERROR;
178     }
179    
180     /**
181     *
182     * ?≪?????潟??紊???/span>
183     *
184     * @param
185     * @return
186     *
187     */
188 youi 1.2 result_t updateAccount( sessionid_t sid, const account_t* account )
189 youi 1.1 {
190     return RES_ERROR;
191     }
192    
193     /**
194     *
195     * ???若??D筝?荀?/span>
196     *
197     * @param
198     * @return
199     *
200     */
201 youi 1.2 result_t dumpUids( sessionid_t sid, const criteria_t* cri, userid_t** uids, int* uidsLen )
202 youi 1.1 {
203     return RES_ERROR;
204     }
205    
206     /**
207     *
208     * ?違???若????/span>
209     *
210     * @param
211     * @return
212     *
213     */
214 youi 1.2 int getGroupCount( sessionid_t sid )
215 youi 1.1 {
216     return 0;
217     }
218    
219     /**
220     *
221     * ??絮??違???若??筝?荀у??
222     *
223     * @param
224     * @return
225     *
226     */
227 youi 1.2 result_t getGroupsByUid( sessionid_t sid, userid_t uid, const criteria_t* cri, groupid_t** gids, int* gidsLen )
228 youi 1.1 {
229     return RES_ERROR;
230     }
231    
232     /**
233     *
234     * ?違???若??膊∞??罔????????
235     *
236     * @param
237     * @return
238     *
239     */
240 youi 1.2 bool isGroupAdmin( sessionid_t sid, groupid_t gid, userid_t uid )
241 youi 1.1 {
242     return RES_ERROR;
243     }
244    
245     /**
246     *
247     * ?違???若??ID筝?荀?/span>
248     *
249     * @param
250     * @return
251     *
252     */
253 youi 1.2 result_t dumpGids( sessionid_t sid, const criteria_t* cri, groupid_t** gids, int* gidsLen )
254 youi 1.1 {
255     return RES_ERROR;
256     }
257    
258     /**
259     *
260     * ?違???若??膊∞????ID??緇?
261     *
262     * @param
263     * @return
264     *
265     */
266 youi 1.2 result_t dumpGroupAdmins( sessionid_t sid, groupid_t gid, const criteria_t* cri, userid_t** uids, int* uidsLen )
267 youi 1.1 {
268     return RES_ERROR;
269     }
270    
271     /**
272     *
273     * ?違???若????絮????若?九????/span>
274     *
275     * @param
276     * @return
277     *
278     */
279 youi 1.2 result_t deleteMember( sessionid_t sid, groupid_t gid, userid_t uid )
280 youi 1.1 {
281     return RES_ERROR;
282     }
283    
284     /**
285     *
286     * ?違???若????絮????若?区申??
287     *
288     * @param
289     * @return
290     *
291     */
292 youi 1.2 result_t insertMember( sessionid_t sid, groupid_t gid, userid_t uid )
293 youi 1.1 {
294     return RES_ERROR;
295     }
296    
297     /**
298     *
299     * ?違???若????絮????若?九??
300     *
301     * @param
302     * @return
303     *
304     */
305 youi 1.2 result_t getMembers( sessionid_t sid, groupid_t gid, const criteria_t* cri, userid_t** uids, int* uidsLen )
306 youi 1.1 {
307     return RES_ERROR;
308     }
309    
310     /**
311     *
312     * ?違???若????????/span>
313     *
314     * @param
315     * @return
316     *
317     */
318 youi 1.2 result_t deleteGroup( sessionid_t sid, groupid_t gid )
319 youi 1.1 {
320     return RES_ERROR;
321     }
322    
323     /**
324     *
325     * ?違???若?????脂??/span>
326     *
327     * @param
328     * @return
329     *
330     */
331 youi 1.2 result_t insertGroup( sessionid_t sid, const group_t* group )
332 youi 1.1 {
333     return RES_ERROR;
334     }
335    
336     /**
337     *
338     * ?違???若???????/span>
339     *
340     * @param
341     * @return
342     *
343     */
344 youi 1.2 result_t updateGroup( sessionid_t sid, const group_t* group )
345 youi 1.1 {
346     return RES_ERROR;
347     }
348    
349     /**
350     *
351     * ?違???若?????怨??
352     *
353     * @param
354     * @return
355     *
356     */
357 youi 1.2 result_t getGroup( sessionid_t sid, groupid_t gid, const group_t** group )
358 youi 1.1 {
359     return RES_ERROR;
360     }
361    
362     /**
363     *
364     * ?違???若?????怨??
365     *
366     * @param
367     * @return
368     *
369     */
370 youi 1.2 result_t getGroups( sessionid_t sid, groupid_t* gids, int gidsLen, const criteria_t* cri, const group_t** groups, int* groupsLen )
371 youi 1.1 {
372     return RES_ERROR;
373     }
374    
375     /**
376     *
377     * ?≪?????若?炊┤???????
378     *
379     * @param
380     * @return
381     *
382     */
383 youi 1.2 bool isModerator( sessionid_t sid, userid_t uid )
384 youi 1.1 {
385     return RES_ERROR;
386     }
387    
388     /**
389     *
390     * ???若??D??緇?
391     *
392     * @param
393     * @return
394     *
395     */
396 youi 1.2 result_t getUid( const char* uname, userid_t* uid )
397 youi 1.1 {
398 youi 1.4 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 youi 1.1 }
415    
416     /**
417     *
418     * ???違?ゃ?活?荐若???祉???激?с?割???
419     *
420 aga 1.6 * @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 youi 1.1 *
427     */
428 aga 1.6 result_t loginUser(const char* uname, const char* passwd, sessionid_t* session )
429 youi 1.1 {
430 aga 1.6 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 youi 1.1 }
464    
465     /**
466     *
467     * ???違?≪???????祉???激?с?括?篋?
468     *
469 aga 1.6 * @param sid session id
470     * @return ????
471 youi 1.1 *
472     */
473 aga 1.6 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 youi 1.1
491     /**
492     *
493     * ?祉???激?с?潟?????.<br>
494     * XOOPS??ession???若????????蚊??????sess_id?????essionid??膈???????
495     * ?逸?session_t??篏?????????
496 youi 1.2 * ???若?帥???若?鴻???祉???激?с?潟????違?????宴??荐??蚊????
497 youi 1.1 *
498     * @param
499     * @return
500     *
501     */
502 youi 1.2 result_t createSession( const char* sessionid, userid_t uid, unsigned long remoteHost, sessionid_t* sessions )
503 youi 1.1 {
504     return RES_ERROR;
505     }
506    
507     /**
508     *
509     * ?祉???激?с?潟???膣違??session_t?у??????.<br>
510     *
511     * @param
512     * @return
513     *
514     */
515 youi 1.2 result_t getSessionDetail( sessionid_t sess_id, const session_t** session )
516 youi 1.1 {
517     return RES_ERROR;
518     }
519 youi 1.2
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 youi 1.3 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