@@ -13,77 +13,77 @@ use crate::players::Players;
13
13
14
14
#[ derive( Debug , Clone , Deserialize , Serialize , Default ) ]
15
15
pub struct Config {
16
- enabled : bool ,
16
+ enabled : bool ,
17
17
}
18
18
19
19
pub struct BanEnforcer {
20
- config : Config ,
21
- db : BfoxDb ,
20
+ config : Config ,
21
+ db : BfoxDb ,
22
22
}
23
23
24
24
impl BanEnforcer {
25
- pub fn new ( config : Config , _players : Arc < Players > , db : BfoxDb ) -> Self {
26
- Self { config, db }
27
- }
25
+ pub fn new ( config : Config , _players : Arc < Players > , db : BfoxDb ) -> Self {
26
+ Self { config, db }
27
+ }
28
28
29
- async fn event ( self : Arc < Self > , bf4 : Arc < Bf4Client > , event : Event ) -> RconResult < ( ) > {
30
- #[ allow( clippy:: single_match) ]
31
- match event {
32
- Event :: Authenticated { player } => {
33
- match self . db . get_ban ( format ! ( "{}" , player. eaid) ) . await {
34
- Ok ( Some ( ban) ) => {
35
- let banned = if ban. status == BanStatus :: Active {
36
- let now = OffsetDateTime :: now_utc ( ) ;
37
- let is_banned_time = now < ban. end ;
29
+ async fn event ( self : Arc < Self > , bf4 : Arc < Bf4Client > , event : Event ) -> RconResult < ( ) > {
30
+ #[ allow( clippy:: single_match) ]
31
+ match event {
32
+ Event :: Authenticated { player } => {
33
+ match self . db . get_ban ( format ! ( "{}" , player. eaid) ) . await {
34
+ Ok ( Some ( ban) ) => {
35
+ let banned = if ban. status == BanStatus :: Active {
36
+ let now = OffsetDateTime :: now_utc ( ) ;
37
+ let is_banned_time = now < ban. end ;
38
38
39
- if !is_banned_time {
40
- warn ! ( "Ban for player {player} is \" Active\" but endTime is in the past. All times (assumed) in UTC. Now = {}, ban_end = {}" , & now, & ban. end) ;
41
- }
42
- is_banned_time
43
- } else {
44
- false
45
- } ;
39
+ if !is_banned_time {
40
+ warn ! ( "Ban for player {player} is \" Active\" but endTime is in the past. All times (assumed) in UTC. Now = {}, ban_end = {}" , & now, & ban. end) ;
41
+ }
42
+ is_banned_time
43
+ } else {
44
+ false
45
+ } ;
46
46
47
- if banned {
48
- info ! ( "Player {player} is banned, and will be kicked via tempban for one second: {ban:#?}" ) ;
47
+ if banned {
48
+ info ! ( "Player {player} is banned, and will be kicked via tempban for one second: {ban:#?}" ) ;
49
49
50
- match bf4. ban_add (
51
- Ban :: Guid ( player. eaid ) ,
52
- BanTimeout :: Time ( Duration :: from_secs ( 1 ) ) , // I guess rcon will remove this by itself?
53
- Some ( ban. reason . clone ( ) ) // reason
54
- ) . await {
55
- Ok ( ( ) ) => ( ) ,
56
- Err ( BanListError :: BanListFull ) => warn ! ( "Ban list is full?!" ) ,
57
- Err ( BanListError :: NotFound ) => unreachable ! ( ) ,
58
- Err ( BanListError :: Rcon ( rcon_err) ) => error ! ( "Failed to tempban player for a second: {rcon_err:?}" ) ,
59
- }
50
+ match bf4. ban_add (
51
+ Ban :: Guid ( player. eaid ) ,
52
+ BanTimeout :: Time ( Duration :: from_secs ( 1 ) ) , // I guess rcon will remove this by itself?
53
+ Some ( ban. reason . clone ( ) ) // reason
54
+ ) . await {
55
+ Ok ( ( ) ) => ( ) ,
56
+ Err ( BanListError :: BanListFull ) => warn ! ( "Ban list is full?!" ) ,
57
+ Err ( BanListError :: NotFound ) => unreachable ! ( ) ,
58
+ Err ( BanListError :: Rcon ( rcon_err) ) => error ! ( "Failed to tempban player for a second: {rcon_err:?}" ) ,
59
+ }
60
60
61
- match bf4. kick ( player. name , ban. reason ) . await {
62
- Ok ( ( ) ) => ( ) ,
63
- Err ( PlayerKickError :: PlayerNotFound ) => ( ) ,
64
- Err ( PlayerKickError :: Rcon ( rcon_err) ) => error ! ( "Failed to kick player: {rcon_err:?}" ) ,
65
- }
66
- } else {
67
- debug ! ( "Player {player} is in adkats_bans, but the ban has expired." ) ;
68
- }
69
- } ,
70
- Ok ( None ) => ( ) , // player is not banned
71
- Err ( e) => error ! ( "While checking player {player} for ban, got db error, but will ignore it and continue: {e}" ) ,
72
- }
73
- } ,
74
- _ => ( ) ,
75
- }
61
+ match bf4. kick ( player. name , ban. reason ) . await {
62
+ Ok ( ( ) ) => ( ) ,
63
+ Err ( PlayerKickError :: PlayerNotFound ) => ( ) ,
64
+ Err ( PlayerKickError :: Rcon ( rcon_err) ) => error ! ( "Failed to kick player: {rcon_err:?}" ) ,
65
+ }
66
+ } else {
67
+ debug ! ( "Player {player} is in adkats_bans, but the ban has expired." ) ;
68
+ }
69
+ } ,
70
+ Ok ( None ) => ( ) , // player is not banned
71
+ Err ( e) => error ! ( "While checking player {player} for ban, got db error, but will ignore it and continue: {e}" ) ,
72
+ }
73
+ } ,
74
+ _ => ( ) ,
75
+ }
76
76
77
- Ok ( ( ) )
78
- }
77
+ Ok ( ( ) )
78
+ }
79
79
}
80
80
81
81
#[ async_trait]
82
82
impl Plugin for BanEnforcer {
83
83
const NAME : & ' static str = "ban_enforcer" ;
84
- fn enabled ( & self ) -> bool { self . config . enabled }
84
+ fn enabled ( & self ) -> bool { self . config . enabled }
85
85
86
86
async fn event ( self : Arc < Self > , bf4 : Arc < Bf4Client > , event : Event ) -> RconResult < ( ) > {
87
- self . event ( bf4, event) . await
88
- }
87
+ self . event ( bf4, event) . await
88
+ }
89
89
}
0 commit comments