added basic ssl support to ircu
[ircu2.10.12-pk.git] / ircd / m_account.c
index f5615e5360f909be92af44a3214384cf27b8ab87..5040a528333ee6c090b5d319ec641653bc79b9c3 100644 (file)
 
 #include "client.h"
 #include "ircd.h"
+#include "ircd_log.h"
 #include "ircd_reply.h"
 #include "ircd_string.h"
 #include "msg.h"
 #include "numnicks.h"
+#include "s_debug.h"
 #include "s_user.h"
 #include "send.h"
 
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
+#include <stdlib.h>
+#include <string.h>
 
 /*
  * ms_account - server message handler
@@ -120,11 +124,25 @@ int ms_account(struct Client* cptr, struct Client* sptr, int parc,
 
   assert(0 == cli_user(acptr)->account[0]);
 
+  if (strlen(parv[2]) > ACCOUNTLEN)
+    return protocol_violation(cptr,
+                              "Received account (%s) longer than %d for %s; "
+                              "ignoring.",
+                              parv[2], ACCOUNTLEN, cli_name(acptr));
+
+  if (parc > 3) {
+    cli_user(acptr)->acc_create = atoi(parv[3]);
+    Debug((DEBUG_DEBUG, "Received timestamped account: account \"%s\", "
+           "timestamp %Tu", parv[2], cli_user(acptr)->acc_create));
+  }
+
   ircd_strncpy(cli_user(acptr)->account, parv[2], ACCOUNTLEN);
-  hide_hostmask(acptr, FLAGS_ACCOUNT);
+  hide_hostmask(acptr, FLAG_ACCOUNT);
 
-  sendcmdto_serv_butone(sptr, CMD_ACCOUNT, cptr, "%C %s", acptr,
-                       cli_user(acptr)->account);
+  sendcmdto_serv_butone(sptr, CMD_ACCOUNT, cptr,
+                        cli_user(acptr)->acc_create ? "%C %s %Tu" : "%C %s",
+                        acptr, cli_user(acptr)->account,
+                        cli_user(acptr)->acc_create);
 
   return 0;
 }