#include "utils.h"
#define UH_LIMIT_CLIENTS 64
-#define UH_LIMIT_HEADERS 64
#define __enum_header(_name) HDR_##_name,
#define __blobmsg_header(_name) [HDR_##_name] = { .name = #_name, .type = BLOBMSG_TYPE_STRING },
struct auth_realm {
struct list_head list;
- char *path;
- char *user;
- char *pass;
+ const char *path;
+ const char *user;
+ const char *pass;
};
enum http_method {
struct http_request {
enum http_method method;
enum http_version version;
+ bool expect_cont;
int redirect_status;
- char *url;
+ const char *url;
const struct auth_realm *realm;
};
struct interpreter {
struct list_head list;
- char *path;
- char *ext;
+ const char *path;
+ const char *ext;
};
struct path_info {
const char *name;
const char *info;
const char *query;
- int redirected;
+ const char *auth;
+ bool redirected;
struct stat stat;
- struct interpreter *ip;
+ const struct interpreter *ip;
};
struct env_var {
enum client_state state;
struct http_request request;
- struct sockaddr_in6 servaddr;
- struct sockaddr_in6 peeraddr;
+ struct uh_addr srv_addr, peer_addr;
struct blob_buf hdr;
void uh_handle_request(struct client *cl);
void uh_auth_add(const char *path, const char *user, const char *pass);
+bool uh_auth_check(struct client *cl, struct path_info *pi);
void uh_close_listen_fds(void);
void uh_close_fds(void);