Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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));
}
Beispiel #4
0
PUBLIC MprJson *makeJson(cchar *fmt, ...)
{
    va_list     args;
    cchar       *str;

    va_start(args, fmt);
    str = sfmtv(fmt, args);
    va_end(args);
    return mprParseJson(str);
}
Beispiel #5
0
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);
}
Beispiel #6
0
/*
    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);
}