Added -externalip and -discover
-externalip=<ip> can be used to explicitly set the public IP address of your node. -discover=0 can be used to disable the automatic public IP discovery system.
This commit is contained in:
parent
39857190de
commit
19b6958cfd
3 changed files with 48 additions and 23 deletions
12
src/init.cpp
12
src/init.cpp
|
@ -187,6 +187,8 @@ bool AppInit2(int argc, char* argv[])
|
||||||
" -addnode=<ip> \t " + _("Add a node to connect to and attempt to keep the connection open") + "\n" +
|
" -addnode=<ip> \t " + _("Add a node to connect to and attempt to keep the connection open") + "\n" +
|
||||||
" -connect=<ip> \t\t " + _("Connect only to the specified node") + "\n" +
|
" -connect=<ip> \t\t " + _("Connect only to the specified node") + "\n" +
|
||||||
" -seednode=<ip> \t\t " + _("Connect to a node to retrieve peer addresses, and disconnect") + "\n" +
|
" -seednode=<ip> \t\t " + _("Connect to a node to retrieve peer addresses, and disconnect") + "\n" +
|
||||||
|
" -externalip=<ip> \t " + _("Specify your own public address") + "\n" +
|
||||||
|
" -discover \t " + _("Try to discover public IP address (default: 1)") + "\n" +
|
||||||
" -irc \t " + _("Find peers using internet relay chat (default: 0)") + "\n" +
|
" -irc \t " + _("Find peers using internet relay chat (default: 0)") + "\n" +
|
||||||
" -listen \t " + _("Accept connections from outside (default: 1)") + "\n" +
|
" -listen \t " + _("Accept connections from outside (default: 1)") + "\n" +
|
||||||
#ifdef QT_GUI
|
#ifdef QT_GUI
|
||||||
|
@ -519,6 +521,9 @@ bool AppInit2(int argc, char* argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mapArgs.count("-connect"))
|
||||||
|
SoftSetBoolArg("-dnsseed", false);
|
||||||
|
|
||||||
bool fTor = (fUseProxy && addrProxy.GetPort() == 9050);
|
bool fTor = (fUseProxy && addrProxy.GetPort() == 9050);
|
||||||
if (fTor)
|
if (fTor)
|
||||||
{
|
{
|
||||||
|
@ -528,6 +533,7 @@ bool AppInit2(int argc, char* argv[])
|
||||||
SoftSetBoolArg("-irc", false);
|
SoftSetBoolArg("-irc", false);
|
||||||
SoftSetBoolArg("-proxydns", true);
|
SoftSetBoolArg("-proxydns", true);
|
||||||
SoftSetBoolArg("-upnp", false);
|
SoftSetBoolArg("-upnp", false);
|
||||||
|
SoftSetBoolArg("-discover", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
fNameLookup = GetBoolArg("-dns");
|
fNameLookup = GetBoolArg("-dns");
|
||||||
|
@ -556,6 +562,12 @@ bool AppInit2(int argc, char* argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mapArgs.count("-externalip"))
|
||||||
|
{
|
||||||
|
BOOST_FOREACH(string strAddr, mapMultiArgs["-externalip"])
|
||||||
|
AddLocal(CNetAddr(strAddr, fNameLookup), LOCAL_MANUAL);
|
||||||
|
}
|
||||||
|
|
||||||
if (mapArgs.count("-paytxfee"))
|
if (mapArgs.count("-paytxfee"))
|
||||||
{
|
{
|
||||||
if (!ParseMoney(mapArgs["-paytxfee"], nTransactionFee))
|
if (!ParseMoney(mapArgs["-paytxfee"], nTransactionFee))
|
||||||
|
|
56
src/net.cpp
56
src/net.cpp
|
@ -973,19 +973,21 @@ void ThreadMapPort2(void* parg)
|
||||||
r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
|
r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
|
||||||
if (r == 1)
|
if (r == 1)
|
||||||
{
|
{
|
||||||
char externalIPAddress[40];
|
if (GetBoolArg("-discover", true)) {
|
||||||
r = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, externalIPAddress);
|
char externalIPAddress[40];
|
||||||
if(r != UPNPCOMMAND_SUCCESS)
|
r = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, externalIPAddress);
|
||||||
printf("UPnP: GetExternalIPAddress() returned %d\n", r);
|
if(r != UPNPCOMMAND_SUCCESS)
|
||||||
else
|
printf("UPnP: GetExternalIPAddress() returned %d\n", r);
|
||||||
{
|
|
||||||
if(externalIPAddress[0])
|
|
||||||
{
|
|
||||||
printf("UPnP: ExternalIPAddress = %s\n", externalIPAddress);
|
|
||||||
AddLocal(CNetAddr(externalIPAddress), LOCAL_UPNP);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
printf("UPnP: GetExternalIPAddress failed.\n");
|
{
|
||||||
|
if(externalIPAddress[0])
|
||||||
|
{
|
||||||
|
printf("UPnP: ExternalIPAddress = %s\n", externalIPAddress);
|
||||||
|
AddLocal(CNetAddr(externalIPAddress), LOCAL_UPNP);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("UPnP: GetExternalIPAddress failed.\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string strDesc = "Bitcoin " + FormatFullVersion();
|
string strDesc = "Bitcoin " + FormatFullVersion();
|
||||||
|
@ -1695,18 +1697,10 @@ bool BindListenPort(string& strError)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartNode(void* parg)
|
void static Discover()
|
||||||
{
|
{
|
||||||
#ifdef USE_UPNP
|
if (!GetBoolArg("-discover", true))
|
||||||
#if USE_UPNP
|
return;
|
||||||
fUseUPnP = GetBoolArg("-upnp", true);
|
|
||||||
#else
|
|
||||||
fUseUPnP = GetBoolArg("-upnp", false);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (pnodeLocalHost == NULL)
|
|
||||||
pnodeLocalHost = new CNode(INVALID_SOCKET, CAddress(CService("127.0.0.1", 0), nLocalServices));
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
// Get local host ip
|
// Get local host ip
|
||||||
|
@ -1764,6 +1758,22 @@ void StartNode(void* parg)
|
||||||
{
|
{
|
||||||
CreateThread(ThreadGetMyExternalIP, NULL);
|
CreateThread(ThreadGetMyExternalIP, NULL);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartNode(void* parg)
|
||||||
|
{
|
||||||
|
#ifdef USE_UPNP
|
||||||
|
#if USE_UPNP
|
||||||
|
fUseUPnP = GetBoolArg("-upnp", true);
|
||||||
|
#else
|
||||||
|
fUseUPnP = GetBoolArg("-upnp", false);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (pnodeLocalHost == NULL)
|
||||||
|
pnodeLocalHost = new CNode(INVALID_SOCKET, CAddress(CService("127.0.0.1", 0), nLocalServices));
|
||||||
|
|
||||||
|
Discover();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Start threads
|
// Start threads
|
||||||
|
|
|
@ -49,6 +49,9 @@ enum
|
||||||
LOCAL_UPNP,
|
LOCAL_UPNP,
|
||||||
LOCAL_IRC,
|
LOCAL_IRC,
|
||||||
LOCAL_HTTP,
|
LOCAL_HTTP,
|
||||||
|
LOCAL_MANUAL,
|
||||||
|
|
||||||
|
LOCAL_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
bool AddLocal(const CNetAddr& addr, int nScore = LOCAL_NONE);
|
bool AddLocal(const CNetAddr& addr, int nScore = LOCAL_NONE);
|
||||||
|
|
Loading…
Reference in a new issue