-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhandle_config.h
125 lines (91 loc) · 4.02 KB
/
handle_config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//
// Created by liushan on 19-11-9.
//
#ifndef DAGAMA_HANDLE_CONFIG_H
#define DAGAMA_HANDLE_CONFIG_H
#include "main.h"
#define CONFIG_FILE_HOST_MAX_KEY_NUM 1024
#define CONFIG_FILE_LINE_MAX_SIZE 4096
#define CONFIG_FILE_LINE_COMMENT_PREFIX "#"
#define CONFIG_FILE_CUTOFF_STR "---"
#define CONFIG_FILE_LINE_KV_SPLIT_CH ':'
#define CONFIG_FILE_ITEM_SPLIT_CH ','
#define CONFIG_FILE_KEY_HOST "host"
#define CONFIG_FILE_KEY_DOCROOT "doc_root"
#define CONFIG_FILE_KEY_MIMEFILE "mime_file"
#define CONFIG_FILE_KEY_METHOD_ALLOWED "method_allowed"
#define CONFIG_FILE_KEY_INDEX_FILE "index"
#define CONFIG_FILE_KEY_403PAGE "403_page"
#define CONFIG_FILE_KEY_404PAGE "404_page"
#define CONFIG_FILE_KEY_405PAGE "405_page"
#define CONFIG_FILE_KEY_HTTPS "https"
#define CONFIG_FILE_KEY_SSLCERT "ssl_cert"
#define CONFIG_FILE_KEY_SSLKEY "ssl_key"
#define CONFIG_FILE_KEY_UPSTREAM_TYPE "upstream_type"
#define CONFIG_FILE_KEY_UPSTREAM "upstream"
#define CONFIG_FILE_KEY_LOG_HOST_PATH "log_host_path"
#define CONFIG_FILE_KEY_LOG_LEVEL "log_level"
#define CONFIG_FILE_VALUE_FLAG_ON "on"
#define CONFIG_FILE_VALUE_FLAG_OFF "off"
#define CONFIG_FILE_VALUE_NA "N/A"
#define CONFIG_FILE_VALUE_UPSTREAM_TYPE_LOCAL "local"
#define CONFIG_FILE_VALUE_UPSTREAM_TYPE_FASTCGI "fastcgi"
#define CONFIG_FILE_VALUE_UPSTREAM_TYPE_HTTP "http"
struct config_key_value {
char key[128];
char value[4096];
};
struct config_host_kv {
struct config_key_value config_kv[CONFIG_FILE_HOST_MAX_KEY_NUM];
int current_key_num;
};
struct config_all_host_kv {
struct config_host_kv * host_config_kv;
int host_num;
char config_file_path[PATH_MAX];
};
// TODO 相对路径,转为绝对路径
static struct config_host_kv defalt_config_host_kv = {
.config_kv[0].key = "host",
.config_kv[0].value = "localhost",
.config_kv[1].key = "doc_root",
.config_kv[1].value = "./webroot",
.config_kv[2].key = "mime_file",
.config_kv[2].value = "/home/liushan/mylab/clang/dagama/conf/mime.types",
.config_kv[3].key = "method_allowed",
.config_kv[3].value = "GET, DELETE, POST",
.config_kv[4].key = "index",
.config_kv[4].value = "index.html, index.htm",
.config_kv[5].key = "403_page",
.config_kv[5].value = "./webroot/html/403.html",
.config_kv[6].key = "404_page",
.config_kv[6].value = "./webroot/html/404.html",
.config_kv[7].key = "405_page",
.config_kv[7].value = "./webroot/html/405.html",
.config_kv[8].key = "https",
.config_kv[8].value = "off",
.config_kv[9].key = "ssl_cert",
.config_kv[9].value = CONFIG_FILE_VALUE_NA,
.config_kv[10].key = "ssl_key",
.config_kv[10].value = CONFIG_FILE_VALUE_NA,
.config_kv[11].key = "upstream_type",
.config_kv[11].value = CONFIG_FILE_VALUE_UPSTREAM_TYPE_LOCAL,
.config_kv[12].key = "upstream",
.config_kv[12].value = CONFIG_FILE_VALUE_NA,
.config_kv[13].key = "log_host_path",
.config_kv[13].value = "/home/liushan/mylab/tmp/dagama.log",
.config_kv[14].key = "log_level",
.config_kv[14].value = LOG_LEVEL_NOTICE,
.current_key_num = 15
};
bool get_value_by_key(struct config_key_value * config_kv_ptr, char * * ch, int num);
int get_config_host_num(const char * config_f_path);
void init_config(struct hostVar * host_var_ptr, char * config_f_path);
void get_mimebook(const char * mime_file, struct mimedict mimebook [], int mimebook_len);
void get_all_host_config(struct config_all_host_kv * all_host_kv);
void set_host_config(struct config_all_host_kv * all_host_kv, struct hostVar *);
void get_or_open_file(struct FileOpenBook * file_open_book, const char * file_path, FILE ** f);
void init_open_file_book(struct FileOpenBook * file_open_book);
void init_request_file_open_book(void);
void test_hehe(void);
#endif //DAGAMA_HANDLE_CONFIG_H