+ reason = Lists_CheckReason(&My_Classes[Class], Client);
+ if (!reason)
+ return NULL;
+
+ if (!*reason)
+ reason = "listed";
+
+ switch(Class) {
+ case CLASS_GLINE:
+ snprintf(Reject_Reason, sizeof(Reject_Reason),
+ "\"%s\" (G-Line)", reason);
+ return Reject_Reason;
+ case CLASS_KLINE:
+ snprintf(Reject_Reason, sizeof(Reject_Reason),
+ "\"%s\" (K-Line)", reason);
+ return Reject_Reason;
+ }
+ return reason;
+}
+
+/**
+ * Check if a client is banned from this server: GLINE, KLINE.
+ *
+ * If a client isn't allowed to connect, it will be disconnected again.
+ *
+ * @param Client The client to check.
+ * @return CONNECTED if client is allowed to join, DISCONNECTED if not.
+ */
+GLOBAL bool
+Class_HandleServerBans(CLIENT *Client)
+{
+ char *rejectptr;
+
+ assert(Client != NULL);
+
+ rejectptr = Class_GetMemberReason(CLASS_GLINE, Client);
+ if (!rejectptr)
+ rejectptr = Class_GetMemberReason(CLASS_KLINE, Client);
+ if (rejectptr) {
+ Client_Reject(Client, rejectptr, true);
+ return DISCONNECTED;
+ }
+
+ return CONNECTED;