summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/commands.h4
-rw-r--r--include/modules.h72
-rw-r--r--include/xline.h26
3 files changed, 89 insertions, 13 deletions
diff --git a/include/commands.h b/include/commands.h
index 589168409..076db91ae 100644
--- a/include/commands.h
+++ b/include/commands.h
@@ -116,4 +116,8 @@ void handle_V(char token,char* params,serverrec* source,serverrec* reply, char*
*/
bool is_uline(const char* server);
+/** Other useful functions
+ */
+long duration(const char* str);
+
#endif
diff --git a/include/modules.h b/include/modules.h
index a366ebb73..44c91a47c 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -692,6 +692,78 @@ class Server : public classbase
*/
virtual bool PseudoToUser(userrec* alive,userrec* zombie,std::string message);
+ /** Adds a G-line
+ * The G-line is propogated to all of the servers in the mesh and enforced as soon as it is added.
+ * The duration must be in seconds, however you can use the Server::CalcDuration method to convert
+ * durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used
+ * to indicate who or what sent the data, usually this is the nickname of a person, or a server
+ * name.
+ */
+ virtual void AddGLine(long duration, std::string source, std::string reason, std::string hostmask);
+
+ /** Adds a Q-line
+ * The Q-line is propogated to all of the servers in the mesh and enforced as soon as it is added.
+ * The duration must be in seconds, however you can use the Server::CalcDuration method to convert
+ * durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used
+ * to indicate who or what sent the data, usually this is the nickname of a person, or a server
+ * name.
+ */
+ virtual void AddQLine(long duration, std::string source, std::string reason, std::string nickname);
+
+ /** Adds a Z-line
+ * The Z-line is propogated to all of the servers in the mesh and enforced as soon as it is added.
+ * The duration must be in seconds, however you can use the Server::CalcDuration method to convert
+ * durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used
+ * to indicate who or what sent the data, usually this is the nickname of a person, or a server
+ * name.
+ */
+ virtual void AddZLine(long duration, std::string source, std::string reason, std::string ipaddr);
+
+ /** Adds a K-line
+ * The K-line is enforced as soon as it is added.
+ * The duration must be in seconds, however you can use the Server::CalcDuration method to convert
+ * durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used
+ * to indicate who or what sent the data, usually this is the nickname of a person, or a server
+ * name.
+ */
+ virtual void AddKLine(long duration, std::string source, std::string reason, std::string hostmask);
+
+ /** Adds a E-line
+ * The E-line is enforced as soon as it is added.
+ * The duration must be in seconds, however you can use the Server::CalcDuration method to convert
+ * durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used
+ * to indicate who or what sent the data, usually this is the nickname of a person, or a server
+ * name.
+ */
+ virtual void AddELine(long duration, std::string source, std::string reason, std::string hostmask);
+
+ /** Deletes a G-Line from all servers on the mesh
+ */
+ virtual bool DelGLine(std::string hostmask);
+
+ /** Deletes a Q-Line from all servers on the mesh
+ */
+ virtual bool DelQLine(std::string nickname);
+
+ /** Deletes a Z-Line from all servers on the mesh
+ */
+ virtual bool DelZLine(std::string ipaddr);
+
+ /** Deletes a local K-Line
+ */
+ virtual bool DelKLine(std::string hostmask);
+
+ /** Deletes a local E-Line
+ */
+ virtual bool DelELine(std::string hostmask);
+
+ /** Calculates a duration
+ * This method will take a string containing a formatted duration (e.g. "1w2d") and return its value
+ * as a total number of seconds. This is the same function used internally by /GLINE etc to set
+ * the ban times.
+ */
+ virtual long CalcDuration(std::string duration);
+
};
#define CONF_NOT_A_NUMBER 0x000010
diff --git a/include/xline.h b/include/xline.h
index b5163ee58..5381d525a 100644
--- a/include/xline.h
+++ b/include/xline.h
@@ -120,17 +120,17 @@ class QLine : public XLine
void read_xline_defaults();
-void add_gline(long duration, char* source, char* reason, char* hostmask);
-void add_qline(long duration, char* source, char* reason, char* nickname);
-void add_zline(long duration, char* source, char* reason, char* ipaddr);
-void add_kline(long duration, char* source, char* reason, char* hostmask);
-void add_eline(long duration, char* source, char* reason, char* hostmask);
-
-bool del_gline(char* hostmask);
-bool del_qline(char* nickname);
-bool del_zline(char* ipaddr);
-bool del_kline(char* hostmask);
-bool del_eline(char* hostmask);
+void add_gline(long duration, const char* source, const char* reason, const char* hostmask);
+void add_qline(long duration, const char* source, const char* reason, const char* nickname);
+void add_zline(long duration, const char* source, const char* reason, const char* ipaddr);
+void add_kline(long duration, const char* source, const char* reason, const char* hostmask);
+void add_eline(long duration, const char* source, const char* reason, const char* hostmask);
+
+bool del_gline(const char* hostmask);
+bool del_qline(const char* nickname);
+bool del_zline(const char* ipaddr);
+bool del_kline(const char* hostmask);
+bool del_eline(const char* hostmask);
char* matches_qline(const char* nick);
char* matches_gline(const char* host);
@@ -151,8 +151,8 @@ void gline_set_creation_time(char* host, time_t create_time);
void qline_set_creation_time(char* nick, time_t create_time);
void zline_set_creation_time(char* ip, time_t create_time);
-bool zline_make_global(char* ipaddr);
-bool qline_make_global(char* nickname);
+bool zline_make_global(const char* ipaddr);
+bool qline_make_global(const char* nickname);
void sync_xlines(serverrec* serv, char* tcp_host);