+ add_qline(0,"<Config>",reason,nick);
+ log(DEBUG,"Read Q line (badnick tag): nick=%s reason=%s",nick,reason);
+ return true;
+}
+
+bool DoKLine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types)
+{
+ char* reason = (char*)values[0];
+ char* host = (char*)values[1];
+
+ add_kline(0,"<Config>",reason,host);
+ log(DEBUG,"Read K line (badhost tag): host=%s reason=%s",host,reason);
+ return true;
+}
+
+bool DoELine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types)
+{
+ char* reason = (char*)values[0];
+ char* host = (char*)values[1];
+
+ add_eline(0,"<Config>",reason,host);
+ log(DEBUG,"Read E line (exception tag): host=%s reason=%s",host,reason);
+ return true;
+}
+
+// adds a g:line
+
+bool add_gline(long duration, const char* source,const char* reason,const char* hostmask)
+{
+ bool ret = del_gline(hostmask);
+
+ GLine item;
+ item.duration = duration;
+ strlcpy(item.hostmask,hostmask,199);
+ strlcpy(item.reason,reason,MAXBUF);
+ strlcpy(item.source,source,255);
+ item.n_matches = 0;
+ item.set_time = TIME;
+
+ if (duration)