Commit Graph

333 Commits

Author SHA1 Message Date
64d2a831c4
Fix line break after binary operator in proxy 2021-04-29 17:44:01 +03:00
1ad86bcb5b
Init uploadChunk and downloadChunk in AdvancedDispatcher 2021-04-29 17:44:00 +03:00
8cf0a0bb46
Move initialization of connectedAt to AdvancedDispatcher 2021-04-29 17:44:00 +03:00
2c6f3c2fe1
Formatted lines for PEP8 in network.tls, removed stale comments 2021-04-29 17:44:00 +03:00
3f63278468
Done PEP8 formatting in network.bmproto (Fixes: #1703) 2021-04-29 17:44:00 +03:00
79efacffb1
Replaced lost UDPSocket.maxTimeOffset by constants.MAX_TIME_OFFSET
Closes: #1696
2021-03-01 19:55:47 +02:00
5f9d507717
announceInterval is for AnnounceThread, not UDPSocket 2021-02-22 19:56:24 +02:00
6168d63699
Replace formatting socket.error by exc_info in network.udp 2021-02-22 19:56:24 +02:00
d8cf148d4a
Replaced print operator by print function in network.asyncore_pollchoose
and unmaintained modules.
2021-02-18 17:15:56 +02:00
448e9e2f36
Prevent adding bootstrap servers to knownnodes when received in addr 2021-01-22 18:52:34 +02:00
3108115570
Shorten Bootstrapper methods:
handle_close() and set_connection_fully_established()
2021-01-22 18:52:34 +02:00
2b5f605857
Set close_reason for exceptions in network.tls 2021-01-22 18:52:33 +02:00
9540d5fabe
Fixing tor related tests:
- knownnodes.cleanupKnownNodes() should set knownNodesActual = False
   if there are no nodes in stream 1 (repeated bootstrapping)
 - set socksproxytype before _initiate_bootstrap()
 - wait 5 sec in _initiate_bootstrap() to be sure all connections are closed
 - plugins do not work on travis - use socksproxytype = SOCKS5,
   check tor presence by trying to bind on port 9050
 - successfull connection to 3 onion nodes in 6 minutes is not guaranteed -
   check that bitmessage doesn't try non-onion nodes
2021-01-22 18:52:33 +02:00
navjot
9c5d329c90
replace print with logger and remove unused file 2021-01-18 23:31:45 +05:30
navjot
46e2f04488
move randomtrackingdict.py out side the network dircetory 2020-12-29 13:12:22 +05:30
navjot
a2ab0a02dc
written test case randomtrackingdict dict module 2020-12-28 16:01:23 +05:30
navjot
9fe4ad0489
test case for testing old knownnodes pickle
-test case for testing old knownnodes pickle

-fixed CQ for tests.core module

-implemented shutil.copyfile feature and use small size knownnodes.dat file in test_pattern dir

-remove unnecessary code

-Fixed CQ of tests.core module
2020-12-21 22:50:38 +05:30
navjot
c18b544732
fixed socket error on sendato #1583 2020-10-23 17:54:59 +05:30
95fc981ae2
Finish timeOffsetWrongCount
- now notifies in status bar
- fixes #1433
2020-08-31 11:52:30 +02:00
d56191ebba
Move knownnodes module into network package 2020-07-21 16:21:43 +03:00
b165a6b4ef
Do addKnownNode recursively for multiple streams 2020-07-21 16:21:43 +03:00
f9dc8eaacf
Define len() for network.BMConnectionPool 2020-07-21 16:21:43 +03:00
1035d2aec4
Format network.tcp for flake8 2020-07-21 16:21:42 +03:00
54e44eac95
Add or update knownnode for connected Peer for both inbound
and outbound connections when fully established, update lastseen
before closing connection.
2020-07-21 16:21:42 +03:00
d9ddbe8d24
Do not update addrQueue if not added node to own knownnodes
and more checks in knownnodes.addKnownNode moved from bmproto.
2020-07-21 16:21:42 +03:00
739ff7b439
Add knownnodes only by knownnodes.addKnownNode(),
now it can update lastseen.
2020-07-21 16:21:36 +03:00
lakshya
3f773c78f7
setting, openssl and bmproto quality fixes 2020-05-28 13:43:03 +05:30
d15e614bb1
Fix streams decoding in BMProto.bm_command_version() 2020-05-22 12:58:04 +03:00
d09782e53d
Obsolete bitmessagemain.connectToStream(), use BMConnectionPool method 2020-05-05 17:30:31 +03:00
185ad66ea5
Moved most of variables from shared elsewhere (mostly to state) 2020-05-05 17:27:38 +03:00
11bec55be5
Don't put addresses into queue
- attempt to fix #1598
- seems to work
- addresses won't be uploaded/announced anymore other than after connecting,
  Later I need to find out how to announce them without causing problems, but
  for the time disabling this seems an acceptable drawback
2020-02-05 20:41:36 +08:00
lakshyacis
6139efc377
Imported packages sequencing and formatting 2 2020-01-27 14:43:25 +05:30
lakshyacis
f0bc74e658
Network fixes 2020-01-10 16:51:17 +05:30
lakshyacis
81872c7f2f
network code quality fixes 2020-01-08 12:53:04 +05:30
03316496b7
Stop UDPSocket on socket.error 101 (Network is unreachable) 2019-12-24 12:41:01 +02:00
a69732f060
Addrthread finish
- addrthread is supposed to spread addresses as they appear. This was never
  finished during migration to asyncore
- conservative to prevent flood and loops
- randomises order
- move protocol constants into a separate file
- move addr packet creation into a separate file
- see #1575
2019-11-30 13:47:24 +01: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
d6c1845b71
Moved Peer from state to network.node
and trustedPeer to network.connectionpool.BMConnectionPool attribute
2019-11-11 17:13:12 +02:00
7a1f803c92
network.BMConnectionPool: added shortcuts connections()
and establishedConnections(), some formatting fixes
2019-11-11 12:03:04 +02:00
341651973a
Reduced imports:
- exported from network package all objects used outside;
  - made all threads available in threads module.

Wrote some module docstrings.
2019-11-11 12:03:03 +02:00
George McCandless
b42f536d23
Add a checkbox to the network settings tab that allows restricting outbound connections to onion services (i.e., hosts that end with '.onion'). 2019-10-21 00:03:41 +00:00
bbdbca253b
Added warnings about changing port settings in api and network.tcp 2019-10-18 09:35:31 +03:00
d2a896697d
Used logger.isEnabledFor() to prevent unneeded calculations 2019-10-18 09:35:31 +03:00
7a89109fc9
New logging approach in order to reduce imports from submodules
and use logging without risk of circular import. Only subpackage
that imports from debug is bitmessageqt - because it also uses
debug.resetLogging().
Instead of from debug import logger is now recommended to use:

import logging

logger = logging.getLogger('default')

All subclasses of StoppableThread now have a logger attribute.
All threading related stuff except for set_thread_name()
was moved from helper_threading to network.threads.

Fixed two my mistakes from previous edit of debug in a1a8d3a:

 - logger.handlers is not dict but iterable
 - sys.excepthook should be set unconditionally
2019-10-18 09:35:24 +03:00
53cc08edec
Renamed invalid python module http-old 2019-10-18 01:06:02 +03:00
b5df242141
Fixed badly formatted docstrings and some wrong text 2019-10-18 01:06:02 +03:00
88f2c51595
quzwelsuziwqgpt2.onion:8444 is also a bootstrap server 2019-09-25 18:55:02 +03:00
bdb09c2d00
Ignore self node in connectionchooser.chooseConnection() 2019-09-25 18:55:01 +03:00
4825c5a136
Universal bootstrap procedure for any connection type 2019-09-25 18:55:01 +03:00
0a06567071
Connect to bootstrap nodes by name 2019-09-25 18:55:01 +03:00
lakshyacis
a961a4a2fb
proxy pylint fixes 2019-09-16 19:13:56 +05:30
lakshyacis
1e446b768c
node pylint fixes 2019-09-16 19:13:56 +05:30
lakshyacis
915bfb757d
networkthread pylint fixes 2019-09-16 19:13:55 +05:30
lakshyacis
e74affe636
udp pylint fixes 2019-09-16 19:13:55 +05:30
lakshyacis
498232dbea
tls pylint fixes 2019-09-16 19:13:54 +05:30
lakshyacis
dccb1dbb3c
tls flake8 fixes 2019-09-16 19:13:54 +05:30
lakshyacis
fcffb42629
stats pylint fixes 2019-09-16 19:13:54 +05:30
lakshyacis
7d0bd1cf7a
stats flake8 fixes 2019-09-16 19:13:53 +05:30
lakshyacis
8182e159df
socks5 flake8 fixes 2019-09-16 19:13:53 +05:30
lakshyacis
79d1b1b9e2
socks4a pylint fixes 2019-09-16 19:13:53 +05:30
lakshyacis
253cec15c4
proxy flake8 fixes 2019-09-10 16:08:18 +05:30
lakshyacis
fa6ef4f933
objectracker pylint fixes 2019-09-10 16:07:02 +05:30
lakshyacis
db1593f428
https flake8 fixes 2019-09-10 15:34:20 +05:30
lakshyacis
77651eebe3
objecttracker flake8 fixes 2019-09-10 15:34:20 +05:30
lakshyacis
ef77a9816e
invthread pylint fixes 2019-09-10 15:34:20 +05:30
lakshyacis
97cbe43294
invthread flake8 fixes 2019-09-10 15:34:20 +05:30
lakshyacis
28e954902d
httpd flake8 fixes 2019-09-10 15:34:20 +05:30
lakshyacis
2c71612a4b
http pylint fixes 2019-09-10 15:34:19 +05:30
lakshyacis
7eced454d1
http flake8 fixes 2019-09-03 19:56:59 +05:30
lakshyacis
68e09a5e30
http-old pylint fixes 2019-09-03 18:41:24 +05:30
lakshyacis
5fcb7fc05e
http-old flake8 fixes 2019-09-03 14:34:17 +05:30
lakshyacis
d8ea0afe40
downloadthread.py Pylint fixes 2019-09-02 19:15:15 +05:30
lakshyacis
8589f01d3d
downloadthread.py flake8 fixes 2019-09-02 19:02:50 +05:30
lakshyacis
b927d51eb3
dandelion.py pylint fixes 2019-09-02 13:53:06 +05:30
lakshyacis
f1b6b16940
connectionpool.py pylint fixes 2019-09-02 13:52:56 +05:30
lakshyacis
5521c16478
bmproto pylint fixes 2019-08-30 16:12:39 +05:30
lakshyacis
469d289a97
Announcethread Pylint Fixes 2019-08-30 15:23:20 +05:30
lakshyacis
548fcf0d0a
announcethread Flake8 Fixes 2019-08-29 19:24:13 +05:30
f180b1a5b0
Moved randomtrackingdict to network, it's used only there 2019-08-18 17:34:58 +03:00
ad2a2b3fb4
Inherit helper_threading.StoppableThread from threading.Thread
and do random.seed() in its __init__
2019-08-06 18:07:19 +03:00
27e74a15d7
flake8: network.connectionchooser 2019-07-29 15:54:19 +03:00
67d14f9e73
Docstrings in network.bmproto from #1362 2019-07-26 12:08:56 +03:00
bbab0010e6
Moved a test script from network.tcp to tests.core 2019-07-26 12:08:42 +03:00
391b5ded87
Docstrings in network from #1368 2019-07-26 12:08:32 +03:00
2998599442
Docstrings in network from #1401 2019-07-26 12:08:18 +03:00
19ab56a979
network.connectionpool: get any setting with .safeGet.. 2019-07-26 12:08:18 +03:00
996e71ae6f
flake8 in network package 2019-07-26 12:07:57 +03:00
0eb4f46923
Formatting based on review 2019-07-11 15:32:00 +02:00
465a276c02
Dandelion fixes
- expiration wasn't handled correctly
- objects with no child stems never expired. While this is better for
  anonymity, it can cause objects getting stuck
- upon expiration the nodes weren't marked as not having the object, causing it
  to not be advertised
- I haven't tested it but at least I don't think can make things worse
2019-07-11 11:03:48 +02:00
453e045ae5
Minimal implementation of onionpeer object 2019-05-10 12:24:41 +03:00
e25fb857cb
Slightly reduced TCPConnection.sendAddr() and changed
in order to send only nodes with non-negative rating
2019-02-07 18:52:08 +02:00
ffbc09758c
Moved sslProtocolVersion and sslProtocolCiphers to network.tls 2019-02-04 22:23:28 +02:00
b52cb9360f
Moved unused timeOffsetWrongCount from shared to BMProto 2019-02-04 22:23:28 +02:00
5b5ec2b63d
shared.connectedHostsList is obsolete 2019-01-04 16:17:01 +02:00
1cdbb90f22
Get rid of map 2018-12-20 20:34:09 +01:00
3a4eed0f8b
getdata performance optimisation
- reduce number of calls to time.time()
- no need to shuffle, that's done by the upload thread
- get rid of unused import
2018-12-20 20:34:06 +01:00
ca567acab3
Put uploads into a separate thread
- instead of being processed in the ReceiveQueue thread, uploads are now done
  in a dedicated thread. Only the parsing is done in ReceiveQueue thread.
- the UploadThread is modelled based on the DownloadThred, but simpler.
- it checks for intersection attack, eliminates duplicates and restricts the
  write buffer size to 2MB (may still grow slightly higher if too many big
  objects are requested, but the absolute limit appears to be about 4.5MB in the
  worst case scenario).
- the restriction of the write buffer may cause some upload throttling (to
  about 2MB per second per connection), but can be optimised later
- fixes #1414
2018-12-20 20:34:01 +01:00
e1d5604674
Fix #1408 (duplicate connections to some hosts), got from chan 2018-12-18 19:36:46 +02:00
38318150bd
Moved missingObjects dict from state to network.objectracker 2018-12-16 17:44:26 +02:00
coffeedogs
10128b7560
Changes based on style and lint checks. (final_code_quality_2) 2018-10-31 17:06:26 +00:00