Commit Graph

62 Commits

Author SHA1 Message Date
b6f3b4c398 Merge branch '4-investigate-extending-pr0xy-to-use-sam' into 'master'
Resolve "Investigate extending pr0xy to use SAM"

Closes #4

See merge request NamingThingsIsHard/privacy/i2p-docker-proxy!2
2020-12-18 22:43:56 +00:00
8dd3a6b81a Use geti2p Dockerfile
i2pd just didn't want to connect to other services for some reason.

#4 - Investigate extending pr0xy to use SAM
2020-12-18 23:35:11 +01:00
6ee38fd897 Add more debug logs to servers
#4 - Investigate extending pr0xy to use SAM
2020-12-18 23:30:13 +01:00
99138ab4fd cleanup: Remove pr0cks
We won't be using it anymore

#4 - Investigate extending pr0xy to use SAM
2020-12-14 22:56:22 +01:00
0033515500 docker: opt for purplei2p/i2pd
It just works as opposed to:

geti2p/i2p: Can't write /usr/share/i2p/router.info which stores peers
Something's wrong with the configuration and it should be trying to write to /var/lib/i2p/i2p-config/router.info

meeh/i2p.i2p: The themes for the router console aren't copied and the web UI just looks terrible

#4 - Investigate extending pr0xy to use SAM
2020-12-14 22:55:58 +01:00
9d0f03535a docker: Bind ./contained/bin for quick updates
Otherwise we'd have to rebuild the image every time

#4 - Investigate extending pr0xy to use SAM
2020-12-13 20:25:55 +01:00
c91f104248 docker: activate SAM in the i2p router service
Without it, nothing can work.

#4 - Investigate extending pr0xy to use SAM
2020-12-13 20:25:08 +01:00
f34807d911 Use asyncio.start_server instead of loop.create_server
The protocol_factory doesn't support `Protocol`s with async handlers
e.g `async def connection_made` won't actually be awaited and thus nothing ever happens.

Now there's a pretty ugly solution with one long-ass method, but maybe that can be trimmed
or a callable can be used.

#4 - Investigate extending pr0xy to use SAM
2020-12-13 20:23:42 +01:00
177a4ad5f7 cli: Rename the env vars for the params
It also shortens the command-line argument in exec.sh

#4 - Investigate extending pr0xy to use SAM
2020-12-13 20:19:58 +01:00
8026c04a7b Actually pass ip_dict to FakeResolver
It wasn't being passed so the client tunnel would just fail

#4 - Investigate extending pr0xy to use SAM
2020-12-13 20:18:29 +01:00
594554b12c deps: Update dnslib to 0.9.14 for python 3.9
The 0.9.10 was trying to call deprecated thread.isAlive() which isn't available
 in pthon 3.9 anymore

#4 - Investigate extending pr0xy to use SAM
2020-12-13 17:54:45 +01:00
77c2a69267 cli: Convert port params to int
Otherwise strings are passed and it can't start up.
Sockets can't be created when a string is passed as the port param

#4 - Investigate extending pr0xy to use SAM
2020-12-13 17:29:57 +01:00
0c4a9a81e3 Actually pass port param to transparent proxy
It was always starting on port 1234 when in fact, it had to start on 10080 (set in Dockerfile)

#4 - Investigate extending pr0xy to use SAM
2020-12-13 17:28:49 +01:00
3ea2f2a453 First implementation of transparent client tunnel using SAM
The transparent proxy creates a client tunnel to the requested destination for each client connection.
This is untested for now, but a server tunnel is also incoming if this works well.

#4 - Investigate extending pr0xy to use SAM
2020-12-13 00:09:17 +01:00
4dc8f22c29 docker: Update to the use of Python 3.9
Getting with the times

#4 - Investigate extending pr0xy to use SAM
2020-12-13 00:09:17 +01:00
ec8aeb5fb9 suggest LD_PRELOAD as a wrapper / proxy
It should be possible to replace networking functions, just like pr0xy
 and SocksiPy do to let all communication of a program pass through I2P

#4 - Investigate extending pr0xy to use SAM
2020-12-13 00:09:13 +01:00
37b949c1d3 Make getting an IP thread-safe
It can get called in quick succession and overwrite assignments if the
 checks aren't done at the right time

