static void upnp_event_prepare(struct upnp_event_notify * obj) { static const char notifymsg[] = "NOTIFY %s HTTP/1.1\r\n" "Host: %s%s\r\n" "Content-Type: text/xml\r\n" "Content-Length: %d\r\n" "NT: upnp:event\r\n" "NTS: upnp:propchange\r\n" "SID: %s\r\n" "SEQ: %u\r\n" "Connection: close\r\n" "Cache-Control: no-cache\r\n" "\r\n" "%.*s\r\n"; char * xml; int l; if(obj->sub == NULL) { obj->state = EError; return; } switch(obj->sub->service) { case EWanCFG: xml = getVarsWANCfg(&l); break; case EWanIPC: xml = getVarsWANIPCn(&l); break; #ifdef ENABLE_L3F_SERVICE case EL3F: xml = getVarsL3F(&l); break; #endif default: xml = NULL; l = 0; } obj->buffersize = 1024; obj->buffer = malloc(obj->buffersize); /*if(!obj->buffer) { }*/ obj->tosend = snprintf(obj->buffer, obj->buffersize, notifymsg, obj->path, obj->addrstr, obj->portstr, l+2, obj->sub->uuid, obj->sub->seq, l, xml); if(xml) { free(xml); xml = NULL; } obj->state = ESending; }
int main(int argc, char * * argv) { char * rootDesc; int rootDescLen; char * s; int l; rootDesc = genRootDesc(&rootDescLen); xml_pretty_print(rootDesc, rootDescLen, stdout); free(rootDesc); printf("\n-------------\n"); s = genWANIPCn(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); s = genWANCfg(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #ifdef ENABLE_L3F_SERVICE s = genL3F(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_EVENTS s = getVarsWANIPCn(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); s = getVarsWANCfg(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #ifdef ENABLE_L3F_SERVICE s = getVarsL3F(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #endif #endif /* stupid_test(); */ return 0; }
int main(int argc, char * * argv) { char * rootDesc; int rootDescLen; char * s; int l; FILE * f; for(l = 1; l < argc; l++) { if(0 == strcmp(argv[l], "--help") || 0 == strcmp(argv[l], "-h")) { printf("Usage:\t%s [options]\n", argv[0]); printf("options:\n"); #ifdef IGD_V2 printf("\t--forceigdv1 Force versions of devices to be 1\n"); #else printf("\tNone\n"); #endif return 0; #ifdef IGD_V2 } else if(0 == strcmp(argv[l], "--forceigdv1")) { SETFLAG(FORCEIGDDESCV1MASK); #endif } else { fprintf(stderr, "unknown option %s\n", argv[l]); } } if(mkdir("testdescs", 0777) < 0) { if(errno != EEXIST) { perror("mkdir"); } } printf("Root Description :\n"); rootDesc = genRootDesc(&rootDescLen); xml_pretty_print(rootDesc, rootDescLen, stdout); f = fopen("testdescs/rootdesc.xml", "w"); if(f) { xml_pretty_print(rootDesc, rootDescLen, f); fclose(f); } free(rootDesc); printf("\n-------------\n"); printf("WANIPConnection Description :\n"); s = genWANIPCn(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/wanipc_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); printf("WANConfig Description :\n"); s = genWANCfg(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/wanconfig_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); #ifdef ENABLE_L3F_SERVICE printf("Layer3Forwarding service :\n"); s = genL3F(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/l3f_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_6FC_SERVICE printf("WANIPv6FirewallControl service :\n"); s = gen6FC(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/wanipv6fc_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_DP_SERVICE printf("DeviceProtection service :\n"); s = genDP(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/dp_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_EVENTS s = getVarsWANIPCn(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); s = getVarsWANCfg(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #ifdef ENABLE_L3F_SERVICE s = getVarsL3F(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #ifdef ENABLE_6FC_SERVICE s = getVars6FC(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_DP_SERVICE s = getVarsDP(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #endif #endif #endif /* stupid_test(); */ return 0; }
static void upnp_event_prepare(struct upnp_event_notify * obj) { static const char notifymsg[] = "NOTIFY %s HTTP/1.1\r\n" "Host: %s%s\r\n" #if (UPNP_VERSION_MAJOR == 1) && (UPNP_VERSION_MINOR == 0) "Content-Type: text/xml\r\n" /* UDA v1.0 */ #else "Content-Type: text/xml; charset=\"utf-8\"\r\n" /* UDA v1.1 or later */ #endif "Content-Length: %d\r\n" "NT: upnp:event\r\n" "NTS: upnp:propchange\r\n" "SID: %s\r\n" "SEQ: %u\r\n" "Connection: close\r\n" "Cache-Control: no-cache\r\n" "\r\n" "%.*s\r\n"; char * xml; int l; if(obj->sub == NULL) { obj->state = EError; return; } switch(obj->sub->service) { case EWanCFG: xml = getVarsWANCfg(&l); break; case EWanIPC: xml = getVarsWANIPCn(&l); break; #ifdef ENABLE_L3F_SERVICE case EL3F: xml = getVarsL3F(&l); break; #endif #ifdef ENABLE_6FC_SERVICE case E6FC: xml = getVars6FC(&l); break; #endif #ifdef ENABLE_DP_SERVICE case EDP: xml = getVarsDP(&l); break; #endif default: xml = NULL; l = 0; } obj->buffersize = 1024; for (;;) { obj->buffer = malloc(obj->buffersize); if(!obj->buffer) { syslog(LOG_ERR, "%s: malloc returned NULL", "upnp_event_prepare"); if(xml) { free(xml); } obj->state = EError; return; } obj->tosend = snprintf(obj->buffer, obj->buffersize, notifymsg, obj->path, obj->addrstr, obj->portstr, l+2, obj->sub->uuid, obj->sub->seq, l, xml); if (obj->tosend < 0) { syslog(LOG_ERR, "%s: snprintf() failed", "upnp_event_prepare"); if(xml) { free(xml); } obj->state = EError; return; } else if (obj->tosend < obj->buffersize) { break; /* the buffer was large enough */ } /* Try again with a buffer big enough */ free(obj->buffer); obj->buffersize = obj->tosend + 1; /* reserve space for the final 0 */ } if(xml) { free(xml); xml = NULL; } obj->state = ESending; }
int main(int argc, char * * argv) { char * rootDesc; int rootDescLen; char * s; int l; FILE * f; UNUSED(argc); UNUSED(argv); if(mkdir("testdescs", 0777) < 0) { if(errno != EEXIST) { perror("mkdir"); } } printf("Root Description :\n"); rootDesc = genRootDesc(&rootDescLen); xml_pretty_print(rootDesc, rootDescLen, stdout); f = fopen("testdescs/rootdesc.xml", "w"); if(f) { xml_pretty_print(rootDesc, rootDescLen, f); fclose(f); } free(rootDesc); printf("\n-------------\n"); printf("WANIPConnection Description :\n"); s = genWANIPCn(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/wanipc_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); printf("WANConfig Description :\n"); s = genWANCfg(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/wanconfig_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); #ifdef ENABLE_L3F_SERVICE printf("Layer3Forwarding service :\n"); s = genL3F(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/l3f_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_6FC_SERVICE printf("WANIPv6FirewallControl service :\n"); s = gen6FC(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/wanipv6fc_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_DP_SERVICE printf("DeviceProtection service :\n"); s = genDP(&l); xml_pretty_print(s, l, stdout); f = fopen("testdescs/dp_scpd.xml", "w"); if(f) { xml_pretty_print(s, l, f); fclose(f); } free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_EVENTS s = getVarsWANIPCn(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); s = getVarsWANCfg(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #ifdef ENABLE_L3F_SERVICE s = getVarsL3F(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #ifdef ENABLE_6FC_SERVICE s = getVars6FC(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #endif #ifdef ENABLE_DP_SERVICE s = getVarsDP(&l); xml_pretty_print(s, l, stdout); free(s); printf("\n-------------\n"); #endif #endif #endif /* stupid_test(); */ return 0; }