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 | ||||
|     * [optional dependencies](#optional-dependencies) - install these to enable bonus features | ||||
|         * [dependency chickenbits](#dependency-chickenbits) - prevent loading an optional dependency | ||||
|         * [dependency unvendoring](#dependency-unvendoring) - force use of system modules | ||||
|     * [optional gpl stuff](#optional-gpl-stuff) | ||||
| * [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+) | ||||
|  | @ -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 | ||||
| 
 | ||||
| 
 | ||||
| ### 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 | ||||
| 
 | ||||
| some bundled tools have copyleft dependencies, see [./bin/#mtag](bin/#mtag) | ||||
|  |  | |||
|  | @ -21,6 +21,7 @@ from .util import ( | |||
|     VF_CAREFUL, | ||||
|     Netdev, | ||||
|     atomic_move, | ||||
|     get_adapters, | ||||
|     min_ex, | ||||
|     sunpack, | ||||
|     termsize, | ||||
|  | @ -456,8 +457,6 @@ class TcpSrv(object): | |||
|             self._distribute_netdevs() | ||||
| 
 | ||||
|     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:"))] | ||||
| 
 | ||||
|         nics = get_adapters(True) | ||||
|  |  | |||
|  | @ -136,6 +136,25 @@ try: | |||
| except: | ||||
|     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: | ||||
|     if os.environ.get("PRTY_NO_SQLITE"): | ||||
|         raise Exception() | ||||
|  | @ -173,6 +192,11 @@ try: | |||
| except: | ||||
|     pass | ||||
| 
 | ||||
| if os.getenv("PRTY_MODSPEC"): | ||||
|     from inspect import getsourcefile | ||||
| 
 | ||||
|     print("PRTY_MODSPEC: ifaddr:", getsourcefile(get_adapters)) | ||||
| 
 | ||||
| if True:  # pylint: disable=using-constant-test | ||||
|     import types | ||||
|     from collections.abc import Callable, Iterable | ||||
|  | @ -2928,8 +2952,6 @@ def read_socket_chunked( | |||
| 
 | ||||
| 
 | ||||
| def list_ips() -> list[str]: | ||||
|     from .stolen.ifaddr import get_adapters | ||||
| 
 | ||||
|     ret: set[str] = set() | ||||
|     for nic in get_adapters(): | ||||
|         for ipo in nic.ips: | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue