orignal
|
3ebcd21135
|
store node info in separate map
|
2026-09-25 20:06:07 -04:00 |
|
orignal
|
685776eba3
|
parse id and infoHash as 20-bytes array. Add node to DHT after receiveing ping. Send reposnse to announce_peer
|
2026-09-25 14:57:50 -04:00 |
|
orignal
|
dae46c9540
|
Merge pull request #2575 from Elcoid/iss2570
sam: fix inconsistencies in version negotiation of sam handshake
|
2026-09-25 14:15:45 -04:00 |
|
Elcoid
|
61e18baf68
|
sam: replace C-style 0/1 with C++-style false/true
|
2026-09-25 13:30:18 -04:00 |
|
Elcoid
|
d1428cd2ae
|
sam: fix inconsistencies in version negotiation of sam handshake
This commit fixes [issue #2570](https://github.com/PurpleI2P/i2pd/issues/2570).
The [specification of the SAM protocol](https://i2p.net/en/docs/api/samv3/)
says the following:
- "As of version 3.1 (I2P 0.9.14), the MIN and MAX parameters are optional."
- "SAM will always return the highest version possible given the MIN and MAX
constraints"
Given this, the following handshakes do not change:
```
printf "HELLO VERSION MIN=3.1 MAX=3.3\n" | nc -q 0 127.0.0.1 7656
HELLO REPLY RESULT=OK VERSION=3.3
printf "HELLO VERSION MAX=3.3\n" | nc -q 0 127.0.0.1 7656
HELLO REPLY RESULT=OK VERSION=3.3
printf "HELLO VERSION MIN=31 MAX=31\n" | nc -q 0 127.0.0.1 7656
HELLO REPLY RESULT=OK VERSION=3.1
(periods are still optional)
```
But the following ones do (the responses before and after this commit
are included):
```
printf "HELLO VERSION MAX=3.4\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=NOVERSION
after: HELLO REPLY RESULT=OK VERSION=3.3
printf "HELLO VERSION MIN=3.0\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=3.0
after: HELLO REPLY RESULT=OK VERSION=3.3
printf "HELLO VERSION MIN=3.1\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=3.1
after: HELLO REPLY RESULT=OK VERSION=3.3
printf "HELLO VERSION MIN=2.9\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=NOVERSION
after: HELLO REPLY RESULT=OK VERSION=3.3
printf "HELLO VERSION\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=NOVERSION
after: HELLO REPLY RESULT=OK VERSION=3.3
printf "HELLO VERSION MIN=3.3 MAX=3.1\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=3.1
after: HELLO REPLY RESULT=NOVERSION
printf "HELLO VERSION MIN=3.5 MAX=2.7\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=2.7
after: HELLO REPLY RESULT=NOVERSION
printf "HELLO VERSION MIN=2.7 MAX=3.5\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=NOVERSION
after: HELLO REPLY RESULT=OK VERSION=3.3
printf "HELLO VERSION MIN=aab3vsg1df MAX=fd3gfbgf1bf\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=3.1
after: HELLO REPLY RESULT=NOVERSION
```
I included a script to automatically test these handshakes.
|
2026-09-25 10:52:05 -04:00 |
|
orignal
|
54f51044e5
|
use destination's b32 for dht file name
|
2026-09-25 09:02:11 -04:00 |
|
orignal
|
3c871cd892
|
don't consider duplicated torrent as error. Return id of existing one instead
|
2026-09-25 08:40:28 -04:00 |
|
orignal
|
baa0c8533a
|
return more flags in flagStr
|
2026-09-24 22:15:25 -04:00 |
|
orignal
|
969aa1b563
|
save and load DHT routing table
|
2026-09-24 21:26:00 -04:00 |
|
orignal
|
6f24d4efdd
|
implemnented torrent tunnel param dht
|
2026-09-24 19:14:02 -04:00 |
|
orignal
|
1af997ac82
|
handle announce_peer
|
2026-09-24 17:21:56 -04:00 |
|
orignal
|
69e9eadc0b
|
save and load routing table
|
2026-09-24 11:25:02 -04:00 |
|
orignal
|
d9724bb2ad
|
Merge pull request #2573 from pobregat0/tunnels-conf-partial-read
read tunnels.conf section by section if the whole file can't be parsed
|
2026-09-23 22:22:13 -04:00 |
|
orignal
|
ce443ea510
|
Merge pull request #2574 from pobregat0/tests-cxx20
build unit tests as C++20
|
2026-09-23 22:19:01 -04:00 |
|
PobreGato
|
271e64d524
|
build unit tests as C++20
|
2026-09-23 22:18:12 -04:00 |
|
PobreGato
|
3852c7a485
|
make tunnels config section readers members of ClientContext
|
2026-09-23 22:18:00 -04:00 |
|
PobreGato
|
61ee7d34f5
|
read tunnels.conf section by section if the whole file can't be parsed
|
2026-09-23 22:02:25 -04:00 |
|
orignal
|
fc42730f8b
|
handle get_peers response
|
2026-09-23 20:49:11 -04:00 |
|
orignal
|
9173deb0d6
|
keep DHT torrents in separate class
|
2026-09-23 16:05:03 -04:00 |
|
orignal
|
fb0ee7c187
|
Merge pull request #2572 from freeacetone/key-files-owner-only
i2p::fs::CreatePrivateFile
|
2026-09-23 11:02:24 -04:00 |
|
acetone
|
5b3e4db7f1
|
create key files readable by owner only
|
2026-09-23 10:48:32 -04:00 |
|
orignal
|
ec928482fa
|
Merge pull request #2571 from freeacetone/debian-datadir-owner-only
make /var/lib/i2pd accessible by owner only
|
2026-09-23 09:40:12 -04:00 |
|
acetone
|
99a3b1b092
|
make /var/lib/i2pd accessible by owner only
|
2026-09-23 09:20:45 -04:00 |
|
orignal
|
ef4ac934e8
|
handle get_peers query
|
2026-09-22 20:49:14 -04:00 |
|
orignal
|
2b67562c45
|
handle DHT ping response. Advertise our DHT port
|
2026-09-22 17:36:38 -04:00 |
|
orignal
|
81b9c357e4
|
handle and reply to DHT ping message
|
2026-09-22 14:34:19 -04:00 |
|
orignal
|
1e98572c32
|
use std::span instead naked poinnted for transient private key
|
2026-09-22 08:26:13 -04:00 |
|
orignal
|
e26055ab51
|
don't split not full bucket. Check if middleID bit >= 160
|
2026-09-21 21:06:18 -04:00 |
|
orignal
|
fcb8d44e4d
|
handle i2p_dht extension message
|
2026-09-21 20:51:14 -04:00 |
|
orignal
|
cff9f8ecc0
|
split bucket
|
2026-09-21 20:23:01 -04:00 |
|
orignal
|
9539637d79
|
Merge pull request #2561 from freeacetone/b33-offline-keys
B33 offline keys
|
2026-09-21 14:37:05 -04:00 |
|
acetone
|
4d9cba2df5
|
b33 offline keys for an encrypted LeaseSet
|
2026-09-21 14:33:24 -04:00 |
|
acetone
|
55fa7cd72d
|
don't verify Layer 2 of an encrypted LeaseSet with the outer transient
|
2026-09-21 13:19:02 -04:00 |
|
orignal
|
7a826ed069
|
FindClosestNodes, select DHT port from wider range
|
2026-09-21 11:28:43 -04:00 |
|
orignal
|
814fa61d05
|
Added FindBucket and AddNode
|
2026-09-20 22:10:30 -04:00 |
|
orignal
|
634ad8ce17
|
Added Node, Bucket, RoutingTable
|
2026-09-20 18:59:58 -04:00 |
|
orignal
|
9dbbe9629c
|
stop parsing if incorrect terminator
|
2026-09-20 17:02:56 -04:00 |
|
orignal
|
541a0129d4
|
set DHT datagram handlers
|
2026-09-20 16:49:35 -04:00 |
|
orignal
|
be17c94088
|
check for possible buffer length value overflow
|
2026-09-20 12:51:31 -04:00 |
|
orignal
|
79c1f4caa1
|
Added torrents DHT
|
2026-09-20 12:19:45 -04:00 |
|
orignal
|
b8a8bcc7e0
|
constexpr Base64EncodingBufferSize for C++23
|
2026-09-20 10:03:32 -04:00 |
|
orignal
|
b3ebd19293
|
upload longer .torrent files through RPC
|
2026-09-20 09:33:25 -04:00 |
|
orignal
|
5c0030b0c9
|
limit BEncoded depth
|
2026-09-20 09:06:09 -04:00 |
|
orignal
|
1a1884c4eb
|
changed minimal compressed size to 20 bytes
|
2026-09-19 22:28:51 -04:00 |
|
orignal
|
f70e74f316
|
don't try to copy private key if not set
|
2026-09-19 21:43:23 -04:00 |
|
orignal
|
a7bbfb566a
|
add trackers through torrent-set RPC request
|
2026-09-19 21:28:05 -04:00 |
|
orignal
|
e5e816454f
|
Merge pull request #2568 from pobregat0/proxy-connect-port-parse
parse CONNECT port without throwing in HTTP proxy
|
2026-09-19 20:57:24 -04:00 |
|
PobreGato
|
fce26dc2e7
|
parse CONNECT port without throwing in HTTP proxy
|
2026-09-19 20:50:25 -04:00 |
|
orignal
|
b7cc1f79a2
|
Merge pull request #2567 from pobregat0/socks-resolved-address-parse
check the address before converting a resolved name in SOCKS
|
2026-09-19 20:45:52 -04:00 |
|
orignal
|
cf41c7863c
|
don't add trackets resolving to same ident hash
|
2026-09-19 20:42:21 -04:00 |
|