aboutsummaryrefslogtreecommitdiff
path: root/httpd/httpd.h
diff options
context:
space:
mode:
Diffstat (limited to 'httpd/httpd.h')
-rw-r--r--httpd/httpd.h36
1 files changed, 24 insertions, 12 deletions
diff --git a/httpd/httpd.h b/httpd/httpd.h
index 2cb7934..bbf02aa 100644
--- a/httpd/httpd.h
+++ b/httpd/httpd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: httpd.h,v 1.88 2015/07/16 16:29:25 florian Exp $ */
+/* $OpenBSD: httpd.h,v 1.90 2015/07/18 06:00:43 reyk Exp $ */
/*
* Copyright (c) 2006 - 2015 Reyk Floeter <reyk@openbsd.org>
@@ -48,6 +48,7 @@
#define HTTPD_LOGROOT "/logs"
#define HTTPD_ACCESS_LOG "access.log"
#define HTTPD_ERROR_LOG "error.log"
+#define HTTPD_DEFAULT_TYPE { "bin", "application", "octet-stream", NULL }
#define HTTPD_LOGVIS VIS_NL|VIS_TAB|VIS_CSTYLE
#define HTTPD_TLS_CERT "/etc/ssl/server.crt"
#define HTTPD_TLS_KEY "/etc/ssl/private/server.key"
@@ -68,6 +69,7 @@
#define SERVER_OUTOF_FD_RETRIES 5
#define SERVER_MAX_PREFETCH 256
#define SERVER_MIN_PREFETCHED 32
+#define SERVER_HSTS_DEFAULT_AGE 31536000
#define MEDIATYPE_NAMEMAX 128 /* file name extension */
#define MEDIATYPE_TYPEMAX 64 /* length of type/subtype */
@@ -351,13 +353,15 @@ SPLAY_HEAD(client_tree, client);
#define SRVFLAG_NO_BLOCK 0x00080000
#define SRVFLAG_LOCATION_MATCH 0x00100000
#define SRVFLAG_SERVER_MATCH 0x00200000
+#define SRVFLAG_SERVER_HSTS 0x00400000
+#define SRVFLAG_DEFAULT_TYPE 0x00800000
#define SRVFLAG_BITS \
"\10\01INDEX\02NO_INDEX\03AUTO_INDEX\04NO_AUTO_INDEX" \
"\05ROOT\06LOCATION\07FCGI\10NO_FCGI\11LOG\12NO_LOG\13SOCKET" \
"\14SYSLOG\15NO_SYSLOG\16TLS\17ACCESS_LOG\20ERROR_LOG" \
"\21AUTH\22NO_AUTH\23BLOCK\24NO_BLOCK\25LOCATION_MATCH" \
- "\26SERVER_MATCH"
+ "\26SERVER_MATCH\27SERVER_HSTS\30DEFAULT_TYPE"
#define TCPFLAG_NODELAY 0x01
#define TCPFLAG_NNODELAY 0x02
@@ -387,6 +391,15 @@ struct log_file {
};
TAILQ_HEAD(log_files, log_file) log_files;
+struct media_type {
+ char media_name[MEDIATYPE_NAMEMAX];
+ char media_type[MEDIATYPE_TYPEMAX];
+ char media_subtype[MEDIATYPE_TYPEMAX];
+ char *media_encoding;
+ RB_ENTRY(media_type) media_entry;
+};
+RB_HEAD(mediatypes, media_type);
+
struct auth {
char auth_htpasswd[PATH_MAX];
u_int32_t auth_id;
@@ -404,6 +417,7 @@ struct server_config {
char socket[PATH_MAX];
char accesslog[NAME_MAX];
char errorlog[NAME_MAX];
+ struct media_type default_type;
in_port_t port;
struct sockaddr_storage ss;
@@ -443,6 +457,9 @@ struct server_config {
char *return_uri;
off_t return_uri_len;
+ int hsts_max_age;
+ int hsts_subdomains;
+
TAILQ_ENTRY(server_config) entry;
};
TAILQ_HEAD(serverhosts, server_config);
@@ -473,15 +490,6 @@ struct server {
};
TAILQ_HEAD(serverlist, server);
-struct media_type {
- char media_name[MEDIATYPE_NAMEMAX];
- char media_type[MEDIATYPE_TYPEMAX];
- char media_subtype[MEDIATYPE_TYPEMAX];
- char *media_encoding;
- RB_ENTRY(media_type) media_entry;
-};
-RB_HEAD(mediatypes, media_type);
-
struct httpd {
u_int8_t sc_opts;
u_int32_t sc_flags;
@@ -495,6 +503,7 @@ struct httpd {
struct serverlist *sc_servers;
struct mediatypes *sc_mediatypes;
+ struct media_type sc_default_type;
struct serverauth *sc_auth;
struct privsep *sc_ps;
@@ -639,7 +648,10 @@ struct media_type
void media_delete(struct mediatypes *, struct media_type *);
void media_purge(struct mediatypes *);
struct media_type *
- media_find(struct mediatypes *, char *);
+ media_find(struct mediatypes *, const char *);
+struct media_type *
+ media_find_config(struct httpd *, struct server_config *,
+ const char *);
int media_cmp(struct media_type *, struct media_type *);
RB_PROTOTYPE(kvtree, kv, kv_node, kv_cmp);
RB_PROTOTYPE(mediatypes, media_type, media_entry, media_cmp);