#4 - Investigate extending pr0xy to use SAM
2020-12-13 00:08:29 +01:00
bc4cbbcb55 Add doc with background on the project 2020-12-10 23:39:40 +01:00
1b625b26cc CI: cd actually carries state?
WTF?
2020-12-04 23:38:16 +01:00
9e1943f8be CI: WHERE THE HELL ARE THE DOCS? 2020-12-04 23:35:23 +01:00
e80b33ab41 CI: Yet another attempt to fix the pages task 2020-12-04 23:31:00 +01:00
a85f8b7ce6 CI: Another attempt at fixing drawio on 2020-12-04 22:54:33 +01:00
8976c3d4a7 Try and fix CI to generate docs 2020-12-04 00:29:43 +01:00
a01abdfd7f docs: Fix requirements.txt 2020-12-04 00:27:01 +01:00
1e6ec46c2e Add link to generated docs 2020-12-04 00:26:47 +01:00
7bea3bdf16 Add icon 2020-12-04 00:22:57 +01:00
1b2ac19dca docs: Add drawio diagramm of architectural components 2020-12-04 00:21:08 +01:00
f8ffbd50ee docs: Remove forgotten comment 2020-12-03 23:21:55 +01:00
79ffbdd4cc Start adding documentation 2020-12-03 23:20:43 +01:00
5cdfcfca76 Update README.md 2019-08-02 17:44:56 +00:00
f5b790fa0f Merge branch '1-figure-out-why-packets-aren-t-being-forwarded-using-iptables-and-pr0xy' into 'master'
Resolve "Forward using iptables, pr0xy and custom DNS"

Closes #1

See merge request NamingThingsIsHard/privacy/i2p-docker-proxy!1
2019-07-29 19:01:10 +00:00
79c90d2ef4 Remove forgotten libnetfilter_queue-dev
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-29 20:59:07 +02:00
5244b6d735 Try to cleanup unix socket
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-29 18:31:56 +02:00
d5538b1947 Remove pr0cks extra files and migrate .gitignore
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-29 17:54:50 +02:00
f4180900c0 Use the vars from the Dockerfile
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-29 17:52:20 +02:00
035aaf1bc1 Remove test IP for extra host for stats.i2p
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-29 17:26:42 +02:00
c019dbeecb netfilter requirements
drill is also replaced by bind-tools

#1 - Forward using iptables, pr0xy and custom DNS
2019-07-29 17:19:44 +02:00
0a02a2f1ae Use java i2p since there seems to be a problem with i2pd and proxies
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 23:06:01 +02:00
fec320b178 Add host arg for send.py
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 22:29:21 +02:00
29d8d5c945 Replace netfilterqueue by modifying pr0cks to make the initial connection request
We only want i2p to create a tunnel to the requested host on i2p.
There's no need to modify any other packets at the moment

#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 22:15:03 +02:00
0d54221b32 Drop the DNS requests to stop multiple requests from the requester
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 22:11:13 +02:00
b678d41aba PEP8 for pr0cks
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 22:09:34 +02:00
14875cb5d2 Import pr0cks for local modifications
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 21:59:34 +02:00
1a956ff348 Import pr0cks into project to make custom changes
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 21:51:57 +02:00
a485e3d9eb Move send.py and fix it up for use docker to test direct requests to i2p HTTP proxy
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 21:37:25 +02:00
09597a2703 Remove trailing '.' from the hostname passed from DNS request
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 21:36:17 +02:00
221d2641d4 Handle requests to unix socket better and log errors
#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 21:35:35 +02:00
88bf17ca8c Try to shutdown the UnixSocketServer when our program exits
Also add logging

#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 21:34:45 +02:00
e04e2989e5 Redirect traffic to NFQUEUE
Right now all it does is print the packet payload. Need to find out wtf
 that actually is and how to treat it

#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 00:08:35 +02:00
25525d2ae6 Add simple netfilter script with its dependencies
- python requirements are now kept in a file and installed during build
 - variables are used in exec.sh to remove magic values
 - executable scripts are moved into one directory

#1 - Forward using iptables, pr0xy and custom DNS
2019-07-27 00:07:09 +02:00