Exemple #1
0
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);
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}
Exemple #4
0
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;
}
Exemple #5
0
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;
}
Exemple #6
0
NEOERR* comment_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = (mevent_t*)hash_lookup(evth, "aux");

    LPRE_EVTOP(cgi->hdf, evt);
    
    hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));
    MEVENT_TRIGGER(evt, NULL, REQ_CMD_CMT_GET, FLAGS_SYNC);
    hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv);
    
    return STATUS_OK;
}
Exemple #7
0
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));
}
Exemple #8
0
static PyObject * p_hdf_copy (PyObject *self, PyObject *args)
{
  HDFObject *ho = (HDFObject *)self;
  HDF *src = NULL;
  PyObject *rv, *o = NULL;
  char *name;
  NEOERR *err;

  if (!PyArg_ParseTuple(args, "sO:copy(name, src_hdf)", &name, &o))
    return NULL;

  src = p_object_to_hdf (o);
  if (src == NULL)
  {
    PyErr_Format(PyExc_TypeError, "second argument must be an HDFObject");
    return NULL;
  }

  err = hdf_copy (ho->data, name, src);
  if (err) return p_neo_error(err); 

  rv = Py_None;
  Py_INCREF(rv);
  return rv;
}
Exemple #9
0
NEOERR* bore_op_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = hash_lookup(evth, "aux");
    char *mname;
	NEOERR *err;
    
    MEMBER_CHECK_ADMIN();

    SET_ADMIN_ACTION(cgi->hdf);

    hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));

    MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMORY_GET, FLAGS_SYNC);

    hdf_copy(cgi->hdf, PRE_OUTPUT".memory", evt->hdfrcv);

    return STATUS_OK;
}
Exemple #10
0
NEOERR* inbox_system_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = hash_lookup(evth, "aux");
    char *mname;
    NEOERR *err;

    MCS_NOT_NULLB(cgi->hdf, evt);
    
    MEMBER_CHECK_LOGIN();
    SET_DASHBOARD_ACTION(cgi->hdf);

    hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));
    hdf_set_value(evt->hdfsnd, "mname", mname);
    MEVENT_TRIGGER(evt, mname, REQ_CMD_AUX_INBOX_GET, FLAGS_SYNC);
    hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv);
    
    return STATUS_OK;
}
Exemple #11
0
NEOERR* oms_stat_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = (mevent_t*)hash_lookup(evth, "aic");
    mevent_t *evtm = (mevent_t*)hash_lookup(evth, "mtls");
    char *aname;
    NEOERR *err;

    APP_CHECK_LOGIN();

    SET_ADMIN_ACTION(evt->hdfrcv, cgi->hdf);

    hdf_set_value(evtm->hdfsnd, "aname", aname);
    hdf_copy(evtm->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));

    MEVENT_TRIGGER(evtm, aname, REQ_CMD_GETSTAT, FLAGS_SYNC);
    hdf_copy(cgi->hdf, PRE_OUTPUT, evtm->hdfrcv);

    return STATUS_OK;
}
Exemple #12
0
JNIEXPORT void JNICALL Java_org_clearsilver_HDF__1copy
  (JNIEnv *env, jclass objClass, jint hdf_dest_ptr, jstring j_hdf_path, 
   jint hdf_src_ptr) {
  HDF *dest = (HDF *)hdf_dest_ptr;
  HDF *src = (HDF *)hdf_src_ptr;
  const char *hdf_path;

  hdf_path = (*env)->GetStringUTFChars(env, j_hdf_path, 0);
  hdf_copy(dest, hdf_path, src);
  (*env)->ReleaseStringUTFChars(env, j_hdf_path, hdf_path);
}
Exemple #13
0
NEOERR* mcs_copyf(HDF *dst, HDF *src, char *fmt, ...)
{
    char key[LEN_HDF_KEY];
    va_list ap;

    va_start(ap, fmt);
    vsnprintf(key, sizeof(key), fmt, ap);
    va_end(ap);

    return nerr_pass(hdf_copy(dst, key, src));
}
Exemple #14
0
int main(void) {
  HDF *hdf_1, *hdf_2;
  HDF *cur_node,*last_node;

  hdf_init(&hdf_1);

  hdf_read_file(hdf_1,"hdf_copy_test.hdf");
  hdf_dump(hdf_1,NULL);

  cur_node = hdf_get_obj(hdf_1,"Chart");
  last_node = cur_node;

  cur_node = hdf_get_obj(cur_node,"next_stage");
  while (hdf_get_obj(cur_node,"next_stage") && strcmp(hdf_get_value(cur_node,"Bucket.FieldId",""),"QUEUE")) {
    last_node = cur_node;
    cur_node = hdf_get_obj(cur_node,"next_stage");
  }

  if (hdf_get_obj(cur_node,"next_stage")) {
    hdf_copy(hdf_1,"TempHolderPlace",hdf_get_obj(cur_node,"next_stage"));
  }
  ne_warn("Delete tree from node: %s", hdf_obj_name(last_node));
  hdf_remove_tree(last_node,"next_stage");

  hdf_dump(hdf_1,NULL);
  fprintf(stderr,"-----------------\n");


  hdf_copy(last_node,"next_stage",hdf_get_obj(hdf_1,"TempHolderPlace"));
  hdf_dump(hdf_1,NULL);

  /* Test copy and destroy, make sure we actually copy everything and
   * don't reference anything */
  hdf_init(&hdf_2);
  hdf_copy(hdf_2, "", hdf_1);
  hdf_destroy(&hdf_1);
  hdf_dump(hdf_2, NULL);
  hdf_destroy(&hdf_2);

  return 0;
}
Exemple #15
0
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 &amp; 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));
}
Exemple #16
0
static NEOERR* rend_blog(HASH *dbh, HASH *tplh, int bid)
{
    CSPARSE *cs = NULL;
    HDF *hdf, *dhdf;
    STRING str;
    NEOERR *err;
    char fname[_POSIX_PATH_MAX];
    
    if (!dbh || !tplh || bid < 0) return nerr_raise(NERR_ASSERT, "paramter null");
    
    cs = (CSPARSE*)hash_lookup(tplh, "blog");
    dhdf = (HDF*)hash_lookup(tplh, "blog_hdf");
    if (!cs || !dhdf) return nerr_raise(LERR_MISS_TPL, "blog_index not found");

    err = hdf_init(&hdf);
    if (err != STATUS_OK) return nerr_pass(err);

    hdf_copy(hdf, NULL, dhdf);

    ltpl_prepare_rend(hdf, "layout.html");
    
    hdf_set_int_value(hdf, PRE_QUERY".bid", bid);

    err = blog_static_get(hdf, dbh);
    if (err != STATUS_OK) goto done;
    
    hdf_set_copy(hdf, PRE_LAYOUT".title", PRE_OUTPUT".blog.title");
    
    cs->hdf = hdf;

    string_init(&str);
    err = cs_render(cs, &str, mcs_strcb);
    if (err != STATUS_OK) goto done;
    
    snprintf(fname, sizeof(fname), "%s%d/%d.html",
             PATH_BLOG, bid%BLOG_SUBDIR_NUM, bid);

    err = mutil_makesure_dir(fname);
    if (err != STATUS_OK) goto done;

    err = mcs_str2file(str, fname);
    if (err != STATUS_OK) goto done;

#ifdef DEBUG_HDF
    hdf_write_file(hdf, TC_ROOT"hdf.blg");
#endif

done:
    hdf_destroy(&hdf);
    cs->hdf = NULL;
    string_clear(&str);
    return nerr_pass(err);
}
Exemple #17
0
NEOERR* mcs_hdf_copy_rep(HDF *dst, char *name, HDF *src, HDF *data)
{
    NEOERR *err;
    
    MCS_NOT_NULLB(dst, src);

    err = hdf_copy(dst, name, src);
	if (err != STATUS_OK) return nerr_pass(err);

    mcs_hdf_rep(data, hdf_get_obj(dst, name));

    return STATUS_OK;
}
Exemple #18
0
NEOERR* bore_op_data_add(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = hash_lookup(evth, "aux");
    char *mname;
	NEOERR *err;

    MEMBER_CHECK_ADMIN();

    hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));

    MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMORY_ADD, FLAGS_NONE);

    return STATUS_OK;
}
Exemple #19
0
NEOERR* bore_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt_member = hash_lookup(evth, "member");
    mevent_t *evt = hash_lookup(evth, "aux");
	NEOERR *err;

    MCS_NOT_NULLB(cgi->hdf, evt);

    err = member_check_login_data_get(cgi, dbh, evth, ses);
    if (err == STATUS_OK) {
        if (hdf_get_int_value(evt_member->hdfrcv, "verify", -1) >= MEMBER_VF_ADMIN)
            SET_ADMIN_ACTION(cgi->hdf);
    }
    nerr_ignore(&err);

    hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));

    MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMORY_GET, FLAGS_SYNC);

    hdf_copy(cgi->hdf, PRE_OUTPUT".memory", evt->hdfrcv);

    return STATUS_OK;
}
Exemple #20
0
NEOERR* ldml_parse_file(char *dir, char *name, HASH *outhash)
{
    char fname[_POSIX_PATH_MAX], *attrval = NULL;
    HDF *node, *child, *dhdf;
    STRING str;
    NEOERR *err;

    memset(fname, 0x0, sizeof(fname));
    snprintf(fname, sizeof(fname), "%s/%s", dir, name);

    err = hdf_init(&node);
    if (err != STATUS_OK) return nerr_pass(err);

    err = hdf_read_file(node, fname);
    if (err != STATUS_OK) return nerr_pass(err);

    child = hdf_obj_child(node);
    while (child != NULL) {
        mtc_dbg("parse node %s", hdf_obj_name(child));
        string_init(&str);

        attrval = mcs_obj_attr(child, "merge");
        if (attrval) {
            ULIST *list;
            string_array_split(&list, attrval, ",", 10);
            ITERATE_MLIST(list) {
                snprintf(fname, sizeof(fname), "%s/%s",
                         dir, neos_strip((char*)list->items[t_rsv_i]));
                err = hdf_init(&dhdf);
                JUMP_NOK(err, wnext);
                err = hdf_read_file(dhdf, fname);
                JUMP_NOK(err, wnext);
                err = hdf_copy(child, NULL, dhdf);
                JUMP_NOK(err, wnext);
            }
            uListDestroy(&list, ULIST_FREE);
        }

    wnext:
        string_clear(&str);
        child = hdf_obj_next(child);
    }

    err = hash_insert(outhash, (void*)strdup(name), (void*)node);
    JUMP_NOK(err, wnext);

    return STATUS_OK;
}
Exemple #21
0
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;
}
Exemple #22
0
NEOERR* inbox_data_del(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = hash_lookup(evth, "aux");
    char *mname;
    NEOERR *err;

    MCS_NOT_NULLB(cgi->hdf, evt);
    
    MEMBER_CHECK_LOGIN();

    hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));
    hdf_set_value(evt->hdfsnd, "mname", mname);

    MEVENT_TRIGGER(evt, NULL, REQ_CMD_AUX_INBOX_DEL, FLAGS_NONE);

    return STATUS_OK;
}
Exemple #23
0
NEOERR* member_car_data_mod(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = hash_lookup(evth, "member");
    char *mname;
    NEOERR *err;

    MCS_NOT_NULLB(cgi->hdf, evt);

    MEMBER_CHECK_LOGIN();

    hdf_set_value(evt->hdfsnd, "mname", mname);
    hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));

    MEVENT_TRIGGER(evt, mname, REQ_CMD_CAR_UP, FLAGS_NONE);

    return STATUS_OK;
}
Exemple #24
0
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;
}
Exemple #25
0
NEOERR* city_ip_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = hash_lookup(evth, "city");
    char *ip;

    if (!cgi || !cgi->hdf || !evt) return nerr_raise(NERR_ASSERT, "paramter null");

    ip = hdf_get_value(cgi->hdf, PRE_QUERY".ip", NULL);
    if (!ip) ip = hdf_get_value(cgi->hdf, PRE_REQ_IP, "0.0.0.0");

    hdf_set_value(evt->hdfsnd, "ip", ip);

    MEVENT_TRIGGER(evt, NULL, REQ_CMD_CITY_BY_IP, FLAGS_SYNC);

    hdf_copy(cgi->hdf, PRE_OUTPUT, evt->hdfrcv);

    return STATUS_OK;
}
Exemple #26
0
NEOERR* member_edit_data_mod(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = (mevent_t*)hash_lookup(evth, "member");
    char *mname, *msn, *omsn, *rlink;
    NEOERR *err;

    MEMBER_CHECK_LOGIN();

    HDF_FETCH_STR(cgi->hdf, PRE_QUERY".msn", msn);
    HDF_FETCH_STR(cgi->hdf, PRE_QUERY".omsn", omsn);
    HDF_FETCH_STR(cgi->hdf, PRE_QUERY".rlink", rlink);
    if (msn && *msn) {
        if (omsn && *omsn) {
            /*
             * modify msn through msn
             */
            hdf_set_value(evt->hdfsnd, "mname", mname);
            hdf_set_value(evt->hdfsnd, "msn", omsn);
            MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_CHECK_MSN, FLAGS_SYNC);
        } else if (rlink && *rlink) {
            /*
             * modify msn through rlink
             */
            hdf_set_value(evt->hdfsnd, "mname", mname);
            MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_GETRLINK, FLAGS_SYNC);

            char *s = hdf_get_value(evt->hdfrcv, "rlink", NULL);
            if (!s || strcmp(s, rlink))
                return nerr_raise(LERR_USERINPUT, "验证码错误");
        } else return nerr_raise(LERR_USERINPUT, "修改密码需要提供旧密码");
    } else {
        /*
         * modify base information
         */
        hdf_set_value(evt->hdfsnd, "mname", mname);
        hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));

        MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_UP, FLAGS_NONE);
    }

    return STATUS_OK;
}
NEOERR * rcfs_meta_save (const char *path, HDF *meta)
{
  NEOERR *err;
  int lock;
  HDF *m;

  err = rcfs_lock (path, &lock);
  if (err) return nerr_pass (err);
  do
  {
    err = rcfs_meta_load (path, &m);
    if (err) break;
    err = hdf_copy (m, "Meta", meta);
    if (err) break;
    err = _meta_save (path, m);
  } while (0);

  rcfs_unlock (lock);
  return nerr_pass (err);
}
Exemple #28
0
NEOERR* oms_edit_data_mod(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();

    /*
     * prepare data
     */
    hdf_set_value(evt->hdfsnd, "aname", aname);
    hdf_copy(evt->hdfsnd, NULL, hdf_get_obj(cgi->hdf, PRE_QUERY));

    /*
     * trigger
     */
    MEVENT_TRIGGER(evt, aname, REQ_CMD_APPUP, FLAGS_NONE);

    return STATUS_OK;
}
Exemple #29
0
NEOERR* member_info_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = hash_lookup(evth, "member");
    char *mname;
    NEOERR *err;

    MCS_NOT_NULLB(cgi->hdf, evt);

    mname = hdf_get_value(cgi->hdf, PRE_QUERY".mname", NULL);
    if (!mname) {
        MEMBER_CHECK_LOGIN();
        hdf_set_value(evt->hdfsnd, "mname", mname);
        MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMBER_PRIV_GET, FLAGS_SYNC);
    } else {
        hdf_set_value(evt->hdfsnd, "mname", mname);
        MEVENT_TRIGGER(evt, NULL, REQ_CMD_MEMBER_GET, FLAGS_SYNC);
    }

    hdf_copy(cgi->hdf, PRE_OUTPUT".member", evt->hdfrcv);

    return STATUS_OK;
}
Exemple #30
0
NEOERR* member_account_data_get(CGI *cgi, HASH *dbh, HASH *evth, session_t *ses)
{
    mevent_t *evt = (mevent_t*)hash_lookup(evth, "member");
    char *mnick, *mname, *mid, *rlink;
    NEOERR *err;

    MCS_NOT_NULLB(cgi->hdf, evt);

    HDF_FETCH_STR(cgi->hdf, PRE_QUERY".mname", mname);
    HDF_FETCH_STR(cgi->hdf, PRE_QUERY".rlink", rlink);

    if (mname && rlink) {
        hdf_set_value(evt->hdfsnd, "mname", mname);
        MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_GETRLINK, FLAGS_SYNC);

        mnick = hdf_get_value(evt->hdfrcv, "mnick", NULL);

        char *s = hdf_get_value(evt->hdfrcv, "rlink", NULL);
        if (!s || strcmp(s, rlink))
            return nerr_raise(LERR_USERINPUT, "验证码错误");

        hdf_set_value(evt->hdfsnd, "mname", mname);
        MEVENT_TRIGGER(evt, mname, REQ_CMD_MEMBER_GET, FLAGS_SYNC);
        hdf_copy(cgi->hdf, PRE_OUTPUT".member", evt->hdfrcv);

        mid = hdf_get_value(evt->hdfrcv, "mid", NULL);
        member_after_login(cgi, evth, mname, mnick, mid);

        hdf_set_value(cgi->hdf, PRE_OUTPUT".rlink", rlink);
    } else {
        MEMBER_CHECK_LOGIN();
    }

    SET_DASHBOARD_ACTION(cgi->hdf);

    return STATUS_OK;
}