- sendto_one_numeric(source_p, RPL_WHOISOPERATOR, form_str(RPL_WHOISOPERATOR),
- target_p->name,
- IsService(target_p) ? ConfigFileEntry.servicestring :
- (IsAdmin(target_p) ? GlobalSetOptions.adminstring :
- GlobalSetOptions.operstring));
+ if((md = user_metadata_find(target_p, "OPERSTRING")) != NULL)
+ sendto_one_numeric(source_p, 313, "%s :%s", target_p->name, md->value);
+ else
+ sendto_one_numeric(source_p, RPL_WHOISOPERATOR, form_str(RPL_WHOISOPERATOR),
+ target_p->name,
+ IsService(target_p) ? ConfigFileEntry.servicestring :
+ (IsAdmin(target_p) ? GlobalSetOptions.adminstring :
+ GlobalSetOptions.operstring));
+ if((md = user_metadata_find(target_p, "SWHOIS")) != NULL)
+ sendto_one_numeric(source_p, 320, "%s :%s", target_p->name, md->value);
+ }
+
+ if(IsSSLClient(target_p))
+ sendto_one_numeric(source_p, RPL_WHOISSECURE, form_str(RPL_WHOISSECURE),
+ target_p->name);
+ if((source_p == target_p || IsOper(source_p)) &&
+ target_p->certfp != NULL)
+ sendto_one_numeric(source_p, RPL_WHOISCERTFP,
+ form_str(RPL_WHOISCERTFP),
+ target_p->name, target_p->certfp);
+
+ if(IsSetBot(target_p))
+ sendto_one_numeric(source_p, RPL_WHOISBOT,
+ form_str(RPL_WHOISBOT),
+ target_p->name);
+ if(IsOper(source_p))
+ {
+ m = buf;
+ *m++ = '+';
+
+ for (i = 0; i < 128; i++) /* >= 127 is extended ascii */
+ if (target_p->umodes & user_modes[i])
+ *m++ = (char) i;
+ *m = '\0';
+
+ sendto_one_numeric(source_p, RPL_WHOISMODES,
+ form_str(RPL_WHOISMODES),
+ target_p->name, buf);