mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
Implement opt-in UPnP IGD port forwarding for P2P nodes behind NAT, enabling inbound connections without manual router configuration. This is gated behind the `upnp-igd` feature flag. Changes: - Add PortMapping trait for pluggable port-mapping protocols (UPnP, PCP, NAT-PMP...) - Add optional oxy-upnp-igd v0.1 dependency behind `upnp-igd` - Parse UpnpConfig (enabled, discovery_timeout, lease_duration, description, refresh_interval) from listener URL - Periodically refresh external address and publish it to the P2P network - Add UPnP-specific error handling - Enable `upnp-igd` feature in darkirc (opt-in; not enabled by default) Port mappings are created lazily once a gateway is discovered and are automatically renewed. External addresses are tagged `source=upnp` and refreshed at a configurable interval. Signed-off-by: Gioacchino Mazzurco <gio@polymathes.cc> Reviewed-by: grug Reviewed-by: upgrayedd
darkirc
Check the Installation Guide for more detailed information about the ins and outs of darkirc.
Android build
- Install
android-ndk - Compile
opensslwith the Android toolchain - Compile
sqlcipherwith the Android toolchain and theopenssllib - Compile
darkirc
OpenSSL
$ git clone https://github.com/openssl/openssl
$ cd openssl
$ export ANDROID_NDK_ROOT="/opt/android-ndk"
$ export PATH="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH"
$ ./Configure android-arm64 -D__ANDROID_API__=32
$ make -j$(nproc)
SQLcipher
$ git clone https://github.com/sqlcipher/sqlcipher
$ cd sqlcipher
$ sed -e 's/strchrnul//' -i configure
$ export ANDROID_NDK_ROOT="/opt/android-ndk"
$ export PATH="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH"
$ CC=aarch64-linux-android32-clang \
CPPFLAGS="-I$PWD/../openssl/include" \
LDFLAGS="-L$PWD/../openssl" \
./configure \
--host=aarch64-linux-android32 \
--disable-shared \
--enable-static \
--enable-cross-thread-connections \
--enable-releasemode \
--disable-tcl
$ make -j$(nproc)
$ ./libtool --mode install install libsqlcipher.la $PWD
DarkIRC
$ make darkirc.android64