static int CgiPostForm(HTTPD_SESSION *hs) { char *arg; char *val; char *first = NULL; char *last = NULL; long avail; avail = hs->s_req.req_length; while (avail) { arg = HttpArgReadNext(hs, &avail); if (arg) { val = HttpArgValue(&hs->s_req); if (val) { if (strcmp(arg, "firstname") == 0) { first = strdup(val); } else if (strcmp(arg, "familyname") == 0) { last = strdup(val); } } } } SendResult(hs, first, last); free(first); free(last); return 0; }
static int CgiPostForm(HTTPD_SESSION *hs) { char *arg; char *val; char *user = NULL; char *pwd = NULL; long avail; avail = hs->s_req.req_length; while (avail) { arg = HttpArgReadNext(hs, &avail); if (arg) { val = HttpArgValue(&hs->s_req); if (val) { if (strcmp(arg, "username") == 0) { user = strdup(val); } else if (strcmp(arg, "password") == 0) { pwd = strdup(val); } } } } if (strcmp(user, "Kevin") == 0) { if (strcmp(pwd, "Kevin") == 0){ SendResult(hs, user, pwd); } } //free(user); //free(pwd); return 0; }
static int CgiGetForm(HTTPD_SESSION *hs) { char *arg; char *val; char *first = NULL; char *last = NULL; for (arg = HttpArgParseFirst(&hs->s_req); arg; arg = HttpArgParseNext(&hs->s_req)) { val = HttpArgValue(&hs->s_req); if (val) { if (strcmp(arg, "firstname") == 0) { first = strdup(val); } else if (strcmp(arg, "familyname") == 0) { last = strdup(val); } } } SendResult(hs, first, last); free(first); free(last); return 0; }
/*! * \brief Send service description. * * This uHTTP CGI function will be registered when UpnpRegisterDeviceTree() * is called for the first time. */ static int UpnpCgiServiceDescription(HTTPD_SESSION *hs) { SSDP_SERVICE *ssvc = NULL; SSDP_DEVICE *sdev = NULL; HTTP_STREAM *stream = hs->s_stream; const char *dev_type; dev_type = HttpArgParseFirst(&hs->s_req); if (dev_type) { const char *svc_type = HttpArgValue(&hs->s_req); if (dev_type) { for (sdev = device_registration; sdev; sdev = sdev->sdev_next) { if (strcmp(sdev->sdev_type, dev_type) == 0) { for (ssvc = sdev->sdev_svc; ssvc; ssvc = ssvc->ssvc_next) { if (strcmp(ssvc->ssvc_type, svc_type) == 0) { break; } } break; } } } } if (ssvc) { SOAP_PROCEDURE *act; UPNP_VARIABLE *stv; UPNP_SERVICE_INFO *usvc = ssvc->ssvc_info; XmlHead(hs->s_stream); s_puts("<scpd xmlns=\"urn:schemas-upnp-org:service-1-0\">\r\n", stream); SpecVersion(stream); act = usvc->usvc_proc; if (act) { s_puts("<actionList>\r\n", stream); do { s_puts("<action>\r\n", stream); WriteTag(stream, "name", act->proc_name); if (act->proc_argi || act->proc_argo) { SOAP_ARG *arg; s_puts("<argumentList>\r\n", stream); for (arg = act->proc_argi; arg; arg = arg->arg_next) { s_puts("<argument>\r\n", stream); WriteTag(stream, "name", arg->arg_name); WriteTag(stream, "relatedStateVariable", ((UPNP_VARIABLE *) arg->arg_info)->ustv_name); WriteTag(stream, "direction", "in"); s_puts("</argument>\r\n", stream); } for (arg = act->proc_argo; arg; arg = (SOAP_ARG *) arg->arg_next) { s_puts("<argument>\r\n", stream); WriteTag(stream, "name", arg->arg_name); WriteTag(stream, "relatedStateVariable", ((UPNP_VARIABLE *) arg->arg_info)->ustv_name); WriteTag(stream, "direction", "out"); s_puts("</argument>\r\n", stream); } s_puts("</argumentList>\r\n", stream); } s_puts("</action>\r\n", stream); } while ((act = act->proc_next) != NULL); s_puts("</actionList>\r\n", stream); } stv = usvc->usvc_stv; if (stv) { s_puts("<serviceStateTable>\r\n", stream); do { s_printf(stream, "<stateVariable sendEvents=\"%s\">\r\n", stv->ustv_events ? "yes" : "no"); WriteTag(stream, "name", stv->ustv_name); WriteTag(stream, "dataType", UpnpVarTypeString(stv->ustv_type)); WriteTag(stream, "defaultValue", stv->ustv_default); s_puts("</stateVariable>\r\n", stream); } while((stv = stv->ustv_next) != NULL); s_puts("</serviceStateTable>\r\n", stream); } s_puts("</scpd>\r\n", stream); } s_flush(stream); return 0; }