commit ec33ca2aa9345c83736b229b8440ca83cb80e30b Author: Damian Johnson atagar@torproject.org Date: Sat Jul 25 19:36:57 2015 -0700
Drop address and port from Endpoint class
Arm had an Endpoint to encapsulate connection information. Great! But Stem gives us a Connection struct so... yeah. Lets use that. --- nyx/connections/conn_entry.py | 54 +++++++++++++++-------------------------- nyx/connections/conn_panel.py | 7 +++--- nyx/connections/entries.py | 2 +- 3 files changed, 24 insertions(+), 39 deletions(-)
diff --git a/nyx/connections/conn_entry.py b/nyx/connections/conn_entry.py index ec1779e..d0ff8dc 100644 --- a/nyx/connections/conn_entry.py +++ b/nyx/connections/conn_entry.py @@ -59,34 +59,20 @@ class Endpoint: """
def __init__(self, address, port): - self.address = address - self.port = port + self._address = address + self._port = port self.is_or_port = False # if set, consider the port to possibly be an ORPort
# if set then this overwrites fingerprint lookups
self.fingerprint_overwrite = None
- def get_address(self): - """ - Provides the address of the endpoint. - """ - - return self.address - - def get_port(self): - """ - Provides the port of the endpoint. - """ - - return self.port - def get_locale(self, default = None): """ Provides the two letter country code of this relay. """
- return tor_controller().get_info('ip-to-country/%s' % self.address, default) + return tor_controller().get_info('ip-to-country/%s' % self._address, default)
def get_fingerprint(self, default = None): """ @@ -96,7 +82,7 @@ class Endpoint: if self.fingerprint_overwrite: return self.fingerprint_overwrite
- my_fingerprint = nyx.util.tracker.get_consensus_tracker().get_relay_fingerprint(self.address, self.port if self.is_or_port else None) + my_fingerprint = nyx.util.tracker.get_consensus_tracker().get_relay_fingerprint(self._address, self._port if self.is_or_port else None) return my_fingerprint if my_fingerprint else default
def get_nickname(self, default = None): @@ -191,12 +177,12 @@ class ConnectionLine(entries.ConnectionPanelLine):
ip_value = 0
- for comp in self.foreign.get_address().split('.'): + for comp in self.connection.remote_address.split('.'): ip_value *= 255 ip_value += int(comp)
self.sort_address = ip_value - self.sort_port = int(self.foreign.get_port()) + self.sort_port = self.connection.remote_port
def get_listing_entry(self, width, current_time, listing_type): """ @@ -307,7 +293,7 @@ class ConnectionLine(entries.ConnectionPanelLine): controller = tor_controller()
if controller.is_user_traffic_allowed().inbound: - all_matches = nyx.util.tracker.get_consensus_tracker().get_all_relay_fingerprints(self.foreign.get_address()) + all_matches = nyx.util.tracker.get_consensus_tracker().get_all_relay_fingerprints(self.connection.remote_address) return all_matches == [] elif my_type == Category.EXIT: # DNS connections exiting us aren't private (since they're hitting our @@ -318,7 +304,7 @@ class ConnectionLine(entries.ConnectionPanelLine): # will take a bit more work to propagate the information up from the # connection resolver.
- return self.foreign.get_port() != '53' + return self.connection.remote_port != 53
# for everything else this isn't a concern
@@ -351,9 +337,9 @@ class ConnectionLine(entries.ConnectionPanelLine): # Not a known relay. This might be an exit connection.
exit_policy = controller.get_exit_policy(None) - port = self.foreign.get_port() if self.foreign.get_port() else None + port = self.connection.remote_port if self.connection.remote_port else None
- if exit_policy and exit_policy.can_exit_to(self.foreign.get_address(), port): + if exit_policy and exit_policy.can_exit_to(self.connection.remote_address, port): self.cached_type = Category.EXIT elif self._possible_client or self._possible_directory: # This belongs to a known relay. If we haven't eliminated ourselves as @@ -495,13 +481,13 @@ class ConnectionLine(entries.ConnectionPanelLine): # - that extra field plus any previous
used_space = len(LABEL_FORMAT % tuple([''] * 4)) + LABEL_MIN_PADDING - local_port = ':%s' % self.local.get_port() if self.include_port else '' + local_port = ':%s' % self.connection.local_port if self.include_port else ''
src, dst, etc = '', '', ''
if listing_type == entries.ListingType.IP_ADDRESS: - my_external_address = controller.get_info('address', self.local.get_address()) - address_differ = my_external_address != self.local.get_address() + my_external_address = controller.get_info('address', self.connection.local_address) + address_differ = my_external_address != self.connection.local_address
# Expanding doesn't make sense, if the connection isn't actually # going through Tor's external IP address. As there isn't a known @@ -516,7 +502,7 @@ class ConnectionLine(entries.ConnectionPanelLine): if is_expansion_type: src_address = my_external_address + local_port else: - src_address = self.local.get_address() + local_port + src_address = self.connection.local_address + local_port
if my_type in (Category.SOCKS, Category.CONTROL): # Like inbound connections these need their source and destination to @@ -544,7 +530,7 @@ class ConnectionLine(entries.ConnectionPanelLine): if address_differ and is_expansion_type and is_expanded_address_visible and self.include_expanded_addresses and CONFIG['features.connection.showColumn.expandedIp']: # include the internal address in the src (extra 28 characters)
- internal_address = self.local.get_address() + local_port + internal_address = self.connection.local_address + local_port
# If this is an inbound connection then reverse ordering so it's: # <foreign> --> <external> --> <internal> @@ -705,7 +691,7 @@ class ConnectionLine(entries.ConnectionPanelLine): if contact: lines[6] = 'contact: %s' % contact else: - all_matches = nyx.util.tracker.get_consensus_tracker().get_all_relay_fingerprints(self.foreign.get_address()) + all_matches = nyx.util.tracker.get_consensus_tracker().get_all_relay_fingerprints(self.connection.remote_address)
if all_matches: # multiple matches @@ -761,8 +747,8 @@ class ConnectionLine(entries.ConnectionPanelLine):
# destination of the connection
- address_label = '<scrubbed>' if self.is_private() else self.foreign.get_address() - port_label = ':%s' % self.foreign.get_port() if include_port else '' + address_label = '<scrubbed>' if self.is_private() else self.connection.remote_address + port_label = ':%s' % self.connection.remote_port if include_port else '' destination_address = address_label + port_label
# Only append the extra info if there's at least a couple characters of @@ -772,7 +758,7 @@ class ConnectionLine(entries.ConnectionPanelLine): space_available = max_length - len(destination_address) - 3
if self.get_type() == Category.EXIT and include_port: - purpose = connection.port_usage(self.foreign.get_port()) + purpose = connection.port_usage(self.connection.remote_port)
if purpose: # BitTorrent is a common protocol to truncate, so just use "Torrent" @@ -786,7 +772,7 @@ class ConnectionLine(entries.ConnectionPanelLine): purpose = str_tools.crop(purpose, space_available, ending = str_tools.Ending.HYPHEN)
destination_address += ' (%s)' % purpose - elif not connection.is_private_address(self.foreign.get_address()): + elif not connection.is_private_address(self.connection.remote_address): extra_info = [] controller = tor_controller()
diff --git a/nyx/connections/conn_panel.py b/nyx/connections/conn_panel.py index 18fe7e7..193ec90 100644 --- a/nyx/connections/conn_panel.py +++ b/nyx/connections/conn_panel.py @@ -490,7 +490,7 @@ class ConnectionPanel(panel.Panel, threading.Thread): if client_locale: self._client_locale_usage[client_locale] = self._client_locale_usage.get(client_locale, 0) + 1 elif entry_line.get_type() == conn_entry.Category.EXIT: - exit_port = entry_line.foreign.get_port() + exit_port = entry_line.connection.remote_port self._exit_port_usage[exit_port] = self._exit_port_usage.get(exit_port, 0) + 1
self._entries, self._entry_lines = new_entries, list(itertools.chain.from_iterable([entry.get_lines() for entry in new_entries])) @@ -516,8 +516,7 @@ class ConnectionPanel(panel.Panel, threading.Thread): app_ports = []
for line in unresolved_lines: - app_conn = line.local if line.get_type() == conn_entry.Category.HIDDEN else line.foreign - app_ports.append(app_conn.get_port()) + app_ports.append(line.connection.local_port if line.get_type() == conn_entry.Category.HIDDEN else line.connection.remote_port)
# Queue up resolution for the unresolved ports (skips if it's still working # on the last query). @@ -538,7 +537,7 @@ class ConnectionPanel(panel.Panel, threading.Thread):
for line in unresolved_lines: is_local = line.get_type() == conn_entry.Category.HIDDEN - line_port = line.local.get_port() if is_local else line.foreign.get_port() + line_port = line.connection.local_port if is_local else line.connection.remote_port
if line_port in app_results: # sets application attributes if there's a result with this as the diff --git a/nyx/connections/entries.py b/nyx/connections/entries.py index 301b457..06d3831 100644 --- a/nyx/connections/entries.py +++ b/nyx/connections/entries.py @@ -146,7 +146,7 @@ class ConnectionPanelEntry: elif attr == SortAttr.UPTIME: return self.start_time elif attr == SortAttr.COUNTRY: - if connection_line.connection.is_private_address(self.lines[0].foreign.get_address()): + if connection_line.connection.is_private_address(self.lines[0].connection.remote_address): return '' else: return connection_line.foreign.get_locale('')