|
|
@@ -1190,11 +1190,13 @@ static int proc_mail(char *path, int op, mail_info_t *mail)
|
|
|
mail_recv_t *recv=&pmail->recv[i];
|
|
|
|
|
|
recv->idx = i;
|
|
|
- sprintf(token, "mail:recv%d.use", i+1);
|
|
|
- r = ini_rw(dic, token, &recv->use, sizeof(recv->use), TYPE_INT, op); if(r) goto quit;
|
|
|
+ if(op==PARAS_READ || (op==PARAS_WRITE && recv->use)) {
|
|
|
+ sprintf(token, "mail:recv%d.use", i+1);
|
|
|
+ r = ini_rw(dic, token, &recv->use, sizeof(recv->use), TYPE_INT, op); if(r) goto quit;
|
|
|
|
|
|
- sprintf(token, "mail:recv%d.account", i+1);
|
|
|
- r = ini_rw(dic, token, recv->account, sizeof(recv->account), TYPE_STR, op); if(r) goto quit;
|
|
|
+ sprintf(token, "mail:recv%d.account", i+1);
|
|
|
+ r = ini_rw(dic, token, recv->account, sizeof(recv->account), TYPE_STR, op); if(r) goto quit;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if(op==PARAS_READ) {
|
|
|
@@ -1331,16 +1333,16 @@ static int proc_role(char *path, int op, RoleInfo *role)
|
|
|
r = proc_role(path, PARAS_CHECK, tmp); if(r) break;
|
|
|
|
|
|
sprintf(token, "role:role%d.name", i);
|
|
|
- r = ini_rw(dic, token, prole->roleName, sizeof(prole->roleName), TYPE_STR, op); if(r) break;
|
|
|
+ r = ini_rw(dic, token, tmp->roleName, sizeof(tmp->roleName), TYPE_STR, op); if(r) break;
|
|
|
|
|
|
sprintf(token, "role:role%d.level", i);
|
|
|
- r = ini_rw(dic, token, &prole->roleLevel, sizeof(prole->roleLevel), TYPE_STR, op); if(r) break;
|
|
|
+ r = ini_rw(dic, token, &tmp->roleLevel, sizeof(tmp->roleLevel), TYPE_INT, op); if(r) break;
|
|
|
|
|
|
sprintf(token, "role:role%d.auth", i);
|
|
|
- r = ini_rw(dic, token, prole->roleAuthority, sizeof(prole->roleAuthority), TYPE_STR, op); if(r) break;
|
|
|
+ r = ini_rw(dic, token, tmp->roleAuthority, sizeof(tmp->roleAuthority), TYPE_STR, op); if(r) break;
|
|
|
|
|
|
sprintf(token, "role:role%d.sort", i);
|
|
|
- r = ini_rw(dic, token, &prole->roleSort, sizeof(prole->roleAuthority), TYPE_INT, op); if(r) break;
|
|
|
+ r = ini_rw(dic, token, &tmp->roleSort, sizeof(tmp->roleAuthority), TYPE_INT, op); if(r) break;
|
|
|
|
|
|
sprintf(token, "role:role%d.time", i);
|
|
|
get_curtime_str(temp, sizeof(temp));
|
|
|
@@ -1365,6 +1367,158 @@ static int proc_role(char *path, int op, RoleInfo *role)
|
|
|
|
|
|
return r;
|
|
|
}
|
|
|
+static int proc_user(char *path, int op, UserInfo *user)
|
|
|
+{
|
|
|
+ int i=1,r=0;
|
|
|
+ char temp[100];
|
|
|
+ char *p,token[100];
|
|
|
+ dictionary *dic=NULL;
|
|
|
+ UserInfo user2,*puser=user;
|
|
|
+ GlobalDeviceManager *dm=get_dm();
|
|
|
+
|
|
|
+ switch(op) {
|
|
|
+ case PARAS_CHECK:
|
|
|
+ {
|
|
|
+ if(!puser->userName[0]) {
|
|
|
+ LOGE("___ check user, userName is null\n");
|
|
|
+ r = -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!puser->userPW[0]) {
|
|
|
+ LOGE("___ check user, userPW is invalid\n");
|
|
|
+ r = -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!puser->nickName[0]) {
|
|
|
+ LOGE("___ check user, nickName is null\n");
|
|
|
+ r = -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(puser->roleID>3) {
|
|
|
+ LOGE("___ check user, roleID is invalid, correct value is 1/2/3\n");
|
|
|
+ r = -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!puser->createTime[0]) {
|
|
|
+ LOGE("___ check user, createTime is null\n");
|
|
|
+ r = -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return r;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case PARAS_CREATE:
|
|
|
+ {
|
|
|
+ FILE *fp=fopen(path, "a+");
|
|
|
+ if(!fp) {
|
|
|
+ LOGE("___ %s open failed\n", path);
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ get_time_str(temp, sizeof(temp), time(NULL));
|
|
|
+ fprintf(fp, "[user]\n");
|
|
|
+ fprintf(fp, "user1.userName = \"admin\"\n");
|
|
|
+ fprintf(fp, "user1.userPW = \"admin\"\n");
|
|
|
+ fprintf(fp, "user1.nickName = \"administer\"\n");
|
|
|
+ fprintf(fp, "user1.roleID = \"1\"\n");
|
|
|
+ fprintf(fp, "user1.createTime = \"%s\"\n", temp);
|
|
|
+ fprintf(fp, "\n");
|
|
|
+
|
|
|
+ fprintf(fp, "user2.userName = \"user\"\n");
|
|
|
+ fprintf(fp, "user2.userPW = \"123456\"\n");
|
|
|
+ fprintf(fp, "user2.nickName = \"users\"\n");
|
|
|
+ fprintf(fp, "user2.roleID = \"3\"\n");
|
|
|
+ fprintf(fp, "user2.createTime = \"%s\"\n", temp);
|
|
|
+ fprintf(fp, "\n");
|
|
|
+
|
|
|
+ fclose(fp);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case PARAS_READ:
|
|
|
+ {
|
|
|
+ puser = &user2;
|
|
|
+ dic = iniparser_load(path); if(!dic) return -1;
|
|
|
+
|
|
|
+ while(1) {
|
|
|
+ sprintf(token, "role:role%d.name", i);
|
|
|
+ r = ini_rw(dic, token, puser->userName, sizeof(puser->userName), TYPE_STR, op); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.password", i);
|
|
|
+ r = ini_rw(dic, token, &puser->userPW, sizeof(puser->userPW), TYPE_STR, op); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.nick_name", i);
|
|
|
+ r = ini_rw(dic, token, puser->nickName, sizeof(puser->nickName), TYPE_STR, op); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.role_id", i);
|
|
|
+ r = ini_rw(dic, token, &puser->roleID, sizeof(puser->roleID), TYPE_INT, op); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.time", i);
|
|
|
+ r = ini_rw(dic, token, puser->createTime, sizeof(puser->createTime), TYPE_STR, op); if(r) break;
|
|
|
+
|
|
|
+ r = proc_user(path, PARAS_CHECK, puser);
|
|
|
+ if(r==0) {
|
|
|
+ r = dev_update_user_info(dm->db, puser);
|
|
|
+ }
|
|
|
+ if(r) break;
|
|
|
+
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case PARAS_WRITE:
|
|
|
+ {
|
|
|
+ UserInfo *tmp,*node,*next;
|
|
|
+
|
|
|
+ puser = &user2;
|
|
|
+ INIT_LIST_HEAD(&puser->list);
|
|
|
+ r = dev_get_user_info(dm->db, puser); if(r) return -1;
|
|
|
+ dic = dictionary_new(0); if(!dic) return -1;
|
|
|
+
|
|
|
+ list_for_each_entry(tmp, &puser->list, list) {
|
|
|
+ if(!tmp) break;
|
|
|
+
|
|
|
+ r = proc_user(path, PARAS_CHECK, tmp); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.name", i);
|
|
|
+ r = ini_rw(dic, token, tmp->userName, sizeof(tmp->userName), TYPE_STR, op); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.password", i);
|
|
|
+ r = ini_rw(dic, token, &tmp->userPW, sizeof(tmp->userPW), TYPE_STR, op); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.nick_name", i);
|
|
|
+ r = ini_rw(dic, token, tmp->nickName, sizeof(tmp->nickName), TYPE_STR, op); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.role_id", i);
|
|
|
+ r = ini_rw(dic, token, &tmp->roleID, sizeof(tmp->roleID), TYPE_INT, op); if(r) break;
|
|
|
+
|
|
|
+ sprintf(token, "role:role%d.time", i);
|
|
|
+ get_curtime_str(temp, sizeof(temp));
|
|
|
+ r = ini_rw(dic, token, temp, sizeof(temp), TYPE_STR, op); if(r) break;
|
|
|
+
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ list_for_each_entry_safe(node,next,&puser->list,list) {
|
|
|
+ list_del(&node->list); free(node);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(r==0) {
|
|
|
+ r = ini_dump(path, dic);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ iniparser_freedict(dic);
|
|
|
+
|
|
|
+ return r;
|
|
|
+}
|
|
|
static int proc_group(char *path, int op, GroupInfo *group)
|
|
|
{
|
|
|
int i=1,r=0;
|
|
|
@@ -2735,6 +2889,7 @@ int paras_serv_xport(char *path, int io)
|
|
|
r = proc_mail(path, PARAS_READ, NULL);
|
|
|
r = proc_snmp(path, PARAS_READ, NULL);
|
|
|
r = proc_role(path, PARAS_READ, NULL);
|
|
|
+ r = proc_user(path, PARAS_READ, NULL);
|
|
|
r = proc_group(path, PARAS_READ, NULL);
|
|
|
//r = proc_timer(path, PARAS_READ, NULL);
|
|
|
}
|
|
|
@@ -2744,11 +2899,12 @@ int paras_serv_xport(char *path, int io)
|
|
|
r = proc_mail(path, PARAS_WRITE, NULL);
|
|
|
r = proc_snmp(path, PARAS_WRITE, NULL);
|
|
|
r = proc_role(path, PARAS_WRITE, NULL);
|
|
|
+ r = proc_user(path, PARAS_WRITE, NULL);
|
|
|
r = proc_group(path, PARAS_WRITE, NULL);
|
|
|
//r = proc_timer(path, PARAS_WRITE, NULL);
|
|
|
}
|
|
|
|
|
|
- return r;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
int paras_alarm_xport(char *path, int io)
|