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

Last change on this file since 187 was 187, checked in by Nishi, on Sep 28, 2024 at 9:07:34 AM

kinda works

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