ipaddrs: import function from latest Tahoe
I'm hoping this will help with Cygwin (#13), by removing/bypassing the assert(os.path.isabs) check.
This commit is contained in:
		
							parent
							
								
									58f20d79a7
								
							
						
					
					
						commit
						2596c58e4a
					
				| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
 | 
			
		||||
import os, re, subprocess, errno
 | 
			
		||||
from sys import platform
 | 
			
		||||
from twisted.python.procutils import which
 | 
			
		||||
 | 
			
		||||
# Wow, I'm really amazed at home much mileage we've gotten out of calling
 | 
			
		||||
# the external route.exe program on windows...  It appears to work on all
 | 
			
		||||
| 
						 | 
				
			
			@ -14,6 +15,7 @@ _win32_commands = (('route.exe', ('print',), _win32_re),)
 | 
			
		|||
# These work in most Unices.
 | 
			
		||||
_addr_re = re.compile(r'^\s*inet [a-zA-Z]*:?(?P<address>\d+\.\d+\.\d+\.\d+)[\s/].+$', flags=re.M|re.I|re.S)
 | 
			
		||||
_unix_commands = (('/bin/ip', ('addr',), _addr_re),
 | 
			
		||||
                  ('/sbin/ip', ('addr',), _addr_re),
 | 
			
		||||
                  ('/sbin/ifconfig', ('-a',), _addr_re),
 | 
			
		||||
                  ('/usr/sbin/ifconfig', ('-a',), _addr_re),
 | 
			
		||||
                  ('/usr/etc/ifconfig', ('-a',), _addr_re),
 | 
			
		||||
| 
						 | 
				
			
			@ -32,16 +34,24 @@ def find_addresses():
 | 
			
		|||
        commands = _unix_commands
 | 
			
		||||
 | 
			
		||||
    for (pathtotool, args, regex) in commands:
 | 
			
		||||
        if platform != 'win32':
 | 
			
		||||
            assert os.path.isabs(pathtotool), pathtotool
 | 
			
		||||
        if not os.path.isfile(pathtotool):
 | 
			
		||||
            continue
 | 
			
		||||
        # If pathtotool is a fully qualified path then we just try that.
 | 
			
		||||
        # If it is merely an executable name then we use Twisted's
 | 
			
		||||
        # "which()" utility and try each executable in turn until one
 | 
			
		||||
        # gives us something that resembles a dotted-quad IPv4 address.
 | 
			
		||||
 | 
			
		||||
        if os.path.isabs(pathtotool):
 | 
			
		||||
            exes_to_try = [pathtotool]
 | 
			
		||||
        else:
 | 
			
		||||
            exes_to_try = which(pathtotool)
 | 
			
		||||
 | 
			
		||||
        for exe in exes_to_try:
 | 
			
		||||
            try:
 | 
			
		||||
            addresses = _query(pathtotool, args, regex)
 | 
			
		||||
                addresses = _query(exe, args, regex)
 | 
			
		||||
            except Exception:
 | 
			
		||||
                addresses = []
 | 
			
		||||
            if addresses:
 | 
			
		||||
                return addresses
 | 
			
		||||
 | 
			
		||||
    return ["127.0.0.1"]
 | 
			
		||||
 | 
			
		||||
def _query(path, args, regex):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user