1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use std::collections::HashMap;
use reqwest::Url;
use reqwest::{header::USER_AGENT};

pub fn find_url() -> (String, String, String, String) {
    let client = reqwest::blocking::Client::new();
    let request = client.get("http://access.olleh.com")
        .header(USER_AGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36")
        .send().unwrap();

    let url = request.url();

    let scheme = url.scheme().to_string();
    let host = url.host().unwrap().to_string();
    let port = url.port().unwrap().to_string();
    let query = url.query().unwrap().to_string();

    return (scheme, host, port, query);
}

pub fn enter_admin_url(data: (String, String, String, String)) -> String {
    format!("{}://{}:{}/enterAdminId.html?{}", data.0, data.1, data.2, data.3)
}

pub fn admin_url(data: (String, String, String, String)) -> String {
    format!("{}://{}:{}/reauth_said.html", data.0, data.1, data.2)
}

pub fn reset() -> String {
    let find_url = find_url();

    let url = Url::parse(&enter_admin_url(find_url.clone())).unwrap();
    let query: HashMap<String, String> = url.query_pairs().into_owned().collect();

    let mut form = HashMap::new();
    form.insert("userID", "reset");
    form.insert("userPW", "reset1");
    form.insert("sso", query.get("sso").unwrap());
    form.insert("no", query.get("no").unwrap());

    let client = reqwest::blocking::Client::new();
    let response = client.post(admin_url(find_url.clone()))
        .header(USER_AGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36")
        .header("Referer", enter_admin_url(find_url))
        .form(&form)
        .send().unwrap();

    return response.status().to_string();
}