2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 * Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
23 $Date: 2009/03/17 09:52:35 $
32 #include "stg/parser_auth_by.h"
33 #include "stg/os_int.h"
34 #include "stg/const.h"
42 void Start(void *data, const char *el, const char **attr);
43 void End(void *data, const char *el);
45 #define MAX_ERR_STR_LEN (64)
46 #define IP_STRING_LEN (255)
47 #define UNAME_LEN (256)
48 #define SERV_VER_LEN (64)
49 #define DIRNAME_LEN (16)
51 //-----------------------------------------------------------------------------
54 long long su[DIR_NUM];
55 long long sd[DIR_NUM];
56 long long mu[DIR_NUM];
57 long long md[DIR_NUM];
60 //-----------------------------------------------------------------------------
69 std::string dirName[DIR_NUM];
71 //-----------------------------------------------------------------------------
83 int disableDetailStat;
97 std::string userData[USERDATA_NUM];
99 struct USERDATA * next;
101 //-----------------------------------------------------------------------------
102 typedef void(*RecvUserDataCb_t)(USERDATA * ud, void * data);
103 typedef void(*RecvServerInfoDataCb_t)(SERVERINFO * si, void * data);
104 typedef int(*RecvChgUserCb_t)(const char * asnwer, void * data);
105 typedef int(*RecvCheckUserCb_t)(const char * answer, void * data);
106 typedef int(*RecvSendMessageCb_t)(const char * answer, void * data);
107 //-----------------------------------------------------------------------------
110 char login[ADM_LOGIN_LEN];
112 //-----------------------------------------------------------------------------
113 class PARSER_CHG_USER: public PARSER
117 int ParseStart(const char *el, const char **attr);
118 void ParseEnd(const char *el);
119 void ParseAnswer(const char *el, const char **attr);
120 void SetChgUserRecvCb(RecvChgUserCb_t, void * data);
122 RecvChgUserCb_t RecvChgUserCb;
123 void * chgUserCbData;
127 //-----------------------------------------------------------------------------
128 class PARSER_CHECK_USER: public PARSER
132 int ParseStart(const char *el, const char **attr);
133 void ParseEnd(const char *el);
134 void ParseAnswer(const char *el, const char **attr);
135 void SetCheckUserRecvCb(RecvCheckUserCb_t, void * data);
137 RecvCheckUserCb_t RecvCheckUserCb;
138 void * checkUserCbData;
142 //-----------------------------------------------------------------------------
143 class PARSER_GET_USERS: public PARSER
147 int ParseStart(const char *el, const char **attr);
148 void ParseEnd(const char *el);
149 void ParseUsers(const char *el, const char **attr);
150 void ParseUser(const char *el, const char **attr);
151 void ParseUserParams(const char *el, const char **attr);
152 void ParseUserLoadStat(const char * el, const char ** attr);
153 void SetUserDataRecvCb(RecvUserDataCb_t, void * data);
155 RecvUserDataCb_t RecvUserDataCb;
161 //-----------------------------------------------------------------------------
162 class PARSER_GET_USER: public PARSER
166 int ParseStart(const char *el, const char **attr);
167 void ParseEnd(const char *el);
168 void ParseUsers(const char *el, const char **attr);
169 void ParseUser(const char *el, const char **attr);
170 void ParseUserParams(const char *el, const char **attr);
171 void ParseUserLoadStat(const char * el, const char ** attr);
172 void SetUserDataRecvCb(RecvUserDataCb_t, void * data);
174 RecvUserDataCb_t RecvUserDataCb;
180 //-----------------------------------------------------------------------------
181 class PARSER_GET_SERVER_INFO: public PARSER
184 PARSER_GET_SERVER_INFO();
185 int ParseStart(const char *el, const char **attr);
186 void ParseEnd(const char *el);
187 void ParseServerInfo(const char *el, const char **attr);
189 void SetServerInfoRecvCb(RecvServerInfoDataCb_t, void * data);
191 void ParseUname(const char ** attr);
192 void ParseServerVersion(const char ** attr);
193 void ParseUsersNum(const char ** attr);
194 void ParseTariffsNum(const char ** attr);
195 void ParseTariffType(const char ** attr);
196 void ParseDirNum(const char **attr);
197 void ParseDirName(const char **attr, int d);
199 RecvServerInfoDataCb_t RecvServerInfoDataCb;
200 void * serverInfoDataCb;
203 SERVERINFO serverInfo;
205 //-----------------------------------------------------------------------------
206 class PARSER_SEND_MESSAGE: public PARSER
209 PARSER_SEND_MESSAGE();
210 int ParseStart(const char *el, const char **attr);
211 void ParseEnd(const char *el);
212 void ParseAnswer(const char *el, const char **attr);
213 void SetSendMessageRecvCb(RecvSendMessageCb_t, void * data);
215 RecvSendMessageCb_t RecvSendMessageCb;
216 void * sendMessageCbData;
220 //-----------------------------------------------------------------------------
225 void SetServer(const char * server);
226 void SetPort(uint16_t port);
228 void SetAdmLogin(const char * login);
229 void SetAdmPassword(const char * password);
231 void SetUserDataRecvCb(RecvUserDataCb_t, void * data);
232 void SetAuthByCallback(PARSER_AUTH_BY::CALLBACK f, void * data);
233 void SetServerInfoRecvCb(RecvServerInfoDataCb_t, void * data);
234 void SetChgUserCb(RecvChgUserCb_t, void * data);
235 void SetCheckUserCb(RecvCheckUserCb_t, void * data);
236 void SetGetUserDataRecvCb(RecvUserDataCb_t, void * data);
237 void SetSendMessageCb(RecvSendMessageCb_t, void * data);
240 int GetUser(const char * login);
241 int ChgUser(const char * request);
242 int AuthBy(const char * login);
243 // TODO: Remove this shit!
244 int MsgUser(const char * request);
245 int SendMessage(const char * login, const char * message, int prio);
247 int CheckUser(const char * login, const char * password);
249 const std::string & GetStrError() const;
251 int Start(const char *el, const char **attr);
252 void End(const char *el);
257 PARSER_GET_USERS parserGetUsers;
258 PARSER_GET_USER parserGetUser;
259 PARSER_AUTH_BY parserAuthBy;
260 PARSER_GET_SERVER_INFO parserServerInfo;
261 PARSER_CHG_USER parserChgUser;
262 PARSER_CHECK_USER parserCheckUser;
263 PARSER_SEND_MESSAGE parserSendMessage;
268 std::string errorMsg;
272 RecvUserDataCb_t RecvUserDataCb;
273 RecvUserDataCb_t RecvGetUserDataCb;
274 PARSER_AUTH_BY::CALLBACK authByCallback;
275 RecvServerInfoDataCb_t RecvServerInfoDataCb;
276 RecvChgUserCb_t RecvChgUserCb;
277 RecvCheckUserCb_t RecvCheckUserCb;
278 RecvSendMessageCb_t RecvSendMessageCb;
280 void * getUserDataDataCb;
282 void * getUsersDataDataCb;
283 void * getServerInfoDataCb;
284 void * chgUserDataCb;
285 void * checkUserDataCb;
286 void * sendMessageDataCb;
288 friend int AnsRecv(void * data, std::list<std::string> * list);
290 //-----------------------------------------------------------------------------
292 #endif /* _SERVCONF_H_ */