source: Main/trunk/Server/tw_config.h@ 128

Last change on this file since 128 was 128, checked in by Nishi, on Sep 23, 2024 at 7:19:19 PM

release 1.04

  • Property svn:keywords set to Id
File size: 1.7 KB
RevLine 
[4]1/* $Id: tw_config.h 128 2024-09-23 10:19:19Z nishi $ */
2
3#ifndef __TW_CONFIG_H__
4#define __TW_CONFIG_H__
5
[21]6#include "tw_http.h"
7
[7]8#include <stdint.h>
[21]9#include <stdbool.h>
[7]10
[21]11#ifdef __MINGW32__
12#include <winsock2.h>
13#define NO_IPV6
14#else
15#include <netinet/in.h>
[81]16#ifdef __HAIKU__
17#define NO_IPV6
[21]18#endif
[81]19#endif
[6]20
[21]21#ifdef NO_IPV6
22#define SOCKADDR struct sockaddr_in
23#else
24#define SOCKADDR struct sockaddr_in6
25#endif
26
[22]27#define MAX_PORTS 1024
28#define MAX_VHOSTS 1024
29#define MAX_MODULES 1024
30#define MAX_DIRS 1024
31#define MAX_MIME 1024
32#define MAX_ICON 1024
[24]33#define MAX_INDEX 1024
[33]34#define MAX_README 8
[21]35
36enum TW_DIR_TYPE {
37 TW_DIR_ALLOW = 0,
38 TW_DIR_DENY
39};
40
41struct tw_dir_entry {
42 char* name;
43 char* dir;
44 int type;
45};
46
47struct tw_mime_entry {
48 char* ext;
49 char* mime;
50};
51
[22]52struct tw_icon_entry {
53 char* mime;
54 char* icon;
55};
56
[12]57struct tw_config_entry {
58 char* name;
59 int port;
60 char* sslkey;
61 char* sslcert;
[19]62 char* root;
[123]63 int hideport;
[21]64 struct tw_dir_entry dirs[MAX_DIRS];
65 int dir_count;
66 struct tw_mime_entry mimes[MAX_DIRS];
67 int mime_count;
[22]68 struct tw_icon_entry icons[MAX_DIRS];
69 int icon_count;
[24]70 char* indexes[MAX_INDEX];
71 int index_count;
[33]72 char* readmes[MAX_README];
73 int readme_count;
[12]74};
75
[6]76struct tw_config {
[7]77 uint64_t ports[MAX_PORTS + 1]; /* If port & (1 << 32) is non-zero, it is SSL */
[12]78 char hostname[1025];
[6]79 struct tw_config_entry root;
[12]80 struct tw_config_entry vhosts[MAX_VHOSTS];
[18]81 void* modules[MAX_MODULES];
82 int module_count;
[12]83 int vhost_count;
[128]84 char* server_admin;
[17]85 char* server_root;
[18]86 char* extension;
[6]87};
88
89void tw_config_init(void);
[4]90int tw_config_read(const char* path);
[12]91struct tw_config_entry* tw_vhost_match(const char* name, int port);
[21]92bool tw_permission_allowed(const char* path, SOCKADDR addr, struct tw_http_request req, struct tw_config_entry* vhost);
[4]93
94#endif
Note: See TracBrowser for help on using the repository browser.