Exemple #1
0
/**
 * response 404 error
 * @param connection [http connect handle]
 */
inline void return_404 (struct MHD_Connection * connection)
{
	struct MHD_Response *response =
	    MHD_create_response_from_buffer (strlen (_404_page),
	                                     (void *) _404_page, MHD_RESPMEM_PERSISTENT);
	set_mime(response, HTM_FILE);
	MHD_queue_response (connection, MHD_HTTP_NOT_FOUND, response);
	MHD_destroy_response (response);
}
Exemple #2
0
/**
 * response custom 200 ok
 * @param connection [http connect handle]
 * @param response_data [custom response data]
 * @param response_data [custom response data]
 */
inline void return_custom_200 (struct MHD_Connection * connection,
                               char * response_data, int mime_type)
{
	struct MHD_Response *response =
	    MHD_create_response_from_buffer (strlen (response_data),
	                                     (void *) response_data, MHD_RESPMEM_MUST_FREE);
	set_mime(response, mime_type);
	MHD_queue_response (connection, MHD_HTTP_OK, response);
	MHD_destroy_response (response);
}
Exemple #3
0
/**
 * response 500 error
 * @param connection [http connect handle]
 */
inline void return_500 (struct MHD_Connection * connection, int err)
{
	char *string_of_error = malloc(1024);
	if (string_of_error)
		sprintf(string_of_error, _500_page, err);
	struct MHD_Response *response =
	    MHD_create_response_from_buffer (strlen (string_of_error),
	                                     (void *) string_of_error, MHD_RESPMEM_MUST_FREE);
	set_mime(response, HTM_FILE);
	MHD_queue_response (connection, MHD_HTTP_INTERNAL_SERVER_ERROR, response);
	MHD_destroy_response (response);
}
Exemple #4
0
/**
 * process http get request
 * @param url        [request url string]
 * @param connection [http connect handle]
 */
inline void process_get_url_requert(const char *url,
                                    struct MHD_Connection * connection)
{
	struct MHD_Response *response;
	int fd, size, type;

	if (url_to_file(url, &fd, &size, &type))
	{
		response =
		    MHD_create_response_from_fd(size, fd);
		set_mime(response, type);
		MHD_queue_response(connection, MHD_HTTP_OK, response);
		MHD_destroy_response(response);
		return;
	}
	else if (url_to_api(url, connection, false, NULL, 0, NULL))
		return;
	else
		return_404(connection);
}
Exemple #5
0
status_t set_mime_type(vnode *node, const char *filename)
{
	return set_mime(&node->mime, filename);
}
Exemple #6
0
status_t
fs_read_vnode(fs_volume *_vol, ino_t vnid, fs_vnode *_node, int *_type,
	uint32 *_flags, bool reenter)
{
	nspace *ns = (nspace*)_vol->private_volume;
	vnode *newNode = NULL;
	ntfs_inode *ni = NULL;
	status_t result = B_NO_ERROR;

	if (!reenter)
		LOCK_VOL(ns);

	ERRPRINT("fs_read_vnode - ENTER\n");

	_node->private_node = NULL;
	_node->ops = &gNTFSVnodeOps;
	_flags = 0;

	newNode = (vnode*)ntfs_calloc(sizeof(vnode));
	if (newNode != NULL) {
		char *name = NULL;

		ni = ntfs_inode_open(ns->ntvol, vnid);
		if (ni == NULL) {
			result = ENOENT;
			goto exit;
		}

		// get the node type
		result = get_node_type(ni, _type);
		if (result != B_OK)
			goto exit;

		newNode->vnid = vnid;
		newNode->parent_vnid = ntfs_get_parent_ref(ni);

		if (ni->mrec->flags & MFT_RECORD_IS_DIRECTORY)
			set_mime(newNode, ".***");
		else {
			name = (char*)malloc(MAX_PATH);
			if (name != NULL) {
				if (utils_inode_get_name(ni, name,MAX_PATH) == 1)
					set_mime(newNode, name);
				free(name);
			}
		}

		_node->private_node = newNode;
	} else
		result = ENOMEM;

exit:
	if (ni != NULL)
		ntfs_inode_close(ni);

	if (result != B_OK && newNode != NULL)
		free(newNode);

	ERRPRINT("fs_read_vnode - EXIT, result is %s\n", strerror(result));

	if (!reenter)
		UNLOCK_VOL(ns);

	return result;
}