What am I trying to do
I want to run the following, that creates an echo host
export ZITI_IDENTITIES=/mnt/v/temp/httpbin-identity.json
python3 ziti-echo-server.py $ZITI_IDENTITIES private-httpbin
https://github.com/openziti/ziti-sdk-py/blob/main/sample/ziti-echo-server.py
What error am I getting
0.442] WARN ziti-sdk:ziti_ctrl.c:90 code_to_error() unmapped error code: COULD_NOT_VALIDATE
[ 0.442] ERROR ziti-sdk:connect.c:456 connect_get_net_session_cb() conn[0.0] failed to get session for service[private-httpbin]: COULD_NOT_VALIDATE(The supplied request contains an invalid document or no valid accept content were available, see cause)
[ 0.442] WARN ziti-sdk:zitilib.c:674 on_ziti_bind() failed to bind fd[10] err[-34/WTF: programming error]
this suggests that there is a problem with the configuration..
What have I done to investigate
- confirmed the following scripts work
export ZITI_IDENTITIES=/mnt/v/temp/httpbin-identity.json
python3 h-ziti-p.py
export ZITI_IDENTITIES=/mnt/v/temp/httpbin-identity.json
python3 http-get.py http://httpbin.ziti:2000/json
this suggests that the configuration and intercept are working as expected
- confirmed the following service tests work
export ZITI_SDK_CONFIG=/mnt/v/temp/httpbin-identity.json
./curlz http://private-httpbin:2000/json
this suggests that the configuration and service are working as expected
- I have reproduced this error on my desktop and server
I thought I could isolate the problem by running the script locally on my desktop, but I received the same error message
- I have checked the policy advisor
OKAY : httpbin-identity (1) -> private-httpbin (4) Common Routers: (1/1) Dial: Y Bind: N
OKAY : ziti-private-blue (2) -> private-httpbin (4) Common Routers: (2/2) Dial: N Bind: Y
- I have done a full reset of the docker container
docker-compose down -v
Questions that I have about this script
What I dont understand about this script is the code that performs the dialing
server = ztx.bind(service)
You will notice that there is no port number mentioned.. I was not expecting this
When I used the ./curlz example above, I needed to pass in a port number
./curlz http://private-httpbin:2000/json
So.. to confirm that this was not the problem.. I ran the following, which added the port number to the service name... as happens with the curlz example
python3 ziti-echo-server.py "/mnt/v/temp/httpbin-identity.json" "private-httpbin:2000"
This gives a slightly different error message.. but still fails
[ 0.223] INFO ziti-sdk:channel.c:219 new_ziti_channel() ch[0] (ziti-edge-router@tls://ziti-edge-router:3022) new channel for ztx[0] identity[httpbin-identity]
[ 0.223] INFO ziti-sdk:channel.c:731 reconnect_channel() ch[0] reconnecting NOW
[ 0.293] WARN ziti-sdk:zitilib.c:674 on_ziti_bind() failed to bind fd[12] err[-17/Service not available]