auth.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef _AUTH_H
  2. # define _AUTH_H
  3. # include "crypt.h"
  4. #include <bdlib/src/String.h>
  5. #include <bdlib/src/HashTable.h>
  6. #define AUTHED 1
  7. #define AUTHING 2
  8. /* These are what we are expecting back from the user */
  9. #define AUTH_PASS 3
  10. #define AUTH_HASH 4
  11. #define AUTH_BDHASH 5
  12. class Auth {
  13. public:
  14. Auth(const char *, const char *, struct userrec * = NULL);
  15. ~Auth();
  16. int Status(int newstat = -1) { if (newstat >= 0) { status = newstat; } return status; }
  17. void MakeHash();
  18. bool Authed() { return (status == AUTHED); }
  19. bool GetIdx(const char *);
  20. void Done();
  21. void NewNick(const char *nick);
  22. static Auth *Find(const char * host);
  23. static void NullUsers(const char *nick = NULL);
  24. static void FillUsers(const char *nick = NULL);
  25. static void ExpireAuths();
  26. static void InitTimer();
  27. static void DeleteAll();
  28. static void TellAuthed(int);
  29. struct userrec *user;
  30. time_t authtime; /* what time they authed at */
  31. time_t atime; /* when they last were active */
  32. int idx; /* do they have an associated idx? */
  33. char hash[MD5_HASH_LENGTH + 1]; /* used for dcc authing */
  34. char rand[51];
  35. char nick[NICKLEN];
  36. char host[UHOSTLEN];
  37. static bd::HashTable<bd::String, Auth*> ht_host;
  38. static bd::HashTable<bd::String, Auth*> ht_nick;
  39. private:
  40. int status;
  41. };
  42. void makehash(struct userrec *u, const char *randstring, char *out, size_t out_size);
  43. int check_auth_dcc(Auth *, const char *, const char *);
  44. #endif /* !_AUTH_H */