示例#1
0
int esif_ws_http_process_reqs (
	int fd,
	void *buf,
	ssize_t ret
	)
{
	char *buffer = (char*)buf;
	char *cgiInd;
	int result;
#ifdef BASIC_AUTHENTICATION
	char *resource = NULL;
	char *fileType = NULL;
#endif


	printf("esif_ws_http_process_reqs \n");
	esif_ws_http_process_buffer(buffer, ret);

#ifdef BASIC_AUTHENTICATION
	if (!esif_ws_http_get_login_requested()) {
		printf("Requesting login \n");
		resource = "login.html";
		fileType = "text/html";
		esif_ws_http_server_static_pages(buffer, resource, fd, ret, fileType);
		esif_ws_http_set_login_requested(1);
		result = 200;
	} else if (!esif_ws_http_get_authenticated()) {
		printf("Authenticating login \n");
		if (esif_ws_http_is_authorized(buffer)) {
			esif_ws_http_set_authenticated(1);
			result = 200;
		} else {
			esif_ws_http_send_401(fd);
			esif_ws_http_set_login_requested(0);
			esif_ws_http_set_authenticated(0);
			result = EOF;
		}
	} else
#endif
	{
		// printf("Buffer received: %s\n", buffer);

		if (!strncmp(buffer, "GET ", 4) || !strncmp(buffer, "POST ", 5)) {	/* look for Get request method*/
			/*is it a cgi script?*/
			cgiInd = strstr(buffer, "/cgi-bin/");
			if (cgiInd) {
				esif_ws_http_serve_cgi_scripts(buffer, fd);
			} else {
				esif_ws_http_process_get_or_post(buffer, fd, ret);
			}
			result = EOF;
		} else {
			result = 405;	/*Method not allowed*/
		}
	}

	return result;
}
示例#2
0
eEsifError esif_ws_http_process_reqs (
	ClientRecordPtr connection,
	void *buf,
	ssize_t ret
	)
{
	char *buffer = (char*)buf;
	eEsifError result = ESIF_OK;

	ESIF_TRACE_DEBUG("esif_ws_http_process_reqs \n");
	esif_ws_http_process_buffer(buffer, ret);

	// ESIF_TRACE_DEBUG("Buffer received: %s\n", buffer);

	if (!strncmp(buffer, "GET ", 4) || !strncmp(buffer, "POST ", 5)) {	/* look for Get request method*/
		esif_ws_http_process_request(connection, buffer, ret);
		result = ESIF_E_WS_DISC; /* 404 or Connection: close */
	} else {
		result = ESIF_E_WS_DISC; /* 405 Method not allowed*/
	}
	return result;
}