Commit graph

7 commits

Author SHA1 Message Date
Jonathan Hodgson
dd71d26245 Initial https proxy work
The proxy can now sit between a client and a https web server. It does
this by looking for a CONNECT request that conventional proxies use to
open a tunnel between a client and an https server. Instead of opening
an opaque tunnel, yaip immediately sends bacck a "connection
established" response. This tells the client (browser normally) to
proceed and initiate an HTTPS connection.

I use the host that was send in the connect request to set up a fake SSL
server. If we have seen the domain before, we re-use the certificate,
otherwise we generate a new one and sign it using YAIP's built in
certificate authority.

I still need to do work on forwarding the request upstream. This is my
next job. Currently, yaip responds with a valid response of "it worked".

```
$ curl https://example.com --cacert ~/.config/yaip/cert.pem
It worked
```

Notice, we don't get any certificate errors because we are telling curl
to trust the authority that yaip uses
2022-01-30 12:25:57 +00:00
Jonathan Hodgson
6eaad263be Moves some logic out of proxy and into main
Also fixes some segfaults caused by trying to free memory that wasn't
allocated with strdup or malloc etc.

Fixes some tests
2022-01-19 12:56:11 +00:00
Jonathan Hodgson
8a5bfe9b36 Now working for simple, non-encrypted requests
making requests to something like example.com over a non-encrypted
connection now works. Binary files are unlikely to work at the moment
although I haven't tried. Also, non-encrypted doesn't work.

I have also changed a little about how tests work. Requests tests now
display much better.
2022-01-18 21:45:58 +00:00
Jonathan Hodgson
8912994e1d Work on requests 2022-01-17 14:03:34 +00:00
Jonathan Hodgson
48e3092317 Split out some stuff that is shared between request and response
I now have files with the infinitely imaginative names
requestrespons.{c,h,test.c}.
2022-01-10 09:36:18 +00:00
Jonathan Hodgson
0e2b9dae2b Work on requests
This commit adds tests for a request and the implementation.

The first line of a request should now be decoded correctly
2022-01-05 21:12:11 +00:00
Jonathan Hodgson
f48a110429 I have made a start
I have done some work on opening a socket and waiting for a connection.
This can be read line by line and I have started a request struct that
it will accept.

Also started on some docs. Not much is yet working. I am going to start
learning µnit for unit tests:

https://nemequ.github.io/munit/
2021-12-27 21:43:11 +00:00