[tor-commits] [stem/master] Added Windows Support for Connection Resolver

atagar at torproject.org atagar at torproject.org
Tue Feb 17 18:08:20 UTC 2015


commit 5b26c692a13d6941a7ff21ea287979f2f5e45172
Author: icodemachine <gauthamnekk at gmail.com>
Date:   Thu Feb 12 16:14:25 2015 +0530

    Added Windows Support for Connection Resolver
---
 stem/util/connection.py |   37 +++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/stem/util/connection.py b/stem/util/connection.py
index b7deb7b..cf9d442 100644
--- a/stem/util/connection.py
+++ b/stem/util/connection.py
@@ -27,17 +27,18 @@ Connection and networking based utility functions.
 
   .. versionadded:: 1.1.0
 
-  ================= ===========
-  Resolver          Description
-  ================= ===========
-  **PROC**          /proc contents
-  **NETSTAT**       netstat command
-  **SS**            ss command
-  **LSOF**          lsof command
-  **SOCKSTAT**      sockstat command under *nix
-  **BSD_SOCKSTAT**  sockstat command under FreeBSD
-  **BSD_PROCSTAT**  procstat command under FreeBSD
-  ================= ===========
+  ================= 	===========
+  Resolver          	Description
+  ================= 	===========
+  **PROC**          	/proc contents
+  **NETSTAT**      		netstat 
+  **NETSTAT_WINDOWS**	netstat command under Windows
+  **SS**           	 	ss command
+  **LSOF**           	lsof command
+  **SOCKSTAT**     	 	sockstat command under *nix
+  **BSD_SOCKSTAT** 	 	sockstat command under FreeBSD
+  **BSD_PROCSTAT** 	 	procstat command under FreeBSD
+  =================	 	===========
 """
 
 import collections
@@ -63,6 +64,7 @@ LOG_CONNECTION_RESOLUTION = False
 Resolver = enum.Enum(
   ('PROC', 'proc'),
   ('NETSTAT', 'netstat'),
+  ('NETSTAT_WINDOWS', 'netstat'),
   ('SS', 'ss'),
   ('LSOF', 'lsof'),
   ('SOCKSTAT', 'sockstat'),
@@ -91,6 +93,9 @@ RESOLVER_COMMAND = {
   # -n = prevents dns lookups, -p = include process
   Resolver.NETSTAT: 'netstat -np',
 
+  #-ano is a Windows variant for netstat including pid
+  Resolver.NETSTAT_WINDOWS: 'netstat -ano',
+  
   # -n = numeric ports, -p = include process, -t = tcp sockets, -u = udp sockets
   Resolver.SS: 'ss -nptu',
 
@@ -112,6 +117,10 @@ RESOLVER_FILTER = {
 
   # tcp        0    586 192.168.0.1:44284       38.229.79.2:443         ESTABLISHED 15843/tor
   Resolver.NETSTAT: '^{protocol}\s+.*\s+{local_address}:{local_port}\s+{remote_address}:{remote_port}\s+ESTABLISHED\s+{pid}/{name}\s*$',
+  
+  # tcp        586 192.168.0.1:44284       38.229.79.2:443         ESTABLISHED 15843
+  
+  Resolver.NETSTAT_WINDOWS: '^\s*{protocol}\s+{local_address}:{local_port}\s+{remote_address}:{remote_port}\s+ESTABLISHED\s+{pid}\s*$',  
 
   # tcp    ESTAB      0      0           192.168.0.20:44415       38.229.79.2:443    users:(("tor",15843,9))
   Resolver.SS: '^{protocol}\s+ESTAB\s+.*\s+{local_address}:{local_port}\s+{remote_address}:{remote_port}\s+users:\(\("{name}",{pid},[0-9]+\)\)$',
@@ -256,11 +265,11 @@ def system_resolvers(system = None):
       system = platform.system()
 
   if system == 'Windows':
-    resolvers = []
+    resolvers = [Resolver.NETSTAT_WINDOWS]
   elif system in ('Darwin', 'OpenBSD'):
     resolvers = [Resolver.LSOF]
   elif system == 'FreeBSD':
-    # Netstat is available, but lacks a '-p' equivalent so we can't associate
+    # Netstat is available, but lacks a '-p' equivilant so we can't associate
     # the results to processes. The platform also has a ss command, but it
     # belongs to a spreadsheet application.
 
@@ -636,4 +645,4 @@ def _cryptovariables_equal(x, y):
 # We renamed our methods to drop a redundant 'get_*' prefix, so alias the old
 # names for backward compatability.
 
-get_system_resolvers = system_resolvers
+get_system_resolvers = system_resolvers
\ No newline at end of file





More information about the tor-commits mailing list