Commit Graph

54 Commits

Author SHA1 Message Date
93c283a467
Place obvious bandit nosec comments 2022-05-02 18:00:55 +03:00
a5773999fe
Refactor BMConfigParser as a Module variable 2022-02-15 17:12:43 +05:30
8a5d90f200
protocol: bytes everywhere in CreatePacket and assembleVersionMessage 2021-11-11 15:55:34 +02:00
f997bca5e4
Added FIXME at bare except warning in protocol.py 2021-09-15 21:25:18 +05:30
ccff8a09f3
Updated code quality binary operator line change & ignore base except warning in protocol.py 2021-09-15 21:25:18 +05:30
06643bbbf3
Do ord() on first two bytes of host in checkIPv6Address()
only in python2
2021-08-17 15:56:59 +03:00
1edb4822be
Change supscriptions in protocol.checkIPv4Address()
to have bytes in python3
2021-08-17 15:56:59 +03:00
1e7be609ed
Use bytes in all the comparisons in the protocol.checkIP*Address(),
concatenate bytes in protocol.encodeHost().
2021-08-17 15:56:26 +03:00
lakshyacis
6f35da4096
Imported packages sequencing and formatting 2020-01-30 12:14:40 +05:30
f18f534c48
Formatted protocol and its docstrings 2019-11-18 13:34:00 +02:00
2a165380bb
Restrict outbound connections on network groups
Logic borrowed from bitcoin, see CNetAddr::GetGroup() in src/netaddress.cpp
Simplified, so may not work fully identically but for our purposes it's good
enough. Won't connect to more than one host from a /16 subnet on IPv4 and a /32
subnet on IPv6.
2019-11-18 12:20:29 +01:00
b5df242141
Fixed badly formatted docstrings and some wrong text 2019-10-18 01:06:02 +03:00
0a06567071
Connect to bootstrap nodes by name 2019-09-25 18:55:01 +03:00
d8d76ed42d
No random.seed() in protocol.assembleVersionMessage() 2019-08-06 18:11:38 +03:00
ea5c447ea4
protocol: replace missing state.extPort by 'extport' setting
Fixes #1497
2019-08-01 12:40:50 +03:00
d0d0b2ec84
Insert exactly 16 bytes of encoded remote host name into version message 2019-05-24 11:21:23 +03:00
453e045ae5
Minimal implementation of onionpeer object 2019-05-10 12:24:41 +03:00
e163137893
Added pycrypto fallback for RIPEMD160 hash function 2019-04-22 12:53:59 +03:00
ffbc09758c
Moved sslProtocolVersion and sslProtocolCiphers to network.tls 2019-02-04 22:23:28 +02:00
3adadd398f
Removed from shared the functions duplicating protocol:
decryptAndCheckPubkeyPayload, isBitSetWithinBitfield
2019-02-04 22:19:39 +02:00
7c7d6781a2
Removed old code from protocol, shared, state
and class_objectProcessor modules (#1374), temporarily commented
  shared.checkAndShareObjectWithPeers() call
2018-10-27 17:55:01 +03:00
649fda5b81
Merge PR 1261 into v0.6 2018-06-12 00:10:34 +02:00
f97ada87
5221f6a883
adding docstring and integer typecast 2018-05-25 06:13:01 +00:00
coffeedogs
e1c2e8ec46
Fixed: Responded to PR comments 2018-05-24 16:59:40 +01:00
coffeedogs
ab1dd319e3
Fixed: Code style and lint fixes 2018-05-24 10:53:11 +01:00
f97ada87
609a4a92e2
enable delayed POW checks
enable delayed POW checks via optional "receive time" argument
2018-05-23 03:38:05 +00:00
d974065f8e
Handle exceptions from python without ipv6 support 2018-03-22 17:13:34 +02:00
fd1a6c1fa1
Dandelion update
- dandelion fixes
- try to wait as long as possible before expiration if there are no
outbound connections
- expire in invThread rather than singleCleaner thread
- deduplication of code in inv and dinv command methods
- turn on by default, seems to work correctly now
- turn off dandelion if outbound connections are disabled
- start tracking downloads earlier, and faster download loop
- remove some obsolete lines
- minor PEP8 updates
2018-02-03 11:46:39 +01:00
6ce86b1d0a
Dandelion++ implementation
- untested, some functionality may be missing, don't turn on
- also, it randomises upload of requested objects
- affects #1049
2017-09-25 01:17:04 +02:00
0b07b1c89a
Peer discovery updates
- allow loopback addresses, now you can bind different loopback IP
addresses on a single system and they will auto-cross-connect
- always listen for discovery on 0.0.0.0
- [network] - bind now also applies for the TCP socket as well as UDP
socket
- closing socket iterator fix
2017-08-09 17:34:47 +02:00
3941b39136
Randomise node id
- in order to detect if it's connected to to itself, PyBitmessage now
uses a per-connection id rather than a global one
2017-07-10 07:10:05 +02:00
c85d52b8e8
Asyncore updates
- asyncore is now on by default
- inv announcements implemented
- bandwidth limit implemented / fixed
- stats on download / upload speed now work
- make prints into logger
- limit knownNodes to 20k as it was before
- green light fixed
- other minor fixes
2017-05-29 00:24:07 +02:00
f8b4b427fc
Asyncore update
- bugfixes
- UDP socket for local peer discovery
- new function assembleAddr to unify creating address command
- open port checker functionality (inactive)
- sendBigInv is done in a thread separate from the network IO
thread
2017-05-27 19:09:21 +02:00
e309a1edb3
Asyncore update
- separate queue for processing blocking stuff on reception
- rewrote write buffer as a queue
- some addr handling
- number of half open connections correct
2017-05-25 23:04:33 +02:00
d635e515b9
Big Asyncore update
- most of the stuff is done so it partially works
- disabled pollers other than select (debugging necessary)
- can switch in the settings, section network, option asyncore (defaults
to False)
2017-05-24 16:51:49 +02:00
96d58f3c11
Asyncore update (WIP) 2017-04-16 18:27:15 +02:00
46c9ea9403
Async network updates (WIP)
- cleaner command handling
- separating into header and command handling
- incoming connection handler
- bugfixes and more debug information
2017-03-20 18:32:26 +01:00
49869d0b56
Networking subsystem updates
- version command struct for faster unpacking
- increase read buffer to 2MB to allow a full command to fit
- initial bitmessage protocol class (WIP)
- error handling
- remove duplicate method
2017-03-11 11:12:08 +01:00
88658b074e
Socks proxy hostname resolving error handling
- if resolving fails, it wasn't handled
2017-02-26 20:03:14 +01:00
6062277d60
Rename configparser.py to bmconfigparser.py
- it was causing problems with py2app because the source of python's own
  CongigParser is also configparser.py
2017-02-22 09:34:54 +01:00
a95f4aa255
LibreSSL compatibility
- code distinguishes between OpenSSL 1.1.x and LibreSSL and works with
  both
2017-02-18 17:22:17 +01:00
157881bc63
Cyclic import fix
- networkDefaultProofOfWorkNonceTrialsPerByte and
  networkDefaultPayloadLengthExtraBytes cyclic import fix
- PyBitmessage should launch now when there's no keys.dat
2017-02-08 20:37:42 +01:00
2cc4435cfc
Imports, typos, syntax errors
- remove obsolete imports
- add missing imports
- fix typos
- fix syntax errors
- thanks to landscape.io for report
2017-02-08 14:19:02 +01:00
f6bdad18a3
Improved stream handling
- version command sends list of all participating streams
- biginv sends lists of hosts for all streams the peer wants (plus
  immediate children)
- objects will spread to all peers that advertise the associated stream
- please note these are just network subsystem adjustments, streams
  aren't actually usable yet
2017-02-06 17:47:05 +01:00
79b566a907
Fix bitflags in version packet 2017-02-06 17:39:42 +01:00
02a7c59de8
OpenSSL 1.1.0 compatibility fixes
- part 2, continued from previous commit
2017-01-14 17:50:49 +01:00
59b5ac3a61
OpenSSL 1.1.0 compatibility fixes
- function check missed 1.1.0 release
- TLS didn't work with anonymous ciphers
2017-01-14 17:47:57 +01:00
ff8deebf60
Keep track of network protocol status 2017-01-12 19:18:56 +01:00
5ceb920bd6
TLS tuning
- allow TLS > 1.0 with python >= 2.7.9
- tune ssl_context with python >= 2.7.9
2017-01-11 20:47:27 +01:00
cdcdf11d59
Missing import fix 2017-01-11 17:46:33 +01:00