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: 2010/01/19 11:06:53 $
 
  32 #include <sys/types.h>
 
  34 #include "base_settings.h"
 
  35 #include "base_store.h"
 
  36 #include "conffiles.h"
 
  37 #include "user_traff.h"
 
  40 //-----------------------------------------------------------------------------
 
  41 extern "C" BASE_STORE * GetStore();
 
  42 //-----------------------------------------------------------------------------
 
  43 class FILES_STORE_SETTINGS//: public BASE_SETTINGS
 
  46     FILES_STORE_SETTINGS();
 
  47     virtual ~FILES_STORE_SETTINGS();
 
  48     virtual int ParseSettings(const MODULE_SETTINGS & s);
 
  49     virtual const string & GetStrError() const;
 
  51     string  GetWorkDir() const;
 
  52     string  GetUsersDir() const;
 
  53     string  GetAdminsDir() const;
 
  54     string  GetTariffsDir() const;
 
  56     mode_t  GetStatMode() const;
 
  57     mode_t  GetStatModeDir() const;
 
  58     uid_t   GetStatUID() const;
 
  59     gid_t   GetStatGID() const;
 
  61     mode_t  GetConfMode() const;
 
  62     mode_t  GetConfModeDir() const;
 
  63     uid_t   GetConfUID() const;
 
  64     gid_t   GetConfGID() const;
 
  66     mode_t  GetLogMode() const;
 
  67     uid_t   GetLogUID() const;
 
  68     gid_t   GetLogGID() const;
 
  70     bool    GetRemoveBak() const;
 
  71     bool    GetReadBak() const;
 
  74     const MODULE_SETTINGS * settings;
 
  76     int     User2UID(const char * user, uid_t * uid);
 
  77     int     Group2GID(const char * gr, gid_t * gid);
 
  78     int     Str2Mode(const char * str, mode_t * mode);
 
  79     int     ParseOwner(const vector<PARAM_VALUE> & moduleParams, const string & owner, uid_t * uid);
 
  80     int     ParseGroup(const vector<PARAM_VALUE> & moduleParams, const string & group, uid_t * uid);
 
  81     int     ParseMode(const vector<PARAM_VALUE> & moduleParams, const string & modeStr, mode_t * mode);
 
  82     int     ParseYesNo(const string & value, bool * val);
 
 105 //-----------------------------------------------------------------------------
 
 106 class FILES_STORE: public BASE_STORE
 
 110     virtual ~FILES_STORE();
 
 111     virtual const string & GetStrError() const;
 
 114     virtual int GetUsersList(vector<string> * usersList) const;
 
 115     virtual int AddUser(const string & login) const;
 
 116     virtual int DelUser(const string & login) const;
 
 117     virtual int SaveUserStat(const USER_STAT & stat, const string & login) const;
 
 118     virtual int SaveUserConf(const USER_CONF & conf, const string & login) const;
 
 120     virtual int RestoreUserStat(USER_STAT * stat, const string & login) const;
 
 121     virtual int RestoreUserConf(USER_CONF * conf, const string & login) const;
 
 123     virtual int WriteUserChgLog(const string & login,
 
 124                                 const string & admLogin,
 
 126                                 const string & paramName,
 
 127                                 const string & oldValue,
 
 128                                 const string & newValue,
 
 129                                 const string & message = "") const;
 
 130     virtual int WriteUserConnect(const string & login, uint32_t ip) const;
 
 131     virtual int WriteUserDisconnect(const string & login,
 
 132                                     const DIR_TRAFF & up,
 
 133                                     const DIR_TRAFF & down,
 
 134                                     const DIR_TRAFF & sessionUp,
 
 135                                     const DIR_TRAFF & sessionDown,
 
 138                                     const std::string & reason) const;
 
 140     virtual int WriteDetailedStat(const map<IP_DIR_PAIR, STAT_NODE> * statTree,
 
 142                                   const string & login) const;
 
 144     virtual int AddMessage(STG_MSG * msg, const string & login) const;
 
 145     virtual int EditMessage(const STG_MSG & msg, const string & login) const;
 
 146     virtual int GetMessage(uint64_t id, STG_MSG * msg, const string & login) const;
 
 147     virtual int DelMessage(uint64_t id, const string & login) const;
 
 148     virtual int GetMessageHdrs(vector<STG_MSG_HDR> * hdrsList, const string & login) const;
 
 149     virtual int ReadMessage(const string & fileName,
 
 151                             string * text) const;
 
 153     virtual int SaveMonthStat(const USER_STAT & stat, int month, int year, const string & login) const;
 
 156     virtual int GetAdminsList(vector<string> * adminsList) const;
 
 157     virtual int AddAdmin(const string & login) const;
 
 158     virtual int DelAdmin(const string & login) const;
 
 159     virtual int RestoreAdmin(ADMIN_CONF * ac, const string & login) const;
 
 160     virtual int SaveAdmin(const ADMIN_CONF & ac) const;
 
 163     virtual int GetTariffsList(vector<string> * tariffsList) const;
 
 164     virtual int AddTariff(const string & name) const;
 
 165     virtual int DelTariff(const string & name) const;
 
 166     virtual int SaveTariff(const TARIFF_DATA & td, const string & tariffName) const;
 
 167     virtual int RestoreTariff(TARIFF_DATA * td, const string & tariffName) const;
 
 170     virtual int GetCorpsList(vector<string> *) const {return 0;};
 
 171     virtual int SaveCorp(const CORP_CONF &) const {return 0;};
 
 172     virtual int RestoreCorp(CORP_CONF *, const string &) const {return 0;};
 
 173     virtual int AddCorp(const string &) const {return 0;};
 
 174     virtual int DelCorp(const string &) const {return 0;};
 
 177     virtual int GetServicesList(vector<string> *) const {return 0;};
 
 178     virtual int SaveService(const SERVICE_CONF &) const {return 0;};
 
 179     virtual int RestoreService(SERVICE_CONF *, const string &) const {return 0;};
 
 180     virtual int AddService(const string &) const {return 0;};
 
 181     virtual int DelService(const string &) const {return 0;};
 
 183     //virtual BASE_SETTINGS * GetStoreSettings();
 
 184     virtual void            SetSettings(const MODULE_SETTINGS & s);
 
 185     virtual int             ParseSettings();
 
 186     virtual const string &  GetVersion() const;
 
 189     virtual int RestoreUserStat(USER_STAT * stat, const string & login, const string & fileName) const;
 
 190     virtual int RestoreUserConf(USER_CONF * conf, const string & login, const string & fileName) const;
 
 192     virtual int WriteLogString(const string & str, const string & login) const;
 
 193     virtual int WriteLog2String(const string & str, const string & login) const;
 
 194     int     RemoveDir(const char * path) const;
 
 195     int     GetFilesList(vector<string> * filesList, const string & directory, mode_t mode, const string & ext) const;
 
 196     mutable string          errorStr;
 
 198     FILES_STORE_SETTINGS    storeSettings;
 
 199     MODULE_SETTINGS         settings;
 
 200     mutable pthread_mutex_t mutex;
 
 202 //-----------------------------------------------------------------------------
 
 204 #endif //FILE_STORE_H