NEOERR* system_plan_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mdb_conn *db = hash_lookup(dbh, "plan"); STRING str; string_init(&str); int count, offset; char *mname; HDF *node; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, db); MEMBER_CHECK_ADMIN(); SET_DASHBOARD_ACTION(cgi->hdf); hdf_get_node(cgi->hdf, PRE_OUTPUT, &node); mdb_pagediv(hdf_get_obj(cgi->hdf, PRE_QUERY), NULL, &count, &offset, NULL, node); err = mdb_build_querycond(hdf_get_obj(cgi->hdf, PRE_QUERY), hdf_get_obj(g_cfg, "Db.QueryCond.system.plan"), &str, "intime > current_date - 1"); if (err != STATUS_OK) return nerr_pass(err); MDB_PAGEDIV_SET_N(node, db, "plan", "%s", NULL, str.buf); MDB_QUERY_RAW(db, "plan", _COL_PLAN_ADMIN, "%s ORDER BY id DESC LIMIT %d OFFSET %d", NULL, str.buf, count, offset); err = mdb_set_rows(cgi->hdf, db, _COL_PLAN_ADMIN, PRE_OUTPUT".rows", NULL, MDB_FLAG_EMPTY_OK); if (err != STATUS_OK) return nerr_pass(err); return STATUS_OK; }
void ltpl_prepare_rend(HDF *hdf, char *tpl) { char key[LEN_ST]; HDF *tmphdf, *ahdf; if (hdf == NULL) return; /* * merge dataset from g_cfg */ snprintf(key, sizeof(key), PRE_CFG_DATASET".%s", tpl); tmphdf = hdf_get_obj(g_cfg, key); if (tmphdf != NULL) hdf_copy(hdf, PRE_CFG_LAYOUT, tmphdf); /* * special actions */ tmphdf = hdf_get_child(hdf, PRE_WALK_SACTION); while (tmphdf) { snprintf(key, sizeof(key), PRE_LAYOUT".%s", hdf_obj_value(tmphdf)); ahdf = hdf_get_obj(hdf, key); if (ahdf) hdf_copy(hdf, PRE_LAYOUT".actions", ahdf); tmphdf = hdf_obj_next(tmphdf); } /* * set classes */ char *pos = hdf_get_value(hdf, "Layout.tabpart", NULL); if (pos) hdf_set_valuef(hdf, "Layout.tabs.%s.class=selected", pos); pos = hdf_get_value(hdf, "Layout.actionpart", NULL); if (pos) hdf_set_valuef(hdf, "Layout.actions.%s.class=selected", pos); }
NEOERR* system_comment_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mdb_conn *db = hash_lookup(dbh, "aux"); STRING str; string_init(&str); char *mname; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, db); MEMBER_CHECK_ADMIN(); SET_DASHBOARD_ACTION(cgi->hdf); if (!hdf_get_value(cgi->hdf, PRE_QUERY".times", NULL)) hdf_set_value(cgi->hdf, PRE_QUERY".timed", "current_date - 7"); err = mdb_build_querycond(hdf_get_obj(cgi->hdf, PRE_QUERY), hdf_get_obj(g_cfg, "Db.QueryCond.system.comment"), &str, NULL); if (err != STATUS_OK) return nerr_pass(err); MDB_QUERY_RAW(db, "comment", _COL_CMT, "%s ORDER BY id DESC", NULL, str.buf); err = mdb_set_rows(cgi->hdf, db, _COL_CMT, PRE_OUTPUT".rows", NULL, MDB_FLAG_EMPTY_OK); if (err != STATUS_OK) return nerr_pass(err); return STATUS_OK; }
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* system_view_detail_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { STRING str; string_init(&str); mdb_conn *db = hash_lookup(dbh, "trace"); char *mname; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, db); MEMBER_CHECK_ADMIN(); SET_DASHBOARD_ACTION(cgi->hdf); err = mdb_build_querycond(hdf_get_obj(cgi->hdf, PRE_QUERY), hdf_get_obj(g_cfg, "Db.QueryCond.system.viewdetail"), &str, NULL); if (err != STATUS_OK) return nerr_pass(err); MDB_QUERY_RAW(db, "emap", _COL_EMAP_VIEW_DETAIL, " %s ORDER BY intime LIMIT 100", NULL, str.buf); err = mdb_set_rows(cgi->hdf, db, _COL_EMAP_VIEW_DETAIL, PRE_OUTPUT".details", NULL, MDB_FLAG_EMPTY_OK); if (err != STATUS_OK) return nerr_pass(err); string_clear(&str); hdf_set_attr(cgi->hdf, PRE_OUTPUT".details", "type", "array"); return STATUS_OK; }
NEOERR* blog_data_mod(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; int bid; NEOERR *err; LPRE_DBOP(cgi->hdf, conn); HDF_GET_INT(cgi->hdf, PRE_QUERY".bid", bid); 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); STRING str; string_init(&str); err = mcs_build_upcol(hdf_get_obj(cgi->hdf, PRE_QUERY), hdf_get_obj(g_cfg, "Db.UpdateCol.blog"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(conn, NULL, "UPDATE blog SET %s WHERE id=%d AND author=$1", "s", str.buf, bid, aname); string_clear(&str); char command[1024]; snprintf(command, sizeof(command), PATH_PAGER"blg -b %d", bid); mtc_dbg("%s", command); system(command); return STATUS_OK; }
NEOERR* system_who_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { STRING str; string_init(&str); mdb_conn *db = hash_lookup(dbh, "trace"); char *mname; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, db); MEMBER_CHECK_ADMIN(); SET_DASHBOARD_ACTION(cgi->hdf); hdf_set_int_value(cgi->hdf, PRE_QUERY".type", TRACE_TYPE_PAGEVIEW); err = mdb_build_querycond(hdf_get_obj(cgi->hdf, PRE_QUERY), hdf_get_obj(g_cfg, "Db.QueryCond.system.who"), &str, NULL); if (err != STATUS_OK) return nerr_pass(err); MDB_QUERY_RAW(db, "emap", _COL_EMAP_WHO, " %s GROUP BY sender ORDER BY min(intime) DESC LIMIT 100", NULL, str.buf); err = mdb_set_rows(cgi->hdf, db, _COL_EMAP_WHO, PRE_OUTPUT".who", NULL, MDB_FLAG_EMPTY_OK); if (err != STATUS_OK) return nerr_pass(err); string_clear(&str); hdf_set_attr(cgi->hdf, PRE_OUTPUT".who", "type", "array"); return STATUS_OK; }
bool Hdf::exists(const char *name) const { HDF *hdf = m_hdf; if (m_rawp) { std::string fullpath = getFullPath(); hdf = m_rawp->m_hdf; if (!fullpath.empty()) { hdf = hdf_get_obj(hdf, fullpath.c_str()); } } return hdf && hdf_get_obj(hdf, name); }
void lerr_opfinish_json(NEOERR *err, HDF *hdf) { if (err == STATUS_OK) { hdf_set_value(hdf, PRE_SUCCESS, "1"); mcs_set_int_attr(hdf, PRE_SUCCESS, "type", CNODE_TYPE_INT); return; } hdf_remove_tree(hdf, PRE_SUCCESS); NEOERR *neede = mcs_err_valid(err); /* set PRE_ERRXXX with the most recently err */ mcs_set_int_value_with_type(hdf, PRE_ERRCODE, neede->error, CNODE_TYPE_INT); if (!hdf_get_obj(hdf, PRE_ERRMSG)) { hdf_set_valuef(hdf, "%s=%s:%d %s", PRE_ERRMSG, neede->file, neede->lineno, neede->desc); } STRING str; string_init(&str); nerr_error_traceback(err, &str); mtc_err("%s", str.buf); hdf_set_value(hdf, PRE_ERRTRACE, str.buf); nerr_ignore(&err); string_clear(&str); }
/* * input : aname(STR) * return: NORMAL REP_ERR_NREGIST * reply : NULL */ static NEOERR* aic_cmd_appdel(struct queue_entry *q, struct cache *cd, mdb_conn *db) { char *aname; int aid, pid = 0; NEOERR *err; REQ_GET_PARAM_STR(q->hdfrcv, "aname", aname); aid = hash_string(aname); err = aic_cmd_appinfo(q, cd, db); if (err != STATUS_OK) return nerr_pass(err); if (!hdf_get_obj(q->hdfsnd, "state")) return nerr_raise(REP_ERR_NREGIST, "%s not regist", aname); pid = hdf_get_int_value(q->hdfsnd, "pid", 0); MDB_EXEC(db, NULL, "DELETE FROM appinfo WHERE aid=%d;", NULL, aid); cache_delf(cd, PREFIX_APPINFO"%d", aid); if (pid > 0) { cache_delf(cd, PREFIX_APPOUSER"%d_0", pid); } return STATUS_OK; }
/* * input : uname(STR) aname(STR) * return: NORMAL * reply : NULL */ static NEOERR* aic_cmd_appuserin(struct queue_entry *q, struct cache *cd, mdb_conn *db) { STRING str; string_init(&str); char *aname, *uname; int aid, uid; NEOERR *err; REQ_GET_PARAM_STR(q->hdfrcv, "aname", aname); REQ_GET_PARAM_STR(q->hdfrcv, "uname", uname); aid = hash_string(aname); uid = hash_string(uname); hdf_set_int_value(q->hdfrcv, "uid", uid); hdf_set_int_value(q->hdfrcv, "aid", aid); err = aic_cmd_appusers(q, cd, db); if (err != STATUS_OK) return nerr_pass(err); if (hdf_get_valuef(q->hdfsnd, "userlist.%s.uname", uname)) return STATUS_OK; err = mcs_build_incol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".InsertCol.userinfo"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "INSERT INTO userinfo %s", NULL, str.buf); string_clear(&str); cache_delf(cd, PREFIX_USERLIST"%d", aid); return STATUS_OK; }
NEOERR* oms_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname; NEOERR *err; APP_CHECK_LOGIN(); SET_ADMIN_ACTION(evt->hdfrcv, cgi->hdf); hdf_copy(cgi->hdf, PRE_OUTPUT".appinfo", evt->hdfrcv); /* * prepare data */ hdf_set_value(evt->hdfsnd, "aname", aname); hdf_set_int_value(evt->hdfsnd, "limit", MAX_USERS_PERADMIN); /* * trigger */ MEVENT_TRIGGER(evt, aname, REQ_CMD_APPUSERS, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); /* * TODO: remove ips2places() when userinfo's addr all filled */ ips2places(hdf_get_obj(cgi->hdf, PRE_OUTPUT".userlist"), evth); return STATUS_OK; }
NEOERR* oms_bill_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname; NEOERR *err; APP_CHECK_ADMIN(); SET_ADMIN_ACTION(evt->hdfrcv, cgi->hdf); hdf_copy(cgi->hdf, PRE_OUTPUT".appinfo", evt->hdfrcv); int state = hdf_get_int_value(evt->hdfrcv, "state", LCS_ST_FREE); if (state <= LCS_ST_FREE) return STATUS_OK; evt = hash_lookup(evth, "bank"); hdf_set_value(evt->hdfsnd, "aname", aname); MEVENT_TRIGGER(evt, aname, REQ_CMD_BANK_INFO, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT".bankinfo", evt->hdfrcv); hdf_set_value(evt->hdfsnd, "aname", aname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); MEVENT_TRIGGER(evt, aname, REQ_CMD_BANK_GETBILL, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
static NEOERR* aux_cmd_cmtadd(struct aux_entry *e, QueueEntry *q) { STRING str; string_init(&str); int type, oid; NEOERR *err; REQ_GET_PARAM_INT(q->hdfrcv, "type", type); REQ_GET_PARAM_INT(q->hdfrcv, "oid", oid); mdb_conn *db = e->db; struct cache *cd = e->cd; err = mdb_build_incol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".InsertCol.comment"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "INSERT INTO comment %s", NULL, str.buf); string_clear(&str); cache_delf(cd, PREFIX_COMMENT"%d:%d_0", type, oid); return STATUS_OK; }
static NEOERR* aux_cmd_emailadd(struct aux_entry *e, QueueEntry *q) { STRING str; string_init(&str); char sum[LEN_MD5], *content; NEOERR *err; mdb_conn *db = e->db; REQ_GET_PARAM_STR(q->hdfrcv, "content", content); mstr_md5_str(content, sum); hdf_set_value(q->hdfrcv, "checksum", sum); HDF *node = hdf_get_child(q->hdfrcv, "mto"); insert: if (node) hdf_set_value(q->hdfrcv, "to", hdf_obj_value(node)); err = mdb_build_incol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".InsertCol.email"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "INSERT INTO email %s", NULL, str.buf); string_clear(&str); if (node) { node = hdf_obj_next(node); if (node) goto insert; } return STATUS_OK; }
NEOERR* inbox_multi_add(HDF *datanode, HASH *evth, char *inboxtype) { mevent_t *evt; int mid; HDF *child; NEOERR *err; MCS_NOT_NULLB(datanode, evth); evt = hash_lookup(evth, "aux"); MCS_NOT_NULLA(evt); child = hdf_obj_child(datanode); while (child) { mid = hdf_get_int_value(child, "mid", 0); if (mid > 0) { hdf_set_valuef(evt->hdfsnd, "mmid.%d=%d", mid, mid); } child = hdf_obj_next(child); } if (!hdf_get_obj(evt->hdfsnd, "mmid")) return nerr_raise(NERR_ASSERT, "请设置收信用户号码"); err = mtpl_InConfigRend_get(evt->hdfsnd, datanode, "inbox", inboxtype, g_datah); if (err != STATUS_OK) return nerr_pass(err); MEVENT_TRIGGER(evt, NULL, REQ_CMD_AUX_INBOX_ADD, FLAGS_NONE); return STATUS_OK; }
NEOERR* oms_users_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic"); char *aname; NEOERR *err; APP_CHECK_ADMIN(); SET_ADMIN_ACTION(evt->hdfrcv, cgi->hdf); hdf_copy(cgi->hdf, PRE_OUTPUT".appinfo", evt->hdfrcv); /* * prepare data */ hdf_set_value(evt->hdfsnd, "pname", aname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); /* * trigger */ MEVENT_TRIGGER(evt, aname, REQ_CMD_APP_O_USERS, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
int main(int argc, char *argv[]) { NEOERR *err; HDF *hdf, *h2; err = hdf_init(&hdf); if (err != STATUS_OK) { nerr_log_error(err); return -1; } err = hdf_set_value(hdf, "CGI.Foo", "Bar"); if (err) { nerr_log_error(err); return -1; } err = hdf_set_value(hdf, "CGI.Foo", "Baz"); if (err) { nerr_log_error(err); return -1; } h2 = hdf_get_obj(hdf, "CGI"); err = hdf_set_value(h2, "Foo", "Bang"); hdf_dump(hdf, NULL); hdf_destroy(&hdf); return 0; }
void CGI::TranslatePost(void *cgi, Tree *posts, std::map<std::string, File> *files) { ::CGI *c = reinterpret_cast< ::CGI *>(cgi); HDF *parent = hdf_get_obj(c->hdf, "Query"); if (!parent) { return; } HDF *next = hdf_obj_child(parent); while (next) { HDF *child = next; next = hdf_obj_next(next); const char *k = hdf_obj_name(child); const char *v = hdf_obj_value(child); if (!k || !v) { continue; } if (!TranslateFile(c, k, files)) { posts->Set(k, v); } } }
void lerr_opfinish_json(NEOERR *err, HDF *hdf) { if (err == STATUS_OK) { hdf_set_value(hdf, PRE_SUCCESS, "1"); return; } hdf_remove_tree(hdf, PRE_SUCCESS); char buf[1024], errname[128]; NEOERR *neede = mcs_err_valid(err); if (!neede) neede = err; snprintf(buf, sizeof(buf), "%s:%d %s", neede->file, neede->lineno, _lookup_errname(neede, errname, sizeof(errname))); /* set PRE_ERRXXX with the most recently err */ if (!hdf_get_obj(hdf, PRE_ERRMSG)) { hdf_set_value(hdf, PRE_ERRMSG, buf); } hdf_set_int_value(hdf, PRE_ERRCODE, neede->error); STRING str; string_init(&str); nerr_error_traceback(err, &str); mtc_err("%s", str.buf); hdf_set_value(hdf, PRE_ERRTRACE, str.buf); nerr_ignore(&err); string_clear(&str); }
static NEOERR* aux_cmd_inboxadd(struct aux_entry *e, QueueEntry *q) { STRING str; string_init(&str); NEOERR *err; mdb_conn *db = e->db; HDF *node = hdf_get_child(q->hdfrcv, "mmid"); insert: if (node) hdf_set_value(q->hdfrcv, "mid", hdf_obj_value(node)); err = mdb_build_incol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".InsertCol.inbox"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "INSERT INTO inbox %s", NULL, str.buf); string_clear(&str); if (node) { node = hdf_obj_next(node); if (node) goto insert; } return STATUS_OK; }
NEOERR* member_home_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { mevent_t *evt = hash_lookup(evth, "member"); char *mname = NULL; int mid; NEOERR *err; MCS_NOT_NULLB(cgi->hdf, evt); HDF_FETCH_INT(cgi->hdf, PRE_QUERY".mid", mid); if (mid == 0) { MEMBER_CHECK_LOGIN(); } else { hdf_set_int_value(evt->hdfsnd, "mid", mid); MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMBER_GET, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT".member", evt->hdfrcv); } evt = hash_lookup(evth, "plan"); MCS_NOT_NULLA(evt); if (mname) hdf_set_value(evt->hdfsnd, "mname", mname); hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY)); hdf_set_value(evt->hdfsnd, "_npp", "5"); hdf_set_value(evt->hdfsnd, "_guest", "1"); MEVENT_TRIGGER(evt, NULL, REQ_CMD_PLAN_MINE, FLAGS_SYNC); hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv); return STATUS_OK; }
static NEOERR* dyn_cmd_addtrack(struct queue_entry *q, struct cache *cd, mdb_conn *db) { STRING str; string_init(&str); char *aname, *uname, *oname; int aid, uid, oid = 0; NEOERR *err; REQ_GET_PARAM_STR(q->hdfrcv, "uname", uname); REQ_GET_PARAM_STR(q->hdfrcv, "aname", aname); REQ_FETCH_PARAM_STR(q->hdfrcv, "oname", oname); uid = hash_string(uname); aid = hash_string(aname); if (oname) oid = hash_string(oname); hdf_set_int_value(q->hdfrcv, "aid", aid); hdf_set_int_value(q->hdfrcv, "uid", uid); hdf_set_int_value(q->hdfrcv, "oid", oid); err = mcs_build_incol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".InsertCol.track"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "INSERT INTO track %s", NULL, str.buf); string_clear(&str); return STATUS_OK; }
NEOERR* levt_init(HASH **evth) { mevent_t *evt; char *ename; HDF *node; HASH *levth; NEOERR *err; node = hdf_get_obj(g_cfg, "Mevent"); if (!node) return nerr_raise(NERR_ASSERT, "Mevent config not found"); err = hash_init(&levth, hash_str_hash, hash_str_comp, hash_str_free); if (err != STATUS_OK) return nerr_pass(err); node = hdf_obj_child(node); while (node != NULL) { ename = hdf_obj_value(node); evt = mevent_init_plugin(ename); if (evt) { mtc_dbg("event %s init ok", ename); hash_insert(levth, (void*)strdup(ename), (void*)evt); } else { mtc_err("event %s init failure", ename); } node = hdf_obj_next(node); } *evth = levth; return STATUS_OK; }
NEOERR* session_init(CGI *cgi, HASH *dbh, session_t **ses) { session_t *lses; char tok[_POSIX_PATH_MAX]; *ses = NULL; lses = calloc(1, sizeof(session_t)); if (!lses) return nerr_raise(NERR_NOMEM, "calloc memory for session_t failure"); lses->reqtype = CGI_REQ_HTML; hdf_get_copy(cgi->hdf, PRE_COOKIE".uname", &lses->uname, NULL); char *uri = hdf_get_value(cgi->hdf, PRE_REQ_URI_RW, NULL); if (!uri) { uri = "terminal"; lses->reqtype = CGI_REQ_TERMINAL; } /* TODO uniq req uri */ //uri = mmisc_str_uniq(uri, '/'); mmisc_str_repchr(uri, '/', '_'); uri = mmisc_str_strip(uri, '_'); if (!strncmp(uri, "json_", 5)) { uri = uri+5; lses->reqtype = CGI_REQ_AJAX; } switch (CGI_REQ_METHOD(cgi)) { case CGI_REQ_POST: snprintf(tok, sizeof(tok), "%s_data_mod", uri); break; case CGI_REQ_PUT: snprintf(tok, sizeof(tok), "%s_data_add", uri); break; case CGI_REQ_DEL: snprintf(tok, sizeof(tok), "%s_data_del", uri); break; default: case CGI_REQ_GET: snprintf(tok, sizeof(tok), "%s_data_get", uri); break; } lses->dataer = strdup(tok); lses->render = strdup(uri); /* process cache */ HDF *node = hdf_get_obj(g_cfg, PRE_CFG_FILECACHE".0"); while (node != NULL) { if (reg_search(hdf_get_value(node, "uri", "NULL"), uri)) { lses->tm_cache_browser = hdf_get_int_value(node, "tm_cache", 0); break; } node = hdf_obj_next(node); } *ses = lses; return STATUS_OK; }
/* * input : aname(STR) [asn(STR) masn(STR) email(STR) state(INT)] * return: NORMAL REP_ERR_ALREADYREGIST * reply : NULL */ static NEOERR* aic_cmd_appup(struct queue_entry *q, struct cache *cd, mdb_conn *db) { char *aname; int aid, pid = 0, tune = -1; STRING str; string_init(&str); NEOERR *err; REQ_GET_PARAM_STR(q->hdfrcv, "aname", aname); REQ_FETCH_PARAM_INT(q->hdfrcv, "tune", tune); if (tune != -1) { if (hdf_get_int_value(q->hdfrcv, "tuneop", 0)) { /* set tune bit */ string_appendf(&str, " tune=tune | %d ", tune); } else { /* unset tune bit */ string_appendf(&str, " tune=tune & %d ", ~tune); } } aid = hash_string(aname); err = aic_cmd_appinfo(q, cd, db); if (err != STATUS_OK) return nerr_pass(err); if (!hdf_get_obj(q->hdfsnd, "state")) return nerr_raise(REP_ERR_NREGIST, "%s %d hasn't regist", aname, aid); pid = hdf_get_int_value(q->hdfsnd, "pid", 0); err = mcs_build_upcol(q->hdfrcv, hdf_get_obj(g_cfg, CONFIG_PATH".UpdateCol.appinfo"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "UPDATE appinfo SET %s WHERE aid=%d;", NULL, str.buf, aid); /* TODO memory leak, if exec() failure */ string_clear(&str); cache_delf(cd, PREFIX_APPINFO"%d", aid); if (pid > 0) { cache_delf(cd, PREFIX_APPOUSER"%d_0", pid); } return STATUS_OK; }
NEOERR* pos_data_mod(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses) { STRING str; string_init(&str); mdb_conn *db = hash_lookup(dbh, "city"); NEOERR *err; if (!cgi || !cgi->hdf || !db) return nerr_raise(NERR_ASSERT, "paramter null"); int id = hdf_get_int_value(cgi->hdf, PRE_QUERY".id", 0); err = mdb_build_upcol(hdf_get_obj(cgi->hdf, PRE_QUERY), hdf_get_obj(g_cfg, "Db.UpdateCol.city"), &str); if (err != STATUS_OK) return nerr_pass(err); MDB_EXEC(db, NULL, "UPDATE city SET %s WHERE id=%d;", NULL, str.buf, id); return STATUS_OK; }
bool Hdf::exists() const { if (m_rawp == nullptr) { return m_hdf != nullptr; } std::string fullpath = getFullPath(); if (fullpath.empty()) { return true; } return hdf_get_obj(m_rawp->m_hdf, fullpath.c_str()); }
JNIEXPORT jint JNICALL Java_org_clearsilver_HDF__1getObj( JNIEnv *env, jclass objClass, jint hdf_obj_ptr, jstring j_hdf_path) { HDF *hdf = (HDF *)hdf_obj_ptr; HDF *obj_hdf = NULL; const char *hdf_path; hdf_path = (*env)->GetStringUTFChars(env, j_hdf_path, 0); obj_hdf = hdf_get_obj(hdf, (char*)hdf_path); (*env)->ReleaseStringUTFChars(env, j_hdf_path, hdf_path); return (jint)obj_hdf; }
HDF* mcs_get_objf(HDF *hdf, char *fmt, ...) { char key[LEN_HDF_KEY]; va_list ap; va_start(ap, fmt); vsnprintf(key, sizeof(key), fmt, ap); va_end(ap); return hdf_get_obj(hdf, key); }