-
-
Notifications
You must be signed in to change notification settings - Fork 101
/
Copy pathHISTORY.txt
275 lines (253 loc) · 13.4 KB
/
HISTORY.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
v0.10.0 - 2025-01-10
- Replaced ctypes based libcurl backend with pymcurl which uses cffi and includes
the latest libcurl binaries
- Fixed #219, #224 - pymcurl uses libcurl with schannel on Windows which loads
certs from the OS
- Fixed #214 - handle case where no headers are received from client
- Fixed issue curl/discussions/15700 where POST was failing in auth=NONE mode for
NTLM proxies
- Fixed issue in the Px docker container that would not stop unless it was killed
v0.9.2 - 2024-03-08
- Fixed issue with libcurl binary on Windows - #212
v0.9.1 - 2024-03-02
- Fixed issue with logging not working when set from px.ini - #204
- Fixed issue with environment variables not propagating to all processes in Linux
- Documented how to install binary version of Px on Windows without running in a
console window - #203
- Fixed issue with quickjs crashing in PAC mode with multiple threads - #198 / #206
v0.9.0 - 2024-01-25
- Added support for domains in noproxy - #2
- Expanded noproxy to work in all proxy modes - #177
- Added --test to verify Px configuration
- Windows binary now created with embeddable Python to avoid being flagged
by virus scanners - #182 #197
- Added support for Python 3.11 and 3.12, removed Python 2.7
- Fixed #183 - keyring import on OSX
- Fixed #187 - removed dependency on keyring_jeepney which is deprecated
- Fixed #188 - removed keyrings.alt and added docs for leveraging third
party keyring backends
- Added support to load Px flags from environment variables and dotenv files
- Changed loading order of px.ini - from CLI flag first, environment next,
working directory and finally from the Px directory
- Fixed #200 - print debug messages when --gateway or --hostonly overrides
listen and allow rules
- Fixed #199 - cache auth mechanism that libcurl discovers and uses with
upstream proxy - speeds up transactions and avoids POST/PUT rewind issue
- Added support to log to the working directory - #189. Logging destination now
configurable via CLI, env and px.ini.
- Added --restart to quit Px and start a new instance - #185
- Fixed #184 - PAC proxy list was including blank entries
- Fixed #152 - increased number of default threads from 5 to 32
- Fixed issue leading to connection reuse by client after HTTPS connection was
closed by server
- Mapped additional libcurl errors to HTTP errors to inform client
- Added support to listen on multiple interfaces - #195
- Added support for --auth=NONE which defers all authentication to the client,
allowing multiple instances of Px to be chained together to access an upstream
proxy that is not directly connected
- Fixed issue with getting all interfaces correctly for --hostonly
- Fixed issue with HTTP PUT not working in some scenarios
- Added support for client authentication - support for NEGOTIATE, NTLM, DIGEST
and BASIC auth with SSPI when available - #117
- Refined --quit to directly communicate with running instances instead of looking
for process matches - fixed issue on OSX where Px was not quitting in script and
pip modes
v0.8.4 - 2023-02-06
- Support for specifying PAC file encoding - #167
- Fixed #164 - PAC function myIpAddress() was broken
- Fixed #161 - PAC regex search was failing
- Fixed #171 - Verbose output implies --foreground
v0.8.3 - 2022-07-19
- Fixed #157 - libcurl wrapper was missing socket definitions for OSX
- Fixed #158 - win32ctypes was not being included in Windows binary
- Fixed #160 - need to convert PAC return values into CURLOPT_PROXY schemes
v0.8.2 - 2022-06-29
- Fixed #155 - prevent SSL connection reuse for libcurl < v7.45
v0.8.1 - 2022-06-27
- Fixed #154 - improved SSL connection handling with libcurl by querying active
socket to get the sock_fd in select() instead of relying on sockopt_callback()
which does not get called when connections get reused
- Fixed keyring dependencies on Linux
- Added infrastructure to generate and post binary wheels for Px and all its
dependencies for offline installation
v0.8.0 - 2022-06-18
- Added PAC file support for Linux
- Local PAC files on Windows are now processed using QuickJS instead of WinHttp
- Added CAINFO bundle in Windows builds
v0.7.2 - 2022-06-14
- Fixed #152 - handle connection errors in select loop gracefully
- Fixed #151 - handle libcurl 7.29 on Centos7
v0.7.1 - 2022-06-13
- Fixed #146 - px --install was broken when run in cmd.exe, also when
run as `python -m px`
- Fixed #148 - 407 proxy required was not being detected generically
- Fixed #151 - handle older versions of libcurl gracefully
- Fixed issues with --quit not exiting child processes or working correctly
in binary mode
v0.7.0 - 2022-05-12
- Switched to using libcurl for all outbound HTTP connections and proxy auth
- Removed dependency on ntlm-auth, pywin32 and winkerberos
- Added --password to prompt and save password to default keyring for non single
sign-on use cases
- Px is no longer involved in and hence unable to cache the proxy authentication
mechanism used by libcurl for subsequent connections
- Added --verbose to log to stdout but not write to files
- Logging output now includes more details of the call tree
- Fixed issue where debug output from child processes on Linux were duplicated
to the main process log
- Package structure has changed significantly to meet Python / pip requirements
- Updated release process to post Windows binary wheels containing libcurl and
the full README in markdown format as the description on Pypi.org
- Vendoring https://github.com/karpierz/libcurl with minor changes until upstream
officially supports Linux
v0.6.3 - 2022-04-25
- Fixed #139, #141 - bug in noproxy parsing
v0.6.2 - 2022-04-06
- Fixed #137 - quit() and save() don't work on Windows
v0.6.1 - 2022-04-05
- Enabled multiprocessing on Linux
v0.6.0 - 2022-04-02
- Moved all Windows proxy detection code into wproxy.py, eventually to be made
an independent module
- Moved debugging code into separate debug.py module
- Removed support for file:// PAC files configured in network settings since
Windows 10 no longer supports this scheme (see https://bit.ly/3JKPgjR)
- Added support in wproxy to detect proxies defined via environment variables
- Added support for Linux - only NTLM and BASIC authentication are supported
for now, PAC files are not supported and Px is limited to a single process
v0.5.1 - 2022-03-22
- Fixed #128 - IP:port split once from the right
- Binary is now built using Nuitka
- Moved PyInstaller build script to tools.py
- Removed px.ico from PyInstaller build since it upsets anti-virus tools
v0.5.0 - 2022-01-26
- Added support for issue #58 - authentication with user/password when SSPI is
unavailable or not preferred.
- Pulled PR #68 to handle case where no longer behind PAC proxy
- Fixed minor bug in file:// PAC file handling
- Implemented #65 - support for specifying PAC in INI
- Implemented #73 - force auth mechanism in INI
- Merged PR #85 - sanitize authorization header, shutdown socket, defer
connection header during auth (#71), drop completely for CONNECT, forward
error body, 2.7 fix
- Switched to Python 3.7, drop 3.4 support
- Merged PR #80 - fallback to DIRECT if no proxy found via auto or PAC discovery
- Added basic auth support (PR #82)
- Fixed issue where an empty domain was breaking password access
- Fixed #88, issue 2 in #71, PR #83 - use auth mechanism in order
- Added code to keep-alive during authentication - issue 3 in #71
- Fixed #108 - case sensitive authentication response
- Fixed #116 - Python 3.0 deprecation compatibility
- Fixed #122 - pywin32 import order
- Resolved #72 via documentation update
- Minor changes to improve client and proxy disconnects
v0.4.0 - 2018-09-04
- Implemented #18 - support for multiple NTLM proxies that will be iterated
through if connection fails
- Included fix for allowing parent proxy to resolve hostname if not resolvable
locally - #18
- Added --socktimeout to configure maximum time to wait before giving up on
socket connections
- Fixed #27 - Px does not exit with --quit
- Fixed #26 - Px doesn't attach to powershell console
- Allow Px to work with pythonw.exe - console output and stdout crash
- Fix Python 2.x crashes in quit()
- Fixed issue #22 - support for Kerberos authentication
- Removed pywin32 option since it doesn't work for Kerberos auth
- Fixed issues with useragent header override functionality
- Allow Px to run in the foreground when frozen or run with pythonw.exe - #25
- Make --proxy an optional setting if --noproxy is defined, reject connections
if remote server isn't in noproxy list and no proxy defined
- Add --hostonly which only allows IP addresses assigned to local interfaces to
use Px. Disallow any external clients unless --gateway specified along with a
restrictive --allow definition - PR20
- Changed --socktimeout from int to float
- Added support to discover proxy info from Internet Options - Automatic Config
URL with PAC files, WPAD, or static proxy definition - #30
- Added --proxyreload flag to configure interval between rediscovery of proxy
info
- Merged PR32 to fix PAC proxy port detection
- Implemented fix for #29 - discover proxy type instead of assuming Negotiate
will work across the board
- Close proxy socket if it returns "Proxy-Connection: close" header
- Improved memory and disk usage which had increased drastically after adding
PAC support - #30
- Added setup.py to install Px using pip - #24
- Fixed bug where Px crashes on Windows startup - #31
- Fixed issue of no debug output - #36
- Ensure logs are generated where Px is instead of working directory and flushed
immediately, quit should log in separate file and not overwrite MainProcess
- Added --uniqlog to allow multiple instances of Px to run with separate log
destinations or to prevent overwriting logs on subsequent runs
- Sanitize auth exchanges in generated logs for easy sharing in issues
- Handle NTLM auth failure instead of crashing - #34
- Add FTP port 21 for ftp:// requests - #39
- Catch exception for issue #38
- Fix issue #44 - move from README.txt to README.md
- Fix issue #43 - fix PAC support using WINHTTP
- Added documentation for #46
- Include PR #48 to enable support for failover proxies received from PAC
- Fix issue #51 - support for Windows 8 and below
- Fix issue #34 by using pywin32 for NTLM and winkerberos for Kerberos since the
latter doesn't work consistently for NTLM
- Pulled threading improvements from PR #56
- Improve message for issue #5
- Fix issue #57 - handle pip shim scenario during --install
- Fix issue #47 and #52 by forwarding data as received
- Fix issue #60 - chunked encoding transfer broken
- Increasing default socktimeout to 20 seconds
v0.3.0 - 2018-02-19
- Fixed issue 9 - Added support for winkerberos to workaround pywin32 bug
- Cleaned up loading module dependencies across Python versions
- Fixed issue where thread name in logs was wrong due to Python 3.6+ issue
- Fixed issue where URL without trailing / was sending blank path to remote
- Fixed issue where Px was disconnecting instead of keeping connections alive
- Changed Pyinstaller to build a single executable file
- Fixed bug where chunked transfer headers were being returned incorrectly
- Removed sleep from non-CONNECT methods that was slowing down Px considerably
- Added "allow" feature to allow (deny) client ip addresses (helpful with
Docker for Windows)
- Added "--gateway" parameter
- Fixed issue where a HTTP 304 Not Modified response would hang
- Enabled --debug also for --quit code path
- Fixed issue where --quit would not be able to stop px instances with
different uppercase/lowercase process names
- Fixed exception when logging bad requests containing unicode
- Fixed issue 12 - proxy keep-alive support for HTTP/1.0 clients
- Fixed issue 13 - support for HTTP Expect-Continue
- Fixed issue where non-resolving hostnames were not failing and going through
proxy instead
- Fixed winkerberos crash if no domain controller
- Fixed issue 17 - ability to run Px at user login
- Added support for px.exe to write to console when appropriate
- Consolidated all globals into class members, removed redundancies
- Added CLI flags for all config options
- Added --config flag to load alternate config file
- Added ability to override or send User-Agent header on client's behalf
- Added help menu accessible with --help
- Addressed issue #23 - removed UPX compression of Px.exe since benefits are
marginal and can potentially reduce odds of being flagged susicious
- Added ability to --save configuration from CLI, allowing full setup of Px
without having to separately edit INI file
- Added version info into Px to show up in help
v0.2.1 - 2017-03-30
- Implemented issue 7 - "listen" setting to configure IP address to bind
service to
- Fixed issue 3 - Function requested not supported in SSPI
- Fixed issue 5 - Improved error message when port is already in use
- Fixed issue 6 - Added support for PUT, PATCH and DELETE
- Fixed issue where http POST was blocking forever, attempting to read POST
data twice from socket
v0.2.0 - 2017-02-05
- Added "noproxy" feature to bypass NTLM proxy
- Added "threads" setting to configure number of threads per process
- Added "test.py" to validate basic Px functionality
- Fixed bug where host disconnects would throw httpserver into an infinite loop
- Fixed bug where HEAD requests were waiting for a response body
- Fixed bug where Px was waiting if remote server disconnected before response
code
- Fixed bug where content length = 0 was waiting for a response body
- Fixed bug where chunked response was being returned without content length
- Fixed Px to exit completely with CTRL-C
v0.1.0 - 2016-08-18
- Initial release