/******************************************************************************* * Copyright (c) 2025, Jan Koester jan.koester@gmx.net * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ #include #include #include #include "backend.h" #include "authdb.h" void authdb::ReadAuthData(authdb::AuthBackend &backend,struct AuthData& adata,int pos){ backend.lock(); backend.setPos(pos); backend.read((unsigned char*)&adata,sizeof(adata)); backend.setPos(pos+sizeof(adata)); adata.data=new char[adata.datasize]; backend.read((unsigned char*)adata.data,adata.datasize); backend.unlock(); } void authdb::WriteAuthData(authdb::AuthBackend &backend,const struct AuthData &adata,int pos){ backend.lock(); backend.setPos(pos); backend.newRevesion(); backend.write((unsigned char*)&adata,sizeof(adata)); backend.write((unsigned char*)adata.data,adata.datasize); backend.unlock(); } int main(int argc, char *argv[]){ authdb::AuthBackend backend(authdb::AuthBackendType::File,"test.db","tuxist.de"); try { if(strcmp(argv[1],"user")==0 ){ if(strcmp(argv[2],"create")==0 ){ authdb::AuthData user; uuid_t id; uuid_generate(id); uuid_unparse(id,user.uuid); user.type=1; snprintf(user.fieldname,255,"%s",argv[3]); user.datasize=strlen(argv[4])+1; user.data = new char[strlen(argv[4])+1]; snprintf(user.data,strlen(argv[4])+1,"%s",argv[4]); authdb::AuthData euser; int rd=sizeof(authdb::AuthHeader); while(rd