Ejemplo n.º 1
0
void admin_send_response(xmlDocPtr doc, client_t *client, 
        int response, char *xslt_template)
{
    xmlChar *buff = NULL;
    int len = 0;
    ice_config_t *config;
    char *fullpath_xslt_template;
    int fullpath_xslt_template_len;
    char *adminwebroot;

    client->respcode = 200;
    if (response == RAW) {
        xmlDocDumpMemory(doc, &buff, &len);
        html_write(client, "HTTP/1.0 200 OK\r\n"
               "Content-Length: %d\r\n"
               "Content-Type: text/xml\r\n"
               "\r\n", len);
        html_write(client, "%s", buff);
    }
    if (response == TRANSFORMED) {
        config = config_get_config();
        adminwebroot = config->adminroot_dir;
        fullpath_xslt_template_len = strlen(adminwebroot) + 
            strlen(xslt_template) + 2;
        fullpath_xslt_template = malloc(fullpath_xslt_template_len);
        snprintf(fullpath_xslt_template, fullpath_xslt_template_len, "%s%s%s",
            adminwebroot, PATH_SEPARATOR, xslt_template);
        config_release_config();
        html_write(client, "HTTP/1.0 200 OK\r\n"
               "Content-Type: text/html\r\n"
               "\r\n");
        DEBUG1("Sending XSLT (%s)", fullpath_xslt_template);
        xslt_transform(doc, fullpath_xslt_template, client);
        free(fullpath_xslt_template);
    }
    if (buff) {
        xmlFree(buff);
    }
}
Ejemplo n.º 2
0
void parse_http_request(uint8_t * request) {
	uint8_t ssid_error = FALSE;
	uint8_t pass_error = FALSE;
	uint8_t host_ip_error = FALSE;

	// First, have to parse it
	if(html_GET(temp_varchar, request, "SSID=")) {
		if(is_valid_string(temp_varchar)) {
			add_new_ssid(temp_varchar, strlen((char *)temp_varchar));
		} else {
			ssid_error = TRUE;
		}
	}
	if(html_GET(temp_varchar, request, "PASS="******"HOST="))  {
		if(is_valid_string(temp_varchar)) {
			if(number_of_characters_in_string(temp_varchar, '.') == 3) {
				// If the number of '.' in the host is equal to 3
				add_new_host_ip(temp_varchar, strlen((char *)temp_varchar));
			} else {
				add_new_host_name(temp_varchar, strlen((char *)temp_varchar));
			}

		} else {
			host_ip_error = TRUE;
		}
	}

	if(html_GET(temp_varchar, request, "reset=")) {
		reset_setup_info();
	}



	html_reset();

	// We use HTTP write instead of HTML write, because this is the HTTP header
	http_write((uint8_t *)http_header, STRLEN(http_header));

	// Had to be broken into multiple parts
	html_write((uint8_t *)html_header_01, STRLEN(html_header_01));
	html_write((uint8_t *)html_header_02, STRLEN(html_header_02));
	html_write((uint8_t *)html_header_03, STRLEN(html_header_03));


	if(have_new_ssid() && have_new_pass() && have_new_host_ip()) {
		html_write((uint8_t *)html_instructions_02, STRLEN(html_instructions_02));
	} else {
		html_write((uint8_t *)html_instructions_01, STRLEN(html_instructions_01));
	}

	if(get_number_of_slaves()) {
		html_write((uint8_t *)html_number_of_slaves_prefix, STRLEN(html_number_of_slaves_prefix));
		write_int_to_string(html_number_of_slaves_field,get_number_of_slaves()+1);
		html_write((uint8_t *)html_number_of_slaves_field, strlen((char *)html_number_of_slaves_field));
		html_write((uint8_t *)html_number_of_slaves_suffix, STRLEN(html_number_of_slaves_suffix));
	}


	// SSID Row
	html_write((uint8_t *)html_ssid_prefix, STRLEN(html_ssid_prefix));
	if(have_new_ssid()) {
		html_write((uint8_t *)get_new_ssid(), strlen((char *)get_new_ssid()));
	} else {
		html_write((uint8_t *)html_ssid_form, STRLEN(html_ssid_form));
		if(ssid_error) html_write((uint8_t *)html_input_error, STRLEN(html_input_error));
	}
	html_write((uint8_t *)html_ssid_suffix, STRLEN(html_ssid_suffix));



	// PASS Row
	html_write((uint8_t *)html_pass_prefix, STRLEN(html_pass_prefix));
	if(have_new_pass()) {
		html_write((uint8_t *)get_new_pass(), strlen((char *)get_new_pass()));
	} else {
		html_write((uint8_t *)html_pass_form, STRLEN(html_pass_form));
		if(pass_error) html_write((uint8_t *)html_input_error, STRLEN(html_input_error));
	}
	html_write((uint8_t *)html_pass_suffix, STRLEN(html_pass_suffix));


	// PASS Row
	html_write((uint8_t *)html_host_ip_prefix, STRLEN(html_host_ip_prefix));
	if(have_new_host_ip()) {
		html_write((uint8_t *)get_new_host_ip(), strlen((char *)get_new_host_ip()));
	} else if (have_new_host_name()) {
		html_write((uint8_t *)get_new_host_name(), strlen((char *)get_new_host_name()));
	} else {
		html_write((uint8_t *)html_host_ip_form, STRLEN(html_host_ip_form));
		if(host_ip_error) html_write((uint8_t *)html_input_error, STRLEN(html_input_error));
	}
	html_write((uint8_t *)html_host_ip_suffix, STRLEN(html_host_ip_suffix));

	if(have_new_ssid() && have_new_pass() && (have_new_host_ip() || have_new_host_name())) {
		complete_setup();
	} else {
		html_write((uint8_t *)html_submit_button, STRLEN(html_submit_button));
	}





	html_write((uint8_t *)html_footer, STRLEN(html_footer));

	html_send();

	return;
}