diff --git a/src/komodo.h b/src/komodo.h index a06b20faf..970e088de 100644 --- a/src/komodo.h +++ b/src/komodo.h @@ -188,7 +188,7 @@ void komodo_stateupdate(int32_t height,uint8_t notarypubs[][33],uint8_t numnotar return; if ( fp == 0 ) { - komodo_statefname(fname,ASSETCHAINS_SYMBOL); + komodo_statefname(fname,ASSETCHAINS_SYMBOL,"komodostate"); if ( (fp= fopen(fname,"rb+")) != 0 ) { while ( komodo_parsestatefile(sp,fp,symbol,dest) >= 0 ) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index ebe2b8079..fdd383c33 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -329,7 +329,7 @@ char *curl_post(CURL **cHandlep,char *url,char *userpass,char *postfields,char * return(chunk.memory); } -char *komodo_issuemethod(char *method,char *params,uint16_t port) +char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port) { //static void *cHandle; char url[512],*retstr=0,*retstr2=0,postdata[8192]; @@ -340,7 +340,7 @@ char *komodo_issuemethod(char *method,char *params,uint16_t port) sprintf(url,(char *)"http://127.0.0.1:%u",port); sprintf(postdata,"{\"method\":\"%s\",\"params\":%s}",method,params); //printf("postdata.(%s) USERPASS.(%s)\n",postdata,KMDUSERPASS); - retstr2 = bitcoind_RPC(&retstr,(char *)"debug",url,KMDUSERPASS,method,params); + retstr2 = bitcoind_RPC(&retstr,(char *)"debug",url,userpass,method,params); //retstr = curl_post(&cHandle,url,USERPASS,postdata,0,0,0,0); } return(retstr2); diff --git a/src/komodo_gateway.h b/src/komodo_gateway.h index 88141b12d..9ef29ef33 100644 --- a/src/komodo_gateway.h +++ b/src/komodo_gateway.h @@ -559,8 +559,14 @@ void komodo_iteration(char *symbol) void komodo_passport_iteration() { - static long lastpos[34]; + static long lastpos[34],didinit; static char userpass[33][1024]; FILE *fp; int32_t baseid,isrealtime,refid,blocks,longest; struct komodo_state *sp; char *retstr,fname[512],*base,symbol[16],dest[16]; cJSON *infoobj; uint16_t port; uint32_t magic; + if ( didinit == 0 ) + { + for (baseid=0; baseid<=32; baseid++) + komodo_userpass(userpass[baseid],CURRENCIES[baseid]) + didinit = 1; + } if ( ASSETCHAINS_SYMBOL[0] == 0 ) refid = 33; else refid = komodo_baseid(ASSETCHAINS_SYMBOL)+1; @@ -570,7 +576,7 @@ void komodo_passport_iteration() if ( baseid+1 != refid ) { base = (char *)CURRENCIES[baseid]; - komodo_statefname(fname,baseid<32?base:(char *)""); + komodo_statefname(fname,baseid<32?base:(char *)"","komodostate"); komodo_nameset(symbol,dest,base); port = komodo_port(base,10,&magic) + 1; sp = 0; @@ -588,7 +594,7 @@ void komodo_passport_iteration() //printf("from.(%s) lastpos[%s] %ld\n",ASSETCHAINS_SYMBOL,CURRENCIES[baseid],lastpos[baseid]); } //else fprintf(stderr,"%s.%ld ",CURRENCIES[baseid],ftell(fp)); fclose(fp); - if ( (retstr= komodo_issuemethod((char *)"getinfo",0,port)) != 0 ) + if ( (retstr= komodo_issuemethod(userpass[baseid],(char *)"getinfo",0,port)) != 0 ) { if ( (infoobj= cJSON_Parse(retstr)) != 0 ) { diff --git a/src/komodo_globals.h b/src/komodo_globals.h index 72ecc3eba..f92b72248 100644 --- a/src/komodo_globals.h +++ b/src/komodo_globals.h @@ -16,7 +16,7 @@ void komodo_stateupdate(int32_t height,uint8_t notarypubs[][33],uint8_t numnotaries,uint8_t notaryid,uint256 txhash,uint64_t voutmask,uint8_t numvouts,uint32_t *pvals,uint8_t numpvals,int32_t kheight,uint32_t ktime,uint64_t opretvalue,uint8_t *opretbuf,uint16_t opretlen,uint16_t vout); void komodo_init(int32_t height); int32_t komodo_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *notarized_desttxidp); -char *komodo_issuemethod(char *method,char *params,uint16_t port); +char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port); void komodo_init(int32_t height); void komodo_assetchain_pubkeys(char *jsonstr); int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33); diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 049e0603b..82db20e39 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1261,7 +1261,7 @@ void komodo_userpass(char *username,char *password,FILE *fp) free(rpcpassword); } -void komodo_statefname(char *fname,char *symbol) +void komodo_statefname(char *fname,char *symbol,char *str) { int32_t n,len; sprintf(fname,"%s",GetDataDir(false).string().c_str()); @@ -1294,7 +1294,7 @@ void komodo_statefname(char *fname,char *symbol) strcat(fname,"/"); #endif } - strcat(fname,(char *)"komodostate"); + strcat(fname,str); //printf("test.(%s) -> [%s] statename.(%s) %s\n",test,ASSETCHAINS_SYMBOL,symbol,fname); } @@ -1355,6 +1355,22 @@ void komodo_configfile(char *symbol,uint16_t port) } else printf("couldnt open.(%s)\n",fname); } +int32_t komodo_userpass(char *userpass,char *symbol) +{ + FILE *fp; char fname[512],username[512],password[512],confname[16]; + userpass[0] = 0; + sprintf(confname,"%s.conf",symbol); + komodo_statefname(fname,symbol,confname); + if ( (fp= fopen(fname,"rb")) != 0 ) + { + komodo_userpass(username,password,fp); + sprintf(userpass,"%s:%s",username,password); + fclose(fp); + return((int32_t)strlen(userpass)); + } + return(-1); +} + uint32_t komodo_assetmagic(char *symbol,uint64_t supply) { uint8_t buf[512]; int32_t len = 0;