Hi,

Here are patches updating net/i2pd to the latest version (2.46.0), one for -current and one for -stable.

The I2P network suffers from ongoing Denial of Service attacks [1]. i2pd was severely affected - more than the java i2p implementation - to the point of becoming almost unusable. This update contains mitigations against these attacks.

With the attached patches, i2pd builds on amd64, 'make test' is passing, albeit with warnings, and 'make port-lib-depends-check' is OK. I'm running the port on -stable for more than 24 hours now, and it's doing great (with a Tunnel creation success rate of more than 40%, which is very good).

I'm submitting a patch for -stable because at this point the version on -stable (2.41.0) has become basically useless.

I've taken the liberty to remove the MAINTAINER line in these patches, since the maintainer seems to have totally disappeared for several months, and their email account has been deactivated.

Best regards,

Ganymede

[1] See https://geti2p.net/en/blog/post/2023/02/09/about_the_recent_denial_of_service_attacks and
https://www.reddit.com/r/i2p/comments/10v9uxp/network_weather_report_stormy
Index: Makefile
===================================================================
RCS file: /cvs/ports/net/i2pd/Makefile,v
retrieving revision 1.15
diff -u -p -r1.15 Makefile
--- Makefile	14 Jan 2023 22:07:59 -0000	1.15
+++ Makefile	16 Feb 2023 01:50:25 -0000
@@ -2,12 +2,10 @@ COMMENT =	client for the I2P anonymous n
 
 GH_ACCOUNT =	PurpleI2P
 GH_PROJECT =	i2pd
-GH_TAGNAME =	2.45.1
+GH_TAGNAME =	2.46.0
 
 CATEGORIES =	net
 HOMEPAGE =	https://i2pd.website
-
-MAINTAINER =	Dimitri Karamazov <deserter...@danwin1210.me>
 
 # BSD
 PERMIT_PACKAGE = Yes
Index: distinfo
===================================================================
RCS file: /cvs/ports/net/i2pd/distinfo,v
retrieving revision 1.10
diff -u -p -r1.10 distinfo
--- distinfo	14 Jan 2023 22:07:59 -0000	1.10
+++ distinfo	16 Feb 2023 01:50:25 -0000
@@ -1,2 +1,2 @@
-SHA256 (i2pd-2.45.1.tar.gz) = qEsePLWsRfOa+Y5jKR00cl72czfhGsvg4kWs3npbK3I=
-SIZE (i2pd-2.45.1.tar.gz) = 631280
+SHA256 (i2pd-2.46.0.tar.gz) = 2qXke7K4D72qODayCehpAXiTQh9SJd/gGeXUPT+KhtQ=
+SIZE (i2pd-2.46.0.tar.gz) = 643087
Index: patches/patch-tests_Makefile
===================================================================
RCS file: /cvs/ports/net/i2pd/patches/patch-tests_Makefile,v
retrieving revision 1.7
diff -u -p -r1.7 patch-tests_Makefile
--- patches/patch-tests_Makefile	8 Jan 2023 21:29:06 -0000	1.7
+++ patches/patch-tests_Makefile	16 Feb 2023 01:50:25 -0000
@@ -1,39 +1,12 @@
 Index: tests/Makefile
 --- tests/Makefile.orig
 +++ tests/Makefile
-@@ -1,5 +1,5 @@
- CXXFLAGS += -Wall -Wno-unused-parameter -Wextra -pedantic -O0 -g -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1 -pthread -Wl,--unresolved-symbols=ignore-in-object-files
+@@ -1,7 +1,7 @@
+ SYS := $(shell $(CXX) -dumpmachine)
+ 
+ CXXFLAGS += -Wall -Wno-unused-parameter -Wextra -pedantic -O0 -g -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1 -DOPENSSL_SUPPRESS_DEPRECATED -pthread -Wl,--unresolved-symbols=ignore-in-object-files
 -INCFLAGS += -I../libi2pd
 +CXXFLAGS += -Wall -Wextra -pedantic -g -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1 -I../libi2pd/ -pthread -Wl,--unresolved-symbols=ignore-in-object-files
  
