Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
bd19af24ec
  1. 47
      basilisk/basilisk.c
  2. 1
      basilisk/basilisk.h
  3. 2
      iguana/SuperNET.c
  4. 3
      iguana/iguana777.c
  5. 34
      iguana/iguana_instantdex.c

47
basilisk/basilisk.c

@ -276,9 +276,34 @@ char *basilisk_iscomplete(struct basilisk_item *ptr)
return(retstr); return(retstr);
} }
int32_t basilisk_sendcmd(char *ipaddr,char *msgstr)
{
int32_t i,j,r,r2,k,l; struct iguana_info *coin; struct iguana_peer *addr;
r = rand(), r2 = rand();
for (k=0; k<IGUANA_MAXCOINS; k++)
{
j = (r2 + k) % IGUANA_MAXCOINS;
if ( (coin= Coins[j]) == 0 )
continue;
for (l=0; l<IGUANA_MAXPEERS; l++)
{
i = (l + r) % IGUANA_MAXPEERS;
if ( (addr= &coin->peers.active[i]) != 0 && addr->usock >= 0 )
{
if ( addr->supernet != 0 && (ipaddr == 0 || ipaddr[0] == 0 || strcmp(addr->ipaddr,ipaddr) == 0) )
{
//printf("send back.%s basilisk_result addr->supernet.%u to (%s).%d\n",retstr,addr->supernet,addr->ipaddr,addr->A.port);
return(iguana_send_supernet(addr,msgstr,0));
}
}
}
}
return(-1);
}
char *basilisk_block(struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,struct basilisk_item *Lptr,struct basilisk_item *ptr) char *basilisk_block(struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,struct basilisk_item *Lptr,struct basilisk_item *ptr)
{ {
int32_t i,j; char *retstr = 0; struct iguana_peer *addr; cJSON *hexobj,*retjson,*valsobj; char *retstr = 0; cJSON *hexobj,*retjson,*valsobj;
if ( ptr == Lptr ) if ( ptr == Lptr )
{ {
if ( (retstr= Lptr->retstr) == 0 ) if ( (retstr= Lptr->retstr) == 0 )
@ -314,25 +339,7 @@ char *basilisk_block(struct supernet_info *myinfo,struct iguana_info *coin,char
free_json(hexobj); free_json(hexobj);
free(retstr); free(retstr);
retstr = jprint(retjson,1); retstr = jprint(retjson,1);
for (j=0; j<IGUANA_MAXCOINS; j++) basilisk_sendcmd(remoteaddr,retstr);
{
if ( (coin= Coins[j]) == 0 )
continue;
for (i=0; i<IGUANA_MAXPEERS; i++)
{
if ( (addr= &coin->peers.active[i]) != 0 && addr->usock >= 0 )
{
if ( addr->supernet != 0 && strcmp(addr->ipaddr,remoteaddr) == 0 )
{
//printf("send back.%s basilisk_result addr->supernet.%u to (%s).%d\n",retstr,addr->supernet,addr->ipaddr,addr->A.port);
iguana_send_supernet(addr,retstr,0);
return(retstr);
}
}
if ( 0 && addr->ipbits != 0 )
printf("i.%d (%s) vs (%s) %s\n",i,addr->ipaddr,remoteaddr,coin->symbol);
}
}
} }
return(retstr); return(retstr);
} }

1
basilisk/basilisk.h

@ -41,5 +41,6 @@ struct basilisk_info
struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,char *methodstr,char *symbol,cJSON *vals,int32_t timeoutmillis,int32_t fanout,int32_t minresults,uint32_t basilisktag,void *metricfunc,char *retstr); struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,char *methodstr,char *symbol,cJSON *vals,int32_t timeoutmillis,int32_t fanout,int32_t minresults,uint32_t basilisktag,void *metricfunc,char *retstr);
void basilisks_init(struct supernet_info *myinfo); void basilisks_init(struct supernet_info *myinfo);
int32_t basilisk_sendcmd(char *ipaddr,char *msgstr);
#endif #endif

