Embedded TCP/IP stack  4.4.0
fnet_http.h
1 /**************************************************************************
2 *
3 * Copyright 2008-2018 by Andrey Butok. FNET Community.
4 *
5 ***************************************************************************
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License"); you may
8 * not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 ***************************************************************************
20 *
21 * FNET HTTP Server API.
22 *
23 ***************************************************************************/
24 
25 #ifndef _FNET_HTTP_H_
26 
27 #define _FNET_HTTP_H_
28 
29 #if FNET_CFG_HTTP || defined(__DOXYGEN__)
30 
66 /**************************************************************************/
70 #if FNET_CFG_HTTP_VERSION_MAJOR /*HTTP/1.x*/
71  #define FNET_HTTP_VERSION_MAJOR (1u)
72 #else /*HTTP/0.9*/
73  #define FNET_HTTP_VERSION_MAJOR (0u)
74 #endif
75 
76 /**************************************************************************/
80 #if FNET_CFG_HTTP_VERSION_MAJOR /* HTTP/1.x*/
81  #define FNET_HTTP_VERSION_MINOR (0u)
82 #else /*HTTP/0.9*/
83  #define FNET_HTTP_VERSION_MINOR (9u)
84 #endif
85 
86 
87 #if FNET_CFG_HTTP_VERSION_MAJOR /* HTTP/1.x*/ || defined(__DOXYGEN__)
88 
89 /********************************************************************/
97 typedef enum
98 {
161 #endif
162 
163 #if (FNET_CFG_HTTP_TLS && FNET_CFG_TLS) || defined(__DOXYGEN__)
164 /**************************************************************************/
168 {
169  const fnet_uint8_t *certificate_buffer;
171  const fnet_uint8_t *private_key_buffer;
173 };
174 #endif
175 
176 /**************************************************************************/
180 {
188 #if FNET_CFG_HTTP_SSI || defined(__DOXYGEN__)
189  const struct fnet_http_ssi *ssi_table;
190 #endif
191 #if FNET_CFG_HTTP_CGI || defined(__DOXYGEN__)
192  const struct fnet_http_cgi *cgi_table;
193 #endif
194 #if (FNET_CFG_HTTP_AUTHENTICATION_BASIC && FNET_CFG_HTTP_VERSION_MAJOR) || defined(__DOXYGEN__)
195  const struct fnet_http_auth *auth_table;
196 #endif
197 #if (FNET_CFG_HTTP_POST && FNET_CFG_HTTP_VERSION_MAJOR) || defined(__DOXYGEN__)
198  const struct fnet_http_post *post_table;
199 #endif
200 #if (FNET_CFG_HTTP_TLS && FNET_CFG_TLS) || defined(__DOXYGEN__)
202 #endif
203 };
204 
205 /**************************************************************************/
209 typedef fnet_int32_t fnet_http_desc_t;
210 
211 /**************************************************************************/
215 typedef fnet_int32_t fnet_http_session_t;
216 
217 #include "fnet_http_ssi.h"
218 #include "fnet_http_cgi.h"
219 #include "fnet_http_auth.h"
220 #include "fnet_http_post.h"
221 
222 #if defined(__cplusplus)
223 extern "C" {
224 #endif
225 
226 /***************************************************************************/
247 
248 /***************************************************************************/
265 
266 /***************************************************************************/
282 
283 /***************************************************************************/
307 void fnet_http_query_unencode(fnet_uint8_t *dest, fnet_uint8_t *src);
308 
309 #if FNET_CFG_HTTP_VERSION_MAJOR /* HTTP/1.x*/ || defined(__DOXYGEN__)
310 
311 /**************************************************************************/
322 
323 /**************************************************************************/
334 
335 /**************************************************************************/
346 
347 #endif
348 
349 #if defined(__cplusplus)
350 }
351 #endif
352 
355 #endif /* FNET_CFG_HTTP */
356 
357 #endif
fnet_char_t * root_path
Server root-directory path (null-terminated string).
Definition: fnet_http.h:181
Bad Gateway. The server, while acting as a gateway or proxy, received an invalid response from the u...
Definition: fnet_http.h:152
const fnet_uint8_t * private_key_buffer
Buffer holding the private key in PEM or DER format.
Definition: fnet_http.h:171
Internal Server Error. The server encountered an unexpected condition which prevented it from fulfil...
Definition: fnet_http.h:146
const struct fnet_http_post * post_table
Pointer to the optional POST callback function table.
Definition: fnet_http.h:198
Forbidden. The server understood the request, but is refusing to fulfill it.
Definition: fnet_http.h:140
CGI callback function table.
HTTP over TLS (HTTPS) input parameters for fnet_http_init().
Definition: fnet_http.h:167
Moved Temporarily. The requested resource resides temporarily under a different URL. It's not supported by the FNET HTTP Server.
Definition: fnet_http.h:122
fnet_size_t certificate_buffer_size
Size of the certificate buffer (including the terminating null byte for PEM data).
Definition: fnet_http.h:170
Not Modified. If the client has performed a conditional GET request and access is allowed...
Definition: fnet_http.h:126
No Content. The server has fulfilled the request but there is no new information to send back...
Definition: fnet_http.h:111
fnet_http_desc_t fnet_http_init(struct fnet_http_params *params)
Initializes the HTTP Server service.
void fnet_http_set_response_content_length(fnet_http_session_t session, fnet_size_t content_length)
Sets content length in HTTP response header.
SSI callback function table.
NONE. Status code is not defined.
Definition: fnet_http.h:99
void fnet_http_set_response_status_code(fnet_http_session_t session, fnet_http_status_code_t status_code)
Sets status code in HTTP response status-line.
unsigned long fnet_size_t
Unsigned integer type representing the size in bytes.
Definition: fnet_stdlib.h:55
Not Found. The server has not found anything matching the Request-URI.
Definition: fnet_http.h:143
void fnet_http_release(fnet_http_desc_t desc)
Releases the HTTP Server service.
POST-method callback function table.
Input parameters for fnet_http_init().
Definition: fnet_http.h:179
fnet_int32_t fnet_http_session_t
HTTP session handle.
Definition: fnet_http.h:215
const fnet_uint8_t * certificate_buffer
Buffer holding the certificate data in PEM or DER format.
Definition: fnet_http.h:169
const struct fnet_http_cgi * cgi_table
Pointer to the optional CGI callback function table.
Definition: fnet_http.h:192
struct fnet_sockaddr address
Server socket address. If server IP address and Scope ID are set to 0s, the server will listen to a...
Definition: fnet_http.h:184
void fnet_http_set_response_no_header(fnet_http_session_t session)
Disables sending of HTTP response status-code and header.
Moved Permanently. The requested resource has been assigned a new permanent URL and any future refer...
Definition: fnet_http.h:115
Created. The request has been fulfilled and resulted in a new resource being created.
Definition: fnet_http.h:103
fnet_bool_t
Boolean type.
Definition: fnet_stdlib.h:80
const struct fnet_http_auth * auth_table
Pointer to the optional HTTP Access Authentification table.
Definition: fnet_http.h:195
fnet_bool_t fnet_http_is_enabled(fnet_http_desc_t desc)
Detects if the HTTP Server service is enabled or disabled.
const struct fnet_http_ssi * ssi_table
Pointer to the optional SSI callback function table.
Definition: fnet_http.h:189
Service Unavailable. The server is currently unable to handle the request due to a temporary overloa...
Definition: fnet_http.h:156
fnet_int32_t fnet_http_desc_t
HTTP server descriptor.
Definition: fnet_http.h:209
OK. The request has succeeded.
Definition: fnet_http.h:101
Bad Request. The request could not be understood by the server due to malformed syntax.
Definition: fnet_http.h:135
char fnet_char_t
Type representing the charecter.
Definition: fnet_stdlib.h:75
Not Implemented. The server does not support the functionality required to fulfill the request...
Definition: fnet_http.h:149
fnet_char_t * index_path
Index file path (null-terminated string). It's relative to the root_path.
Definition: fnet_http.h:182
HTTP Authentication table.
struct fnet_http_tls_params * tls_params
Pointer to the optional HTTP over TLS (HTTPS) parameters.
Definition: fnet_http.h:201
void fnet_http_query_unencode(fnet_uint8_t *dest, fnet_uint8_t *src)
Converts escaped string to an original format.
Socket address structure.
Definition: fnet_socket.h:268
fnet_http_status_code_t
HTTP/1.0 Status-Code definitions according to RFC1945.
Definition: fnet_http.h:97
fnet_size_t private_key_buffer_size
Size of the private key buffer (including the terminating null byte for PEM data).
Definition: fnet_http.h:172
Unauthorized. The request requires user authentication.
Definition: fnet_http.h:138
Accepted. The request has been accepted for processing, but the processing has not been completed...
Definition: fnet_http.h:107

© 2005-2018 by Andrey Butok. http://fnet.sourceforge.net