- TESTS = test-gost test-gost-sig test-base-64 test-x25519 test-aeadchacha20poly1305 test-blinding test-elligator
- 
-@@ -14,8 +14,8 @@ test-base-%: ../libi2pd/Base.cpp test-base-%.cpp
- test-gost: ../libi2pd/Gost.cpp ../libi2pd/I2PEndian.cpp test-gost.cpp
- 	$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto
- 
--test-gost-sig: ../libi2pd/Gost.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Crypto.cpp ../libi2pd/Log.cpp test-gost-sig.cpp
--	$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
-+test-gost-sig: ../libi2pd/Gost.cpp ../libi2pd/Config.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Crypto.cpp ../libi2pd/Log.cpp test-gost-sig.cpp
-+	$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system -lboost_program_options-mt
- 
- test-x25519: ../libi2pd/Ed25519.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Log.cpp ../libi2pd/Crypto.cpp test-x25519.cpp
- 	$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
-@@ -23,14 +23,14 @@ test-x25519: ../libi2pd/Ed25519.cpp ../libi2pd/I2PEndi
- test-aeadchacha20poly1305: ../libi2pd/Crypto.cpp ../libi2pd/ChaCha20.cpp ../libi2pd/Poly1305.cpp test-aeadchacha20poly1305.cpp
- 	 $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
- 
--test-blinding: ../libi2pd/Crypto.cpp ../libi2pd/Blinding.cpp ../libi2pd/Ed25519.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Log.cpp ../libi2pd/util.cpp ../libi2pd/Identity.cpp ../libi2pd/Signature.cpp ../libi2pd/Timestamp.cpp test-blinding.cpp
--	 $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
-+test-blinding: ../libi2pd/Crypto.cpp ../libi2pd/Config.cpp ../libi2pd/Blinding.cpp ../libi2pd/Ed25519.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Log.cpp ../libi2pd/util.cpp ../libi2pd/Identity.cpp ../libi2pd/Signature.cpp ../libi2pd/Timestamp.cpp test-blinding.cpp
-+	 $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system -lboost_program_options-mt
- 
- test-elligator: ../libi2pd/Elligator.cpp ../libi2pd/Crypto.cpp test-elligator.cpp
- 	 $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
- 
- run: $(TESTS)
--	@for TEST in $(TESTS); do ./$$TEST ; done
-+	@for TEST in $(TESTS); do echo -n "$$TEST: "; ./$$TEST && echo OK; done
+ LIBI2PD = ../libi2pd.a
  
- clean:
- 	rm -f $(TESTS)
Index: Makefile
===================================================================
RCS file: /cvs/ports/net/i2pd/Makefile,v
retrieving revision 1.10
diff -u -p -r1.10 Makefile
--- Makefile	11 Mar 2022 19:46:04 -0000	1.10
+++ Makefile	16 Feb 2023 09:23:14 -0000
@@ -2,12 +2,10 @@ COMMENT =	client for the I2P anonymous n
 
 GH_ACCOUNT =	PurpleI2P
 GH_PROJECT =	i2pd
-GH_TAGNAME =	2.41.0
+GH_TAGNAME =	2.46.0
 
 CATEGORIES =	net
 HOMEPAGE =	https://i2pd.website
-
-MAINTAINER =	Dimitri Karamazov <deserter...@danwin1210.me>
 
 # BSD
 PERMIT_PACKAGE = Yes
