Commit 040abc37 authored by jan.koester's avatar jan.koester
Browse files

test

parent 34ea7730
Loading
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -442,7 +442,7 @@ namespace authdb {
            }

            if (data) {
                editRecord(*backend, *editrec, UserData);
                backend->editRecord(*editrec, UserData);
            }

            /*
@@ -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"));
@@ -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"));
+0 −25
Original line number Diff line number Diff line
@@ -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[]){
+0 −13
Original line number Diff line number Diff line
@@ -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>
@@ -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 {
+26 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
}
+6 −6
Original line number Diff line number Diff line
@@ -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();
@@ -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