]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/nickserv.c
mod-python: generalised the setting of the PYTHONPATH environment variable
[irc/evilnet/x3.git] / src / nickserv.c
index dad3b878b9d4c35e40f56d1e68ba1919746c1f25..7939a3d2b0011f05b11d3d324543ad3ced587159 100644 (file)
@@ -3268,7 +3268,7 @@ oper_try_set_access(struct userNode *user, struct userNode *bot, struct handle_i
         return 0;
     }
 #ifdef WITH_LDAP
-    if(nickserv_conf.ldap_enable && nickserv_conf.ldap_oper_group_dn && nickserv_conf.ldap_admin_dn) {
+    if(nickserv_conf.ldap_enable && *(nickserv_conf.ldap_oper_group_dn) && *(nickserv_conf.ldap_admin_dn)) {
         int rc;
         if(new_level > nickserv_conf.ldap_oper_group_level)
           rc = ldap_add2group(target->handle, nickserv_conf.ldap_oper_group_dn);
@@ -4998,6 +4998,23 @@ nickserv_db_cleanup(void)
         regfree(&nickserv_conf.valid_nick_regex);
 }
 
+void handle_loc_auth_oper(struct userNode *user, UNUSED_ARG(struct handle_info *old_handle)) {
+    if (!*nickserv_conf.auto_oper || !user->handle_info)
+        return;
+
+    if (!IsOper(user)) {
+        if (*nickserv_conf.auto_admin && user->handle_info->opserv_level >= opserv_conf_admin_level()) {
+            irc_umode(user, nickserv_conf.auto_admin);
+            irc_sno(0x1, "%s (%s@%s) is now an IRC Administrator",
+                    user->nick, user->ident, user->hostname);
+        } else if (*nickserv_conf.auto_oper && user->handle_info->opserv_level) {
+            irc_umode(user, nickserv_conf.auto_oper);
+            irc_sno(0x1, "%s (%s@%s) is now an IRC Operator",
+                    user->nick, user->ident, user->hostname);
+        }
+    }
+}
+
 void
 init_nickserv(const char *nick)
 {
@@ -5008,6 +5025,7 @@ init_nickserv(const char *nick)
     reg_nick_change_func(handle_nick_change);
     reg_del_user_func(nickserv_remove_user);
     reg_account_func(handle_account);
+    reg_auth_func(handle_loc_auth_oper);
 
     /* set up handle_inverse_flags */
     memset(handle_inverse_flags, 0, sizeof(handle_inverse_flags));