Google App Engine - Permission Denied For Proxy/tunneling On Development Server
Solution 1:
Digged-in the issue further and seems to be into this file:
platform/google_appengine/google/appengine/api/remote_socket/_remote_socket_stub.py which has some mocked socket pairs of (level, option) found in constant _MOCK_SOCKET_OPTIONS
which is missing the (1, 3) pair and by this I mean one of the product of levels and options below (I guess the asterisk is the desired value):
Levels (value: 1):
- SOCKET_TCP_NODELAY
- SOCKET_IP_TOS
- SOCKET_SOL_SOCKET *
- SOCKET_SO_DEBUG
Options (value: 3):
- SOCKET_IP_HDRINCL
- SOCKET_SO_TYPE *
- SOCKET_TCP_CORK
So by setting the proxy, I guess I'm asking for the SOL_SOCKET:SO_TYPE group, but what about the mocked value, which is a hex binary related string as "00000000" (for keepalive) and "01000000" (reuseaddr): https://github.com/GoogleCloudPlatform/python-compat-runtime/blob/master/appengine-compat/exported_appengine_sdk/google/appengine/api/remote_socket/_remote_socket_stub.py#L97
Where can I find values like these for the (1, 3) missing pairs?
Later edit:
I've added the "SOL_SOCKET:SO_TYPE=80000000" group and now it breaks on the ssl module (which is required to be enabled in order to support https; no patching needed, just enable it in app.yaml): https://pastebin.com/9KQjdEgL by recognizing the socket type of being 128, this may be one of the following constants I guess:
- socket.MSG_EOR
- socket.SOMAXCONN
- socket.TIPC_SRC_DROPPABLE
Later...
So I realized the 128 value is actual my little-endian mocked value above, therefore I've changed the group into: "SOL_SOCKET:SO_TYPE=01000000" and this recognizes the socket.SOCK_STREAM
socket type, which actually works just for this check, but then again, it crashes, because ssl
doesn't understand GAE's custom socket object: https://pastebin.com/t2pUuW2V (<google.appengine.api.remote_socket._remote_socket.socket object at 0x7f0cd037f690>
). Tried this with and without the requests
monkey-patching.
My conclusion
The GAE custom socket
is not working entirely with SSL (on tunneling) and Python standard socket
is not working with GAE's (non-patch-able I guess) select
module, regarding the dev_appserver sandbox.
Answer : bring the same behavior of the remote deploy into the local development environment.
Post a Comment for "Google App Engine - Permission Denied For Proxy/tunneling On Development Server"