2
iguana/SuperNET.c

@ -807,7 +807,7 @@ char *SuperNET_p2p(struct iguana_info *coin,struct iguana_peer *addr,int32_t *de
//printf("validpub.%d: %x vs %x priv.%llx senderpub.%llx\n",addr->validpub,checkc,othercheckc,(long long)myinfo->privkey.txid,(long long)senderpub.txid); //printf("validpub.%d: %x vs %x priv.%llx senderpub.%llx\n",addr->validpub,checkc,othercheckc,(long long)myinfo->privkey.txid,(long long)senderpub.txid);
} }
maxdelay = juint(json,"maxdelay"); maxdelay = juint(json,"maxdelay");
if ( 0 && jstr(json,"method") != 0 && strcmp(jstr(json,"method"),"getpeers") != 0 ) if ( 1 && jstr(json,"method") != 0 && strcmp(jstr(json,"method"),"getpeers") != 0 )
printf("GOT >>>>>>>> SUPERNET P2P.(%s) from.%s %s valid.%d:%d\n",jprint(json,0),coin->symbol,addr->ipaddr,addr->validpub,addr->othervalid); printf("GOT >>>>>>>> SUPERNET P2P.(%s) from.%s %s valid.%d:%d\n",jprint(json,0),coin->symbol,addr->ipaddr,addr->validpub,addr->othervalid);
if ( (myipaddr= jstr(json,"yourip")) != 0 ) if ( (myipaddr= jstr(json,"yourip")) != 0 )
SuperNET_checkipaddr(SuperNET_MYINFO(0),coin,addr,myipaddr,ipaddr); SuperNET_checkipaddr(SuperNET_MYINFO(0),coin,addr,myipaddr,ipaddr);

3
iguana/iguana777.c

