-/*
-
-
-*/
+/* +------------------------------------+
+ * | Inspire Internet Relay Chat Daemon |
+ * +------------------------------------+
+ *
+ * Inspire is copyright (C) 2002-2004 ChatSpike-Dev.
+ * E-mail:
+ * <brain@chatspike.net>
+ * <Craig@chatspike.net>
+ *
+ * Written by Craig Edwards, Craig McLure, and others.
+ * This program is free but copyrighted software; see
+ * the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
#include "inspircd_config.h"
#include "channels.h"
#include "connection.h"
-
+#include "inspstring.h"
#include <string>
#ifndef __USERS_H__
class ConnectClass : public classbase
{
public:
+ /** Type of line, either CC_ALLOW or CC_DENY
+ */
int type;
+ /** Max time to register the connection in seconds
+ */
+ int registration_timeout;
+ /** Number of lines in buffer before excess flood is triggered
+ */
+ int flood;
+ /** Host mask for this line
+ */
char host[MAXBUF];
+ /** Number of seconds between pings for this line
+ */
+ int pingtime;
+ /** (Optional) Password for this line
+ */
char pass[MAXBUF];
+
+ /** Threshold value for flood disconnect
+ */
+ long threshold;
+
+ ConnectClass()
+ {
+ registration_timeout = 0;
+ flood = 0;
+ pingtime = 0;
+ threshold = 0;
+ strlcpy(host,"",MAXBUF);
+ strlcpy(pass,"",MAXBUF);
+ }
};
/** Holds a complete list of all channels to which a user has been invited and has not yet joined.
*/
-typedef vector<Invited> InvitedList;
+typedef std::vector<Invited> InvitedList;
/** Holds a complete list of all allow and deny tags from the configuration file (connection classes)
*/
-typedef vector<ConnectClass> ClassVector;
+typedef std::vector<ConnectClass> ClassVector;
/** Holds all information about a user
* This class stores all information about a user connected to the irc server. Everything about a
* This may contain any of the following RFC characters: o, w, s, i
* Your module may define other mode characters as it sees fit.
*/
- char modes[32];
+ char modes[MAXBUF];
ucrec chans[MAXCHANS];
*/
char result[256];
+ /** Number of lines the user can place into the buffer
+ * (up to the global NetBufferSize bytes) before they
+ * are disconnected for excess flood
+ */
+ int flood;
+
+ /** Number of seconds this user is given to send USER/NICK
+ * If they do not send their details in this time limit they
+ * will be disconnected
+ */
+ unsigned long timeout;
+
+ /** The oper type they logged in as, if they are an oper.
+ * This is used to check permissions in operclasses, so that
+ * we can say 'yay' or 'nay' to any commands they issue.
+ * The value of this is the value of a valid 'type name=' tag.
+ */
+ char oper[NICKMAX];
+
+ /** True when DNS lookups are completed.
+ */
+ bool dns_done;
+
+ /** Number of seconds between PINGs for this user (set from <connect:allow> tag
+ */
+ unsigned long pingmax;
+
+ /** Password specified by the user when they registered.
+ * This is stored even if the <connect> block doesnt need a password, so that
+ * modules may check it.
+ */
+ char password[MAXBUF];
+
+ /** User's receive queue.
+ * Lines from the IRCd awaiting processing are stored here.
+ * Upgraded april 2005, old system a bit hairy.
+ */
+ std::string recvq;
+
+ /** Flood counters
+ */
+ long lines_in;
+ time_t reset_due;
+ long threshold;
+
userrec();
virtual ~userrec() { }
*/
virtual void RemoveInvite(char* channel);
+ /** Returns true or false for if a user can execute a privilaged oper command.
+ * This is done by looking up their oper type from userrec::oper, then referencing
+ * this to their oper classes and checking the commands they can execute.
+ */
+ bool HasPermission(char* command);
+
+ bool userrec::AddBuffer(std::string a);
+ bool userrec::BufferIsReady();
+ void userrec::ClearBuffer();
+ std::string userrec::GetBuffer();
+
};