Loading src/admin.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -442,7 +442,7 @@ namespace authdb { } if (data) { editRecord(*backend, *editrec, UserData); backend->editRecord(*editrec, UserData); } /* Loading Loading @@ -1453,7 +1453,7 @@ namespace authdb { if (svid.parse(csid) != 0) throw AuthBackendError("removeService: could not parse service uuid!"); delRecord(*backend, svid, DataType::ServiceData); backend->delRecord(svid, DataType::ServiceData); json_object *jobj = json_object_new_object(); json_object_object_add(jobj, "status", json_object_new_string("ok")); Loading Loading @@ -1660,7 +1660,7 @@ namespace authdb { if (cldid.parse(cclid) != 0) throw AuthBackendError("removeClient: could not parse client uuid!"); delRecord(*backend, cldid, DataType::ClientData); backend->delRecord(cldid, DataType::ClientData); json_object *jobj = json_object_new_object(); json_object_object_add(jobj, "status", json_object_new_string("ok")); Loading src/authdb.cpp +0 −25 Original line number Diff line number Diff line Loading @@ -495,31 +495,6 @@ namespace authdb { std::map<std::string, std::unique_ptr<AuthBackend>> _DomainCache; }; int searchValue(authdb::AuthBackend &backend,const char*fieldname,const char *value){ authdb::AuthData::Record *user=new AuthData::Record; size_t rd=sizeof(authdb::AuthHeader),brd=rd; while(rd<backend.end()){ backend.setPos(rd); backend.read((unsigned char*)user,sizeof(AuthData::Record)); rd=backend.getPos()+user->datasize; if(strcmp(user->fieldname,fieldname) == 0){ user->data = new char[user->datasize]; backend.read((unsigned char*)user->data,user->datasize); if(strcmp(user->data,value) == 0){ delete[] user->data; user->data=nullptr; goto VALUEFOUND; } delete[] user->data; user->data=nullptr; } brd=rd; } VALUEFOUND: delete user; return brd; } }; int main(int argc,char *argv[]){ Loading src/authdb.h +0 −13 Original line number Diff line number Diff line Loading @@ -84,12 +84,6 @@ namespace authdb { protected: AuthData *_next; private: friend int searchValue(authdb::AuthBackend &backend,const char*fieldname,const char *value); friend void createRecord(AuthBackend &backend,AuthData &rec,int type); friend bool getRecord(authdb::AuthBackend &backend,AuthData &rec,int type); friend bool editRecord(AuthBackend &backend,AuthData &rec,int type); friend void delRecord(authdb::AuthBackend &backend,const uuid::uuid &uid,int type); }; template<typename T> Loading Loading @@ -155,13 +149,6 @@ namespace authdb { throw(authdb::AuthBackendError(err.c_str())); } void createRecord(authdb::AuthBackend &backend,AuthData &rec,int type); bool getRecord(authdb::AuthBackend &backend,AuthData &rec,int type); bool editRecord(AuthBackend &backend,AuthData &rec,int type); void delRecord(authdb::AuthBackend &backend,const uuid::uuid &uid,int type); int searchValue(authdb::AuthBackend &backend,const char*fieldname,const char *value); void vacuumRecords(AuthBackend &backend); struct DomainInfo { Loading src/backend.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include "backends/cluster.h" #include "backend.h" #include "authdb.h" authdb::AuthBackend::AuthBackend(int type, const std::string &options,const std::string &domain) : _Type(type),_Options(options),_Domain(domain) { _Type=type; Loading Loading @@ -183,3 +184,28 @@ authdb::AuthBackend::Guard::~Guard(){ _guard_locked_backend = nullptr; } } int authdb::AuthBackend::searchValue(const char *fieldname, const char *value){ authdb::AuthData::Record *user=new AuthData::Record; size_t rd=sizeof(authdb::AuthHeader),brd=rd; while(rd<end()){ setPos(rd); read((unsigned char*)user,sizeof(AuthData::Record)); rd=getPos()+user->datasize; if(strcmp(user->fieldname,fieldname) == 0){ user->data = new char[user->datasize]; read((unsigned char*)user->data,user->datasize); if(strcmp(user->data,value) == 0){ delete[] user->data; user->data=nullptr; goto VALUEFOUND; } delete[] user->data; user->data=nullptr; } brd=rd; } VALUEFOUND: delete user; return brd; } src/backend.h +6 −6 Original line number Diff line number Diff line Loading @@ -119,6 +119,12 @@ namespace authdb{ bool clusterDataExists() const; void createRecord(AuthData &rec, int type); bool getRecord(AuthData &rec, int type); bool editRecord(AuthData &rec, int type); void delRecord(const uuid::uuid &uid, int type); int searchValue(const char *fieldname, const char *value); private: void setPos(size_t pos); size_t getPos(); Loading @@ -136,12 +142,6 @@ namespace authdb{ friend class Export; friend class Import; friend void createRecord(AuthBackend &backend, AuthData &rec, int type); friend bool getRecord(AuthBackend &backend, AuthData &rec, int type); friend bool editRecord(AuthBackend &backend, AuthData &rec, int type); friend void delRecord(AuthBackend &backend, const uuid::uuid &uid, int type); friend int searchValue(AuthBackend &backend, const char *fieldname, const char *value); private: int _Type; AuthBackendApi *_Api; Loading Loading
src/admin.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -442,7 +442,7 @@ namespace authdb { } if (data) { editRecord(*backend, *editrec, UserData); backend->editRecord(*editrec, UserData); } /* Loading Loading @@ -1453,7 +1453,7 @@ namespace authdb { if (svid.parse(csid) != 0) throw AuthBackendError("removeService: could not parse service uuid!"); delRecord(*backend, svid, DataType::ServiceData); backend->delRecord(svid, DataType::ServiceData); json_object *jobj = json_object_new_object(); json_object_object_add(jobj, "status", json_object_new_string("ok")); Loading Loading @@ -1660,7 +1660,7 @@ namespace authdb { if (cldid.parse(cclid) != 0) throw AuthBackendError("removeClient: could not parse client uuid!"); delRecord(*backend, cldid, DataType::ClientData); backend->delRecord(cldid, DataType::ClientData); json_object *jobj = json_object_new_object(); json_object_object_add(jobj, "status", json_object_new_string("ok")); Loading
src/authdb.cpp +0 −25 Original line number Diff line number Diff line Loading @@ -495,31 +495,6 @@ namespace authdb { std::map<std::string, std::unique_ptr<AuthBackend>> _DomainCache; }; int searchValue(authdb::AuthBackend &backend,const char*fieldname,const char *value){ authdb::AuthData::Record *user=new AuthData::Record; size_t rd=sizeof(authdb::AuthHeader),brd=rd; while(rd<backend.end()){ backend.setPos(rd); backend.read((unsigned char*)user,sizeof(AuthData::Record)); rd=backend.getPos()+user->datasize; if(strcmp(user->fieldname,fieldname) == 0){ user->data = new char[user->datasize]; backend.read((unsigned char*)user->data,user->datasize); if(strcmp(user->data,value) == 0){ delete[] user->data; user->data=nullptr; goto VALUEFOUND; } delete[] user->data; user->data=nullptr; } brd=rd; } VALUEFOUND: delete user; return brd; } }; int main(int argc,char *argv[]){ Loading
src/authdb.h +0 −13 Original line number Diff line number Diff line Loading @@ -84,12 +84,6 @@ namespace authdb { protected: AuthData *_next; private: friend int searchValue(authdb::AuthBackend &backend,const char*fieldname,const char *value); friend void createRecord(AuthBackend &backend,AuthData &rec,int type); friend bool getRecord(authdb::AuthBackend &backend,AuthData &rec,int type); friend bool editRecord(AuthBackend &backend,AuthData &rec,int type); friend void delRecord(authdb::AuthBackend &backend,const uuid::uuid &uid,int type); }; template<typename T> Loading Loading @@ -155,13 +149,6 @@ namespace authdb { throw(authdb::AuthBackendError(err.c_str())); } void createRecord(authdb::AuthBackend &backend,AuthData &rec,int type); bool getRecord(authdb::AuthBackend &backend,AuthData &rec,int type); bool editRecord(AuthBackend &backend,AuthData &rec,int type); void delRecord(authdb::AuthBackend &backend,const uuid::uuid &uid,int type); int searchValue(authdb::AuthBackend &backend,const char*fieldname,const char *value); void vacuumRecords(AuthBackend &backend); struct DomainInfo { Loading
src/backend.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include "backends/cluster.h" #include "backend.h" #include "authdb.h" authdb::AuthBackend::AuthBackend(int type, const std::string &options,const std::string &domain) : _Type(type),_Options(options),_Domain(domain) { _Type=type; Loading Loading @@ -183,3 +184,28 @@ authdb::AuthBackend::Guard::~Guard(){ _guard_locked_backend = nullptr; } } int authdb::AuthBackend::searchValue(const char *fieldname, const char *value){ authdb::AuthData::Record *user=new AuthData::Record; size_t rd=sizeof(authdb::AuthHeader),brd=rd; while(rd<end()){ setPos(rd); read((unsigned char*)user,sizeof(AuthData::Record)); rd=getPos()+user->datasize; if(strcmp(user->fieldname,fieldname) == 0){ user->data = new char[user->datasize]; read((unsigned char*)user->data,user->datasize); if(strcmp(user->data,value) == 0){ delete[] user->data; user->data=nullptr; goto VALUEFOUND; } delete[] user->data; user->data=nullptr; } brd=rd; } VALUEFOUND: delete user; return brd; }
src/backend.h +6 −6 Original line number Diff line number Diff line Loading @@ -119,6 +119,12 @@ namespace authdb{ bool clusterDataExists() const; void createRecord(AuthData &rec, int type); bool getRecord(AuthData &rec, int type); bool editRecord(AuthData &rec, int type); void delRecord(const uuid::uuid &uid, int type); int searchValue(const char *fieldname, const char *value); private: void setPos(size_t pos); size_t getPos(); Loading @@ -136,12 +142,6 @@ namespace authdb{ friend class Export; friend class Import; friend void createRecord(AuthBackend &backend, AuthData &rec, int type); friend bool getRecord(AuthBackend &backend, AuthData &rec, int type); friend bool editRecord(AuthBackend &backend, AuthData &rec, int type); friend void delRecord(AuthBackend &backend, const uuid::uuid &uid, int type); friend int searchValue(AuthBackend &backend, const char *fieldname, const char *value); private: int _Type; AuthBackendApi *_Api; Loading