@ -885,6 +885,9 @@ struct iguana_info *iguana_setcoin(char *symbol,void *launched,int32_t maxpeers,
if ( jobj(json,"VALIDATE") != 0 ) if ( jobj(json,"VALIDATE") != 0 )
coin->VALIDATENODE = juint(json,"VALIDATE"); coin->VALIDATENODE = juint(json,"VALIDATE");
else coin->VALIDATENODE = 1; else coin->VALIDATENODE = 1;
#ifdef __PNACL
coin->VALIDATENODE = coin->RELAYNODE = 0;
#endif
if ( jobj(json,"validatedir") != 0 ) if ( jobj(json,"validatedir") != 0 )
safecopy(coin->VALIDATEDIR,jstr(json,"validatedir"),sizeof(coin->VALIDATEDIR)); safecopy(coin->VALIDATEDIR,jstr(json,"validatedir"),sizeof(coin->VALIDATEDIR));
else strcpy(coin->VALIDATEDIR,GLOBAL_VALIDATEDIR); else strcpy(coin->VALIDATEDIR,GLOBAL_VALIDATEDIR);

34
iguana/iguana_instantdex.c

@ -389,16 +389,29 @@ bits256 instantdex_rwoffer(int32_t rwflag,int32_t *lenp,uint8_t *serialized,stru
char *instantdex_sendcmd(struct supernet_info *myinfo,struct instantdex_offer *offer,cJSON *argjson,char *cmdstr,bits256 desthash,int32_t hops,void *extraser,int32_t extralen,struct iguana_peer *addr,struct bitcoin_swapinfo *swap) char *instantdex_sendcmd(struct supernet_info *myinfo,struct instantdex_offer *offer,cJSON *argjson,char *cmdstr,bits256 desthash,int32_t hops,void *extraser,int32_t extralen,struct iguana_peer *addr,struct bitcoin_swapinfo *swap)
{ {
char *reqstr,*hexstr,*retstr; struct instantdex_msghdr *msg; bits256 orderhash,tmphash; struct iguana_info *coin; int32_t i,j,len,serflag,olen,slen,datalen,max=-1; uint8_t serialized[sizeof(*offer) + sizeof(struct iguana_msghdr) + 4096 + INSTANTDEX_DECKSIZE*33]; uint64_t x,nxt64bits; cJSON *sendjson; char *reqstr,*hexstr,*retstr,*str; struct instantdex_msghdr *msg; bits256 orderhash,tmphash; int32_t i,j,len,serflag,olen,slen,datalen; uint8_t *buf,serialized[sizeof(*offer) + sizeof(struct iguana_msghdr) + 4096 + INSTANTDEX_DECKSIZE*33]; uint64_t x,nxt64bits;
//if ( strcmp(cmdstr,"poll") == 0 ) //if ( strcmp(cmdstr,"poll") == 0 )
// return(clonestr("{\"result\":\"skip sending poll\"}")); // return(clonestr("{\"result\":\"skip sending poll\"}"));
category_subscribe(myinfo,myinfo->instantdex_category,GENESIS_PUBKEY); //category_subscribe(myinfo,myinfo->instantdex_category,GENESIS_PUBKEY);
jaddstr(argjson,"cmd",cmdstr); str = jprint(argjson,0);
jaddstr(argjson,"agent","SuperNET"); buf = malloc(strlen(str)*2 + 1);
jaddstr(argjson,"method","DHT"); init_hexbytes_noT((char *)buf,(uint8_t *)str,(int32_t)strlen(str));
jaddstr(argjson,"handle",myinfo->handle); free(str);
jaddbits256(argjson,"categoryhash",myinfo->instantdex_category); sendjson = cJSON_CreateObject();
jaddbits256(argjson,"traderpub",myinfo->myaddr.persistent); jaddstr(sendjson,"hexmsg",(char *)buf);
free(buf);
jaddstr(sendjson,"cmd",cmdstr);
jaddstr(sendjson,"agent","SuperNET");
jaddstr(sendjson,"method","DHT");
jaddstr(sendjson,"handle",myinfo->handle);
jaddnum(sendjson,"plaintext",1);
jaddbits256(sendjson,"categoryhash",myinfo->instantdex_category);
jaddbits256(sendjson,"traderpub",myinfo->myaddr.persistent);
str = jprint(sendjson,1);
basilisk_sendcmd(0,str);
free(str);
return(clonestr("{\"result\":\"success\"}"));
orderhash = instantdex_rwoffer(1,&olen,serialized,offer); orderhash = instantdex_rwoffer(1,&olen,serialized,offer);
if ( 1 ) if ( 1 )
{ {
@ -472,12 +485,11 @@ char *instantdex_sendcmd(struct supernet_info *myinfo,struct instantdex_offer *o
{ {
memset(serialized,0,sizeof(struct iguana_msghdr)); memset(serialized,0,sizeof(struct iguana_msghdr));
memcpy(&serialized[sizeof(struct iguana_msghdr)],(uint8_t *)msg,msg->sig.allocsize); memcpy(&serialized[sizeof(struct iguana_msghdr)],(uint8_t *)msg,msg->sig.allocsize);
if ( (coin= iguana_coinfind("BTCD")) != 0 )//&& (max= coin->peers.numranked) > 0 ) iguana_queue_send(addr,0,serialized,"InstantDEX",msg->sig.allocsize,0,0);
iguana_queue_send(addr,0,serialized,"InstantDEX",msg->sig.allocsize,0,0);
else printf("cant find coin.%p or no ranked.%d\n",coin,max);
} }
else else
{ {
printf("instantdex_sendcmd: deprecated path\n");
if ( (hexstr= malloc(msg->sig.allocsize*2 + 1)) != 0 ) if ( (hexstr= malloc(msg->sig.allocsize*2 + 1)) != 0 )
{ {
init_hexbytes_noT(hexstr,(uint8_t *)msg,msg->sig.allocsize); init_hexbytes_noT(hexstr,(uint8_t *)msg,msg->sig.allocsize);

Loading…
Cancel
Save