I was asked to create github issue on how exactly it should be done. I am not on github as I am not a dev/programmer. Furthermore, I think it would be good if one of these “ideas” are passed here on preliminary basis, and then I will create an issue on github. Following methods might not be practical from technical sides.
I2P proxying can be done on chromium by 3 methods:- (layer refers to browser)
a.) With/within the layer like how it is in gecko.
b.) Above the layer as how it is currently with chromium extensions like Proxy SwitchyOmega or other Proxy extensions.
c.) Below the layer, like how it is presently in chromium/brave.
1.) To have a network/proxy setting similar to gecko:-
The initial method I thought might have been possible easily, but then I found out the proxy settings for chromium are not the same way as they for gecko. I do not know if it due to chromium limitation or the chromium open source community never tried to do it for chromium. In Gecko, firefox/mozilla made the setting available in browser itself. Traffic is proxied in browser itself, so traffic in other browser or even in other gecko profiles is not affected.
So, the Brave team will need to build a proxy setting in Brave from scratch. Have pre-filled data inputted in that proxy setting like Server 127.0.01 and Port 4444. It can be in a different Profile/Window as how it is currently with the in-built Tor window/profile. There can be toggle On/Off where On will route the traffic through I2P in regular profile or in a separate profile by changing the relevant “flags” and starting the proxying process. By changing the Setting to Off, the network proxying will stop and traffic will be routed by normal way.
Relevant Links and Photos:-
ii.) https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/ (brave is mentioned by the dev)
iii.)https://teddit.net/r/i2p/comments/frimyn/highly_experimental_yet_another_oneclick/ https://teddit.net/r/i2p/comments/2owa4o/using_chromium_with_i2p/ https://github.com/eyedeekay/I2P-Configuration-For-Chromium/
https://chrome.google.com/webstore/detail/i2pchromejs/ikdjcmomgldfciocnpekfndklkfgglpe (separate dev mentions brave again on github https://github.com/eyedeekay/I2P-Configuration-For-Chromium/issues/2)
Extension did not work no matter what I did to make it work. I even do not know that if it did anything in the first place.
2.) To have what Proxy SwitchyOmega extension does:-
I don’t know how other proxy extensions work or functions in general, but Switchyomega connected to I2P network easily. A profile in that extension needed to be created where I2P server and port were needed to be inputted. Eepsites like identityguy.i2p and bible4u.i2p were needed to be whitelisted beforehand. By default, traffic is routed normally, but after switching to I2P profile (in the extension itself and not by browser profile) the traffic was then routed through I2P network. So, if we can mimic what the extension is doing itself in the browser, route the traffic by proxying it above the layer. Here, we would not be changing chromium proxy/network settings, but proxying results above layer just like how IPFS runs in Brave.
Relevant Links and Photos:-
3.) To do at Device/OS level as it currently works:-
If above two methods are not possible, here we can auto-fill server and port data into OS settings. There can be toggle with On/Off. At On, if device proxy settings are opened, it will auto-fill the data. With setting at Off, if device proxy settings are opened, it will not auto-fill the data.
The above “methods” were based only within 1 week of research. I do not have extensive knowledge of I2P protocol itself. Some things said above might be slightly wrong. Method 2 might be possible as IPFS works without IPFS Companion extension and even an IPFS node can be running in Brave. Method 3 seems out of question as we will be changing OS settings by auto-filling so no one like it.