diff options
Diffstat (limited to 'source/cAuthenticator.h')
-rw-r--r-- | source/cAuthenticator.h | 170 |
1 files changed, 85 insertions, 85 deletions
diff --git a/source/cAuthenticator.h b/source/cAuthenticator.h index ba75e8eb3..0d69e930e 100644 --- a/source/cAuthenticator.h +++ b/source/cAuthenticator.h @@ -1,85 +1,85 @@ -
-// cAuthenticator.h
-
-// Interfaces to the cAuthenticator class representing the thread that authenticates users against the official MC server
-// Authentication prevents "hackers" from joining with an arbitrary username (possibly impersonating the server admins)
-// For more info, see http://wiki.vg/Session#Server_operation
-// In MCS, authentication is implemented as a single thread that receives queued auth requests and dispatches them one by one.
-
-
-
-
-
-#pragma once
-#ifndef CAUTHENTICATOR_H_INCLUDED
-#define CAUTHENTICATOR_H_INCLUDED
-
-#include "cIsThread.h"
-
-
-
-
-
-// fwd: "cRoot.h"
-class cRoot;
-
-
-
-
-
-class cAuthenticator :
- public cIsThread
-{
- typedef cIsThread super;
-
-public:
- cAuthenticator(void);
- ~cAuthenticator();
-
- /// (Re-)read server and address from INI:
- void ReadINI(void);
-
- /// Queues a request for authenticating a user. If the auth fails, the user is kicked
- void Authenticate(int a_ClientID, const AString & a_UserName, const AString & a_ServerHash);
-
- // Stops the authenticator thread
- void Stop(void);
-
-private:
-
- class cUser
- {
- public:
- int mClientID;
- AString mName;
- AString mServerHash;
-
- cUser(int a_ClientID, const AString & a_Name, const AString & a_ServerHash) : mClientID(a_ClientID), mName(a_Name), mServerHash(a_ServerHash) {}
- } ;
-
- typedef std::deque<cUser> cUserList;
-
- cCriticalSection m_CS;
- cUserList m_Queue;
- cEvent m_QueueNonempty;
-
- AString m_Server;
- AString m_Address;
- bool m_ShouldAuthenticate;
-
- // cIsThread override:
- virtual void Execute(void) override;
-
- // Returns true if the user authenticated okay, false on error; iLevel is the recursion deptht (bails out if too deep)
- bool AuthFromAddress(const AString & a_Server, const AString & a_Address, const AString & a_UserName, int a_Level = 1);
-};
-
-
-
-
-
-#endif // CAUTHENTICATOR_H_INCLUDED
-
-
-
-
+ +// cAuthenticator.h + +// Interfaces to the cAuthenticator class representing the thread that authenticates users against the official MC server +// Authentication prevents "hackers" from joining with an arbitrary username (possibly impersonating the server admins) +// For more info, see http://wiki.vg/Session#Server_operation +// In MCS, authentication is implemented as a single thread that receives queued auth requests and dispatches them one by one. + + + + + +#pragma once +#ifndef CAUTHENTICATOR_H_INCLUDED +#define CAUTHENTICATOR_H_INCLUDED + +#include "cIsThread.h" + + + + + +// fwd: "cRoot.h" +class cRoot; + + + + + +class cAuthenticator : + public cIsThread +{ + typedef cIsThread super; + +public: + cAuthenticator(void); + ~cAuthenticator(); + + /// (Re-)read server and address from INI: + void ReadINI(void); + + /// Queues a request for authenticating a user. If the auth fails, the user is kicked + void Authenticate(int a_ClientID, const AString & a_UserName, const AString & a_ServerHash); + + // Stops the authenticator thread + void Stop(void); + +private: + + class cUser + { + public: + int mClientID; + AString mName; + AString mServerHash; + + cUser(int a_ClientID, const AString & a_Name, const AString & a_ServerHash) : mClientID(a_ClientID), mName(a_Name), mServerHash(a_ServerHash) {} + } ; + + typedef std::deque<cUser> cUserList; + + cCriticalSection m_CS; + cUserList m_Queue; + cEvent m_QueueNonempty; + + AString m_Server; + AString m_Address; + bool m_ShouldAuthenticate; + + // cIsThread override: + virtual void Execute(void) override; + + // Returns true if the user authenticated okay, false on error; iLevel is the recursion deptht (bails out if too deep) + bool AuthFromAddress(const AString & a_Server, const AString & a_Address, const AString & a_UserName, int a_Level = 1); +}; + + + + + +#endif // CAUTHENTICATOR_H_INCLUDED + + + + |