successfully loaded content via Tor
This commit is contained in:
parent
afd34b416a
commit
734971b883
4 changed files with 76 additions and 2 deletions
|
@ -5,7 +5,7 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
iced = { git = "https://github.com/iced-rs/iced", branch = "master", features = ["image", "markdown", "svg"] }
|
iced = { git = "https://github.com/iced-rs/iced", branch = "master", features = ["image", "markdown", "svg"] }
|
||||||
reqwest = { version = "0.12", features= ["blocking"]}
|
reqwest = { version = "0.12", features= ["blocking","socks"]}
|
||||||
rss = "2.0"
|
rss = "2.0"
|
||||||
web-sys = "0.3.70"
|
web-sys = "0.3.70"
|
||||||
mdka = "1.2.10" #Not Sure if this is useful...
|
mdka = "1.2.10" #Not Sure if this is useful...
|
||||||
|
|
62
src/net.rs
62
src/net.rs
|
@ -1,9 +1,69 @@
|
||||||
use core::panic;
|
use core::panic;
|
||||||
use iced::widget::image::Handle;
|
use iced::widget::image::Handle;
|
||||||
use rss::{Channel};
|
use rss::{Channel};
|
||||||
use reqwest::{self, blocking::Client, header::USER_AGENT};
|
use reqwest::{self, blocking::Client, header::USER_AGENT, Error, Proxy};
|
||||||
use scraper::{Html, Selector};
|
use scraper::{Html, Selector};
|
||||||
|
|
||||||
|
const DEFAULT_TOR_PROXY: &str = "socks5h://127.0.0.1:9050";
|
||||||
|
const DEFAULT_I2P_PROXY: &str = "socks5h://127.0.0.1:4447";
|
||||||
|
|
||||||
|
enum Network{
|
||||||
|
Clearnet,
|
||||||
|
Tor,
|
||||||
|
I2P
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_client(network: Network) -> Result<Client,Error>{
|
||||||
|
//in the long run, support for fancy things like arti & user-configurable proxies will be important, nevermind other networks like reticulum!
|
||||||
|
match network {
|
||||||
|
Network::Clearnet => {
|
||||||
|
return Ok(Client::new());
|
||||||
|
}
|
||||||
|
Network::Tor => {
|
||||||
|
match Client::builder().proxy(Proxy::http(DEFAULT_TOR_PROXY).unwrap()).build() {
|
||||||
|
Ok(client) => {return Ok(client);}
|
||||||
|
Err(e) => {return Err(e);}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Network::I2P => {
|
||||||
|
match Client::builder().proxy(Proxy::http(DEFAULT_I2P_PROXY).unwrap()).build() {
|
||||||
|
Ok(client) => {return Ok(client);}
|
||||||
|
Err(e) => {return Err(e);}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_onion_content(url: &str) -> Option<String> {
|
||||||
|
match Client::builder().proxy(
|
||||||
|
Proxy::http(DEFAULT_TOR_PROXY).unwrap()
|
||||||
|
).build() {
|
||||||
|
Ok(client) => {
|
||||||
|
let res = client.get(url)
|
||||||
|
.header(USER_AGENT,"RSS Reader")
|
||||||
|
.send();
|
||||||
|
match res {
|
||||||
|
Ok(resp) => {
|
||||||
|
match resp.text() {
|
||||||
|
Ok(body) => {return Some(body);}
|
||||||
|
Err(_) => {return None;}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
println!("Error loading content via Tor\nError:{}",e);
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
println!("Failed to get Tor client\nError:{}",e);
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
fn get_content(url: &str) -> Option<String> {
|
fn get_content(url: &str) -> Option<String> {
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
let res = client.get(url)
|
let res = client.get(url)
|
||||||
|
|
13
src/tests.rs
13
src/tests.rs
|
@ -7,6 +7,19 @@ fn get_feed_test(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn tor_gabe() {
|
||||||
|
let onion_gabe = net::get_onion_content("http://gabriel262me3lgv3w7xohtesg3laoojmtye644pwirhdm73qmedmsqd.onion/rss");
|
||||||
|
match onion_gabe {
|
||||||
|
Some(b) => {
|
||||||
|
println!("Successfully loaded over Tor:\n{}",b);
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
panic!("Failed to load via Tor")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn load_feeds() {
|
fn load_feeds() {
|
||||||
let url = "https://gabe.rocks";
|
let url = "https://gabe.rocks";
|
||||||
|
|
|
@ -145,6 +145,7 @@ fn view(state: &State) -> Element<'_, Message> {
|
||||||
Page::AllItems => item_list(&state),
|
Page::AllItems => item_list(&state),
|
||||||
Page::ItemView => item_view(&state),
|
Page::ItemView => item_view(&state),
|
||||||
Page::Testing => testing(&state),
|
Page::Testing => testing(&state),
|
||||||
|
_ => {home(&state)}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue