- Timestamp:
- 2007-07-24T16:20:41+12:00 (17 years ago)
- Location:
- gsdl/trunk/src/recpt
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
gsdl/trunk/src/recpt/authenaction.cpp
r14014 r14269 33 33 #include "infodbclass.h" 34 34 #include "gsdltimes.h" 35 #include "userdb.h"36 35 37 36 … … 129 128 130 129 void authenaction::configure (const text_t &key, const text_tarray &cfgline) { 131 // get the password filename132 if (cfgline.size() == 1) {133 if (key == "usersfile") usersfile = cfgline[0];134 else if (key == "keyfile") keyfile = cfgline[0];135 else if (key == "keydecay") keydecay = cfgline[0].getint();136 }137 138 130 action::configure (key, cfgline); 139 131 } 140 132 141 133 bool authenaction::init (ostream &logout) { 142 143 134 if (gdbmhome.empty()) { 144 135 logout << "ERROR (authenaction::init) gdbmhome is not set\n"; 145 136 return false; 146 137 } 147 148 if (usersfile.empty()) usersfile = filename_cat (gdbmhome, "etc", "users.db");149 if (keyfile.empty()) keyfile = filename_cat (gdbmhome, "etc", "key.db");150 138 151 139 return action::init (logout); … … 169 157 if (args["uan"].empty()) return true; 170 158 171 userdbclass *user_database = new userdbclass(usersfile);172 keydbclass *key_database = new keydbclass(keyfile);173 174 159 // failure means we have to redirect to this action to get authentication 175 160 // (if we are not already doing this) … … 188 173 else args_us = "failed"; 189 174 190 // make sure we have a username 191 if (!args_un.empty() && (user_database->get_user_info (args_un, thisuser) == ERRNO_SUCCEED)) { 175 // make sure we have a username 176 int status = user_database->get_user_info (args_un, thisuser); 177 if (!args_un.empty() && (status == ERRNO_SUCCEED)) { 192 178 if (!args_pw.empty()) { 193 179 // we are authenticating using a password … … 286 272 } 287 273 288 //close the database289 user_database->closedatabase();290 key_database->closedatabase();291 274 return true; 292 275 } -
gsdl/trunk/src/recpt/authenaction.h
r7432 r14269 33 33 #include "action.h" 34 34 #include "text_t.h" 35 #include "userdb.h" 35 36 #include "receptionist.h" 36 37 … … 41 42 class authenaction : public action { 42 43 protected: 43 text_t usersfile;44 text_t keyfile;44 userdbclass *user_database; 45 keydbclass *key_database; 45 46 int keydecay; 46 47 … … 50 51 authenaction (); 51 52 virtual ~authenaction () {} 53 54 void set_userdb(userdbclass *udb) {user_database = udb;} 55 56 void set_keydb (keydbclass *kdb) {key_database = kdb;} 52 57 53 58 void set_receptionist (receptionist *therecpt) {recpt=therecpt;} -
gsdl/trunk/src/recpt/librarymain.cpp
r12517 r14269 178 178 recpt.add_action (adocumentaction); 179 179 180 text_t userdbfile = filename_cat(gsdlhome, "etc", "users.db"); 181 userdbclass *udb = new userdbclass(userdbfile); 182 183 text_t keydbfile = filename_cat(gsdlhome, "etc", "key.db"); 184 keydbclass *kdb = new keydbclass(keydbfile); 185 180 186 #ifdef GSDL_USE_USERS_ACTION 181 recpt.add_action (new usersaction()); 187 usersaction *ausersaction = new usersaction(); 188 ausersaction->set_userdb(udb); 189 recpt.add_action (ausersaction); 182 190 #endif 183 191 … … 190 198 #ifdef GSDL_USE_AUTHEN_ACTION 191 199 authenaction *aauthenaction = new authenaction(); 200 aauthenaction->set_userdb(udb); 201 aauthenaction->set_keydb(kdb); 192 202 aauthenaction->set_receptionist(&recpt); 193 203 recpt.add_action (aauthenaction); … … 272 282 cgiwrapper (recpt, ""); 273 283 delete cservers; 284 delete udb; 285 delete kdb; 274 286 275 287 // clean up the actions -
gsdl/trunk/src/recpt/userdb.cpp
r14013 r14269 77 77 userdbclass::userdbclass(const text_t &userdbfilename) 78 78 { 79 activated = (!userdb.opendatabase(userdbfilename, GDBM_WRCREAT, 1000, true)) ? false : true; 79 storeduserdbfilename = userdbfilename; 80 activated = (!userdb.opendatabase(storeduserdbfilename, GDBM_READER, 1000, true)) ? false : true; 81 if (activated == false) 82 { 83 activated = (!userdb.opendatabase(storeduserdbfilename, GDBM_WRCREAT, 1000, true)) ? false : true; 84 if (activated == true) 85 { 86 userdb.closedatabase(); 87 activated = (!userdb.opendatabase(storeduserdbfilename, GDBM_READER, 1000, true)) ? false : true; 88 } 89 } 90 80 91 external_db = false; 81 92 } … … 227 238 info["groups"] = userinfo.groups; 228 239 info["comment"] = userinfo.comment; 229 230 return (userdb.setinfo (username, info)) ? ERRNO_SUCCEED : ERRNO_GDBMACTIONFILED ; 240 userdb.closedatabase(); 241 userdb.opendatabase(storeduserdbfilename, GDBM_WRCREAT, 1000, true); 242 int result = (userdb.setinfo (username, info)) ? ERRNO_SUCCEED : ERRNO_GDBMACTIONFILED; 243 userdb.closedatabase(); 244 userdb.opendatabase(storeduserdbfilename, GDBM_READER, 1000, true); 245 return result; 231 246 } 232 247 return ERRNO_CONNECTIONFAILED; … … 290 305 if (activated == true) 291 306 { 307 userdb.closedatabase(); 308 userdb.opendatabase(storeduserdbfilename, GDBM_WRCREAT, 1000, true); 292 309 userdb.deletekey (username); 310 userdb.closedatabase(); 311 userdb.opendatabase(storeduserdbfilename, GDBM_READER, 1000, true); 293 312 return ERRNO_SUCCEED; 294 313 } … … 335 354 return ERRNO_CONNECTIONFAILED; 336 355 } 337 338 //an alernative way to colse the database if the class can't reach the destructor339 void userdbclass::closedatabase()340 {341 userdb.closedatabase();342 }343 344 356 //==========================================// 345 357 // userdbclass functions (End) // … … 351 363 keydbclass::keydbclass(const text_t &keydbfilename) 352 364 { 353 activated = (!keydb.opendatabase(keydbfilename, GDBM_WRCREAT, 1000, true)) ? false : true; 365 storedkeydbfilename = keydbfilename; 366 activated = (!keydb.opendatabase(storedkeydbfilename, GDBM_READER, 1000, true)) ? false : true; 367 if (activated == false) 368 { 369 activated = (!keydb.opendatabase(storedkeydbfilename, GDBM_WRCREAT, 1000, true)) ? false : true; 370 if (activated == true) 371 { 372 keydb.closedatabase(); 373 activated = (!keydb.opendatabase(storedkeydbfilename, GDBM_READER, 1000, true)) ? false : true; 374 } 375 } 354 376 external_db = false; 355 377 } … … 399 421 keydata["time"] = time2text(time(NULL)); 400 422 423 keydb.closedatabase(); 424 keydb.opendatabase(storedkeydbfilename, GDBM_WRCREAT, 1000, true); 401 425 if (!keydb.setinfo (crypt_userkey, keydata)) 402 426 { 403 427 userkey.clear(); // failed 404 428 } 429 keydb.closedatabase(); 430 keydb.opendatabase(storedkeydbfilename, GDBM_READER, 1000, true); 405 431 406 432 return userkey; … … 434 460 // succeeded, update the key's time 435 461 info["time"] = time2text(time(NULL)); 462 keydb.closedatabase(); 463 keydb.opendatabase(storedkeydbfilename, GDBM_WRCREAT, 1000, true); 436 464 keydb.setinfo (crypt_key, info); 465 keydb.closedatabase(); 466 keydb.opendatabase(storedkeydbfilename, GDBM_READER, 1000, true); 437 467 return true; 438 468 } … … 477 507 } 478 508 } 479 480 //an alernative way to colse the database if the class can't reach the destructor481 void keydbclass::closedatabase()482 {483 keydb.closedatabase();484 }485 509 //==========================================// 486 510 // keydbclass functions (End) // -
gsdl/trunk/src/recpt/userdb.h
r14015 r14269 64 64 bool external_db; 65 65 bool activated; 66 text_t storeduserdbfilename; 66 67 67 68 public: … … 114 115 // on success 115 116 int get_user_list (text_tarray &userlist); 116 117 //an alernative way to colse the database if the class can't reach the destructor118 void closedatabase();119 117 }; 120 118 … … 126 124 bool external_db; 127 125 bool activated; 126 text_t storedkeydbfilename; 128 127 129 128 public: … … 146 145 // use sparingly, it can be quite an expensive function 147 146 void remove_old_keys (int keydecay); 148 149 //an alernative way to colse the database if the class can't reach the destructor150 void closedatabase();151 147 }; 152 148 -
gsdl/trunk/src/recpt/usersaction.cpp
r13844 r14269 147 147 148 148 void usersaction::configure (const text_t &key, const text_tarray &cfgline) { 149 // get the password filename150 if (cfgline.size() == 1) {151 if (key == "usersfile") usersfile = cfgline[0];152 }153 154 149 action::configure (key, cfgline); 155 150 } … … 161 156 return false; 162 157 } 163 164 if (usersfile.empty()) usersfile = filename_cat (gdbmhome, "etc", "users.db");165 158 166 159 return action::init (logout); … … 193 186 outconvertclass &outconvert, ostream &textout, 194 187 ostream &logout) { 195 196 // open the user database (it will be used a lot)197 user_database = new userdbclass(usersfile);198 188 199 189 if (args["uma"] == "adduser" || args["uma"] == "edituser") { -
gsdl/trunk/src/recpt/usersaction.h
r13844 r14269 32 32 #include "gsdlconf.h" 33 33 #include "action.h" 34 #include "userdb.h" 34 35 #include "text_t.h" 35 #include "userdb.h"36 36 37 37 38 38 class usersaction : public action { 39 39 protected: 40 text_t usersfile; 41 userdbclass* user_database; 40 userdbclass *user_database; 42 41 43 42 public: … … 48 47 49 48 bool init (ostream &logout); 49 50 void set_userdb(userdbclass *udb) {user_database = udb;} 50 51 51 52 text_t get_action_name () {return "um";}
Note:
See TracChangeset
for help on using the changeset viewer.