1
+ #![ allow( unused_must_use) ]
2
+
1
3
extern crate colored;
2
4
extern crate tiny_http;
3
5
extern crate base64;
4
6
extern crate ascii;
7
+ extern crate ctrlc;
5
8
6
9
use clap:: Parser ;
7
10
use istor:: istor;
@@ -73,8 +76,6 @@ fn main() {
73
76
restricted = Arc :: new ( true ) ;
74
77
}
75
78
76
- //println!("{}", &args.blocktor);
77
-
78
79
let block_tor = Arc :: new ( args. blocktor ) ;
79
80
80
81
let mut crt: Option < SslConfig > = None ;
@@ -95,6 +96,7 @@ fn main() {
95
96
let server = Arc :: new ( server) ;
96
97
97
98
let mut guards = Vec :: with_capacity ( args. threads . parse :: < usize > ( ) . unwrap ( ) ) ;
99
+
98
100
99
101
for _ in 0 ..args. threads . parse :: < i32 > ( ) . unwrap ( ) {
100
102
@@ -109,19 +111,21 @@ fn main() {
109
111
let rq = server. recv ( ) . unwrap ( ) ;
110
112
let output = format ! ( "{:?}" , & rq) ;
111
113
112
- let headers = rq. headers ( ) ;
114
+ let headers = rq. headers ( ) ;
113
115
let mut auth = None ;
114
116
for i in headers. iter ( ) {
115
117
if i. field == HeaderField :: from_bytes ( "Authorization" . as_bytes ( ) . to_vec ( ) ) . unwrap ( ) {
116
118
let _wrds = & i. value ;
117
119
let wrds: Vec < & AsciiStr > = i. value . split ( ascii:: AsciiChar :: Space ) . collect ( ) ;
118
120
if * restricted && wrds. len ( ) < 2 {
121
+ #[ allow( unused_must_use) ]
119
122
handler:: unauthorized ( rq) ;
120
123
println ! ( "{} -> {}" , output, "401 Unauthorized" . red( ) ) ;
121
124
continue ' outer;
122
125
123
126
}
124
127
if * restricted && wrds[ 0 ] != "Basic" {
128
+ #[ allow( unused_must_use) ]
125
129
handler:: unauthorized ( rq) ;
126
130
println ! ( "{} -> {}" , output, "401 Unauthorized" . red( ) ) ;
127
131
continue ' outer;
@@ -140,7 +144,7 @@ fn main() {
140
144
Some ( authtry) => {
141
145
if base64:: encode ( format ! ( "{}:{}" , username, pass) . as_bytes ( ) ) == String :: from ( authtry. as_str ( ) ) {
142
146
} else {
143
- handler:: unauthorized ( rq) ;
147
+ handler:: unauthorized ( rq) ;
144
148
println ! ( "{} -> {}" , output, "401 Unauthorized" . red( ) ) ;
145
149
continue ' outer;
146
150
}
@@ -159,7 +163,7 @@ fn main() {
159
163
160
164
if istor:: istor ( str_to_be_checked, false ) {
161
165
println ! ( "{} -> {}" , output, "Blocked TOR request" . red( ) ) ;
162
- rq. respond (
166
+ rq. respond (
163
167
Response :: from_string ( "You can't use Tor here ¯\\ _(ツ)_/¯" )
164
168
. with_status_code ( StatusCode ( 500 ) )
165
169
) ;
@@ -208,4 +212,8 @@ fn main() {
208
212
}
209
213
}
210
214
}
215
+ ctrlc:: set_handler ( move || {
216
+ println ! ( "Exiting..." ) ;
217
+ std:: process:: exit ( 0 ) ;
218
+ } ) ;
211
219
}
0 commit comments