Index: distinfo
===================================================================
RCS file: /cvs/ports/net/i2pd/distinfo,v
retrieving revision 1.7
diff -u -p -r1.7 distinfo
--- distinfo	28 Feb 2022 10:49:54 -0000	1.7
+++ distinfo	16 Feb 2023 09:23:14 -0000
@@ -1,2 +1,2 @@
-SHA256 (i2pd-2.41.0.tar.gz) = ezM80mZwkD7wZyz4eqn4lYFM4rvvLlh+adZq2UJ2ZOY=
-SIZE (i2pd-2.41.0.tar.gz) = 594453
+SHA256 (i2pd-2.46.0.tar.gz) = 2qXke7K4D72qODayCehpAXiTQh9SJd/gGeXUPT+KhtQ=
+SIZE (i2pd-2.46.0.tar.gz) = 643087
Index: patches/patch-tests_Makefile
===================================================================
RCS file: /cvs/ports/net/i2pd/patches/patch-tests_Makefile,v
retrieving revision 1.6
diff -u -p -r1.6 patch-tests_Makefile
--- patches/patch-tests_Makefile	11 Mar 2022 19:46:04 -0000	1.6
+++ patches/patch-tests_Makefile	16 Feb 2023 09:23:14 -0000
@@ -1,39 +1,12 @@
 Index: tests/Makefile
 --- tests/Makefile.orig
 +++ tests/Makefile
-@@ -1,5 +1,5 @@
- CXXFLAGS += -Wall -Wno-unused-parameter -Wextra -pedantic -O0 -g -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1 -pthread -Wl,--unresolved-symbols=ignore-in-object-files
+@@ -1,7 +1,7 @@
+ SYS := $(shell $(CXX) -dumpmachine)
+ 
+ CXXFLAGS += -Wall -Wno-unused-parameter -Wextra -pedantic -O0 -g -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1 -DOPENSSL_SUPPRESS_DEPRECATED -pthread -Wl,--unresolved-symbols=ignore-in-object-files
 -INCFLAGS += -I../libi2pd
 +CXXFLAGS += -Wall -Wextra -pedantic -g -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1 -I../libi2pd/ -pthread -Wl,--unresolved-symbols=ignore-in-object-files
  
