mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-11 15:48:05 +00:00
Merge branch 'upnp' of https://github.com/TheBlueMatt/bitcoin
This commit is contained in:
commit
79706a8e48
@ -3,7 +3,8 @@ Distributed under the MIT/X11 software license, see the accompanying
|
||||
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||
This product includes software developed by the OpenSSL Project for use in
|
||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
||||
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
||||
cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP
|
||||
software written by Thomas Bernard.
|
||||
|
||||
|
||||
WINDOWS BUILD NOTES
|
||||
@ -25,23 +26,26 @@ Dependencies
|
||||
------------
|
||||
Libraries you need to download separately and build:
|
||||
|
||||
default path download
|
||||
wxWidgets \wxwidgets-2.9.1-mgw http://www.wxwidgets.org/downloads/
|
||||
OpenSSL \openssl-1.0.0c-mgw http://www.openssl.org/source/
|
||||
Berkeley DB \db-4.7.25.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html
|
||||
Boost \boost-1.43.0-mgw http://www.boost.org/users/download/
|
||||
default path download
|
||||
wxWidgets \wxwidgets-2.9.1-mgw http://www.wxwidgets.org/downloads/
|
||||
OpenSSL \openssl-1.0.0c-mgw http://www.openssl.org/source/
|
||||
Berkeley DB \db-4.7.25.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html
|
||||
Boost \boost-1.43.0-mgw http://www.boost.org/users/download/
|
||||
miniupnpc \upnpc-exe-win32-20110215 http://miniupnp.tuxfamily.org/files/
|
||||
|
||||
Their licenses:
|
||||
wxWidgets LGPL 2.1 with very liberal exceptions
|
||||
OpenSSL Old BSD license with the problematic advertising requirement
|
||||
Berkeley DB New BSD license with additional requirement that linked software must be free open source
|
||||
Boost MIT-like license
|
||||
miniupnpc New (3-clause) BSD license
|
||||
|
||||
Versions used in this release:
|
||||
wxWidgets 2.9.1
|
||||
OpenSSL 1.0.0c
|
||||
Berkeley DB 4.7.25.NC
|
||||
Boost 1.43.0
|
||||
miniupnpc 1.5-20110215
|
||||
|
||||
|
||||
Notes
|
||||
@ -90,6 +94,15 @@ Note:
|
||||
building with boost 1.45.0 failed because of boost ticket 4614, 4258
|
||||
builds fine with boost 1.43.0
|
||||
|
||||
MiniUPnPc
|
||||
---------
|
||||
Building miniupnpc failed on Windows Server 2003, thus it is expected that a binary copy will be used.
|
||||
See http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=642
|
||||
UPnP support is optional, make with USE_UPNP= to disable it.
|
||||
|
||||
Get upnpc-exe-win32-20110215.zip and unzip it to \upnpc-exe-win32-20110215
|
||||
Get miniupnpc-1.5.20110215.tar.gz and copy *.h to \upnpc-exe-win32-20110215\miniupnpc
|
||||
|
||||
Bitcoin
|
||||
-------
|
||||
DOS prompt:
|
||||
|
@ -3,7 +3,8 @@ Distributed under the MIT/X11 software license, see the accompanying
|
||||
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||
This product includes software developed by the OpenSSL Project for use in
|
||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
||||
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
||||
cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP
|
||||
software written by Thomas Bernard.
|
||||
|
||||
|
||||
Mac OS X build instructions
|
||||
@ -108,11 +109,51 @@ file lib/libcrypto.a
|
||||
|
||||
output should look like this:
|
||||
|
||||
ib/libcrypto.a: Mach-O universal binary with 2 architectures
|
||||
lib/libcrypto.a: Mach-O universal binary with 2 architectures
|
||||
lib/libcrypto.a (for architecture i386): current ar archive random library
|
||||
lib/libcrypto.a (for architecture x86_64): current ar archive random library
|
||||
|
||||
|
||||
miniupnpc
|
||||
---------
|
||||
|
||||
The process for miniupnpc (optional) is similar to that of OpenSSL.
|
||||
|
||||
Download from http://miniupnp.tuxfamily.org/files/.
|
||||
|
||||
cd ~/bitcoin/deps
|
||||
tar xvf ~/Downloads/miniupnpc-1.5.tar
|
||||
mv miniupnpc-1.5 miniupnpc-1.5-x86_64
|
||||
tar xvf ~/Downloads/miniupnpc-1.5.tar
|
||||
mv miniupnpc-1.5 miniupnpc-1.5-i386
|
||||
# build x86_64 (64 bit intel) binary
|
||||
cd miniupnpc-1.5-x86_64
|
||||
export CFLAGS="-arch x86_64"
|
||||
export LDFLAGS="-arch x86_64"
|
||||
export PREFIX="/Users/macuser/bitcoin/deps"
|
||||
make && make install
|
||||
# build i386 (32 bit intel) binary
|
||||
cd miniupnpc-1.5-i386
|
||||
export CFLAGS="-arch i386"
|
||||
export LDFLAGS="-arch i386"
|
||||
export PREFIX="/Users/macuser/bitcoin/deps"
|
||||
make
|
||||
|
||||
# combine the libs
|
||||
cd ~/bitcoin/deps
|
||||
lipo -arch i386 miniupnpc-1.5-i386/libminiupnpc.a -arch x86_64 miniupnpc-1.5-x86_64/libminiupnpc.a -o lib/libminiupnpc.a -create
|
||||
|
||||
Verify your binaries
|
||||
|
||||
file lib/libminiupnpc.a
|
||||
|
||||
output should look like this:
|
||||
|
||||
lib/libminiupnpc.a: Mach-O universal binary with 2 architectures
|
||||
lib/libminiupnpc.a (for architecture i386): current ar archive random library
|
||||
lib/libminiupnpc.a (for architecture x86_64): current ar archive random library
|
||||
|
||||
|
||||
Berkeley DB
|
||||
-----------
|
||||
|
||||
|
@ -3,7 +3,8 @@ Distributed under the MIT/X11 software license, see the accompanying
|
||||
file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||
This product includes software developed by the OpenSSL Project for use in
|
||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
|
||||
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
||||
cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP
|
||||
software written by Thomas Bernard.
|
||||
|
||||
|
||||
UNIX BUILD NOTES
|
||||
@ -36,10 +37,15 @@ You need to download wxWidgets from http://www.wxwidgets.org/downloads/
|
||||
and build it yourself. See the build instructions and configure parameters
|
||||
below.
|
||||
|
||||
Requires miniupnpc for UPnP port mapping. To compile with UPnP support,
|
||||
install miniupnpc and compile after setting USE_UPNP. It can be downloaded
|
||||
from http://miniupnp.tuxfamily.org/files/.
|
||||
|
||||
Licenses of statically linked libraries:
|
||||
wxWidgets LGPL 2.1 with very liberal exceptions
|
||||
Berkeley DB New BSD license with additional requirement that linked software must be free open source
|
||||
Boost MIT-like license
|
||||
miniupnpc New (3-clause) BSD license
|
||||
|
||||
Versions used in this release:
|
||||
GCC 4.3.3
|
||||
@ -47,6 +53,7 @@ OpenSSL 0.9.8g
|
||||
wxWidgets 2.9.0
|
||||
Berkeley DB 4.7.25.NC
|
||||
Boost 1.37
|
||||
miniupnpc 1.5
|
||||
|
||||
|
||||
Notes
|
||||
@ -73,6 +80,15 @@ make install
|
||||
ldconfig
|
||||
|
||||
|
||||
miniupnpc
|
||||
---------
|
||||
tar -xzvf miniupnpc-1.5.tar.gz
|
||||
cd miniupnpc-1.5
|
||||
make
|
||||
sudo su
|
||||
make install
|
||||
|
||||
|
||||
Berkeley DB
|
||||
-----------
|
||||
You need Berkeley DB 4.7. Don't use 4.8, the database/log0000* files
|
||||
|
4
db.cpp
4
db.cpp
@ -790,7 +790,7 @@ bool CWalletDB::LoadWallet()
|
||||
if (strKey == "fMinimizeOnClose") ssValue >> fMinimizeOnClose;
|
||||
if (strKey == "fUseProxy") ssValue >> fUseProxy;
|
||||
if (strKey == "addrProxy") ssValue >> addrProxy;
|
||||
|
||||
if (fHaveUPnP && strKey == "fUseUPnP") ssValue >> fUseUPnP;
|
||||
}
|
||||
}
|
||||
pcursor->close();
|
||||
@ -807,6 +807,8 @@ bool CWalletDB::LoadWallet()
|
||||
printf("fMinimizeOnClose = %d\n", fMinimizeOnClose);
|
||||
printf("fUseProxy = %d\n", fUseProxy);
|
||||
printf("addrProxy = %s\n", addrProxy.ToString().c_str());
|
||||
if (fHaveUPnP)
|
||||
printf("fUseUPnP = %d\n", fUseUPnP);
|
||||
|
||||
|
||||
// Upgrade
|
||||
|
18
init.cpp
18
init.cpp
@ -159,6 +159,13 @@ bool AppInit2(int argc, char* argv[])
|
||||
" -addnode=<ip> \t " + _("Add a node to connect to\n") +
|
||||
" -connect=<ip> \t\t " + _("Connect only to the specified node\n") +
|
||||
" -nolisten \t " + _("Don't accept connections from outside\n") +
|
||||
#ifdef USE_UPNP
|
||||
#if USE_UPNP
|
||||
" -noupnp \t " + _("Don't attempt to use UPnP to map the listening port\n") +
|
||||
#else
|
||||
" -upnp \t " + _("Attempt to use UPnP to map the listening port\n") +
|
||||
#endif
|
||||
#endif
|
||||
" -paytxfee=<amt> \t " + _("Fee per KB to add to transactions you send\n") +
|
||||
#ifdef GUI
|
||||
" -server \t\t " + _("Accept command line and JSON-RPC commands\n") +
|
||||
@ -456,6 +463,17 @@ bool AppInit2(int argc, char* argv[])
|
||||
wxMessageBox(_("Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."), "Bitcoin", wxOK | wxICON_EXCLAMATION);
|
||||
}
|
||||
|
||||
if (fHaveUPnP)
|
||||
{
|
||||
#if USE_UPNP
|
||||
if (GetBoolArg("-noupnp"))
|
||||
fUseUPnP = false;
|
||||
#else
|
||||
if (GetBoolArg("-upnp"))
|
||||
fUseUPnP = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
//
|
||||
// Create the main window and start the node
|
||||
//
|
||||
|
Binary file not shown.
@ -1,9 +1,11 @@
|
||||
# DataWraith <DataWraith@web.de>, 2010.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: 2010-05-26 22:02-0000\n"
|
||||
"PO-Revision-Date: 2010-06-03 13:11+0200\n"
|
||||
"Last-Translator: DataWraith\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@ -707,7 +709,7 @@ msgid ""
|
||||
"\n"
|
||||
"This product includes software developed by the OpenSSL Project for use in the \n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
|
||||
msgstr ""
|
||||
"Copyright (c) 2009-2010 Bitcoin Developers\n"
|
||||
"\n"
|
||||
@ -718,7 +720,8 @@ msgstr ""
|
||||
"\n"
|
||||
"Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Nutzung im\n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) geschrieben wurde sowie\n"
|
||||
"kryptographische Software von Eric Young (eay@cryptsoft.com)."
|
||||
"kryptographische Software von Eric Young (eay@cryptsoft.com)\n"
|
||||
"und UPnP-Software, entwickelt von Thomas Bernard."
|
||||
|
||||
#: ../../../uibase.cpp:619
|
||||
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"
|
||||
|
Binary file not shown.
@ -734,7 +734,7 @@ msgid ""
|
||||
"\n"
|
||||
"This product includes software developed by the OpenSSL Project for use in the \n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
|
||||
msgstr ""
|
||||
"Copyright (c) 2009-2010 Bitcoin Developers\n"
|
||||
"\n"
|
||||
@ -745,7 +745,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Este producto incluye software desarrollado por OpenSSL Project para su uso en el\n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) y software criptografico escrito por \n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard."
|
||||
|
||||
#: ../../../uibase.cpp:613
|
||||
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"
|
||||
|
Binary file not shown.
@ -739,7 +739,7 @@ msgid ""
|
||||
"\n"
|
||||
"This product includes software developed by the OpenSSL Project for use in the \n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
|
||||
msgstr ""
|
||||
"Copyright (c) 2009-2010 Bitcoin Developers\n"
|
||||
"\n"
|
||||
@ -750,7 +750,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Ce produit comprend des composants logiciels développés pour le Projet OpenSSL \n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) ainsi que des composants cryptographiques \n"
|
||||
"écrits par Eric Young (eay@cryptsoft.com)."
|
||||
"écrits par Eric Young (eay@cryptsoft.com) et des logiciels UPnP écrits par Thomas Bernard.."
|
||||
|
||||
#: ../../../uibase.cpp:613
|
||||
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"
|
||||
|
Binary file not shown.
@ -705,7 +705,7 @@ msgid ""
|
||||
"\n"
|
||||
"This product includes software developed by the OpenSSL Project for use in the \n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
|
||||
msgstr ""
|
||||
"Copyright (c) 2009-2010 Bitcoin Developers\n"
|
||||
"\n"
|
||||
@ -714,9 +714,9 @@ msgstr ""
|
||||
"Distribuito sotto la licenza software MIT/X11, guarda il file license.txt\n"
|
||||
"incluso oppure su http://www.opensource.org/licenses/mit-license.php.\n"
|
||||
"\n"
|
||||
"Questo prodoto include software sviluppato dal progetto OpenSSL per\n"
|
||||
"Questo prodotto include software sviluppato dal progetto OpenSSL per\n"
|
||||
"l'uso del (http://www.openssl.org/) e il software criptografico scritto\n"
|
||||
"da Eric Young (eay@cryptsoft.com)."
|
||||
"da Eric Young (eay@cryptsoft.com) e UPnP software scritto da Thomas Bernard."
|
||||
|
||||
#: ../../../uibase.cpp:619
|
||||
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"
|
||||
|
Binary file not shown.
@ -706,7 +706,7 @@ msgid ""
|
||||
"\n"
|
||||
"This product includes software developed by the OpenSSL Project for use in the \n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
|
||||
msgstr ""
|
||||
"Copyright (c) 2009-2011 Bitcoin-ontwikkelaars\n"
|
||||
"\n"
|
||||
@ -717,7 +717,8 @@ msgstr ""
|
||||
"\n"
|
||||
"Dit product bevat software ontwikkeld door het OpenSSL project for gebruik \n"
|
||||
"in de OpenSSL Toolkit (http://www.openssl.org/), en cryptografische \n"
|
||||
"software geschreven door Eric Young (eay@cryptsoft.com)."
|
||||
"software geschreven door Eric Young (eay@cryptsoft.com)) en UPnP software geschreven\n"
|
||||
"door Thomas Bernard."
|
||||
|
||||
#: ../../../uibase.cpp:619
|
||||
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"
|
||||
|
Binary file not shown.
@ -705,7 +705,7 @@ msgid ""
|
||||
"\n"
|
||||
"This product includes software developed by the OpenSSL Project for use in the \n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
|
||||
msgstr ""
|
||||
"Copyright (c) 2009-2010 Bitcoin Developers\n"
|
||||
"\n"
|
||||
@ -716,7 +716,8 @@ msgstr ""
|
||||
"http://www.opensource.org/licenses/mit-license.php.\n"
|
||||
"Este producto inclui software desenvolvido pelo projecto OpenSSL, para \n"
|
||||
"ser utilizado no OpenSSL Toolkit (http://www.openssl.org) e software de \n"
|
||||
"criptografia desenvolvido por Eric Young (eay@cryptsoft.com)."
|
||||
"criptografia desenvolvido por Eric Young (eay@cryptsoft.com)\n"
|
||||
"e UPnP software escrito por Thomas Bernard."
|
||||
|
||||
#: ../../../uibase.cpp:619
|
||||
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"
|
||||
|
Binary file not shown.
@ -769,7 +769,7 @@ msgid ""
|
||||
"\n"
|
||||
"This product includes software developed by the OpenSSL Project for use in the \n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
|
||||
msgstr ""
|
||||
"Все права защищены (c) 2009-2010 Bitcoin Developers\n"
|
||||
"\n"
|
||||
@ -780,7 +780,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Этот продукт включает ПО, разработанное проектом OpenSSL для использования в\n"
|
||||
"OpenSSL Toolkit (http://www.openssl.org/), и криптографическое ПО, написанное\n"
|
||||
"Eric Young (eay@cryptsoft.com)."
|
||||
"Eric Young (eay@cryptsoft.com) и UPnP программного обеспечения, написанного Thomas Bernard."
|
||||
|
||||
#: ../../../uibase.cpp:613
|
||||
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"
|
||||
|
8
main.cpp
8
main.cpp
@ -65,6 +65,14 @@ int fLimitProcessors = false;
|
||||
int nLimitProcessors = 1;
|
||||
int fMinimizeToTray = true;
|
||||
int fMinimizeOnClose = true;
|
||||
#ifdef USE_UPNP
|
||||
#if USE_UPNP
|
||||
int fUseUPnP = true;
|
||||
#else
|
||||
int fUseUPnP = false;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
6
main.h
6
main.h
@ -22,6 +22,11 @@ static const int64 CENT = 1000000;
|
||||
static const int64 MAX_MONEY = 21000000 * COIN;
|
||||
inline bool MoneyRange(int64 nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); }
|
||||
static const int COINBASE_MATURITY = 100;
|
||||
#ifdef USE_UPNP
|
||||
static const int fHaveUPnP = true;
|
||||
#else
|
||||
static const int fHaveUPnP = false;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@ -55,6 +60,7 @@ extern int fLimitProcessors;
|
||||
extern int nLimitProcessors;
|
||||
extern int fMinimizeToTray;
|
||||
extern int fMinimizeOnClose;
|
||||
extern int fUseUPnP;
|
||||
|
||||
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
# Distributed under the MIT/X11 software license, see the accompanying
|
||||
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
USE_UPNP:=0
|
||||
|
||||
INCLUDEPATHS= \
|
||||
-I"C:\boost-1.43.0-mgw" \
|
||||
@ -25,8 +26,7 @@ LIBS= \
|
||||
-l boost_program_options-mgw45-mt-s-1_43 \
|
||||
-l boost_thread-mgw45-mt-s-1_43 \
|
||||
-l db_cxx \
|
||||
-l eay32 \
|
||||
-l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi
|
||||
-l eay32
|
||||
|
||||
DEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH
|
||||
DEBUGFLAGS=-g -D__WXDEBUG__
|
||||
@ -34,6 +34,15 @@ CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(I
|
||||
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
||||
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h noui.h init.h
|
||||
|
||||
ifdef USE_UPNP
|
||||
INCLUDEPATHS += -I"C:\upnpc-exe-win32-20110215"
|
||||
LIBPATHS += -L"C:\upnpc-exe-win32-20110215"
|
||||
LIBS += -l miniupnpc -l iphlpapi
|
||||
DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
|
||||
endif
|
||||
|
||||
LIBS += -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi
|
||||
|
||||
OBJS= \
|
||||
obj/util.o \
|
||||
obj/script.o \
|
||||
|
@ -16,6 +16,8 @@ LIBPATHS= \
|
||||
|
||||
WXLIBS=$(shell $(DEPSDIR)/bin/wx-config --libs --static)
|
||||
|
||||
USE_UPNP:=0
|
||||
|
||||
LIBS= -dead_strip \
|
||||
$(DEPSDIR)/lib/libdb_cxx-4.8.a \
|
||||
$(DEPSDIR)/lib/libboost_system.a \
|
||||
@ -44,6 +46,11 @@ OBJS= \
|
||||
obj/init.o \
|
||||
cryptopp/obj/sha.o \
|
||||
cryptopp/obj/cpu.o
|
||||
|
||||
ifdef USE_UPNP
|
||||
LIBS += $(DEPSDIR)/lib/libminiupnpc.a
|
||||
DEFS += -DUSE_UPNP=$(USE_UPNP)
|
||||
endif
|
||||
|
||||
|
||||
all: bitcoin
|
||||
|
@ -8,6 +8,10 @@ WXINCLUDEPATHS=$(shell wx-config --cxxflags)
|
||||
|
||||
WXLIBS=$(shell wx-config --libs)
|
||||
|
||||
USE_UPNP:=0
|
||||
|
||||
DEFS=-DNOPCH -DFOURWAYSSE2 -DUSE_SSL
|
||||
|
||||
# for boost 1.37, add -mt to the boost libraries
|
||||
LIBS= \
|
||||
-Wl,-Bstatic \
|
||||
@ -17,13 +21,20 @@ LIBS= \
|
||||
-l boost_thread \
|
||||
-l db_cxx \
|
||||
-l ssl \
|
||||
-l crypto \
|
||||
-l crypto
|
||||
|
||||
ifdef USE_UPNP
|
||||
LIBS += -l miniupnpc
|
||||
DEFS += -DUSE_UPNP=$(USE_UPNP)
|
||||
endif
|
||||
|
||||
LIBS+= \
|
||||
-Wl,-Bdynamic \
|
||||
-l gthread-2.0 \
|
||||
-l z \
|
||||
-l dl
|
||||
|
||||
DEFS=-DNOPCH -DFOURWAYSSE2 -DUSE_SSL
|
||||
|
||||
DEBUGFLAGS=-g -D__WXDEBUG__
|
||||
CXXFLAGS=-O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS)
|
||||
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
|
||||
|
124
net.cpp
124
net.cpp
@ -4,11 +4,21 @@
|
||||
|
||||
#include "headers.h"
|
||||
|
||||
#ifdef USE_UPNP
|
||||
#include <miniupnpc/miniwget.h>
|
||||
#include <miniupnpc/miniupnpc.h>
|
||||
#include <miniupnpc/upnpcommands.h>
|
||||
#include <miniupnpc/upnperrors.h>
|
||||
#endif
|
||||
|
||||
static const int MAX_OUTBOUND_CONNECTIONS = 8;
|
||||
|
||||
void ThreadMessageHandler2(void* parg);
|
||||
void ThreadSocketHandler2(void* parg);
|
||||
void ThreadOpenConnections2(void* parg);
|
||||
#ifdef USE_UPNP
|
||||
void ThreadMapPort2(void* parg);
|
||||
#endif
|
||||
bool OpenNetworkConnection(const CAddress& addrConnect);
|
||||
|
||||
|
||||
@ -857,6 +867,109 @@ void ThreadSocketHandler2(void* parg)
|
||||
|
||||
|
||||
|
||||
#ifdef USE_UPNP
|
||||
void ThreadMapPort(void* parg)
|
||||
{
|
||||
IMPLEMENT_RANDOMIZE_STACK(ThreadMapPort(parg));
|
||||
try
|
||||
{
|
||||
vnThreadsRunning[5]++;
|
||||
ThreadMapPort2(parg);
|
||||
vnThreadsRunning[5]--;
|
||||
}
|
||||
catch (std::exception& e) {
|
||||
vnThreadsRunning[5]--;
|
||||
PrintException(&e, "ThreadMapPort()");
|
||||
} catch (...) {
|
||||
vnThreadsRunning[5]--;
|
||||
PrintException(NULL, "ThreadMapPort()");
|
||||
}
|
||||
printf("ThreadMapPort exiting\n");
|
||||
}
|
||||
|
||||
void ThreadMapPort2(void* parg)
|
||||
{
|
||||
printf("ThreadMapPort started\n");
|
||||
|
||||
char port[6];
|
||||
sprintf(port, "%d", ntohs(GetDefaultPort()));
|
||||
|
||||
const char * rootdescurl = 0;
|
||||
const char * multicastif = 0;
|
||||
const char * minissdpdpath = 0;
|
||||
struct UPNPDev * devlist = 0;
|
||||
char lanaddr[64];
|
||||
|
||||
devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0);
|
||||
|
||||
struct UPNPUrls urls;
|
||||
struct IGDdatas data;
|
||||
int r;
|
||||
|
||||
if (UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)) == 1)
|
||||
{
|
||||
char intClient[16];
|
||||
char intPort[6];
|
||||
|
||||
#ifndef __WXMSW__
|
||||
r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
|
||||
port, port, lanaddr, 0, "TCP", 0);
|
||||
#else
|
||||
r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
|
||||
port, port, lanaddr, 0, "TCP", 0, "0");
|
||||
#endif
|
||||
if(r!=UPNPCOMMAND_SUCCESS)
|
||||
printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n",
|
||||
port, port, lanaddr, r, strupnperror(r));
|
||||
else
|
||||
printf("UPnP Port Mapping successful.\n");
|
||||
loop {
|
||||
if (fShutdown || !fUseUPnP)
|
||||
{
|
||||
r = UPNP_DeletePortMapping(urls.controlURL, data.first.servicetype, port, "TCP", 0);
|
||||
printf("UPNP_DeletePortMapping() returned : %d\n", r);
|
||||
freeUPNPDevlist(devlist); devlist = 0;
|
||||
FreeUPNPUrls(&urls);
|
||||
return;
|
||||
}
|
||||
Sleep(2000);
|
||||
}
|
||||
} else {
|
||||
printf("No valid UPnP IGDs found\n");
|
||||
freeUPNPDevlist(devlist); devlist = 0;
|
||||
FreeUPNPUrls(&urls);
|
||||
loop {
|
||||
if (fShutdown)
|
||||
return;
|
||||
Sleep(2000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MapPort(bool fMapPort)
|
||||
{
|
||||
if (fUseUPnP != fMapPort)
|
||||
{
|
||||
fUseUPnP = fMapPort;
|
||||
CWalletDB().WriteSetting("fUseUPnP", fUseUPnP);
|
||||
}
|
||||
if (fUseUPnP && vnThreadsRunning[5] < 1)
|
||||
{
|
||||
if (!CreateThread(ThreadMapPort, NULL))
|
||||
printf("Error: ThreadMapPort(ThreadMapPort) failed\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const char *strDNSSeed[] = {
|
||||
"bitseed.xf2.org",
|
||||
"bitseed.bitcoin.org.uk",
|
||||
@ -1410,6 +1523,10 @@ void StartNode(void* parg)
|
||||
// Start threads
|
||||
//
|
||||
|
||||
// Map ports with UPnP
|
||||
if (fHaveUPnP)
|
||||
MapPort(fUseUPnP);
|
||||
|
||||
// Get addresses from IRC and advertise ours
|
||||
if (!CreateThread(ThreadIRCSeed, NULL))
|
||||
printf("Error: CreateThread(ThreadIRCSeed) failed\n");
|
||||
@ -1435,7 +1552,11 @@ bool StopNode()
|
||||
fShutdown = true;
|
||||
nTransactionsUpdated++;
|
||||
int64 nStart = GetTime();
|
||||
while (vnThreadsRunning[0] > 0 || vnThreadsRunning[2] > 0 || vnThreadsRunning[3] > 0 || vnThreadsRunning[4] > 0)
|
||||
while (vnThreadsRunning[0] > 0 || vnThreadsRunning[2] > 0 || vnThreadsRunning[3] > 0 || vnThreadsRunning[4] > 0
|
||||
#ifdef USE_UPNP
|
||||
|| vnThreadsRunning[5] > 0
|
||||
#endif
|
||||
)
|
||||
{
|
||||
if (GetTime() - nStart > 20)
|
||||
break;
|
||||
@ -1446,6 +1567,7 @@ bool StopNode()
|
||||
if (vnThreadsRunning[2] > 0) printf("ThreadMessageHandler still running\n");
|
||||
if (vnThreadsRunning[3] > 0) printf("ThreadBitcoinMiner still running\n");
|
||||
if (vnThreadsRunning[4] > 0) printf("ThreadRPCServer still running\n");
|
||||
if (fHaveUPnP && vnThreadsRunning[5] > 0) printf("ThreadMapPort still running\n");
|
||||
while (vnThreadsRunning[2] > 0 || vnThreadsRunning[4] > 0)
|
||||
Sleep(20);
|
||||
Sleep(50);
|
||||
|
1
net.h
1
net.h
@ -30,6 +30,7 @@ CNode* FindNode(unsigned int ip);
|
||||
CNode* ConnectNode(CAddress addrConnect, int64 nTimeout=0);
|
||||
void AbandonRequests(void (*fn)(void*, CDataStream&), void* param1);
|
||||
bool AnySubscribed(unsigned int nChannel);
|
||||
void MapPort(bool fMapPort);
|
||||
void DNSAddressSeed();
|
||||
bool BindListenPort(string& strError=REF(string()));
|
||||
void StartNode(void* parg);
|
||||
|
11
ui.cpp
11
ui.cpp
@ -1665,6 +1665,10 @@ COptionsDialog::COptionsDialog(wxWindow* parent) : COptionsDialogBase(parent)
|
||||
m_checkBoxStartOnSystemStartup->SetValue(fTmpStartOnSystemStartup = GetStartOnSystemStartup());
|
||||
m_checkBoxMinimizeToTray->SetValue(fMinimizeToTray);
|
||||
m_checkBoxMinimizeOnClose->SetValue(fMinimizeOnClose);
|
||||
if (fHaveUPnP)
|
||||
m_checkBoxUseUPnP->SetValue(fUseUPnP);
|
||||
else
|
||||
m_checkBoxUseUPnP->Enable(false);
|
||||
m_checkBoxUseProxy->SetValue(fUseProxy);
|
||||
m_textCtrlProxyIP->Enable(fUseProxy);
|
||||
m_textCtrlProxyPort->Enable(fUseProxy);
|
||||
@ -1784,6 +1788,13 @@ void COptionsDialog::OnButtonApply(wxCommandEvent& event)
|
||||
walletdb.WriteSetting("fMinimizeOnClose", fMinimizeOnClose);
|
||||
}
|
||||
|
||||
if (fHaveUPnP && fUseUPnP != m_checkBoxUseUPnP->GetValue())
|
||||
{
|
||||
fUseUPnP = m_checkBoxUseUPnP->GetValue();
|
||||
walletdb.WriteSetting("fUseUPnP", fUseUPnP);
|
||||
MapPort(fUseUPnP);
|
||||
}
|
||||
|
||||
fUseProxy = m_checkBoxUseProxy->GetValue();
|
||||
walletdb.WriteSetting("fUseProxy", fUseProxy);
|
||||
|
||||
|
@ -371,6 +371,9 @@ COptionsDialogBase::COptionsDialogBase( wxWindow* parent, wxWindowID id, const w
|
||||
m_checkBoxMinimizeToTray = new wxCheckBox( m_panelMain, wxID_ANY, _("&Minimize to the tray instead of the taskbar"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer69->Add( m_checkBoxMinimizeToTray, 0, wxALL, 5 );
|
||||
|
||||
m_checkBoxUseUPnP = new wxCheckBox( m_panelMain, wxID_ANY, _("Map port using &UPnP"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer69->Add( m_checkBoxUseUPnP, 0, wxALL, 5 );
|
||||
|
||||
m_checkBoxMinimizeOnClose = new wxCheckBox( m_panelMain, wxID_ANY, _("M&inimize to the tray on close"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer69->Add( m_checkBoxMinimizeOnClose, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
@ -544,7 +547,7 @@ CAboutDialogBase::CAboutDialogBase( wxWindow* parent, wxWindowID id, const wxStr
|
||||
|
||||
bSizer631->Add( 0, 4, 0, wxEXPAND, 5 );
|
||||
|
||||
m_staticTextMain = new wxStaticText( this, wxID_ANY, _("Copyright (c) 2009-2011 Bitcoin Developers\n\nThis is experimental software.\n\nDistributed under the MIT/X11 software license, see the accompanying file \nlicense.txt or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the \nOpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \nEric Young (eay@cryptsoft.com)."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextMain = new wxStaticText( this, wxID_ANY, _("Copyright (c) 2009-2011 Bitcoin Developers\n\nThis is experimental software.\n\nDistributed under the MIT/X11 software license, see the accompanying file \nlicense.txt or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the \nOpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \nEric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextMain->Wrap( -1 );
|
||||
bSizer631->Add( m_staticTextMain, 0, wxALL, 5 );
|
||||
|
||||
|
1
uibase.h
1
uibase.h
@ -170,6 +170,7 @@ class COptionsDialogBase : public wxDialog
|
||||
wxStaticText* m_staticText35;
|
||||
wxCheckBox* m_checkBoxStartOnSystemStartup;
|
||||
wxCheckBox* m_checkBoxMinimizeToTray;
|
||||
wxCheckBox* m_checkBoxUseUPnP;
|
||||
wxCheckBox* m_checkBoxMinimizeOnClose;
|
||||
wxCheckBox* m_checkBoxUseProxy;
|
||||
|
||||
|
@ -2122,6 +2122,62 @@
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxCheckBox" expanded="1">
|
||||
<property name="bg"></property>
|
||||
<property name="checked">0</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="font"></property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Map port using &UPnP</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">m_checkBoxUseUPnP</property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnCheckBox"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
|
||||
@ -3345,7 +3401,7 @@
|
||||
<property name="font"></property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Copyright (c) 2009-2011 Bitcoin Developers

This is experimental software.

Distributed under the MIT/X11 software license, see the accompanying file 
license.txt or http://www.opensource.org/licenses/mit-license.php.

This product includes software developed by the OpenSSL Project for use in the 
OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by 
Eric Young (eay@cryptsoft.com).</property>
|
||||
<property name="label">Copyright (c) 2009-2011 Bitcoin Developers

This is experimental software.

Distributed under the MIT/X11 software license, see the accompanying file 
license.txt or http://www.opensource.org/licenses/mit-license.php.

This product includes software developed by the OpenSSL Project for use in the 
OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by 
Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard.</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">m_staticTextMain</property>
|
||||
|
Loading…
Reference in New Issue
Block a user