mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 18:55:32 +00:00
aquatic_http: use cleaner request filtering by access list
This commit is contained in:
parent
429ffc8301
commit
48d49c9a1a
1 changed files with 17 additions and 19 deletions
|
|
@ -210,6 +210,20 @@ pub fn handle_connection_read_event(
|
||||||
|
|
||||||
if let Some(established) = connection.get_established() {
|
if let Some(established) = connection.get_established() {
|
||||||
match established.read_request() {
|
match established.read_request() {
|
||||||
|
Ok(Request::Announce(ref r)) if !state.access_list.allows(access_list_mode, &r.info_hash.0) => {
|
||||||
|
let meta = ConnectionMeta {
|
||||||
|
worker_index: socket_worker_index,
|
||||||
|
poll_token,
|
||||||
|
peer_addr: established.peer_addr,
|
||||||
|
};
|
||||||
|
let response = FailureResponse::new("Info hash not allowed");
|
||||||
|
|
||||||
|
debug!("read disallowed request, sending back error response");
|
||||||
|
|
||||||
|
local_responses.push((meta, Response::Failure(response)));
|
||||||
|
|
||||||
|
break;
|
||||||
|
},
|
||||||
Ok(request) => {
|
Ok(request) => {
|
||||||
let meta = ConnectionMeta {
|
let meta = ConnectionMeta {
|
||||||
worker_index: socket_worker_index,
|
worker_index: socket_worker_index,
|
||||||
|
|
@ -217,27 +231,11 @@ pub fn handle_connection_read_event(
|
||||||
peer_addr: established.peer_addr,
|
peer_addr: established.peer_addr,
|
||||||
};
|
};
|
||||||
|
|
||||||
let opt_allowed_request = if let Request::Announce(ref r) = request {
|
|
||||||
if state.access_list.allows(access_list_mode, &r.info_hash.0){
|
|
||||||
Some(request)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Some(request)
|
|
||||||
};
|
|
||||||
|
|
||||||
if let Some(request) = opt_allowed_request {
|
|
||||||
debug!("read allowed request, sending on to channel");
|
debug!("read allowed request, sending on to channel");
|
||||||
|
|
||||||
if let Err(err) = request_channel_sender.send((meta, request)) {
|
if let Err(err) = request_channel_sender.send((meta, request)) {
|
||||||
error!("RequestChannelSender: couldn't send message: {:?}", err);
|
error!("RequestChannelSender: couldn't send message: {:?}", err);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
let response = FailureResponse::new("Info hash not allowed");
|
|
||||||
|
|
||||||
local_responses.push((meta, Response::Failure(response)))
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue