Fixed up bootstrap singleshot search function. Now returns parameters.

Not functioning 100% correctly yet - due to libbitdht behaviour (TO FIX)



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6005 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2012-12-17 20:19:27 +00:00
parent 766d156315
commit 5803a5ab65
2 changed files with 66 additions and 1 deletions

View File

@ -18,7 +18,11 @@ bool bdSingleShotFindPeer(const std::string bootstrapfile, const std::string pee
/* install search node */
bdNodeId searchId;
bdStdRandomNodeId(&searchId);
if (!bdStdLoadNodeId(&searchId, peerId))
{
std::cerr << "bdSingleShotFindPeer(): Invalid Input Id: " << peerId;
return false;
}
std::cerr << "bssdht: searching for Id: ";
bdStdPrintNodeId(std::cerr, &searchId);
@ -48,6 +52,26 @@ bool bdSingleShotFindPeer(const std::string bootstrapfile, const std::string pee
dht.shutdown();
if ((status == BITDHT_QUERY_PEER_UNREACHABLE) ||
(status == BITDHT_QUERY_SUCCESS))
{
peer_ip = bdnet_inet_ntoa(resultId.addr.sin_addr);
peer_port = ntohs(resultId.addr.sin_port);
std::cerr << "Answer: ";
std::cerr << std::endl;
std::cerr << "\tPeer IpAddress: " << peer_ip;
std::cerr << std::endl;
std::cerr << "\tPeer Port: " << peer_port;
std::cerr << std::endl;
}
else
{
std::cerr << "Sorry, Cant be found!";
std::cerr << std::endl;
}
return true;
}

View File

@ -3,6 +3,22 @@
#include <iostream>
#include <inttypes.h>
void args(char *name)
{
std::cerr << std::endl;
std::cerr << "Dht Single Shot Searcher";
std::cerr << std::endl;
std::cerr << "Usage:";
std::cerr << std::endl;
std::cerr << "\t" << name << " -p <peerId> ";
std::cerr << std::endl;
std::cerr << std::endl;
std::cerr << "NB: The PeerId is Required to Run";
std::cerr << std::endl;
std::cerr << std::endl;
}
int main(int argc, char **argv)
{
@ -10,6 +26,31 @@ int main(int argc, char **argv)
std::string peerId;
std::string ip;
uint16_t port;
int c;
bool havePeerId = false;
while((c = getopt(argc, argv,"p:")) != -1)
{
switch (c)
{
case 'p':
peerId = optarg;
havePeerId = true;
break;
default:
args(argv[0]);
return 1;
break;
}
}
if (!havePeerId)
{
args(argv[0]);
return 1;
}
std::cerr << "bssdht: starting up";
std::cerr << std::endl;