diff options
author | Test_User <hax@andrewyu.org> | 2024-07-18 20:12:29 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2024-07-18 20:32:10 -0400 |
commit | e755e8b341eea1b37ef82584cd65a05edf8fdbaa (patch) | |
tree | 63862f2609e7470ec3cb432b416626b90fe6f3f8 /protocols/inspircd2.c | |
parent | 925da4ee0c7364900e67c1c6ce4a1323166d5198 (diff) | |
download | haxircd-e755e8b341eea1b37ef82584cd65a05edf8fdbaa.tar.gz haxircd-e755e8b341eea1b37ef82584cd65a05edf8fdbaa.zip |
Partial nickname enforcement implemented
Diffstat (limited to 'protocols/inspircd2.c')
-rw-r--r-- | protocols/inspircd2.c | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/protocols/inspircd2.c b/protocols/inspircd2.c index b19960e..c11577e 100644 --- a/protocols/inspircd2.c +++ b/protocols/inspircd2.c @@ -639,14 +639,34 @@ void inspircd2_protocol_propagate_new_user(struct string from, struct user_info } // :source NICK <nick> <timestamp> -void inspircd2_protocol_propagate_rename_user(struct string from, struct user_info *user, struct string nick, size_t timestamp, struct string timestamp_str) { - inspircd2_protocol_propagate(from, STRING(":")); - inspircd2_protocol_propagate(from, user->uid); - inspircd2_protocol_propagate(from, STRING(" NICK ")); - inspircd2_protocol_propagate(from, nick); - inspircd2_protocol_propagate(from, STRING(" ")); - inspircd2_protocol_propagate(from, timestamp_str); - inspircd2_protocol_propagate(from, STRING("\n")); +void inspircd2_protocol_propagate_rename_user(struct string from, struct user_info *user, struct string nick, size_t timestamp, struct string timestamp_str, char forced, char immediate) { + if (forced) { + if (STRING_EQ(user->uid, nick)) { + inspircd2_protocol_propagate(from, STRING(":")); + inspircd2_protocol_propagate(from, from); + inspircd2_protocol_propagate(from, STRING(" SAVE ")); + inspircd2_protocol_propagate(from, user->uid); + inspircd2_protocol_propagate(from, STRING(" :")); + inspircd2_protocol_propagate(from, user->nick_ts_str); + inspircd2_protocol_propagate(from, STRING("\n")); + } else { + inspircd2_protocol_propagate(from, STRING(":")); + inspircd2_protocol_propagate(from, from); + inspircd2_protocol_propagate(from, STRING(" SANICK ")); + inspircd2_protocol_propagate(from, user->uid); + inspircd2_protocol_propagate(from, STRING(" :")); + inspircd2_protocol_propagate(from, nick); + inspircd2_protocol_propagate(from, STRING("\n")); + } + } else { + inspircd2_protocol_propagate(from, STRING(":")); + inspircd2_protocol_propagate(from, user->uid); + inspircd2_protocol_propagate(from, STRING(" NICK ")); + inspircd2_protocol_propagate(from, nick); + inspircd2_protocol_propagate(from, STRING(" ")); + inspircd2_protocol_propagate(from, timestamp_str); + inspircd2_protocol_propagate(from, STRING("\n")); + } } // :source QUIT [<reason>?] @@ -860,7 +880,7 @@ int inspircd2_protocol_handle_new_user(struct string from, struct user_info *inf return 0; } -int inspircd2_protocol_handle_rename_user(struct string from, struct user_info *info, struct string nick, size_t timestamp, struct string timestamp_str) { +int inspircd2_protocol_handle_rename_user(struct string from, struct user_info *info, struct string nick, size_t timestamp, struct string timestamp_str, char forced, char immediate) { return 0; } @@ -908,7 +928,7 @@ void inspircd2_protocol_fail_new_user(struct string from, struct user_info *info return; } -void inspircd2_protocol_fail_rename_user(struct string from, struct user_info *info, struct string nick, size_t timestamp, struct string timestamp_str) { +void inspircd2_protocol_fail_rename_user(struct string from, struct user_info *info, struct string nick, size_t timestamp, struct string timestamp_str, char forced, char immediate) { return; } @@ -1404,7 +1424,7 @@ int inspircd2_protocol_handle_nick(struct string source, size_t argc, struct str if (!user) return 0; // KILL timings, etc - if (rename_user(config->sid, user, argv[0], nick_ts) != 0) + if (rename_user(config->sid, user, argv[0], nick_ts, 0, 1) != 0) return -1; return 0; |