static void setPassword(HttpConn *conn) { char str[16] = {0}; cchar *role = getSessionVar("role"); if(role == NULL){ rendersts(str, 9); render(str); return; } if((strcmp(role, "root") !=0) && (strcmp(role, "admin") !=0)){ rendersts(str, 5);//无权限 render(str); return; } MprJson *jsonparam = mprParseJson(espGetQueryString(conn)); cchar *oldpassword = mprGetJson(jsonparam, "oldpassword"); cchar *newpassword = mprGetJson(jsonparam, "newpassword"); cchar *username = getSessionVar("userName"); //Edi *db = ediOpen("db/muxnms.mdb", "mdb", EDI_AUTO_SAVE ); EdiRec *user = readRecWhere("user", "username", "==", username); MprJson *userjson = mprParseJson(ediRecAsJson(user, 0)); //printf("=======password====%s========%s\n", oldpassword, mprGetJson(userjson, "password")); if(strcmp(oldpassword, mprGetJson(userjson, "password")) == 0){ ediSetField(user, "password", newpassword); updateRec(user); rendersts(str, 1); }else{ rendersts(str, 0); } //ediClose(db); render(str); //add optlog Edi *db = ediOpen("db/muxnms.mdb", "mdb", EDI_AUTO_SAVE); EdiRec *optlog = ediCreateRec(db, "optlog"); if(optlog == NULL){ printf("================>>>optlog is NULL!!\n"); return; } time_t curTime; time(&curTime); memset(optstr, 0, 256); sprintf(optstr, "{'user': '******', 'desc': '用户修改了密码.', 'level': '2', 'logtime':'%d'}", getSessionVar("userName"), curTime); MprJson *row = mprParseJson(optstr); if(ediSetFields(optlog, row) == 0){ printf("================>>>ediSetFields Failed!!\n"); } ediUpdateRec(db, optlog); //ediClose(db); }
static void reset(HttpConn *conn) { char str[16] = {0}; cchar *role = getSessionVar("role"); if(role == NULL){ rendersts(str, 9); render(str); return; } if((strcmp(role, "root") !=0) && (strcmp(role, "admin") !=0)){ rendersts(str, 5);//无权限 render(str); return; } restoreFactory(tmpip); rendersts(str, 1); render(str); //add optlog Edi *db = ediOpen("db/muxnms.mdb", "mdb", EDI_AUTO_SAVE); EdiRec *optlog = ediCreateRec(db, "optlog"); if(optlog == NULL){ printf("================>>>optlog is NULL!!\n"); return; } time_t curTime; time(&curTime); memset(optstr, 0, 256); sprintf(optstr, "{'user': '******', 'desc': '恢复出厂设置.', 'level': '2', 'logtime':'%d'}", getSessionVar("userName"), curTime); MprJson *row = mprParseJson(optstr); if(ediSetFields(optlog, row) == 0){ printf("================>>>ediSetFields Failed!!\n"); } ediUpdateRec(db, optlog); //ediClose(db); }
static void getoptlogs() { char str[16] = {0}; int len = 0; cchar *role = getSessionVar("role"); if(role == NULL){ rendersts(str, 9); render(str); return; } if((strcmp(role, "root") !=0) && (strcmp(role, "admin") !=0)){ rendersts(str, 5);//无权限 render(str); return; } //find optlog Edi *db = ediOpen("db/muxnms.mdb", "mdb", EDI_AUTO_SAVE); // //删除7天前的日志 time_t curTime; time(&curTime); //EdiGrid *oldlogs = ediReadWhere(db, "optlog", "logtime", "<", curTime - 7*24*3600); EdiGrid *oldlogs = ediReadTable(db, "optlog"); //printf("========logs========>>>%s\n", ediGridAsJson(oldlogs, MPR_JSON_PRETTY)); for(len=0; len < oldlogs->nrecords; len++){ EdiRec *log = oldlogs->records[len]; if(atoi(mprGetJson(mprParseJson(ediRecAsJson(log, MPR_JSON_PRETTY)), "logtime")) < (curTime - 7*24*3600)){ ediRemoveRec(db, "optlog", log->id); } } EdiGrid *logs = ediReadTable(db, "optlog"); render(ediGridAsJson(logs, MPR_JSON_PRETTY)); }
PUBLIC MprJson *makeJson(cchar *fmt, ...) { va_list args; cchar *str; va_start(args, fmt); str = sfmtv(fmt, args); va_end(args); return mprParseJson(str); }
static void setDevip(HttpConn *conn) { char str[16] = {0}; cchar *role = getSessionVar("role"); if(role == NULL){ rendersts(str, 9); render(str); return; } if((strcmp(role, "root") !=0) && (strcmp(role, "admin") !=0)){ rendersts(str, 5);//无权限设置Ip render(str); return; } cchar *param = espGetQueryString(conn); char newip[16] = {0}; char newgatway[16] = {0}; char submask[16] = {0}; char* ptr = strchr(param, '&'); int pos = ptr-param; substr(param, 0, pos, newip); char *ptr1 = strrchr (param, '&'); int flag = ptr1 - param; substr(param, pos + 1, flag, newgatway); substr(param, flag + 1, strlen(param), submask); unsigned int vip = ntohl( inet_addr( newip ) ); unsigned int tmpgatway = ntohl( inet_addr( newgatway ) ); unsigned int tmpsubmask = ntohl( inet_addr( submask ) ); if(0 == setIp(tmpip, vip)){ setGateway(tmpip, tmpgatway); getSubMask(tmpip, tmpsubmask); } rendersts(str, 1); render(str); //add optlog Edi *db = ediOpen("db/muxnms.mdb", "mdb", EDI_AUTO_SAVE); EdiRec *optlog = ediCreateRec(db, "optlog"); if(optlog == NULL){ printf("================>>>optlog is NULL!!\n"); return; } time_t curTime; time(&curTime); memset(optstr, 0, 256); sprintf(optstr, "{'user': '******', 'desc': '设备修改IP【IP:%s】.', 'level': '2', 'logtime':'%d'}", getSessionVar("userName"),newip, curTime); MprJson *row = mprParseJson(optstr); if(ediSetFields(optlog, row) == 0){ printf("================>>>ediSetFields Failed!!\n"); } ediUpdateRec(db, optlog); //ediClose(db); }
/* Can call this without being authenticated */ static void publishPackage() { HttpConn *conn; EdiRec *rec; cchar *email, *password, *name, *endpoint; bool checkPassword; name = param("name"); endpoint = param("endpoint"); password = param("password"); email = param("email"); conn = getConn(); if (!name || !*name || !endpoint || !*endpoint) { sendResult(feedback("error", "Missing name or endpoint parameters")); return; } if (!email || !*email) { sendResult(feedback("error", "Missing email parameter")); return; } if (canUser("edit", 0) && smatch(conn->username, name)) { checkPassword = 0; httpTrace(conn, "auth.login.authenticated", "context", "msg=\"Authenticated for package\", pak=%s", name); } else { if (!password || !*password) { sendResult(feedback("error", "Missing password parameter")); return; } checkPassword = 1; } if ((rec = readRecWhere("pak", "name", "==", name)) != 0) { if (checkPassword && !mprCheckPassword(password, getField(rec, "password"))) { sendResult(feedback("error", "Package already exists but invalid password")); return; } setFields(rec, params()); } else { #if FUTURE cchar *uri, *response, *err; uri = strim(endpoint, ".git", MPR_TRIM_END); uri = sjoin(uri, "/raw/master/package.json", NULL); status = httpRequest("GET", uri, NULL, &response, &err); if (status != 200) { feedback("warn", "Could not verify endpoint"); } else { if (!response || mprParseJson(response) == 0) { feedback("warn", "Could not verify endpoint package.json"); } } #endif if ((rec = createRec("pak", params())) == 0) { sendResult(feedback("error", "Cannot create package record")); return; } } setField(rec, "password", mprMakePassword(password, PASSWORD_SALT, PASSWORD_ROUNDS)); if (!(updateRec(rec))) { sendResult(feedback("error", "Cannot save package details")); return; } sendRec(rec); }