#include <list>
#include <sstream>
+#include "stg/common.h"
+#include "stg/netunit.h"
#include "request.h"
-#include "common.h"
-#include "netunit.h"
#include "common_sg.h"
#include "sg_error_codes.h"
{"email", 0, 0, 'L'}, //emaiL
{"phone", 0, 0, 'P'}, //phone
{"group", 0, 0, 'G'}, //Group
-{"ip", 0, 0, 'I'}, //IP-address of user
+{"ip", 0, 0, 'I'}, //IP-address of user
+{"authorized-by",0, 0, 800}, //always online
{0, 0, 0, 0}};
double cash;
char * msg;
char * str;
-str = new char[strlen(c)];
+str = new char[strlen(c) + 1];
+
+strncpy(str, c, strlen(c));
+str[strlen(c)] = 0;
-strcpy(str, c);
msg = strchr(str, ':');
if (msg)
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;
req.ud[c - 700] = " ";
break;
+ case 800:
+ req.authBy = true;
+ break;
+
case '?':
case ':':
//printf ("Unknown option \n");
exit(PARAMETER_PARSING_ERR_CODE);
}
-return ProcessGetUser(req.server, req.port, req.admLogin, req.admPasswd, req.login, &req);
+if (req.authBy)
+ return ProcessAuthBy(req.server, req.port, req.admLogin, req.admPasswd, req.login, &req);
+else
+ return ProcessGetUser(req.server, req.port, req.admLogin, req.admPasswd, req.login, &req);
}
//-----------------------------------------------------------------------------
int mainSet(int argc, char **argv)
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;
break;
case 'N': //Note
- ParseAnyString(optarg, &str);
+ ParseAnyString(optarg, &str, "koi8-ru");
req.note = str;
break;
case 'A': //nAme
- ParseAnyString(optarg, &str, "koi8-r");
+ ParseAnyString(optarg, &str, "koi8-ru");
req.name = str;
break;
case 'D': //aDdress
- ParseAnyString(optarg, &str);
+ ParseAnyString(optarg, &str, "koi8-ru");
req.address = str;
break;
case 'L': //emaiL
- ParseAnyString(optarg, &str);
+ ParseAnyString(optarg, &str, "koi8-ru");
req.email = str;
//printf("EMAIL=%s\n", optarg);
break;
break;
case 'G': //Group
- ParseAnyString(optarg, &str);
+ ParseAnyString(optarg, &str, "koi8-ru");
req.group = str;
break;