void GWEN_Url_SetVars(GWEN_URL *st, GWEN_DB_NODE *d) { assert(st); if (st->vars) GWEN_DB_Group_free(st->vars); if (d) st->vars=GWEN_DB_Group_dup(d); else st->vars=0; st->_modified=1; }
void AH_User_SetUpd(AB_USER *u, GWEN_DB_NODE *n){ AH_USER *ue; assert(u); ue=GWEN_INHERIT_GETDATA(AB_USER, AH_USER, u); assert(ue); if (ue->dbUpd) GWEN_DB_Group_free(ue->dbUpd); if (n) { ue->dbUpd=GWEN_DB_Group_dup(n); } else ue->dbUpd=GWEN_DB_Group_new("upd"); }
int GWEN_Url_ReadDb(GWEN_URL *st, GWEN_DB_NODE *db) { assert(st); assert(db); GWEN_Url_SetProtocol(st, GWEN_DB_GetCharValue(db, "protocol", 0, 0)); GWEN_Url_SetServer(st, GWEN_DB_GetCharValue(db, "server", 0, 0)); GWEN_Url_SetPort(st, GWEN_DB_GetIntValue(db, "port", 0, 0)); GWEN_Url_SetPath(st, GWEN_DB_GetCharValue(db, "path", 0, 0)); GWEN_Url_SetUserName(st, GWEN_DB_GetCharValue(db, "userName", 0, 0)); GWEN_Url_SetPassword(st, GWEN_DB_GetCharValue(db, "password", 0, 0)); if (1) { /* for local vars */ GWEN_DB_NODE *dbT; dbT=GWEN_DB_GetGroup(db, GWEN_PATH_FLAGS_NAMEMUSTEXIST, "vars"); if (dbT) { if (st->vars) GWEN_DB_Group_free(st->vars); st->vars=GWEN_DB_Group_dup(dbT); } } GWEN_Url_SetUrl(st, GWEN_DB_GetCharValue(db, "url", 0, 0)); return 0; }
GWEN_URL *GWEN_Url_dup(const GWEN_URL *d) { GWEN_URL *st; assert(d); st=GWEN_Url_new(); if (d->protocol) st->protocol=strdup(d->protocol); if (d->server) st->server=strdup(d->server); st->port=d->port; if (d->path) st->path=strdup(d->path); if (d->userName) st->userName=strdup(d->userName); if (d->password) st->password=strdup(d->password); if (d->vars) { GWEN_DB_Group_free(st->vars); st->vars=GWEN_DB_Group_dup(d->vars); } if (d->url) st->url=strdup(d->url); return st; }
int listBal(AB_BANKING *ab, GWEN_DB_NODE *dbArgs, int argc, char **argv) { GWEN_DB_NODE *db; int rv; const char *ctxFile; AB_IMEXPORTER_CONTEXT *ctx=0; AB_IMEXPORTER_ACCOUNTINFO *iea=0; uint32_t aid; const char *bankId; const char *accountId; const char *subAccountId; const char *iban; const char *tmplString; const char *s; AB_BALANCE_TYPE bt=AB_Balance_TypeBooked; /* parse command line arguments */ db=_readCommandLine(dbArgs, argc, argv); if (db==NULL) { /* error in command line */ return 1; } /* read command line arguments */ aid=(uint32_t)GWEN_DB_GetIntValue(db, "uniqueAccountId", 0, 0); bankId=GWEN_DB_GetCharValue(db, "bankId", 0, 0); accountId=GWEN_DB_GetCharValue(db, "accountId", 0, 0); subAccountId=GWEN_DB_GetCharValue(db, "subAccountId", 0, 0); iban=GWEN_DB_GetCharValue(db, "iban", 0, 0); tmplString=GWEN_DB_GetCharValue(db, "template", 0, "$(dateAsString)\t" "$(valueAsString)\t" "$(iban)"); /* determine balance type */ s=GWEN_DB_GetCharValue(db, "balanceType", 0, "noted"); if (s && *s) { AB_BALANCE_TYPE tempBalanceType; tempBalanceType=AB_Balance_Type_fromString(s); if (tempBalanceType==AB_Balance_TypeUnknown) { DBG_ERROR(0, "Invalid balance type given (%s)", s); return 1; } bt=tempBalanceType; } /* init AqBanking */ rv=AB_Banking_Init(ab); if (rv) { DBG_ERROR(0, "Error on init (%d)", rv); return 2; } /* load ctx file */ ctxFile=GWEN_DB_GetCharValue(db, "ctxfile", 0, 0); rv=readContext(ctxFile, &ctx, 1); if (rv<0) { DBG_ERROR(0, "Error reading context (%d)", rv); AB_ImExporterContext_free(ctx); return 4; } /* copy context, but only keep wanted accounts and transactions */ iea=AB_ImExporterContext_GetFirstAccountInfo(ctx); while (iea) { if (AB_ImExporterAccountInfo_Matches(iea, aid, /* unique account id */ "*", bankId, accountId, subAccountId, iban, "*", /* currency */ AB_AccountType_Unknown)) { AB_BALANCE *bal; GWEN_DB_NODE *dbAccount; const char *s; dbAccount=GWEN_DB_Group_new("dbAccount"); s=AB_ImExporterAccountInfo_GetBankCode(iea); if (s && *s) GWEN_DB_SetCharValue(dbAccount, GWEN_DB_FLAGS_OVERWRITE_VARS, "bankCode", s); s=AB_ImExporterAccountInfo_GetAccountNumber(iea); if (s && *s) GWEN_DB_SetCharValue(dbAccount, GWEN_DB_FLAGS_OVERWRITE_VARS, "accountNumber", s); s=AB_ImExporterAccountInfo_GetBic(iea); if (s && *s) GWEN_DB_SetCharValue(dbAccount, GWEN_DB_FLAGS_OVERWRITE_VARS, "bic", s); s=AB_ImExporterAccountInfo_GetIban(iea); if (s && *s) GWEN_DB_SetCharValue(dbAccount, GWEN_DB_FLAGS_OVERWRITE_VARS, "iban", s); bal=AB_Balance_List_GetLatestByType(AB_ImExporterAccountInfo_GetBalanceList(iea), bt); if (bal) { GWEN_DB_NODE *dbElement; const AB_VALUE *v; const GWEN_DATE *dt; GWEN_BUFFER *dbuf; dbElement=GWEN_DB_Group_dup(dbAccount); AB_Balance_toDb(bal, dbElement); /* translate value */ dbuf=GWEN_Buffer_new(0, 256, 0, 1); v=AB_Balance_GetValue(bal); if (v) { AB_Value_toHumanReadableString(v, dbuf, 2, 0); GWEN_DB_SetCharValue(dbElement, GWEN_DB_FLAGS_OVERWRITE_VARS, "valueAsString", GWEN_Buffer_GetStart(dbuf)); GWEN_Buffer_Reset(dbuf); } /* translate date */ dt=AB_Balance_GetDate(bal); if (dt) { rv=GWEN_Date_toStringWithTemplate(dt, I18N("DD.MM.YYYY"), dbuf); if (rv>=0) { GWEN_DB_SetCharValue(dbElement, GWEN_DB_FLAGS_OVERWRITE_VARS, "dateAsString", GWEN_Buffer_GetStart(dbuf)); } GWEN_Buffer_Reset(dbuf); } GWEN_DB_ReplaceVars(dbElement, tmplString, dbuf); fprintf(stdout, "%s\n", GWEN_Buffer_GetStart(dbuf)); GWEN_Buffer_free(dbuf); GWEN_DB_Group_free(dbElement); } /* if bal */ GWEN_DB_Group_free(dbAccount); } /* if account matches */ iea=AB_ImExporterAccountInfo_List_Next(iea); } /* while */ AB_ImExporterContext_free(ctx); /* deinit */ rv=AB_Banking_Fini(ab); if (rv) { fprintf(stderr, "ERROR: Error on deinit (%d)\n", rv); return 5; } return 0; }
void AH_User_ReadDb(AB_USER *u, GWEN_DB_NODE *db) { AH_USER *ue; const char *s; GWEN_DB_NODE *gr; int i; assert(u); ue=GWEN_INHERIT_GETDATA(AB_USER, AH_USER, u); assert(ue); s=GWEN_DB_GetCharValue(db, "cryptMode", 0, "unknown"); ue->cryptMode=AH_CryptMode_fromString(s); s=GWEN_DB_GetCharValue(db, "status", 0, "unknown"); ue->status=AH_User_Status_fromString(s); ue->hbciVersion=GWEN_DB_GetIntValue(db, "hbciVersion", 0, 210); /* load server address */ GWEN_Url_free(ue->serverUrl); s=GWEN_DB_GetCharValue(db, "server", 0, 0); if (s) { ue->serverUrl=GWEN_Url_fromString(s); assert(ue->serverUrl); if (GWEN_Url_GetPort(ue->serverUrl)==0) { if (AH_User_GetCryptMode(u)==AH_CryptMode_Pintan) { GWEN_Url_SetPort(ue->serverUrl, 443); GWEN_Url_SetProtocol(ue->serverUrl, "https"); } else { GWEN_Url_SetProtocol(ue->serverUrl, "hbci"); GWEN_Url_SetPort(ue->serverUrl, 3000); } } } else ue->serverUrl=NULL; /* load BPD */ AH_Bpd_free(ue->bpd); gr=GWEN_DB_GetGroup(db, GWEN_PATH_FLAGS_NAMEMUSTEXIST, "bpd"); if (gr) { ue->bpd=AH_Bpd_FromDb(gr); assert(ue->bpd); } else ue->bpd=AH_Bpd_new(); /* load UPD */ if (ue->dbUpd) GWEN_DB_Group_free(ue->dbUpd); gr=GWEN_DB_GetGroup(db, GWEN_PATH_FLAGS_NAMEMUSTEXIST, "upd"); if (gr) { ue->dbUpd=GWEN_DB_Group_dup(gr); } else ue->dbUpd=GWEN_DB_Group_new("upd"); /* get peer id */ free(ue->peerId); s=GWEN_DB_GetCharValue(db, "peerId", 0, 0); if (s) ue->peerId=strdup(s); else ue->peerId=NULL; /* get system id */ free(ue->systemId); s=GWEN_DB_GetCharValue(db, "systemId", 0, 0); if (s) ue->systemId=strdup(s); else ue->systemId=NULL; ue->updVersion=GWEN_DB_GetIntValue(db, "updVersion", 0, 0); /* setup HTTP version */ ue->httpVMajor=GWEN_DB_GetIntValue(db, "httpVMajor", 0, -1); ue->httpVMinor=GWEN_DB_GetIntValue(db, "httpVMinor", 0, -1); if (ue->httpVMajor==-1 || ue->httpVMinor==-1) { ue->httpVMajor=1; ue->httpVMinor=0; } free(ue->httpContentType); s=GWEN_DB_GetCharValue(db, "httpContentType", 0, 0); if (s) ue->httpContentType=strdup(s); else ue->httpContentType=NULL; /* read user flags */ ue->flags=AH_User_Flags_fromDb(db, "userFlags"); /* setup medium stuff */ free(ue->tokenType); s=GWEN_DB_GetCharValue(db, "tokenType", 0, 0); if (s) ue->tokenType=strdup(s); else ue->tokenType=NULL; free(ue->tokenName); s=GWEN_DB_GetCharValue(db, "tokenName", 0, 0); if (s) ue->tokenName=strdup(s); else ue->tokenName=NULL; ue->tokenContextId=GWEN_DB_GetIntValue(db, "tokenContextId", 0, 1); /* get rdh type */ ue->rdhType=GWEN_DB_GetIntValue(db, "rdhType", 0, -1); if (ue->rdhType<1) ue->rdhType=1; /* read supported TAN methods */ for (i=0; i<AH_USER_MAX_TANMETHODS; i++) ue->tanMethodList[i]=-1; ue->tanMethodCount=0; for (i=0; i<AH_USER_MAX_TANMETHODS; i++) { int method; method=GWEN_DB_GetIntValue(db, "tanMethodList", i, -1); if (method==-1) break; ue->tanMethodList[ue->tanMethodCount++]=method; ue->tanMethodList[ue->tanMethodCount]=-1; } ue->selectedTanMethod=GWEN_DB_GetIntValue(db, "selectedTanMethod", 0, 0); /* read some settings */ ue->maxTransfersPerJob=GWEN_DB_GetIntValue(db, "maxTransfersPerJob", 0, AH_USER_MAX_TRANSFERS_PER_JOB); ue->maxDebitNotesPerJob=GWEN_DB_GetIntValue(db, "maxDebitNotesPerJob", 0, AH_USER_MAX_DEBITNOTES_PER_JOB); free(ue->sepaTransferProfile); s=GWEN_DB_GetCharValue(db, "sepaTransferProfile", 0, NULL); if (s) ue->sepaTransferProfile=strdup(s); else ue->sepaTransferProfile=NULL; free(ue->sepaDebitNoteProfile); s=GWEN_DB_GetCharValue(db, "sepaDebitNoteProfile", 0, NULL); if (s) ue->sepaDebitNoteProfile=strdup(s); else ue->sepaDebitNoteProfile=NULL; free(ue->tanMediumId); s=GWEN_DB_GetCharValue(db, "tanMediumId", 0, NULL); if (s) ue->tanMediumId=strdup(s); else ue->tanMediumId=NULL; }