{
{"set tariff", "get tariff", "-t", "<tariff:now|delayed>"},
{"set credit", "get credit", "-r", "<credit>"},
+ {"set credit expire", "get credit expire", "-E", "<credit_expire_date>"},
{"set password", "get password", "-o", "<new_password>"},
{"set prepaid traffic", "get prepaid traffic", "-e", "<prepaid>"},
{"set IP-addresses", "get IP-addresses", "-I", "<*|ip_addr[,ip_addr...]>"},
if (!req->credit.res_empty())
cout << "credit=" << ud->credit << endl;
+if (!req->creditExpire.res_empty())
+ {
+ char buf[32];
+ struct tm brokenTime;
+ time_t tt = ud->creditExpire;
+
+ brokenTime.tm_wday = 0;
+ brokenTime.tm_yday = 0;
+ brokenTime.tm_isdst = 0;
+ brokenTime.tm_hour = 0;
+ brokenTime.tm_min = 0;
+ brokenTime.tm_sec = 0;
+
+ gmtime_r(&tt, &brokenTime);
+
+ strftime(buf, 32, "%Y-%m-%d", &brokenTime);
+
+ cout << "creditExpire=" << buf << endl;
+ }
+
if (!req->down.res_empty())
cout << "down=" << ud->down << endl;
return 0;
}
//-----------------------------------------------------------------------------
-
-
return ss;
}
//-----------------------------------------------------------------------------
+time_t ParseCreditExpire(const char * str)
+{
+struct tm brokenTime;
+
+brokenTime.tm_wday = 0;
+brokenTime.tm_yday = 0;
+brokenTime.tm_isdst = 0;
+brokenTime.tm_hour = 0;
+brokenTime.tm_min = 0;
+brokenTime.tm_sec = 0;
+
+stg_strptime(str, "%Y-%m-%d", &brokenTime);
+
+return stg_timegm(&brokenTime);
+}
+//-----------------------------------------------------------------------------
void ParseAnyString(const char * c, string * msg, const char * enc)
{
iconv_t cd;
strcat(r, str);
}
+if (!req->creditExpire.res_empty())
+ {
+ sprintf(str, "<creditExpire value=\"%ld\"/>\n", req->creditExpire.const_data());
+ strcat(r, str);
+ }
+
if (!req->prepaidTraff.res_empty())
{
sprintf(str, "<FreeMb value=\"%f\"/>\n", req->prepaidTraff.const_data());
RESETABLE<string> t1;
int missedOptionArg = false;
-const char * short_options_get = "s:p:a:w:u:crtmodieNADLPGISO";
+const char * short_options_get = "s:p:a:w:u:crtmodieNADLPGISOE";
int option_index = -1;
while (1)
req.credit = 1;
break;
+ case 'E': //credit expire
+ req.creditExpire = 1;
+ break;
+
case 'd': //down
req.down = 1;
break;
RESETABLE<string> t1;
-const char * short_options_set = "s:p:a:w:u:c:r:t:m:o:d:i:e:v:nlN:A:D:L:P:G:I:S:O:";
+const char * short_options_set = "s:p:a:w:u:c:r:t:m:o:d:i:e:v:nlN:A:D:L:P:G:I:S:O:E:";
int missedOptionArg = false;
req.credit = ParseCredit(optarg);
break;
+ case 'E': //credit expire
+ req.creditExpire = ParseCreditExpire(optarg);
+ break;
+
case 'd': //down
req.down = ParseDownPassive(optarg);
break;
RESETABLE<string> usrMsg;
RESETABLE<double> credit;
+RESETABLE<time_t> creditExpire;
RESETABLE<string> usrPasswd;
RESETABLE<bool> down;
RESETABLE<bool> passive;
}
}
+if (strcasecmp(el, "creditExpire") == 0)
+ {
+ if (str2x(attr[1], user.creditExpire) < 0)
+ {
+ return;
+ }
+ }
+
/*if (strcasecmp(el, "freemb") == 0)
{
if (strtodouble2(attr[1], user.freeMb) < 0)
user.ip = inet_addr(attr[1]);
}
+if (strcasecmp(el, "creditExpire") == 0)
+ {
+ if (str2x(attr[1], user.creditExpire) < 0)
+ {
+ return;
+ }
+ }
+
for (int i = 0; i < USERDATA_NUM; i++)
{
string num;
std::string password;
double cash;
double credit;
+ time_t creditExpire;
double lastCash;
double prepaidTraff;
int down;