1 #include "Lobby2Message.h"
2 #include "Lobby2Server.h"
3 // libpq-fe.h is part of PostgreSQL which must be installed on this computer to use the PostgreRepository
4 #include "libpq-fe.h"
5 #include "PostgreSQLInterface.h"
6 #include "EpochTimeToString.h"
7
8 #ifndef __LOBBY_2_MESSAGE_PGSQL_H
9 #define __LOBBY_2_MESSAGE_PGSQL_H
10
11 namespace RakNet
12 {
13
14 // --------------------------------------------- Database specific message implementations for the server --------------------------------------------
15
16 #define __L2_MSG_DB_HEADER(__NAME__,__DB__) \
17 struct __NAME__##_##__DB__ : public __NAME__
18
19 struct ClanMemberDescriptor
20 {
21 unsigned int userId;
22 RakNet::RakString name;
23 bool isSubleader;
24 ClanMemberState memberState;
25 RakNet::RakString banReason;
26 };
27
28
29 // Helper functions
30 unsigned int GetUserRowFromHandle(RakNet::RakString& userName, PostgreSQLInterface *pgsql);
31 unsigned int GetClanIdFromHandle(RakNet::RakString clanName, PostgreSQLInterface *pgsql);
32 bool IsClanLeader(RakNet::RakString clanName, unsigned int userId, PostgreSQLInterface *pgsql);
33 unsigned int GetClanLeaderId(unsigned int clanId, PostgreSQLInterface *pgsql);
34 bool IsClanLeader(unsigned int clanId, unsigned int userId, PostgreSQLInterface *pgsql);
35 ClanMemberState GetClanMemberState(unsigned int clanId, unsigned int userId, bool *isSubleader, PostgreSQLInterface *pgsql);
36 void GetClanMembers(unsigned int clanId, DataStructures::List<ClanMemberDescriptor> &clanMembers, PostgreSQLInterface *pgsql);
37 bool IsTitleInUse(RakNet::RakString titleName, PostgreSQLInterface *pgsql);
38 bool StringContainsProfanity(RakNet::RakString string, PostgreSQLInterface *pgsql);
39 bool IsValidCountry(RakNet::RakString string, bool *countryHasStates, PostgreSQLInterface *pgsql);
40 bool IsValidState(RakNet::RakString string, PostgreSQLInterface *pgsql);
41 bool IsValidRace(RakNet::RakString string, PostgreSQLInterface *pgsql);
42 void GetFriendIDs(unsigned int callerUserId, bool excludeIfIgnored, PostgreSQLInterface *pgsql, DataStructures::List<unsigned int> &output);
43 void GetClanMateIDs(unsigned int callerUserId, bool excludeIfIgnored, PostgreSQLInterface *pgsql, DataStructures::List<unsigned int> &output);
44 bool IsIgnoredByTarget(unsigned int callerUserId, unsigned int targetUserId, PostgreSQLInterface *pgsql);
45 void OutputFriendsNotification(RakNet::Notification_Friends_StatusChange::Status notificationType, Lobby2ServerCommand *command, PostgreSQLInterface *pgsql);
46 // This does NOT return the online status to output, as it is not threadsafe
47 void GetFriendInfosByStatus(unsigned int callerUserId, RakNet::RakString status, PostgreSQLInterface *pgsql, DataStructures::List<FriendInfo> &output, bool callerIsUserOne);
48 void SendEmail(DataStructures::List<RakNet::RakString> &recipientNames, unsigned int senderUserId, RakNet::RakString senderUserName, Lobby2Server *server, RakNet::RakString subject, RakNet::RakString body, RakNetSmartPtr<BinaryDataBlock>binaryData, int status, RakNet::RakString triggerString, PostgreSQLInterface *pgsql);
49 void SendEmail(DataStructures::List<unsigned int> &targetUserIds, unsigned int senderUserId, RakNet::RakString senderUserName, Lobby2Server *server, RakNet::RakString subject, RakNet::RakString body, RakNetSmartPtr<BinaryDataBlock>binaryData, int status, RakNet::RakString triggerString, PostgreSQLInterface *pgsql);
50 void SendEmail(unsigned int targetUserId, unsigned int senderUserId, RakNet::RakString senderUserName, Lobby2Server *server, RakNet::RakString subject, RakNet::RakString body, RakNetSmartPtr<BinaryDataBlock>binaryData, int status, RakNet::RakString triggerString, PostgreSQLInterface *pgsql);
51 int GetActiveClanCount(unsigned int userId, PostgreSQLInterface *pgsql);
52 bool CreateAccountParametersFailed( CreateAccountParameters &createAccountParameters, RakNet::Lobby2ResultCode &resultCode, Lobby2ServerCommand *command, PostgreSQLInterface *pgsql);
53 void UpdateAccountFromMissingCreationParameters(CreateAccountParameters &createAccountParameters, unsigned int userPrimaryKey, Lobby2ServerCommand *command, PostgreSQLInterface *pgsql);
54
__L2_MSG_DB_HEADER(Platform_Startup,PGSQL)55 __L2_MSG_DB_HEADER(Platform_Startup, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface ) { (void)command; (void)databaseInterface; return false; }};
__L2_MSG_DB_HEADER(Platform_Shutdown,PGSQL)56 __L2_MSG_DB_HEADER(Platform_Shutdown, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface ) { (void)command; (void)databaseInterface; return false; }};
__L2_MSG_DB_HEADER(System_CreateDatabase,PGSQL)57 __L2_MSG_DB_HEADER(System_CreateDatabase, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_DestroyDatabase,PGSQL)58 __L2_MSG_DB_HEADER(System_DestroyDatabase, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_CreateTitle,PGSQL)59 __L2_MSG_DB_HEADER(System_CreateTitle, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_DestroyTitle,PGSQL)60 __L2_MSG_DB_HEADER(System_DestroyTitle, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_GetTitleRequiredAge,PGSQL)61 __L2_MSG_DB_HEADER(System_GetTitleRequiredAge, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_GetTitleBinaryData,PGSQL)62 __L2_MSG_DB_HEADER(System_GetTitleBinaryData, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_RegisterProfanity,PGSQL)63 __L2_MSG_DB_HEADER(System_RegisterProfanity, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_BanUser,PGSQL)64 __L2_MSG_DB_HEADER(System_BanUser, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_UnbanUser,PGSQL)65 __L2_MSG_DB_HEADER(System_UnbanUser, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(CDKey_Add,PGSQL)66 __L2_MSG_DB_HEADER(CDKey_Add, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(CDKey_GetStatus,PGSQL)67 __L2_MSG_DB_HEADER(CDKey_GetStatus, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(CDKey_Use,PGSQL)68 __L2_MSG_DB_HEADER(CDKey_Use, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(CDKey_FlagStolen,PGSQL)69 __L2_MSG_DB_HEADER(CDKey_FlagStolen, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_Login,PGSQL)70 __L2_MSG_DB_HEADER(Client_Login, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_Logoff,PGSQL)71 __L2_MSG_DB_HEADER(Client_Logoff, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_RegisterAccount,PGSQL)72 __L2_MSG_DB_HEADER(Client_RegisterAccount, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_SetEmailAddressValidated,PGSQL)73 __L2_MSG_DB_HEADER(System_SetEmailAddressValidated, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_ValidateHandle,PGSQL)74 __L2_MSG_DB_HEADER(Client_ValidateHandle, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_DeleteAccount,PGSQL)75 __L2_MSG_DB_HEADER(System_DeleteAccount, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(System_PruneAccounts,PGSQL)76 __L2_MSG_DB_HEADER(System_PruneAccounts, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_GetEmailAddress,PGSQL)77 __L2_MSG_DB_HEADER(Client_GetEmailAddress, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_GetPasswordRecoveryQuestionByHandle,PGSQL)78 __L2_MSG_DB_HEADER(Client_GetPasswordRecoveryQuestionByHandle, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_GetPasswordByPasswordRecoveryAnswer,PGSQL)79 __L2_MSG_DB_HEADER(Client_GetPasswordByPasswordRecoveryAnswer, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_ChangeHandle,PGSQL)80 __L2_MSG_DB_HEADER(Client_ChangeHandle, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_UpdateAccount,PGSQL)81 __L2_MSG_DB_HEADER(Client_UpdateAccount, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_GetAccountDetails,PGSQL)82 __L2_MSG_DB_HEADER(Client_GetAccountDetails, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_StartIgnore,PGSQL)83 __L2_MSG_DB_HEADER(Client_StartIgnore, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_StopIgnore,PGSQL)84 __L2_MSG_DB_HEADER(Client_StopIgnore, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_GetIgnoreList,PGSQL)85 __L2_MSG_DB_HEADER(Client_GetIgnoreList, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Client_PerTitleIntegerStorage,PGSQL)86 __L2_MSG_DB_HEADER(Client_PerTitleIntegerStorage, PGSQL){
87 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );
88 virtual bool Write( Lobby2ServerCommand *command, void *databaseInterface );
89 virtual bool Read( Lobby2ServerCommand *command, void *databaseInterface );
90 virtual bool Delete( Lobby2ServerCommand *command, void *databaseInterface );
91 virtual bool Add( Lobby2ServerCommand *command, void *databaseInterface );
92 };
__L2_MSG_DB_HEADER(Client_SetPresence,PGSQL)93 __L2_MSG_DB_HEADER(Client_SetPresence, PGSQL){virtual bool ServerPreDBMemoryImpl( Lobby2Server *server, RakString userHandle );};
__L2_MSG_DB_HEADER(Client_GetPresence,PGSQL)94 __L2_MSG_DB_HEADER(Client_GetPresence, PGSQL){virtual bool ServerPreDBMemoryImpl( Lobby2Server *server, RakString userHandle );};
__L2_MSG_DB_HEADER(Client_PerTitleBinaryStorage,PGSQL)95 __L2_MSG_DB_HEADER(Client_PerTitleBinaryStorage, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Friends_SendInvite,PGSQL)96 __L2_MSG_DB_HEADER(Friends_SendInvite, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Friends_AcceptInvite,PGSQL)97 __L2_MSG_DB_HEADER(Friends_AcceptInvite, PGSQL){
98 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );
99 virtual void ServerPostDBMemoryImpl( Lobby2Server *server, RakString userHandle );
100 };
__L2_MSG_DB_HEADER(Friends_RejectInvite,PGSQL)101 __L2_MSG_DB_HEADER(Friends_RejectInvite, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Friends_GetInvites,PGSQL)102 __L2_MSG_DB_HEADER(Friends_GetInvites, PGSQL){
103 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );
104 virtual void ServerPostDBMemoryImpl( Lobby2Server *server, RakString userHandle );
105 };
__L2_MSG_DB_HEADER(Friends_GetFriends,PGSQL)106 __L2_MSG_DB_HEADER(Friends_GetFriends, PGSQL){
107 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );
108 virtual void ServerPostDBMemoryImpl( Lobby2Server *server, RakString userHandle );
109 };
__L2_MSG_DB_HEADER(Friends_Remove,PGSQL)110 __L2_MSG_DB_HEADER(Friends_Remove, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(BookmarkedUsers_Add,PGSQL)111 __L2_MSG_DB_HEADER(BookmarkedUsers_Add, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(BookmarkedUsers_Remove,PGSQL)112 __L2_MSG_DB_HEADER(BookmarkedUsers_Remove, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(BookmarkedUsers_Get,PGSQL)113 __L2_MSG_DB_HEADER(BookmarkedUsers_Get, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Emails_Send,PGSQL)114 __L2_MSG_DB_HEADER(Emails_Send, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Emails_Get,PGSQL)115 __L2_MSG_DB_HEADER(Emails_Get, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Emails_Delete,PGSQL)116 __L2_MSG_DB_HEADER(Emails_Delete, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Emails_SetStatus,PGSQL)117 __L2_MSG_DB_HEADER(Emails_SetStatus, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_SubmitMatch,PGSQL)118 __L2_MSG_DB_HEADER(Ranking_SubmitMatch, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_GetMatches,PGSQL)119 __L2_MSG_DB_HEADER(Ranking_GetMatches, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_GetMatchBinaryData,PGSQL)120 __L2_MSG_DB_HEADER(Ranking_GetMatchBinaryData, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_GetTotalScore,PGSQL)121 __L2_MSG_DB_HEADER(Ranking_GetTotalScore, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_WipeScoresForPlayer,PGSQL)122 __L2_MSG_DB_HEADER(Ranking_WipeScoresForPlayer, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_WipeMatches,PGSQL)123 __L2_MSG_DB_HEADER(Ranking_WipeMatches, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_PruneMatches,PGSQL)124 __L2_MSG_DB_HEADER(Ranking_PruneMatches, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_UpdateRating,PGSQL)125 __L2_MSG_DB_HEADER(Ranking_UpdateRating, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_WipeRatings,PGSQL)126 __L2_MSG_DB_HEADER(Ranking_WipeRatings, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Ranking_GetRating,PGSQL)127 __L2_MSG_DB_HEADER(Ranking_GetRating, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_Create,PGSQL)128 __L2_MSG_DB_HEADER(Clans_Create, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_SetProperties,PGSQL)129 __L2_MSG_DB_HEADER(Clans_SetProperties, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_GetProperties,PGSQL)130 __L2_MSG_DB_HEADER(Clans_GetProperties, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_SetMyMemberProperties,PGSQL)131 __L2_MSG_DB_HEADER(Clans_SetMyMemberProperties, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_GrantLeader,PGSQL)132 __L2_MSG_DB_HEADER(Clans_GrantLeader, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_SetSubleaderStatus,PGSQL)133 __L2_MSG_DB_HEADER(Clans_SetSubleaderStatus, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_SetMemberRank,PGSQL)134 __L2_MSG_DB_HEADER(Clans_SetMemberRank, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_GetMemberProperties,PGSQL)135 __L2_MSG_DB_HEADER(Clans_GetMemberProperties, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_ChangeHandle,PGSQL)136 __L2_MSG_DB_HEADER(Clans_ChangeHandle, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_Leave,PGSQL)137 __L2_MSG_DB_HEADER(Clans_Leave, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_Get,PGSQL)138 __L2_MSG_DB_HEADER(Clans_Get, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_SendJoinInvitation,PGSQL)139 __L2_MSG_DB_HEADER(Clans_SendJoinInvitation, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_WithdrawJoinInvitation,PGSQL)140 __L2_MSG_DB_HEADER(Clans_WithdrawJoinInvitation, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_AcceptJoinInvitation,PGSQL)141 __L2_MSG_DB_HEADER(Clans_AcceptJoinInvitation, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_RejectJoinInvitation,PGSQL)142 __L2_MSG_DB_HEADER(Clans_RejectJoinInvitation, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_DownloadInvitationList,PGSQL)143 __L2_MSG_DB_HEADER(Clans_DownloadInvitationList, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_SendJoinRequest,PGSQL)144 __L2_MSG_DB_HEADER(Clans_SendJoinRequest, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_WithdrawJoinRequest,PGSQL)145 __L2_MSG_DB_HEADER(Clans_WithdrawJoinRequest, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_AcceptJoinRequest,PGSQL)146 __L2_MSG_DB_HEADER(Clans_AcceptJoinRequest, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_RejectJoinRequest,PGSQL)147 __L2_MSG_DB_HEADER(Clans_RejectJoinRequest, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_DownloadRequestList,PGSQL)148 __L2_MSG_DB_HEADER(Clans_DownloadRequestList, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_KickAndBlacklistUser,PGSQL)149 __L2_MSG_DB_HEADER(Clans_KickAndBlacklistUser, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_UnblacklistUser,PGSQL)150 __L2_MSG_DB_HEADER(Clans_UnblacklistUser, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_GetBlacklist,PGSQL)151 __L2_MSG_DB_HEADER(Clans_GetBlacklist, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_GetMembers,PGSQL)152 __L2_MSG_DB_HEADER(Clans_GetMembers, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
__L2_MSG_DB_HEADER(Clans_GetList,PGSQL)153 __L2_MSG_DB_HEADER(Clans_GetList, PGSQL){virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface );};
154
__L2_MSG_DB_HEADER(Clans_CreateBoard,PGSQL)155 __L2_MSG_DB_HEADER(Clans_CreateBoard, PGSQL)
156 {
157 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
158 {
159 (void)command;
160
161 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
162 PGresult *result = pgsql->QueryVariadic("");
163 if (result!=0)
164 {
165 PQclear(result);
166 resultCode=L2RC_SUCCESS;
167 }
168 else
169 {
170 resultCode=L2RC_SUCCESS;
171 }
172 return true;
173 }
174 };
175
__L2_MSG_DB_HEADER(Clans_DestroyBoard,PGSQL)176 __L2_MSG_DB_HEADER(Clans_DestroyBoard, PGSQL)
177 {
178 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
179 {
180 (void)command;
181
182 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
183 PGresult *result = pgsql->QueryVariadic("");
184 if (result!=0)
185 {
186 PQclear(result);
187 resultCode=L2RC_SUCCESS;
188 }
189 else
190 {
191 resultCode=L2RC_SUCCESS;
192 }
193 return true;
194 }
195 };
196
__L2_MSG_DB_HEADER(Clans_CreateNewTopic,PGSQL)197 __L2_MSG_DB_HEADER(Clans_CreateNewTopic, PGSQL)
198 {
199 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
200 {
201 (void)command;
202
203 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
204 PGresult *result = pgsql->QueryVariadic("");
205 if (result!=0)
206 {
207 PQclear(result);
208 resultCode=L2RC_SUCCESS;
209 }
210 else
211 {
212 resultCode=L2RC_SUCCESS;
213 }
214 return true;
215 }
216 };
217
__L2_MSG_DB_HEADER(Clans_ReplyToTopic,PGSQL)218 __L2_MSG_DB_HEADER(Clans_ReplyToTopic, PGSQL)
219 {
220 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
221 {
222 (void)command;
223
224 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
225 PGresult *result = pgsql->QueryVariadic("");
226 if (result!=0)
227 {
228 PQclear(result);
229 resultCode=L2RC_SUCCESS;
230 }
231 else
232 {
233 resultCode=L2RC_SUCCESS;
234 }
235 return true;
236 }
237 };
238
__L2_MSG_DB_HEADER(Clans_RemovePost,PGSQL)239 __L2_MSG_DB_HEADER(Clans_RemovePost, PGSQL)
240 {
241 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
242 {
243 (void)command;
244
245 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
246 PGresult *result = pgsql->QueryVariadic("");
247 if (result!=0)
248 {
249 PQclear(result);
250 resultCode=L2RC_SUCCESS;
251 }
252 else
253 {
254 resultCode=L2RC_SUCCESS;
255 }
256 return true;
257 }
258 };
259
__L2_MSG_DB_HEADER(Clans_GetBoards,PGSQL)260 __L2_MSG_DB_HEADER(Clans_GetBoards, PGSQL)
261 {
262 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
263 {
264 (void)command;
265
266 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
267 PGresult *result = pgsql->QueryVariadic("");
268 if (result!=0)
269 {
270 PQclear(result);
271 resultCode=L2RC_SUCCESS;
272 }
273 else
274 {
275 resultCode=L2RC_SUCCESS;
276 }
277 return true;
278 }
279 };
280
__L2_MSG_DB_HEADER(Clans_GetTopics,PGSQL)281 __L2_MSG_DB_HEADER(Clans_GetTopics, PGSQL)
282 {
283 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
284 {
285 (void)command;
286
287 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
288 PGresult *result = pgsql->QueryVariadic("");
289 if (result!=0)
290 {
291 PQclear(result);
292 resultCode=L2RC_SUCCESS;
293 }
294 else
295 {
296 resultCode=L2RC_SUCCESS;
297 }
298 return true;
299 }
300 };
301
__L2_MSG_DB_HEADER(Clans_GetPosts,PGSQL)302 __L2_MSG_DB_HEADER(Clans_GetPosts, PGSQL)
303 {
304 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
305 {
306 (void)command;
307
308 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
309 PGresult *result = pgsql->QueryVariadic("");
310 if (result!=0)
311 {
312 PQclear(result);
313 resultCode=L2RC_SUCCESS;
314 }
315 else
316 {
317 resultCode=L2RC_SUCCESS;
318 }
319 return true;
320 }
321 };
322
__L2_MSG_DB_HEADER(Notification_Friends_StatusChange,PGSQL)323 __L2_MSG_DB_HEADER(Notification_Friends_StatusChange, PGSQL)
324 {
325 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
326 {
327 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
328 if (command->callerSystemAddresses.Size()==0)
329 {
330 OutputFriendsNotification(Notification_Friends_StatusChange::FRIEND_LOGGED_OFF, command, pgsql);
331 }
332
333 // Don't let the thread return this notification with UNASSIGNED_SYSTEM_ADDRESS to the user. It's just a message to the thread.
334 return false;
335 }
336 virtual void ServerPostDBMemoryImpl( Lobby2Server *server, RakString userHandle )
337 {
338 switch (op)
339 {
340 case Notification_Friends_StatusChange::FRIEND_LOGGED_IN:
341 case Notification_Friends_StatusChange::FRIEND_LOGGED_IN_DIFFERENT_CONTEXT:
342 case Notification_Friends_StatusChange::THEY_ACCEPTED_OUR_INVITATION_TO_BE_FRIENDS:
343 server->GetPresence(presence,otherHandle);
344 break;
345 case Notification_Friends_StatusChange::FRIEND_LOGGED_OFF:
346 presence.isVisible=false;
347 presence.status=Lobby2Presence::NOT_ONLINE;
348 break;
349 case Notification_Friends_StatusChange::FRIEND_ACCOUNT_WAS_DELETED:
350 case Notification_Friends_StatusChange::YOU_WERE_REMOVED_AS_A_FRIEND:
351 case Notification_Friends_StatusChange::GOT_INVITATION_TO_BE_FRIENDS:
352 case Notification_Friends_StatusChange::THEY_REJECTED_OUR_INVITATION_TO_BE_FRIENDS:
353 presence.isVisible=false;
354 presence.status=Lobby2Presence::UNDEFINED;
355 break;
356 }
357 }
358 };
359
__L2_MSG_DB_HEADER(Notification_Friends_PresenceUpdate,PGSQL)360 __L2_MSG_DB_HEADER(Notification_Friends_PresenceUpdate, PGSQL)
361 {
362 virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
363 {
364 PostgreSQLInterface *pgsql = (PostgreSQLInterface *)databaseInterface;
365
366 // Tell all friends about this new login
367 DataStructures::List<unsigned int> output;
368 GetFriendIDs(command->callerUserId, true, pgsql, output);
369
370 unsigned int idx;
371 for (idx=0; idx < output.Size(); idx++)
372 {
373 Notification_Friends_PresenceUpdate *notification = (Notification_Friends_PresenceUpdate *) command->server->GetMessageFactory()->Alloc(L2MID_Notification_Friends_PresenceUpdate);
374 notification->otherHandle=command->callingUserName;
375 notification->newPresence=newPresence;
376 notification->resultCode=L2RC_SUCCESS;
377 command->server->AddOutputFromThread(notification, output[idx], "");
378 }
379
380 // Don't let the thread return this notification with UNASSIGNED_SYSTEM_ADDRESS to the user. It's just a message to the thread.
381 return false;
382 }
383 };
384
385
386 // --------------------------------------------- Database specific factory class for all messages --------------------------------------------
387
388 #define __L2_MSG_FACTORY_IMPL(__NAME__,__DB__) {case L2MID_##__NAME__ : return RakNet::OP_NEW< __NAME__##_##__DB__ >( __FILE__, __LINE__ ) ;}
389
390 struct Lobby2MessageFactory_PGSQL : public Lobby2MessageFactory
391 {
AllocLobby2MessageFactory_PGSQL392 virtual Lobby2Message *Alloc(Lobby2MessageID id)
393 {
394 switch (id)
395 {
396 __L2_MSG_FACTORY_IMPL(Platform_Startup, PGSQL);
397 __L2_MSG_FACTORY_IMPL(Platform_Shutdown, PGSQL);
398 __L2_MSG_FACTORY_IMPL(System_CreateDatabase, PGSQL);
399 __L2_MSG_FACTORY_IMPL(System_DestroyDatabase, PGSQL);
400 __L2_MSG_FACTORY_IMPL(System_CreateTitle, PGSQL);
401 __L2_MSG_FACTORY_IMPL(System_DestroyTitle, PGSQL);
402 __L2_MSG_FACTORY_IMPL(System_GetTitleRequiredAge, PGSQL);
403 __L2_MSG_FACTORY_IMPL(System_GetTitleBinaryData, PGSQL);
404 __L2_MSG_FACTORY_IMPL(System_RegisterProfanity, PGSQL);
405 __L2_MSG_FACTORY_IMPL(System_BanUser, PGSQL);
406 __L2_MSG_FACTORY_IMPL(System_UnbanUser, PGSQL);
407 __L2_MSG_FACTORY_IMPL(CDKey_Add, PGSQL);
408 __L2_MSG_FACTORY_IMPL(CDKey_GetStatus, PGSQL);
409 __L2_MSG_FACTORY_IMPL(CDKey_Use, PGSQL);
410 __L2_MSG_FACTORY_IMPL(CDKey_FlagStolen, PGSQL);
411 __L2_MSG_FACTORY_IMPL(Client_Login, PGSQL);
412 __L2_MSG_FACTORY_IMPL(Client_Logoff, PGSQL);
413 __L2_MSG_FACTORY_IMPL(Client_RegisterAccount, PGSQL);
414 __L2_MSG_FACTORY_IMPL(System_SetEmailAddressValidated, PGSQL);
415 __L2_MSG_FACTORY_IMPL(Client_ValidateHandle, PGSQL);
416 __L2_MSG_FACTORY_IMPL(System_DeleteAccount, PGSQL);
417 __L2_MSG_FACTORY_IMPL(System_PruneAccounts, PGSQL);
418 __L2_MSG_FACTORY_IMPL(Client_GetEmailAddress, PGSQL);
419 __L2_MSG_FACTORY_IMPL(Client_GetPasswordRecoveryQuestionByHandle, PGSQL);
420 __L2_MSG_FACTORY_IMPL(Client_GetPasswordByPasswordRecoveryAnswer, PGSQL);
421 __L2_MSG_FACTORY_IMPL(Client_ChangeHandle, PGSQL);
422 __L2_MSG_FACTORY_IMPL(Client_UpdateAccount, PGSQL);
423 __L2_MSG_FACTORY_IMPL(Client_GetAccountDetails, PGSQL);
424 __L2_MSG_FACTORY_IMPL(Client_StartIgnore, PGSQL);
425 __L2_MSG_FACTORY_IMPL(Client_StopIgnore, PGSQL);
426 __L2_MSG_FACTORY_IMPL(Client_GetIgnoreList, PGSQL);
427 __L2_MSG_FACTORY_IMPL(Client_PerTitleIntegerStorage, PGSQL);
428 __L2_MSG_FACTORY_IMPL(Client_PerTitleBinaryStorage, PGSQL);
429 __L2_MSG_FACTORY_IMPL(Client_SetPresence, PGSQL);
430 __L2_MSG_FACTORY_IMPL(Client_GetPresence, PGSQL);
431 __L2_MSG_FACTORY_IMPL(Friends_SendInvite, PGSQL);
432 __L2_MSG_FACTORY_IMPL(Friends_AcceptInvite, PGSQL);
433 __L2_MSG_FACTORY_IMPL(Friends_RejectInvite, PGSQL);
434 __L2_MSG_FACTORY_IMPL(Friends_GetInvites, PGSQL);
435 __L2_MSG_FACTORY_IMPL(Friends_GetFriends, PGSQL);
436 __L2_MSG_FACTORY_IMPL(Friends_Remove, PGSQL);
437 __L2_MSG_FACTORY_IMPL(BookmarkedUsers_Add, PGSQL);
438 __L2_MSG_FACTORY_IMPL(BookmarkedUsers_Remove, PGSQL);
439 __L2_MSG_FACTORY_IMPL(BookmarkedUsers_Get, PGSQL);
440 __L2_MSG_FACTORY_IMPL(Emails_Send, PGSQL);
441 __L2_MSG_FACTORY_IMPL(Emails_Get, PGSQL);
442 __L2_MSG_FACTORY_IMPL(Emails_Delete, PGSQL);
443 __L2_MSG_FACTORY_IMPL(Emails_SetStatus, PGSQL);
444 __L2_MSG_FACTORY_IMPL(Ranking_SubmitMatch, PGSQL);
445 __L2_MSG_FACTORY_IMPL(Ranking_GetMatches, PGSQL);
446 __L2_MSG_FACTORY_IMPL(Ranking_GetMatchBinaryData, PGSQL);
447 __L2_MSG_FACTORY_IMPL(Ranking_GetTotalScore, PGSQL);
448 __L2_MSG_FACTORY_IMPL(Ranking_WipeScoresForPlayer, PGSQL);
449 __L2_MSG_FACTORY_IMPL(Ranking_WipeMatches, PGSQL);
450 __L2_MSG_FACTORY_IMPL(Ranking_PruneMatches, PGSQL);
451 __L2_MSG_FACTORY_IMPL(Ranking_UpdateRating, PGSQL);
452 __L2_MSG_FACTORY_IMPL(Ranking_WipeRatings, PGSQL);
453 __L2_MSG_FACTORY_IMPL(Ranking_GetRating, PGSQL);
454 __L2_MSG_FACTORY_IMPL(Clans_Create, PGSQL);
455 __L2_MSG_FACTORY_IMPL(Clans_SetProperties, PGSQL);
456 __L2_MSG_FACTORY_IMPL(Clans_GetProperties, PGSQL);
457 __L2_MSG_FACTORY_IMPL(Clans_SetMyMemberProperties, PGSQL);
458 __L2_MSG_FACTORY_IMPL(Clans_GrantLeader, PGSQL);
459 __L2_MSG_FACTORY_IMPL(Clans_SetSubleaderStatus, PGSQL);
460 __L2_MSG_FACTORY_IMPL(Clans_SetMemberRank, PGSQL);
461 __L2_MSG_FACTORY_IMPL(Clans_GetMemberProperties, PGSQL);
462 __L2_MSG_FACTORY_IMPL(Clans_ChangeHandle, PGSQL);
463 __L2_MSG_FACTORY_IMPL(Clans_Leave, PGSQL);
464 __L2_MSG_FACTORY_IMPL(Clans_Get, PGSQL);
465 __L2_MSG_FACTORY_IMPL(Clans_SendJoinInvitation, PGSQL);
466 __L2_MSG_FACTORY_IMPL(Clans_WithdrawJoinInvitation, PGSQL);
467 __L2_MSG_FACTORY_IMPL(Clans_AcceptJoinInvitation, PGSQL);
468 __L2_MSG_FACTORY_IMPL(Clans_RejectJoinInvitation, PGSQL);
469 __L2_MSG_FACTORY_IMPL(Clans_DownloadInvitationList, PGSQL);
470 __L2_MSG_FACTORY_IMPL(Clans_SendJoinRequest, PGSQL);
471 __L2_MSG_FACTORY_IMPL(Clans_WithdrawJoinRequest, PGSQL);
472 __L2_MSG_FACTORY_IMPL(Clans_AcceptJoinRequest, PGSQL);
473 __L2_MSG_FACTORY_IMPL(Clans_RejectJoinRequest, PGSQL);
474 __L2_MSG_FACTORY_IMPL(Clans_DownloadRequestList, PGSQL);
475 __L2_MSG_FACTORY_IMPL(Clans_KickAndBlacklistUser, PGSQL);
476 __L2_MSG_FACTORY_IMPL(Clans_UnblacklistUser, PGSQL);
477 __L2_MSG_FACTORY_IMPL(Clans_GetBlacklist, PGSQL);
478 __L2_MSG_FACTORY_IMPL(Clans_GetMembers, PGSQL);
479 __L2_MSG_FACTORY_IMPL(Clans_GetList, PGSQL);
480 __L2_MSG_FACTORY_IMPL(Clans_CreateBoard, PGSQL);
481 __L2_MSG_FACTORY_IMPL(Clans_DestroyBoard, PGSQL);
482 __L2_MSG_FACTORY_IMPL(Clans_CreateNewTopic, PGSQL);
483 __L2_MSG_FACTORY_IMPL(Clans_ReplyToTopic, PGSQL);
484 __L2_MSG_FACTORY_IMPL(Clans_RemovePost, PGSQL);
485 __L2_MSG_FACTORY_IMPL(Clans_GetBoards, PGSQL);
486 __L2_MSG_FACTORY_IMPL(Clans_GetTopics, PGSQL);
487 __L2_MSG_FACTORY_IMPL(Clans_GetPosts, PGSQL);
488 __L2_MSG_FACTORY_BASE(Notification_Client_RemoteLogin);
489 __L2_MSG_FACTORY_BASE(Notification_Client_IgnoreStatus);
490 __L2_MSG_FACTORY_IMPL(Notification_Friends_StatusChange, PGSQL);
491 __L2_MSG_FACTORY_IMPL(Notification_Friends_PresenceUpdate, PGSQL);
492 __L2_MSG_FACTORY_BASE(Notification_User_ChangedHandle);
493 __L2_MSG_FACTORY_BASE(Notification_Friends_CreatedClan);
494 __L2_MSG_FACTORY_BASE(Notification_Emails_Received);
495 __L2_MSG_FACTORY_BASE(Notification_Clans_GrantLeader);
496 __L2_MSG_FACTORY_BASE(Notification_Clans_SetSubleaderStatus);
497 __L2_MSG_FACTORY_BASE(Notification_Clans_SetMemberRank);
498 __L2_MSG_FACTORY_BASE(Notification_Clans_ChangeHandle);
499 __L2_MSG_FACTORY_BASE(Notification_Clans_Leave);
500 __L2_MSG_FACTORY_BASE(Notification_Clans_PendingJoinStatus);
501 __L2_MSG_FACTORY_BASE(Notification_Clans_NewClanMember);
502 __L2_MSG_FACTORY_BASE(Notification_Clans_KickAndBlacklistUser);
503 __L2_MSG_FACTORY_BASE(Notification_Clans_UnblacklistUser);
504 __L2_MSG_FACTORY_BASE(Notification_Clans_Destroyed);
505
506
507 default:
508 return 0;
509 };
510 };
511 };
512 }; // namespace RakNet
513
514 #endif
515