class SETTINGS {
public:
virtual ~SETTINGS() {}
- virtual const std::string & GetDirName(size_t num) const = 0;
- virtual const std::string & GetScriptsDir() const = 0;
- virtual unsigned GetDetailStatWritePeriod() const = 0;
- virtual unsigned GetStatWritePeriod() const = 0;
- virtual unsigned GetDayFee() const = 0;
- virtual bool GetFullFee() const = 0;
- virtual unsigned GetDayResetTraff() const = 0;
- virtual bool GetSpreadFee() const = 0;
- virtual bool GetFreeMbAllowInet() const = 0;
- virtual bool GetDayFeeIsLastDay() const = 0;
- virtual bool GetWriteFreeMbTraffCost() const = 0;
- virtual bool GetShowFeeInCash() const = 0;
- virtual unsigned GetMessageTimeout() const = 0;
- virtual unsigned GetFeeChargeType() const = 0;
- virtual bool GetReconnectOnTariffChange() const = 0;
- virtual const std::string & GetMonitorDir() const = 0;
- virtual bool GetMonitoring() const = 0;
+ virtual const std::string & GetDirName(size_t num) const = 0;
+ virtual const std::string & GetScriptsDir() const = 0;
+ virtual unsigned GetDetailStatWritePeriod() const = 0;
+ virtual unsigned GetStatWritePeriod() const = 0;
+ virtual unsigned GetDayFee() const = 0;
+ virtual bool GetFullFee() const = 0;
+ virtual unsigned GetDayResetTraff() const = 0;
+ virtual bool GetSpreadFee() const = 0;
+ virtual bool GetFreeMbAllowInet() const = 0;
+ virtual bool GetDayFeeIsLastDay() const = 0;
+ virtual bool GetWriteFreeMbTraffCost() const = 0;
+ virtual bool GetShowFeeInCash() const = 0;
+ virtual unsigned GetMessageTimeout() const = 0;
+ virtual unsigned GetFeeChargeType() const = 0;
+ virtual bool GetReconnectOnTariffChange() const = 0;
+ virtual const std::string & GetMonitorDir() const = 0;
+ virtual bool GetMonitoring() const = 0;
+ virtual const std::vector<std::string> & GetScriptParams() const = 0;
};
//-----------------------------------------------------------------------------
virtual void OnAdd() = 0;
virtual void OnDelete() = 0;
+
+ virtual std::string GetParamValue(const std::string & name) const = 0;
};
typedef USER * USER_PTR;
time_t ModificationTime() const throw() { return modificationTime; }
void ModifyTime() throw();
+ std::string ToString() const;
private:
varT & value;
time_t modificationTime;
return stream << value.ConstData();
}
//-----------------------------------------------------------------------------
-
+template<typename varT>
+std::string USER_PROPERTY<varT>::ToString() const
+{
+std::stringstream stream;
+stream << value;
+return stream.str();
+}
#endif // USER_PROPERTY_H
virtual int Start() = 0;
virtual int Stop() = 0;
+
};
#endif
WriteServLog("ReadSettings error. %s", settings->GetStrError().c_str());
exit(1);
}
-
#ifndef NO_DAEMON
std::string startFile(settings->GetConfDir() + START_FILE);
#endif
}
}
+ if (strcasecmp(node->getName(), "ScriptParams") == 0)
+ {
+ for (int i = 0; node->getValue(i) != NULL; ++i)
+ {
+ scriptParams.push_back(node->getValue(i));
+ }
+ }
node = node->getNextNode();
}
return -1;
}
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
\ No newline at end of file
{ return storeModuleSettings; }
const std::vector<MODULE_SETTINGS> & GetModulesSettings() const
{ return modulesSettings; }
+ const std::vector<std::string> & GetScriptParams() const { return scriptParams; }
private:
std::string logFile;
std::string pidFile;
std::string monitorDir;
+ std::vector<std::string> scriptParams;
bool monitoring;
unsigned detailStatWritePeriod;
unsigned statWritePeriod;
std::vector<MODULE_SETTINGS> modulesSettings;
MODULE_SETTINGS storeModuleSettings;
-
STG_LOGGER & logger;
};
//-----------------------------------------------------------------------------
}
std::string scriptOnConnectParams;
+
strprintf(&scriptOnConnectParams,
"%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"",
scriptOnConnect.c_str(),
id,
dirsStr);
+ std::vector<std::string>::const_iterator it(settings->GetScriptParams().begin());
+ while (it != settings->GetScriptParams().end())
+ {
+ scriptOnConnectParams += " \"" + GetParamValue(it->c_str()) + "\"";
+ ++it;
+ }
+
ScriptExec(scriptOnConnectParams.c_str());
}
else
id,
dirsStr);
+ std::vector<std::string>::const_iterator it(settings->GetScriptParams().begin());
+ while (it != settings->GetScriptParams().end())
+ {
+ scriptOnDisonnectParams += " \"" + GetParamValue(it->c_str()) + "\"";
+ ++it;
+ }
+
ScriptExec(scriptOnDisonnectParams.c_str());
}
else
}
}
//-----------------------------------------------------------------------------
+std::string USER_IMPL::GetParamValue(const std::string & name) const
+{
+if (name == "freeMb") return property.freeMb.ToString();
+if (name == "passive") return property.passive.ToString();
+if (name == "disabled") return property.disabled.ToString();
+if (name == "alwaysOnline") return property.alwaysOnline.ToString();
+if (name == "tariffName") return property.tariffName;
+if (name == "nextTariff") return property.nextTariff;
+if (name == "address") return property.address;
+if (name == "note") return property.note;
+if (name == "group") return property.group;
+if (name == "email") return property.email;
+if (name == "phone") return property.phone;
+if (name == "realName") return property.realName;
+if (name == "credit") return property.credit.ToString();
+if (name == "userdata0") return property.userdata0;
+if (name == "userdata1") return property.userdata1;
+if (name == "userdata2") return property.userdata2;
+if (name == "userdata3") return property.userdata3;
+if (name == "userdata4") return property.userdata4;
+if (name == "userdata5") return property.userdata5;
+if (name == "userdata6") return property.userdata6;
+if (name == "userdata7") return property.userdata7;
+if (name == "userdata8") return property.userdata8;
+if (name == "userdata9") return property.userdata9;
+if (name == "cash") return property.cash.ToString();
+if (name == "id")
+ {
+ std::stringstream stream;
+ stream << id;
+ return stream.str();;
+ }
+if (name == "login") return login;
+if (name == "ip") return currIP.ToString();
+return "";
+}
+//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void CHG_PASSIVE_NOTIFIER::Notify(const int & oldPassive, const int & newPassive)
void OnAdd();
void OnDelete();
+ virtual std::string GetParamValue(const std::string & name) const;
+
private:
USER_IMPL & operator=(const USER_IMPL & rvalue);