- TESTS = test-gost test-gost-sig test-base-64 test-x25519 test-aeadchacha20poly1305 test-blinding test-elligator
- 
-@@ -14,8 +14,8 @@ test-base-%: ../libi2pd/Base.cpp test-base-%.cpp
- test-gost: ../libi2pd/Gost.cpp ../libi2pd/I2PEndian.cpp test-gost.cpp
- 	$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto
- 
--test-gost-sig: ../libi2pd/Gost.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Crypto.cpp ../libi2pd/Log.cpp test-gost-sig.cpp
--	$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
-+test-gost-sig: ../libi2pd/Gost.cpp ../libi2pd/Config.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Crypto.cpp ../libi2pd/Log.cpp test-gost-sig.cpp
-+	$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system -lboost_program_options-mt
- 
- test-x25519: ../libi2pd/Ed25519.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Log.cpp ../libi2pd/Crypto.cpp  test-x25519.cpp
- 	$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
-@@ -23,14 +23,14 @@ test-x25519: ../libi2pd/Ed25519.cpp ../libi2pd/I2PEndi
- test-aeadchacha20poly1305: ../libi2pd/Crypto.cpp ../libi2pd/ChaCha20.cpp ../libi2pd/Poly1305.cpp test-aeadchacha20poly1305.cpp
- 	 $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
- 
--test-blinding: ../libi2pd/Crypto.cpp ../libi2pd/Blinding.cpp ../libi2pd/Ed25519.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Log.cpp ../libi2pd/util.cpp ../libi2pd/Identity.cpp ../libi2pd/Signature.cpp ../libi2pd/Timestamp.cpp test-blinding.cpp
--	 $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
-+test-blinding: ../libi2pd/Crypto.cpp ../libi2pd/Config.cpp ../libi2pd/Blinding.cpp ../libi2pd/Ed25519.cpp ../libi2pd/I2PEndian.cpp ../libi2pd/Log.cpp ../libi2pd/util.cpp ../libi2pd/Identity.cpp ../libi2pd/Signature.cpp ../libi2pd/Timestamp.cpp test-blinding.cpp
-+	 $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system -lboost_program_options-mt
- 
- test-elligator: ../libi2pd/Elligator.cpp ../libi2pd/Crypto.cpp test-elligator.cpp
- 	 $(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(INCFLAGS) -o $@ $^ -lcrypto -lssl -lboost_system
- 
- run: $(TESTS)
--	@for TEST in $(TESTS); do ./$$TEST ; done
-+	@for TEST in $(TESTS); do echo -n "$$TEST: "; ./$$TEST && echo OK; done
+ LIBI2PD = ../libi2pd.a
  
- clean:
- 	rm -f $(TESTS)
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/net/i2pd/pkg/PLIST,v
retrieving revision 1.6
diff -u -p -r1.6 PLIST
--- pkg/PLIST	11 Mar 2022 19:46:04 -0000	1.6
+++ pkg/PLIST	16 Feb 2023 09:23:14 -0000
@@ -7,7 +7,6 @@ include/i2pd/AddressBook.h
 include/i2pd/BOB.h
 include/i2pd/Base.h
 include/i2pd/Blinding.h
-include/i2pd/BloomFilter.h
 include/i2pd/CPU.h
 include/i2pd/ChaCha20.h
 include/i2pd/ClientContext.h
@@ -46,10 +45,8 @@ include/i2pd/RouterContext.h
 include/i2pd/RouterInfo.h
 include/i2pd/SAM.h
 include/i2pd/SOCKS.h
-include/i2pd/SSU.h
 include/i2pd/SSU2.h
-include/i2pd/SSUData.h
-include/i2pd/SSUSession.h
+include/i2pd/SSU2Session.h
 include/i2pd/Signature.h
 include/i2pd/Siphash.h
 include/i2pd/Streaming.h
@@ -64,6 +61,7 @@ include/i2pd/TunnelConfig.h
 include/i2pd/TunnelEndpoint.h
 include/i2pd/TunnelGateway.h
 include/i2pd/TunnelPool.h
+include/i2pd/UDPTunnel.h
 include/i2pd/api.h
 include/i2pd/util.h
 include/i2pd/version.h
@@ -108,6 +106,7 @@ share/examples/i2pd/certificates/family/
 @sample ${LOCALSTATEDIR}/lib/i2pd/certificates/family/mca2-i2p.crt
 @owner
 @group
+share/examples/i2pd/certificates/family/stormycloud.crt
 share/examples/i2pd/certificates/family/volatile.crt
 @owner _i2pd
 @group _i2pd
@@ -156,6 +155,7 @@ share/examples/i2pd/certificates/reseed/
 @sample ${LOCALSTATEDIR}/lib/i2pd/certificates/reseed/hottuna_at_mail.i2p.crt
 @owner
 @group
+share/examples/i2pd/certificates/reseed/i2p-reseed_at_mk16.de.crt
 share/examples/i2pd/certificates/reseed/igor_at_novg.net.crt
 @owner _i2pd
 @group _i2pd
Index: pkg/README
===================================================================
RCS file: /cvs/ports/net/i2pd/pkg/README,v
retrieving revision 1.2
diff -u -p -r1.2 README
--- pkg/README	11 Mar 2022 19:46:04 -0000	1.2
+++ pkg/README	16 Feb 2023 09:23:14 -0000
@@ -5,11 +5,11 @@
 Resource Limits: File Descriptors
 =================================
 
-By default, the _i2pd user, and so the i2pd process runs in the login(1)
-class of "daemon". The default limits on file descriptors are
-insufficient to run i2pd; instead you should put the _i2pd user and
-process in their own login(1) class with tuned resources. You should
-also raise the system-wide maxfiles limit.
+By default, the i2pd process runs in the login(1) class of "daemon".
+The default limits on file descriptors are insufficient to run i2pd; instead you
+should put the _i2pd user and process in their own login(1) class with tuned
+resources.
+You should also raise the system-wide maxfiles limit.
 
 1. Configure i2pd login class in the login.conf(5) file:
 

Reply via email to