NEOERR* member_new_data_add(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); char *mnick, *mname, *mid; MCS_NOT_NULLB(cgi->hdf, evt); HDF_GET_STR(cgi->hdf, PRE_QUERY".mnick", mnick); HDF_GET_STR(cgi->hdf, PRE_QUERY".mname", mname); LEGAL_CHECK_NICK(mnick); LEGAL_CHECK_NAME(mname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_ADD, FLAGS_SYNC); mid = hdf_get_value(evt->hdfrcv, "mid", NULL); member_after_login(cgi, evth, mname, mnick, mid); char *s; HDF_FETCH_STR(cgi->hdf, PRE_QUERY".mnick", s); hdf_set_value(cgi->hdf, PRE_RESERVE".event.es_one", s); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".mname", s); hdf_set_value(cgi->hdf, PRE_RESERVE".event.es_two", s); HDF *node = hdf_get_obj(cgi->hdf, PRE_RESERVE".event"); return nerr_pass(trace_event(node, evth, ses, TRACE_TYPE_MEMBER_REG)); }
NEOERR* blog_data_add(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mdb_conn *conn = (mdb_conn*)hash_lookup(dbh, "aux"); mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname, command[1024]; char *title, *content; int id = 0; NEOERR *err; LPRE_DBOP(cgi->hdf, conn); APP_CHECK_LOGIN(); if (hdf_get_int_value(evt->hdfrcv, "state", 0) < LCS_ST_ADMIN) return nerr_raise(LERR_LIMIT, "%s wan't be admin", aname); HDF_GET_STR(cgi->hdf, PRE_QUERY".title", title); HDF_GET_STR(cgi->hdf, PRE_QUERY".content", content); MDB_EXEC(conn, NULL, "INSERT INTO blog (title, content, author) " " VALUES ($1::varchar(256), $2, " " $3::varchar(256)) RETURNING id", "sss", title, content, aname); err = mdb_get(conn, "i", &id); if (err != STATUS_OK) return nerr_pass(err); snprintf(command, sizeof(command), PATH_PAGER"blg -i 0 -b %d", id); mtc_dbg("%s", command); system(command); return STATUS_OK; }
NEOERR* member_reset_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt; char *mnick, *mname, *mname_esc = NULL; char rlink[LEN_CK]; NEOERR *err; HDF_GET_STR(cgi->hdf, PRE_QUERY".mname", mname); mstr_rand_string(rlink, sizeof(rlink)); evt = (mevent_t*)hash_lookup(evth, "member"); MCS_NOT_NULLB(cgi->hdf, evt); hdf_set_value(evt->hdfsnd, "mname", mname); hdf_set_value(evt->hdfsnd, "rlink", rlink); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_SETRLINK, FLAGS_SYNC); mnick = hdf_get_value(evt->hdfrcv, "mnick", NULL); neos_url_escape(mname, &mname_esc, NULL); hdf_set_value(cgi->hdf, PRE_DATASET".Layout.mnick", mnick); hdf_set_value(cgi->hdf, PRE_DATASET".Layout.mname_esc", mname_esc); hdf_set_value(cgi->hdf, PRE_DATASET".Layout.rlink", rlink); err = email_add(cgi->hdf, evth, "MemberReset", mname); if (err != STATUS_OK) return nerr_pass(err); SAFE_FREE(mname_esc); return STATUS_OK; }
NEOERR* member_exist_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); char *mname; MCS_NOT_NULLB(cgi->hdf, evt); HDF_GET_STR(cgi->hdf, PRE_QUERY".mname", mname); hdf_set_value(evt->hdfsnd, "mname", mname); mevent_trigger(evt, mname, REQ_CMD_MEMBER_GET, FLAGS_SYNC); if (PROCESS_OK(evt->errcode)) { hdf_set_value(cgi->hdf, PRE_OUTPUT".exist", "1"); hdf_set_value(cgi->hdf, PRE_OUTPUT".msg", "用户已被注册"); } else if (evt->errcode == LERR_MEMBER_NEXIST) { hdf_set_value(cgi->hdf, PRE_OUTPUT".exist", "0"); hdf_set_value(cgi->hdf, PRE_OUTPUT".msg", "用户还未注册"); } else { return nerr_raise(evt->errcode, "get member %s info failure %d", evt->ename, evt->errcode); } return STATUS_OK; }
NEOERR* oms_camer_data_del(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname, *uname; NEOERR *err; APP_CHECK_LOGIN(); HDF_GET_STR(cgi->hdf, PRE_QUERY".uname", uname); LEGAL_CK_ANAME(uname); hdf_set_value(evt->hdfsnd, "aname", aname); hdf_set_value(evt->hdfsnd, "uname", uname); MEVENT_TRIGGER(evt, aname, REQ_CMD_APPUSEROUT, FLAGS_NONE); evt = (mevent_t*)hash_lookup(evth, "msg"); if (evt) { hdf_set_value(evt->hdfsnd, "name", uname); hdf_set_value(evt->hdfsnd, "name2", aname); MEVENT_TRIGGER(evt, uname, REQ_CMD_DEL_BOTH, FLAGS_NONE); } return STATUS_OK; }
NEOERR* member_pic_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); HDF *node; char *s = NULL, *defs = NULL, *path, *size; MCS_NOT_NULLB(cgi->hdf, evt); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".defs", defs); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".fpath", path); HDF_FETCH_STR(cgi->hdf, PRE_QUERY".fsize", size); node = hdf_get_child(cgi->hdf, PRE_QUERY".type"); if (!node) HDF_GET_STR(cgi->hdf, PRE_QUERY".type", s); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMBER_PRIV_GET, FLAGS_SYNC); if (s) goto getval; while (node) { s = hdf_obj_value(node); getval: /* * turn & into & in url format */ mstr_html_unescape(evt->hdfrcv, s); s = hdf_get_value(evt->hdfrcv, s, NULL); if (s && *s) { if (!strncmp(s, "http:", 5)) { hdf_set_value(cgi->hdf, PRE_OUTPUT".302", s); return STATUS_OK; } break; } if (node) node = hdf_obj_next(node); } if (!s || !*s) { if (!defs) s = SITE_DOMAIN; else if (!strcmp(defs, "segv")) return STATUS_OK; else s = defs; } if (!path) path = hdf_get_value(g_cfg, "Config.font.member.path", "/usr/share/ttf/Times.ttf"); if (!size) size = hdf_get_value(g_cfg, "Config.font.member.size", "14."); return nerr_pass(mimg_create_from_string(s, path, atof(size), &ses->data)); }
NEOERR* member_login_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); char *mname, *msn; MCS_NOT_NULLB(cgi->hdf, evt); HDF_GET_STR(cgi->hdf, PRE_QUERY".mname", mname); HDF_GET_STR(cgi->hdf, PRE_QUERY".msn", msn); hdf_set_value(evt->hdfsnd, "mname", mname); hdf_set_value(evt->hdfsnd, "msn", msn); MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_CHECK_MSN, FLAGS_SYNC); char *mnick = hdf_get_value(evt->hdfrcv, "mnick", "嘀嗒"); char *mid = hdf_get_value(evt->hdfrcv, "mid", NULL); member_after_login(cgi, evth, mname, mnick, mid); return STATUS_OK; }
NEOERR* member_login_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mdb_conn *db = hash_lookup(dbh, "main"); char *mname, *msn; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, db); HDF_GET_STR(cgi->hdf, PRE_QUERY".mname", mname); HDF_GET_STR(cgi->hdf, PRE_QUERY".msn", msn); MDB_QUERY_RAW(db, "member", _COL_MEMBER, "mname=$1", "s", mname); err = mdb_set_row(cgi->hdf, db, _COL_MEMBER, PRE_OUTPUT".member", MDB_FLAG_Z); if (err != STATUS_OK) return nerr_pass(err); char *msndb = hdf_get_value(cgi->hdf, PRE_OUTPUT".member.msn", NULL); if (!msndb || strcmp(msndb, msn)) { hdf_remove_tree(cgi->hdf, PRE_OUTPUT".member"); return nerr_raise(LERR_LOGINPSW, "msn incorrct"); } return nerr_pass(member_after_login(cgi, dbh, mname)); }
NEOERR* city_id_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "city"); char *id; MCS_NOT_NULLB(cgi->hdf, evt); HDF_GET_STR(cgi->hdf, PRE_QUERY".id", id); hdf_set_value(evt->hdfsnd, "id", id); MEVENT_TRIGGER(evt, NULL, REQ_CMD_CITY_BY_ID, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* city_s_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "city"); char *s; if (!cgi || !cgi->hdf || !evt) return nerr_raise(NERR_ASSERT, "paramter null"); HDF_GET_STR(cgi->hdf, PRE_QUERY".c", s); hdf_set_value(evt->hdfsnd, "c", s); MEVENT_TRIGGER(evt, NULL, REQ_CMD_CITY_BY_S, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
NEOERR* oms_secy_data_mod(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname, *uname; NEOERR *err; HDF_GET_STR(cgi->hdf, PRE_QUERY".aname", uname); APP_CHECK_ADMIN_OTHER(uname); hdf_set_value(evt->hdfsnd, "pname", aname); hdf_set_value(evt->hdfsnd, "aname", uname); MEVENT_TRIGGER(evt, aname, REQ_CMD_APP_SETSECY, FLAGS_NONE); return STATUS_OK; }
NEOERR* oms_users_data_del(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *uname, *aname; NEOERR *err; HDF_GET_STR(cgi->hdf, PRE_QUERY".aname", uname); APP_CHECK_ADMIN_OTHER(uname); if (!strcmp(aname, uname)) return nerr_raise(LERR_LIMIT, "%s want kill him self", aname); /* * prepare data */ hdf_set_value(evt->hdfsnd, "aname", uname); /* * trigger */ MEVENT_TRIGGER(evt, uname, REQ_CMD_APPDEL, FLAGS_SYNC); return STATUS_OK; }
NEOERR* oms_users_data_add(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname, *pname, *email; int cost; NEOERR *err; APP_CHECK_ADMIN(); HDF_GET_STR_IDENT(cgi->hdf, PRE_COOKIE".aname", pname); HDF_GET_STR(cgi->hdf, PRE_QUERY".aname", aname); HDF_GET_STR(cgi->hdf, PRE_QUERY".email", email); LEGAL_CK_ANAME(pname); LEGAL_CK_ANAME(aname); LEGAL_CK_EMAIL(email); /* * check */ int state = hdf_get_int_value(evt->hdfrcv, "state", LCS_ST_FREE); if (state <= LCS_ST_FREE) return nerr_raise(LERR_NEEDUP, "%s want to add users %s", pname, aname); else if (state >= LCS_ST_VIP) goto add; /* * chargeback */ cost = hdf_get_int_value(g_cfg, "Cost.account", 0); evt = (mevent_t*)hash_lookup(evth, "bank"); hdf_set_value(evt->hdfsnd, "aname", pname); hdf_set_int_value(evt->hdfsnd, "btype", BANK_OP_ADDACCOUNT); hdf_set_int_value(evt->hdfsnd, "fee", cost); hdf_set_value(evt->hdfsnd, "account", aname); MEVENT_TRIGGER(evt, pname, REQ_CMD_BANK_ADDBILL, FLAGS_SYNC); add: /* * add */ evt = (mevent_t*)hash_lookup(evth, "aic"); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); hdf_set_value(evt->hdfsnd, "pname", pname); hdf_set_value(evt->hdfsnd, "aname", aname); hdf_set_int_value(evt->hdfsnd, "state", hdf_get_int_value(evt->hdfrcv, "state", LCS_ST_FREE)); hdf_set_value(evt->hdfsnd, "masn", aname); if (PROCESS_NOK(mevent_trigger(evt, aname, REQ_CMD_APPNEW, FLAGS_SYNC))) { char *zpa = NULL; hdf_write_string(evt->hdfrcv, &zpa); mtc_foo("add %s failure %d %s", aname, evt->errcode, zpa); SAFE_FREE(zpa); if (state < LCS_ST_VIP) { /* * roll back */ evt = (mevent_t*)hash_lookup(evth, "bank"); hdf_set_value(evt->hdfsnd, "aname", pname); hdf_set_int_value(evt->hdfsnd, "btype", BANK_OP_ROLLBACK); hdf_set_int_value(evt->hdfsnd, "fee", -cost); hdf_set_valuef(evt->hdfsnd, "remark = 客服帐号 %s 创建失败", aname); if (PROCESS_NOK(mevent_trigger(evt, pname, REQ_CMD_BANK_ADDBILL, FLAGS_SYNC))) { /* * ATTENTION we need pay back to customer manually */ hdf_write_string(evt->hdfrcv, &zpa); mtc_foo("rollback %s failure %d %s", aname, evt->errcode, zpa); SAFE_FREE(zpa); } } return nerr_raise(evt->errcode, "add %s failure %d", aname, evt->errcode); } return STATUS_OK; }