mirror of
				https://github.com/9001/copyparty.git
				synced 2025-10-31 04:32:20 -06:00 
			
		
		
		
	unvendorable ifaddr (#887);
stolen/ifaddr/ can be deleted and replaced with system lib; this is safe and will not affect any functionality
This commit is contained in:
		
							parent
							
								
									805a7054e9
								
							
						
					
					
						commit
						656f0a6c39
					
				
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							|  | @ -138,6 +138,7 @@ made in Norway 🇳🇴 | ||||||
| * [dependencies](#dependencies) - mandatory deps | * [dependencies](#dependencies) - mandatory deps | ||||||
|     * [optional dependencies](#optional-dependencies) - install these to enable bonus features |     * [optional dependencies](#optional-dependencies) - install these to enable bonus features | ||||||
|         * [dependency chickenbits](#dependency-chickenbits) - prevent loading an optional dependency |         * [dependency chickenbits](#dependency-chickenbits) - prevent loading an optional dependency | ||||||
|  |         * [dependency unvendoring](#dependency-unvendoring) - force use of system modules | ||||||
|     * [optional gpl stuff](#optional-gpl-stuff) |     * [optional gpl stuff](#optional-gpl-stuff) | ||||||
| * [sfx](#sfx) - the self-contained "binary" (recommended!) | * [sfx](#sfx) - the self-contained "binary" (recommended!) | ||||||
|     * [copyparty.exe](#copypartyexe) - download [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) (win8+) or [copyparty32.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty32.exe) (win7+) |     * [copyparty.exe](#copypartyexe) - download [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) (win8+) or [copyparty32.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty32.exe) (win7+) | ||||||
|  | @ -2991,6 +2992,18 @@ example: `PRTY_NO_PIL=1 python3 copyparty-sfx.py` | ||||||
| * python2.7 on windows: `PRTY_NO_FFMPEG` + `PRTY_NO_FFPROBE` saves startup time | * python2.7 on windows: `PRTY_NO_FFMPEG` + `PRTY_NO_FFPROBE` saves startup time | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | ### dependency unvendoring | ||||||
|  | 
 | ||||||
|  | force use of system modules  instead of the vendored versions: | ||||||
|  | 
 | ||||||
|  | | env-var              | what it does | | ||||||
|  | | -------------------- | ------------ | | ||||||
|  | | `PRTY_SYS_ALL`       | all of the below | | ||||||
|  | | `PRTY_SYS_IFADDR`    | replace [stolen/ifaddr](./copyparty/stolen/ifaddr) with [upstream](https://pypi.org/project/ifaddr/) | | ||||||
|  | 
 | ||||||
|  | to debug, run copyparty with `PRTY_MODSPEC=1` to see where it's getting each module from | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ## optional gpl stuff | ## optional gpl stuff | ||||||
| 
 | 
 | ||||||
| some bundled tools have copyleft dependencies, see [./bin/#mtag](bin/#mtag) | some bundled tools have copyleft dependencies, see [./bin/#mtag](bin/#mtag) | ||||||
|  |  | ||||||
|  | @ -21,6 +21,7 @@ from .util import ( | ||||||
|     VF_CAREFUL, |     VF_CAREFUL, | ||||||
|     Netdev, |     Netdev, | ||||||
|     atomic_move, |     atomic_move, | ||||||
|  |     get_adapters, | ||||||
|     min_ex, |     min_ex, | ||||||
|     sunpack, |     sunpack, | ||||||
|     termsize, |     termsize, | ||||||
|  | @ -456,8 +457,6 @@ class TcpSrv(object): | ||||||
|             self._distribute_netdevs() |             self._distribute_netdevs() | ||||||
| 
 | 
 | ||||||
|     def detect_interfaces(self, listen_ips: list[str]) -> dict[str, Netdev]: |     def detect_interfaces(self, listen_ips: list[str]) -> dict[str, Netdev]: | ||||||
|         from .stolen.ifaddr import get_adapters |  | ||||||
| 
 |  | ||||||
|         listen_ips = [x for x in listen_ips if not x.startswith(("unix:", "fd:"))] |         listen_ips = [x for x in listen_ips if not x.startswith(("unix:", "fd:"))] | ||||||
| 
 | 
 | ||||||
|         nics = get_adapters(True) |         nics = get_adapters(True) | ||||||
|  |  | ||||||
|  | @ -136,6 +136,25 @@ try: | ||||||
| except: | except: | ||||||
|     pass |     pass | ||||||
| 
 | 
 | ||||||
|  | try: | ||||||
|  |     if os.environ.get("PRTY_NO_IFADDR"): | ||||||
|  |         raise Exception() | ||||||
|  |     try: | ||||||
|  |         if os.getenv("PRTY_SYS_ALL") or os.getenv("PRTY_SYS_IFADDR"): | ||||||
|  |             raise ImportError() | ||||||
|  | 
 | ||||||
|  |         from .stolen.ifaddr import get_adapters | ||||||
|  |     except ImportError: | ||||||
|  |         from ifaddr import get_adapters | ||||||
|  | 
 | ||||||
|  |     HAVE_IFADDR = True | ||||||
|  | except: | ||||||
|  |     HAVE_IFADDR = False | ||||||
|  | 
 | ||||||
|  |     def get_adapters(include_unconfigured=False): | ||||||
|  |         return [] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| try: | try: | ||||||
|     if os.environ.get("PRTY_NO_SQLITE"): |     if os.environ.get("PRTY_NO_SQLITE"): | ||||||
|         raise Exception() |         raise Exception() | ||||||
|  | @ -173,6 +192,11 @@ try: | ||||||
| except: | except: | ||||||
|     pass |     pass | ||||||
| 
 | 
 | ||||||
|  | if os.getenv("PRTY_MODSPEC"): | ||||||
|  |     from inspect import getsourcefile | ||||||
|  | 
 | ||||||
|  |     print("PRTY_MODSPEC: ifaddr:", getsourcefile(get_adapters)) | ||||||
|  | 
 | ||||||
| if True:  # pylint: disable=using-constant-test | if True:  # pylint: disable=using-constant-test | ||||||
|     import types |     import types | ||||||
|     from collections.abc import Callable, Iterable |     from collections.abc import Callable, Iterable | ||||||
|  | @ -2928,8 +2952,6 @@ def read_socket_chunked( | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def list_ips() -> list[str]: | def list_ips() -> list[str]: | ||||||
|     from .stolen.ifaddr import get_adapters |  | ||||||
| 
 |  | ||||||
|     ret: set[str] = set() |     ret: set[str] = set() | ||||||
|     for nic in get_adapters(): |     for nic in get_adapters(): | ||||||
|         for ipo in nic.ips: |         for ipo in nic.ips: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue