@@ -3,25 +3,20 @@ use std::str::FromStr;
3
3
use std:: sync:: Arc ;
4
4
use std:: time:: Duration ;
5
5
6
- use aquatic_udp_protocol:: { Port , TransactionId } ;
7
6
use colored:: Colorize ;
8
- use hex_literal:: hex;
9
7
use log:: debug;
10
8
use reqwest:: { Client as HttpClient , Url } ;
11
9
10
+ use super :: checks;
12
11
use super :: config:: Configuration ;
13
12
use super :: console:: Console ;
14
13
use crate :: console:: clients:: checker:: printer:: Printer ;
15
- use crate :: console:: clients:: udp:: checker;
16
14
use crate :: shared:: bit_torrent:: info_hash:: InfoHash ;
17
15
use crate :: shared:: bit_torrent:: tracker:: http:: client:: requests:: announce:: QueryBuilder ;
18
16
use crate :: shared:: bit_torrent:: tracker:: http:: client:: responses:: announce:: Announce ;
19
17
use crate :: shared:: bit_torrent:: tracker:: http:: client:: responses:: scrape;
20
18
use crate :: shared:: bit_torrent:: tracker:: http:: client:: { requests, Client } ;
21
19
22
- const ASSIGNED_BY_OS : u16 = 0 ;
23
- const RANDOM_TRANSACTION_ID : i32 = -888_840_697 ;
24
-
25
20
pub struct Service {
26
21
pub ( crate ) config : Arc < Configuration > ,
27
22
pub ( crate ) console : Console ,
@@ -45,7 +40,7 @@ impl Service {
45
40
46
41
let mut check_results = vec ! [ ] ;
47
42
48
- self . check_udp_trackers ( & mut check_results) . await ;
43
+ checks :: udp :: run ( & self . config . udp_trackers , & self . console , & mut check_results) . await ;
49
44
50
45
self . check_http_trackers ( & mut check_results) . await ;
51
46
@@ -54,83 +49,6 @@ impl Service {
54
49
check_results
55
50
}
56
51
57
- async fn check_udp_trackers ( & self , check_results : & mut Vec < CheckResult > ) {
58
- self . console . println ( "UDP trackers ..." ) ;
59
-
60
- for udp_tracker in & self . config . udp_trackers {
61
- debug ! ( "UDP tracker: {:?}" , udp_tracker) ;
62
-
63
- let colored_tracker_url = udp_tracker. to_string ( ) . yellow ( ) ;
64
-
65
- let transaction_id = TransactionId ( RANDOM_TRANSACTION_ID ) ;
66
-
67
- let mut client = checker:: Client :: default ( ) ;
68
-
69
- debug ! ( "Bind and connect" ) ;
70
-
71
- let Ok ( bound_to) = client. bind_and_connect ( ASSIGNED_BY_OS , udp_tracker) . await else {
72
- check_results. push ( Err ( CheckError :: UdpError {
73
- socket_addr : * udp_tracker,
74
- } ) ) ;
75
- self . console
76
- . println ( & format ! ( "{} - Can't connect to socket {}" , "✗" . red( ) , colored_tracker_url) ) ;
77
- break ;
78
- } ;
79
-
80
- debug ! ( "Send connection request" ) ;
81
-
82
- let Ok ( connection_id) = client. send_connection_request ( transaction_id) . await else {
83
- check_results. push ( Err ( CheckError :: UdpError {
84
- socket_addr : * udp_tracker,
85
- } ) ) ;
86
- self . console . println ( & format ! (
87
- "{} - Can't make tracker connection request to {}" ,
88
- "✗" . red( ) ,
89
- colored_tracker_url
90
- ) ) ;
91
- break ;
92
- } ;
93
-
94
- let info_hash = InfoHash ( hex ! ( "9c38422213e30bff212b30c360d26f9a02136422" ) ) ; // # DevSkim: ignore DS173237
95
-
96
- debug ! ( "Send announce request" ) ;
97
-
98
- if ( client
99
- . send_announce_request ( connection_id, transaction_id, info_hash, Port ( bound_to. port ( ) ) )
100
- . await )
101
- . is_ok ( )
102
- {
103
- check_results. push ( Ok ( ( ) ) ) ;
104
- self . console
105
- . println ( & format ! ( "{} - Announce at {} is OK" , "✓" . green( ) , colored_tracker_url) ) ;
106
- } else {
107
- let err = CheckError :: UdpError {
108
- socket_addr : * udp_tracker,
109
- } ;
110
- check_results. push ( Err ( err) ) ;
111
- self . console
112
- . println ( & format ! ( "{} - Announce at {} is failing" , "✗" . red( ) , colored_tracker_url) ) ;
113
- }
114
-
115
- debug ! ( "Send scrape request" ) ;
116
-
117
- let info_hashes = vec ! [ InfoHash ( hex!( "9c38422213e30bff212b30c360d26f9a02136422" ) ) ] ; // # DevSkim: ignore DS173237
118
-
119
- if ( client. send_scrape_request ( connection_id, transaction_id, info_hashes) . await ) . is_ok ( ) {
120
- check_results. push ( Ok ( ( ) ) ) ;
121
- self . console
122
- . println ( & format ! ( "{} - Announce at {} is OK" , "✓" . green( ) , colored_tracker_url) ) ;
123
- } else {
124
- let err = CheckError :: UdpError {
125
- socket_addr : * udp_tracker,
126
- } ;
127
- check_results. push ( Err ( err) ) ;
128
- self . console
129
- . println ( & format ! ( "{} - Announce at {} is failing" , "✗" . red( ) , colored_tracker_url) ) ;
130
- }
131
- }
132
- }
133
-
134
52
async fn check_http_trackers ( & self , check_results : & mut Vec < CheckResult > ) {
135
53
self . console . println ( "HTTP trackers ..." ) ;
136
54
0 commit comments