Commit Graph
1180 Commits
Author SHA1 Message Date
Adrien Béraud 59182aa0c4 securedht, dhtrunner: support bootstrap mode 2015-08-04 23:39:15 -04:00
Adrien Béraud 2130d38820 securedht: allow null key or certificate
If no key is provided, no value is decrypted.
If no certficate is provided, it is not published and
a random node Id is choosed.
2015-08-04 14:02:04 -04:00
Adrien Béraud 948475301e infohash: add getRandom() 2015-08-04 14:02:04 -04:00
Adrien Béraud 69cf65d1b2 dhtrunner: update doc 2015-07-28 16:26:46 -04:00
Adrien Béraud f13b28fed4 dht: add connectivityChanged() 2015-07-28 16:26:35 -04:00
Adrien Béraud 3cbae5526a dht: add bootstap mode
The bootstrap mode is used only for bootstrap nodes.

A bootstrap node will maintain a tree of the whole dht
up to 6 bits deep (8*2^6 = 4096 nodes).

This allows to provide better initial answers to new nodes.

Bootstrap nodes act otherwise normally.
2015-07-27 14:47:58 -04:00
Adrien Béraud 8287416164 dht: add getNodes, isExpired with no time argument 2015-07-27 14:33:47 -04:00
Adrien Béraud ced114eba4 dht: combine counting of get and announce/listen requests 2015-07-27 14:33:39 -04:00
Adrien Béraud 5323ebd6b1 dht: use a listen keep-alive of 30 seconds 2015-07-27 14:33:39 -04:00
Adrien Béraud 4ad1495e39 dht: improve listen, announce timing consistency 2015-07-24 01:02:35 -04:00
Adrien Béraud cf3fa7b954 dht: increase max requests per second 2015-07-24 01:02:35 -04:00
Adrien Béraud 178eeae94f dht: log cleanup 2015-07-24 01:02:35 -04:00
Adrien Béraud d4094bed9b tools: update copyright 2015-07-23 14:32:52 -04:00
Adrien Béraud 3124d13004 infohash: toFloat optimisation 2015-07-23 11:06:16 -04:00
Adrien Béraud d2ed99742e zero-initialise sockaddr structures 2015-07-23 11:05:50 -04:00
Adrien Béraud ac13795db0 crypto: add DecryptError 2015-07-14 12:47:12 -04:00
Adrien Béraud 593ca81dbd infohash: add toFloat() 2015-07-14 12:09:14 -04:00
Adrien Béraud 7729f9e283 types: add payload to trust request 2015-07-13 14:15:08 -04:00
Adrien Béraud 03b873d1ad value: make time_point non-constexpr for now 2015-07-13 14:15:08 -04:00
Adrien Béraud 3d2a74be49 python: add PyNode 2015-07-13 13:24:55 -04:00
Adrien Béraud e2004d69cb prevent sending listen or announce to unsynched nodes 2015-07-11 18:38:11 -04:00
Adrien Béraud 7a3a95bf3e dht: use time_point::min() as invalid time_point value 2015-07-11 18:38:11 -04:00
Adrien Béraud 5bec9f6764 log cleanup 2015-07-10 23:31:09 -04:00
Adrien Béraud d2c57b867d update copyright headers 2015-07-10 23:25:43 -04:00
Adrien Béraud db1b9c2f38 crypto: add Certificate getName, getIssuerName, getAltNames 2015-07-09 12:32:56 -04:00
Adrien Béraud a0544e8fcf dhtrunner: add future<T> get(key) 2015-07-06 11:27:45 -04:00
Adrien Béraud 2470dab029 dht: add a simpler Done Callback 2015-07-06 11:27:45 -04:00
Adrien Béraud 1bc2c5c9f0 dht: cleanup doc 2015-07-06 11:26:37 -04:00
Adrien Béraud 618f4dcddb crypto: add contructor from blob vector 2015-07-05 17:48:05 -04:00
Adrien Béraud d16260eca8 crypto: unpack certificate list from blob vector 2015-07-04 22:41:41 -04:00
Adrien Béraud 6a44dab6d3 crypto: add doc 2015-07-03 13:47:57 -04:00
Adrien Béraud 1c6a50969b crypto: support private key password encryption 2015-07-03 13:45:57 -04:00
Adrien Béraud aeedb8adac dhtrunner: allow to bind specific IP addresses 2015-07-02 02:59:28 -04:00
Adrien Béraud f1ff9a1a87 dht: optimisations in search behavior
A candidate flag is added to new search nodes when a search
is already synced.
The flag is waived when a token is retreived from the node.
Candidate nodes behave normally but are not considered
to evaluate the search state (synced etc.).

The behavior of searches if also changed so GET_NODES
updates are now done the same way, no matter if the search
is currently synced. This allow candidate nodes to behave
normally and makes token update asynchronous, causing
less frequent performance hickups.
2015-07-02 02:59:28 -04:00
Adrien Béraud 04623d09f8 dht: simplify get search node selection 2015-07-02 02:59:28 -04:00
Guillaume Roguez 42ba16d080 add python wrapper written in Cython
This patch adds in tool/python a Cython written package
to use opendht API throught Python language.
This binding is a prototype with a little subset of OpenDHT API,
mainly for a proof-of-concept

Signed-off-by: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
2015-07-02 02:59:01 -04:00
Adrien Béraud a63fc649b6 refactoring: move Node out of Dht 2015-07-02 02:59:01 -04:00
Adrien Béraud dbde59a355 crypto: add key length param in generateIdentity() 2015-07-02 02:58:42 -04:00
Adrien Béraud 680186976f dht: add node list to done callback 2015-06-25 15:56:03 -04:00
Adrien Béraud e88e78a2d9 securedht: support external certificate store
With setLocalCertificateStore, add an optional
custom callback to find an immediately available
certificate to use for encryption etc.
2015-06-25 11:50:46 -04:00
Adrien Béraud 428ac04812 crypto: add Certificate::isCA 2015-06-25 11:43:11 -04:00
Adrien Béraud 848d1675b9 infohash: add getBit, setBit, operator< 2015-06-25 11:41:38 -04:00
Adrien Béraud 3e5a3c3f2d dht: getId renamed to getNodeId 2015-06-17 22:34:57 -04:00
Adrien Béraud 40f0488203 dht: address family can be omited in isRunning 2015-06-17 22:34:57 -04:00
Adrien Béraud ca58b19e48 random_device: add some documentation 2015-06-17 15:40:21 -04:00
Adrien Béraud 0497154f7f random_device: support RDSEED and fallback to pseudo rng
Pseudo random numbers are not ideal but still better than zeros.

Use time-seeded PRNG as a basis and XOR-mix with real random numbers if available.
2015-05-31 09:19:24 -04:00
cberaud 41406833a8 add crypto::random_device 2015-05-15 19:57:04 +05:30
Guillaume Roguez 98233954c4 dht: drop incoming msg with unknown protocol
We filter out incoming packet if my_v field is not known.
This prevents to be flooded by others bittorrent-like clients.

Signed-off-by: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
2015-05-14 13:44:11 -04:00
cberaud 06a32eedd1 Certificate: add option to not export the whole chain 2015-04-30 22:02:27 -04:00
Adrien Béraud c5c61b838e dht: fix compilation for LLVM 3.5 2015-04-27 15:14:46 -04:00