void espSetStringVar(EspRequest *ep, EspEnvType oType, char *var, char *value) { /* * Will create or update if already existing */ mprSetPropertyValue(&ep->variables[oType], var, mprCreateStringVar(value, 0)); }
static int ejs_net_join_domain(MprVarHandle eid, int argc, struct MprVar **argv) { TALLOC_CTX *mem_ctx; struct libnet_context *ctx; struct libnet_Join *join; NTSTATUS status; ctx = mprGetThisPtr(eid, "ctx"); mem_ctx = talloc_new(mprMemCtx()); join = talloc(mem_ctx, struct libnet_Join); if (!join) { talloc_free(mem_ctx); return -1; } /* prepare parameters for the join */ join->in.netbios_name = NULL; join->in.join_type = SEC_CHAN_WKSTA; join->in.domain_name = cli_credentials_get_domain(ctx->cred); join->in.level = LIBNET_JOIN_AUTOMATIC; join->out.error_string = NULL; if (argc == 1 && argv[0]->type == MPR_TYPE_OBJECT) { MprVar *netbios_name = mprGetProperty(argv[0], "netbios_name", NULL); MprVar *domain_name = mprGetProperty(argv[0], "domain_name", NULL); MprVar *join_type = mprGetProperty(argv[0], "join_type", NULL); if (netbios_name) { join->in.netbios_name = mprToString(netbios_name); } if (domain_name) { join->in.domain_name = mprToString(domain_name); } if (join_type) { join->in.join_type = mprToInt(join_type); } } if (!join->in.domain_name) { ejsSetErrorMsg(eid, "a domain must be specified for to join"); talloc_free(mem_ctx); return -1; } /* do the domain join */ status = libnet_Join(ctx, join, join); if (!NT_STATUS_IS_OK(status)) { MprVar error_string = mprString(join->out.error_string); mprSetPropertyValue(argv[0], "error_string", error_string); mpr_Return(eid, mprCreateBoolVar(False)); } else { mpr_Return(eid, mprCreateBoolVar(True)); } talloc_free(mem_ctx); return 0; }
static int ejs_resolve_name(MprVarHandle eid, int argc, struct MprVar **argv) { int result = -1; struct nbt_name name; TALLOC_CTX *tmp_ctx = talloc_new(mprMemCtx()); NTSTATUS nt_status; const char *reply_addr; /* validate arguments */ if (argc < 2 || argc > 3) { ejsSetErrorMsg(eid, "resolveName invalid arguments"); goto done; } if (argv[0]->type != MPR_TYPE_OBJECT) { ejsSetErrorMsg(eid, "resolvename invalid arguments"); goto done; } if (argv[1]->type != MPR_TYPE_STRING) { ejsSetErrorMsg(eid, "resolveName invalid arguments"); goto done; } if (argc == 2) { make_nbt_name_client(&name, mprToString(argv[1])); } else { if (!mprVarIsNumber(argv[1]->type)) { ejsSetErrorMsg(eid, "resolveName invalid arguments"); goto done; } make_nbt_name(&name, mprToString(argv[1]), mprToInt(argv[2])); } result = 0; nt_status = resolve_name(&name, tmp_ctx, &reply_addr, event_context_find(tmp_ctx)); if (NT_STATUS_IS_OK(nt_status)) { mprSetPropertyValue(argv[0], "value", mprString(reply_addr)); } mpr_Return(eid, mprNTSTATUS(nt_status)); done: talloc_free(tmp_ctx); return result; }
void espSetVar(EspRequest *ep, EspEnvType oType, char *var, MprVar value) { mprSetPropertyValue(&ep->variables[oType], var, value); }
MprVar *espSetPropertyValue(MprVar *obj, char *property, MprVar newValue) { return mprSetPropertyValue(obj, property, newValue); }