-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinit.cpp
executable file
·195 lines (187 loc) · 20.3 KB
/
init.cpp
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include "cJSON.h"
#include "ThreadInfo.h"
#include "addone.h"
#include "log.h"
#include <iostream>
extern int Port;
extern cJSON *cjsonfile;
extern LinkLib *Linklib;
extern cJSON *UserAgentIndexPage;
extern char LogPath[256];
extern char *HomeDir;
int MakeDefaultRunTime();
SOCKET initBindSocket(const int port)
{
// 创建套接字并且绑定端口
// 准备工作
int opt = 1;
int Fd = socket(AF_INET, SOCK_STREAM, 0);
setsockopt(Fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); // 设置端口复用,防止重启程序后无法绑定端口
printf("[%s] [LOG] 正在创建监听套接字\n", gettime().time);
if (-1 == Fd)
{
return execl("sudo", "./webserver", NULL);
}
int n = 1;
struct sockaddr_in addr = {0};
addr.sin_family = AF_INET; // 和socket第一个参数一致
addr.sin_port = htons(port);
// 小端转大端
addr.sin_addr.s_addr = INADDR_ANY; // 当前电脑上任意一个网卡都可以
int sockfd;
int r = bind(Fd, (struct sockaddr *)&addr, sizeof(addr));
if (-1 == r)
{
printf("[%s] [ERROR] 端口绑定失败,原因:%s\n", gettime().time, strerror(errno));
exit(0);
}
listen(Fd, 10);
return Fd; // 返回绑定完成端口的套接字
}
int initserver()
{
printf("[%s] [LOG] 正在初始化服务器\n", gettime().time);
FILE *fp = fopen("conf/config.json", "rb");
if (fp == NULL)
{
// 没有配置文件
// 配置设置
printf("没有找到配置文件,是否在./conf/中生成默认配置文件?(y/n):");
char result = getchar();
getchar();
if (result == 'y')
{
printf("开始生成配置文件\n");
if (0!=MakeDefaultRunTime())
{
printf("生成失败\n");
exit(2);
}
printf("生成成功\n");
return 1;
}
else if (result == 'n')
{
printf("取消生成\n");
exit(0);
}
else
{
printf("请输入y/n中的选项(小写)\n");
exit(1);
}
}
else
{
char temp[1024 * 1024];
fread(temp, 1024, 1, fp);
fclose(fp);
cJSON *json = cJSON_Parse(temp);
if (json == NULL)
{
printf("[%s] [ERROR] 未找到配置文件conf/config.json\n", gettime().time);
exit(1);
}
cJSON *p = cJSON_GetObjectItem(json, "MimePath");
if (p == NULL)
{
printf("[%s] [ERROR] MimePath设置错误conf/config.json\n", gettime().time);
exit(1);
}
FILE *mimefile = fopen(p->valuestring, "rb");
if (mimefile == NULL)
{
printf("[%s] [ERROR] mime文件不存在\n", gettime().time);
exit(1);
}
fread(temp, 1024 * 1024, 1, mimefile);
fclose(mimefile);
cjsonfile = cJSON_Parse(temp);
if (cjsonfile == NULL)
{
printf("[%s] [ERROR] mime格式错误\n", gettime().time);
exit(1);
}
p = cJSON_GetObjectItem(json, "PORT");
if (p == NULL)
{
printf("[%s] [WORNING] 没有设置port,使用默认8001\n", gettime().time);
Port = 8001;
}
else
{
Port = p->valueint; // 强制转换成正值
printf("[%s] [LOG] 设置端口号:%d\n", gettime().time, Port);
}
p = cJSON_GetObjectItem(json, "LogPath");
if (p == NULL)
{
printf("[%s] [WARNING] 没有设置日志文件目录,日志记录将无法生效\n", gettime().time);
}
else
{
strncpy(LogPath, p->valuestring, 256);
}
UserAgentIndexPage = cJSON_GetObjectItem(json, "UserAgentIndexPage");
p = cJSON_GetObjectItem(json, "HomeDir");
if (p == NULL || p->valuestring == NULL)
{
printf("[%s] [WARNING] 没有设置主目录,请将主目录填写至HomeDir项\n", gettime().time);
exit(1);
}
else
{
HomeDir = (char *)malloc(strlen(p->valuestring) + 1);
strcpy(HomeDir, p->valuestring);
}
// cJSON_Delete(json);//因为需要解析UA所以这个JSON数据不释放
// 加载插件
printf("[%s] [LOG] 开始加载插件\n", gettime().time);
Linklib = addone_MakeFuncLink(&Linklib, "app");
printf("[%s] [LOG] 加载完成\n", gettime().time);
return 0;
}
}
int MakeDefaultRunTime()
{
using namespace std;
mkdir("conf", 0777);
mkdir("app", 0777);
mkdir("logs", 0777);
cJSON *json = cJSON_CreateObject();
cJSON_AddStringToObject(json, "MimePath", "conf/mime.json");
cJSON_AddNumberToObject(json, "PORT", 80);
cJSON_AddStringToObject(json, "HomeDir", ".");
cJSON_AddStringToObject(json, "LogPath", "logs");
cJSON_AddItemToObject(json, "UserAgentIndexPage", cJSON_CreateArray());
char *jdata;
FILE *fp = fopen("conf/config.json", "w");
printf("正在写入conf/config.json文件\n");
if (fp == NULL)
{
cJSON_Delete(json);
printf("打开文件失败:%s\n", strerror(errno));
return -1;
}
jdata = cJSON_Print(json);
fputs(jdata, fp);
free(jdata);
fclose(fp);
cJSON_Delete(json);
json = cJSON_Parse("{\".323\":\"text/h323\",\".3gp\":\"video/3gpp\",\".aab\":\"application/x-authoware-bin\",\".aam\":\"application/x-authoware-map\",\".aas\":\"application/x-authoware-seg\",\".acx\":\"application/internet-property-stream\",\".ai\":\"application/postscript\",\".aif\":\"audio/x-aiff\",\".aifc\":\"audio/x-aiff\",\".aiff\":\"audio/x-aiff\",\".als\":\"audio/X-Alpha5\",\".amc\":\"application/x-mpeg\",\".ani\":\"application/octet-stream\",\".apk\":\"application/vnd.android.package-archive\",\".asc\":\"text/plain\",\".asd\":\"application/astound\",\".asf\":\"video/x-ms-asf\",\".asn\":\"application/astound\",\".asp\":\"application/x-asap\",\".asr\":\"video/x-ms-asf\",\".asx\":\"video/x-ms-asf\",\".au\":\"audio/basic\",\".avb\":\"application/octet-stream\",\".avi\":\"video/x-msvideo\",\".awb\":\"audio/amr-wb\",\".axs\":\"application/olescript\",\".bas\":\"text/plain\",\".bcpio\":\"application/x-bcpio\",\".bin\":\"application/octet-stream\",\".bld\":\"application/bld\",\".bld2\":\"application/bld2\",\".bmp\":\"image/bmp\",\".bpk\":\"application/octet-stream\",\".bz2\":\"application/x-bzip2\",\".c\":\"text/plain\",\".cal\":\"image/x-cals\",\".cat\":\"application/vnd.ms-pkiseccat\",\".ccn\":\"application/x-cnc\",\".cco\":\"application/x-cocoa\",\".cdf\":\"application/x-cdf\",\".cer\":\"application/x-x509-ca-cert\",\".cgi\":\"magnus-internal/cgi\",\".chat\":\"application/x-chat\",\".class\":\"application/octet-stream\",\".clp\":\"application/x-msclip\",\".cmx\":\"image/x-cmx\",\".co\":\"application/x-cult3d-object\",\".cod\":\"image/cis-cod\",\".conf\":\"text/plain\",\".cpio\":\"application/x-cpio\",\".cpp\":\"text/plain\",\".cpt\":\"application/mac-compactpro\",\".crd\":\"application/x-mscardfile\",\".crl\":\"application/pkix-crl\",\".crt\":\"application/x-x509-ca-cert\",\".csh\":\"application/x-csh\",\".csm\":\"chemical/x-csml\",\".csml\":\"chemical/x-csml\",\".css\":\"text/css\",\".cur\":\"application/octet-stream\",\".dcm\":\"x-lml/x-evm\",\".dcr\":\"application/x-director\",\".dcx\":\"image/x-dcx\",\".der\":\"application/x-x509-ca-cert\",\".dhtml\":\"text/html\",\".dir\":\"application/x-director\",\".dll\":\"application/x-msdownload\",\".dmg\":\"application/octet-stream\",\".dms\":\"application/octet-stream\",\".doc\":\"application/msword\",\".docx\":\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\".dot\":\"application/msword\",\".dvi\":\"application/x-dvi\",\".dwf\":\"drawing/x-dwf\",\".dwg\":\"application/x-autocad\",\".dxf\":\"application/x-autocad\",\".dxr\":\"application/x-director\",\".ebk\":\"application/x-expandedbook\",\".emb\":\"chemical/x-embl-dl-nucleotide\",\".embl\":\"chemical/x-embl-dl-nucleotide\",\".eps\":\"application/postscript\",\".epub\":\"application/epub+zip\",\".eri\":\"image/x-eri\",\".es\":\"audio/echospeech\",\".esl\":\"audio/echospeech\",\".etc\":\"application/x-earthtime\",\".etx\":\"text/x-setext\",\".evm\":\"x-lml/x-evm\",\".evy\":\"application/envoy\",\".exe\":\"application/octet-stream\",\".fh4\":\"image/x-freehand\",\".fh5\":\"image/x-freehand\",\".fhc\":\"image/x-freehand\",\".fif\":\"application/fractals\",\".flr\":\"x-world/x-vrml\",\".flv\":\"flv-application/octet-stream\",\".fm\":\"application/x-maker\",\".fpx\":\"image/x-fpx\",\".fvi\":\"video/isivideo\",\".gau\":\"chemical/x-gaussian-input\",\".gca\":\"application/x-gca-compressed\",\".gdb\":\"x-lml/x-gdb\",\".gif\":\"image/gif\",\".gps\":\"application/x-gps\",\".gtar\":\"application/x-gtar\",\".gz\":\"application/x-gzip\",\".h\":\"text/plain\",\".hdf\":\"application/x-hdf\",\".hdm\":\"text/x-hdml\",\".hdml\":\"text/x-hdml\",\".hlp\":\"application/winhlp\",\".hqx\":\"application/mac-binhex40\",\".hta\":\"application/hta\",\".htc\":\"text/x-component\",\".htm\":\"text/html\",\".html\":\"text/html\",\".hts\":\"text/html\",\".htt\":\"text/webviewhtml\",\".ice\":\"x-conference/x-cooltalk\",\".ico\":\"image/x-icon\",\".ief\":\"image/ief\",\".ifm\":\"image/gif\",\".ifs\":\"image/ifs\",\".iii\":\"application/x-iphone\",\".imy\":\"audio/melody\",\".ins\":\"application/x-internet-signup\",\".ips\":\"application/x-ipscript\",\".ipx\":\"application/x-ipix\",\".isp\":\"application/x-internet-signup\",\".it\":\"audio/x-mod\",\".itz\":\"audio/x-mod\",\".ivr\":\"i-world/i-vrml\",\".j2k\":\"image/j2k\",\".jad\":\"text/vnd.sun.j2me.app-descriptor\",\".jam\":\"application/x-jam\",\".jar\":\"application/java-archive\",\".java\":\"text/plain\",\".jfif\":\"image/pipeg\",\".jnlp\":\"application/x-java-jnlp-file\",\".jpe\":\"image/jpeg\",\".jpeg\":\"image/jpeg\",\".jpg\":\"image/jpeg\",\".jpz\":\"image/jpeg\",\".js\":\"application/x-javascript\",\".jwc\":\"application/jwc\",\".kjx\":\"application/x-kjx\",\".lak\":\"x-lml/x-lak\",\".latex\":\"application/x-latex\",\".lcc\":\"application/fastman\",\".lcl\":\"application/x-digitalloca\",\".lcr\":\"application/x-digitalloca\",\".lgh\":\"application/lgh\",\".lha\":\"application/octet-stream\",\".lml\":\"x-lml/x-lml\",\".lmlpack\":\"x-lml/x-lmlpack\",\".log\":\"text/plain\",\".lsf\":\"video/x-la-asf\",\".lsx\":\"video/x-la-asf\",\".lzh\":\"application/octet-stream\",\".m13\":\"application/x-msmediaview\",\".m14\":\"application/x-msmediaview\",\".m15\":\"audio/x-mod\",\".m3u\":\"audio/x-mpegurl\",\".m3url\":\"audio/x-mpegurl\",\".m4a\":\"audio/mp4a-latm\",\".m4b\":\"audio/mp4a-latm\",\".m4p\":\"audio/mp4a-latm\",\".m4u\":\"video/vnd.mpegurl\",\".m4v\":\"video/x-m4v\",\".ma1\":\"audio/ma1\",\".ma2\":\"audio/ma2\",\".ma3\":\"audio/ma3\",\".ma5\":\"audio/ma5\",\".man\":\"application/x-troff-man\",\".map\":\"magnus-internal/imagemap\",\".mbd\":\"application/mbedlet\",\".mct\":\"application/x-mascot\",\".mdb\":\"application/x-msaccess\",\".mdz\":\"audio/x-mod\",\".me\":\"application/x-troff-me\",\".mel\":\"text/x-vmel\",\".mht\":\"message/rfc822\",\".mhtml\":\"message/rfc822\",\".mi\":\"application/x-mif\",\".mid\":\"audio/mid\",\".midi\":\"audio/midi\",\".mif\":\"application/x-mif\",\".mil\":\"image/x-cals\",\".mio\":\"audio/x-mio\",\".mmf\":\"application/x-skt-lbs\",\".mng\":\"video/x-mng\",\".mny\":\"application/x-msmoney\",\".moc\":\"application/x-mocha\",\".mocha\":\"application/x-mocha\",\".mod\":\"audio/x-mod\",\".mof\":\"application/x-yumekara\",\".mol\":\"chemical/x-mdl-molfile\",\".mop\":\"chemical/x-mopac-input\",\".mov\":\"video/quicktime\",\".movie\":\"video/x-sgi-movie\",\".mp2\":\"video/mpeg\",\".mp3\":\"audio/mpeg\",\".mp4\":\"video/mp4\",\".mpa\":\"video/mpeg\",\".mpc\":\"application/vnd.mpohun.certificate\",\".mpe\":\"video/mpeg\",\".mpeg\":\"video/mpeg\",\".mpg\":\"video/mpeg\",\".mpg4\":\"video/mp4\",\".mpga\":\"audio/mpeg\",\".mpn\":\"application/vnd.mophun.application\",\".mpp\":\"application/vnd.ms-project\",\".mps\":\"application/x-mapserver\",\".mpv2\":\"video/mpeg\",\".mrl\":\"text/x-mrml\",\".mrm\":\"application/x-mrm\",\".ms\":\"application/x-troff-ms\",\".msg\":\"application/vnd.ms-outlook\",\".mts\":\"application/metastream\",\".mtx\":\"application/metastream\",\".mtz\":\"application/metastream\",\".mvb\":\"application/x-msmediaview\",\".mzv\":\"application/metastream\",\".nar\":\"application/zip\",\".nbmp\":\"image/nbmp\",\".nc\":\"application/x-netcdf\",\".ndb\":\"x-lml/x-ndb\",\".ndwn\":\"application/ndwn\",\".nif\":\"application/x-nif\",\".nmz\":\"application/x-scream\",\".nokia-op-logo\":\"image/vnd.nok-oplogo-color\",\".npx\":\"application/x-netfpx\",\".nsnd\":\"audio/nsnd\",\".nva\":\"application/x-neva1\",\".nws\":\"message/rfc822\",\".oda\":\"application/oda\",\".ogg\":\"audio/ogg\",\".oom\":\"application/x-AtlasMate-Plugin\",\".p10\":\"application/pkcs10\",\".p12\":\"application/x-pkcs12\",\".p7b\":\"application/x-pkcs7-certificates\",\".p7c\":\"application/x-pkcs7-mime\",\".p7m\":\"application/x-pkcs7-mime\",\".p7r\":\"application/x-pkcs7-certreqresp\",\".p7s\":\"application/x-pkcs7-signature\",\".pac\":\"audio/x-pac\",\".pae\":\"audio/x-epac\",\".pan\":\"application/x-pan\",\".pbm\":\"image/x-portable-bitmap\",\".pcx\":\"image/x-pcx\",\".pda\":\"image/x-pda\",\".pdb\":\"chemical/x-pdb\",\".pdf\":\"application/pdf\",\".pfr\":\"application/font-tdpfr\",\".pfx\":\"application/x-pkcs12\",\".pgm\":\"image/x-portable-graymap\",\".pict\":\"image/x-pict\",\".pko\":\"application/ynd.ms-pkipko\",\".pm\":\"application/x-perl\",\".pma\":\"application/x-perfmon\",\".pmc\":\"application/x-perfmon\",\".pmd\":\"application/x-pmd\",\".pml\":\"application/x-perfmon\",\".pmr\":\"application/x-perfmon\",\".pmw\":\"application/x-perfmon\",\".png\":\"image/png\",\".pnm\":\"image/x-portable-anymap\",\".pnz\":\"image/png\",\".pot,\":\"application/vnd.ms-powerpoint\",\".ppm\":\"image/x-portable-pixmap\",\".pps\":\"application/vnd.ms-powerpoint\",\".ppt\":\"application/vnd.ms-powerpoint\",\".pptx\":\"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\".pqf\":\"application/x-cprplayer\",\".pqi\":\"application/cprplayer\",\".prc\":\"application/x-prc\",\".prf\":\"application/pics-rules\",\".prop\":\"text/plain\",\".proxy\":\"application/x-ns-proxy-autoconfig\",\".ps\":\"application/postscript\",\".ptlk\":\"application/listenup\",\".pub\":\"application/x-mspublisher\",\".pvx\":\"video/x-pv-pvx\",\".qcp\":\"audio/vnd.qcelp\",\".qt\":\"video/quicktime\",\".qti\":\"image/x-quicktime\",\".qtif\":\"image/x-quicktime\",\".r3t\":\"text/vnd.rn-realtext3d\",\".ra\":\"audio/x-pn-realaudio\",\".ram\":\"audio/x-pn-realaudio\",\".rar\":\"application/octet-stream\",\".ras\":\"image/x-cmu-raster\",\".rc\":\"text/plain\",\".rdf\":\"application/rdf+xml\",\".rf\":\"image/vnd.rn-realflash\",\".rgb\":\"image/x-rgb\",\".rlf\":\"application/x-richlink\",\".rm\":\"audio/x-pn-realaudio\",\".rmf\":\"audio/x-rmf\",\".rmi\":\"audio/mid\",\".rmm\":\"audio/x-pn-realaudio\",\".rmvb\":\"audio/x-pn-realaudio\",\".rnx\":\"application/vnd.rn-realplayer\",\".roff\":\"application/x-troff\",\".rp\":\"image/vnd.rn-realpix\",\".rpm\":\"audio/x-pn-realaudio-plugin\",\".rt\":\"text/vnd.rn-realtext\",\".rte\":\"x-lml/x-gps\",\".rtf\":\"application/rtf\",\".rtg\":\"application/metastream\",\".rtx\":\"text/richtext\",\".rv\":\"video/vnd.rn-realvideo\",\".rwc\":\"application/x-rogerwilco\",\".s3m\":\"audio/x-mod\",\".s3z\":\"audio/x-mod\",\".sca\":\"application/x-supercard\",\".scd\":\"application/x-msschedule\",\".sct\":\"text/scriptlet\",\".sdf\":\"application/e-score\",\".sea\":\"application/x-stuffit\",\".setpay\":\"application/set-payment-initiation\",\".setreg\":\"application/set-registration-initiation\",\".sgm\":\"text/x-sgml\",\".sgml\":\"text/x-sgml\",\".sh\":\"application/x-sh\",\".shar\":\"application/x-shar\",\".shtml\":\"magnus-internal/parsed-html\",\".shw\":\"application/presentations\",\".si6\":\"image/si6\",\".si7\":\"image/vnd.stiwap.sis\",\".si9\":\"image/vnd.lgtwap.sis\",\".sis\":\"application/vnd.symbian.install\",\".sit\":\"application/x-stuffit\",\".skd\":\"application/x-Koan\",\".skm\":\"application/x-Koan\",\".skp\":\"application/x-Koan\",\".skt\":\"application/x-Koan\",\".slc\":\"application/x-salsa\",\".smd\":\"audio/x-smd\",\".smi\":\"application/smil\",\".smil\":\"application/smil\",\".smp\":\"application/studiom\",\".smz\":\"audio/x-smd\",\".snd\":\"audio/basic\",\".spc\":\"application/x-pkcs7-certificates\",\".spl\":\"application/futuresplash\",\".spr\":\"application/x-sprite\",\".sprite\":\"application/x-sprite\",\".sdp\":\"application/sdp\",\".spt\":\"application/x-spt\",\".src\":\"application/x-wais-source\",\".sst\":\"application/vnd.ms-pkicertstore\",\".stk\":\"application/hyperstudio\",\".stl\":\"application/vnd.ms-pkistl\",\".stm\":\"text/html\",\".svg\":\"image/svg+xml\",\".sv4cpio\":\"application/x-sv4cpio\",\".sv4crc\":\"application/x-sv4crc\",\".svf\":\"image/vnd\",\".svh\":\"image/svh\",\".svr\":\"x-world/x-svr\",\".swf\":\"application/x-shockwave-flash\",\".swfl\":\"application/x-shockwave-flash\",\".t\":\"application/x-troff\",\".tad\":\"application/octet-stream\",\".talk\":\"text/x-speech\",\".tar\":\"application/x-tar\",\".taz\":\"application/x-tar\",\".tbp\":\"application/x-timbuktu\",\".tbt\":\"application/x-timbuktu\",\".tcl\":\"application/x-tcl\",\".tex\":\"application/x-tex\",\".texi\":\"application/x-texinfo\",\".texinfo\":\"application/x-texinfo\",\".tgz\":\"application/x-compressed\",\".thm\":\"application/vnd.eri.thm\",\".tif\":\"image/tiff\",\".tiff\":\"image/tiff\",\".tki\":\"application/x-tkined\",\".tkined\":\"application/x-tkined\",\".toc\":\"application/toc\",\".toy\":\"image/toy\",\".tr\":\"application/x-troff\",\".trk\":\"x-lml/x-gps\",\".trm\":\"application/x-msterminal\",\".tsi\":\"audio/tsplayer\",\".tsp\":\"application/dsptype\",\".tsv\":\"text/tab-separated-values\",\".ttf\":\"application/octet-stream\",\".ttz\":\"application/t-time\",\".txt\":\"text/plain\",\".uls\":\"text/iuls\",\".ult\":\"audio/x-mod\",\".ustar\":\"application/x-ustar\",\".uu\":\"application/x-uuencode\",\".uue\":\"application/x-uuencode\",\".vcd\":\"application/x-cdlink\",\".vcf\":\"text/x-vcard\",\".vdo\":\"video/vdo\",\".vib\":\"audio/vib\",\".viv\":\"video/vivo\",\".vivo\":\"video/vivo\",\".vmd\":\"application/vocaltec-media-desc\",\".vmf\":\"application/vocaltec-media-file\",\".vmi\":\"application/x-dreamcast-vms-info\",\".vms\":\"application/x-dreamcast-vms\",\".vox\":\"audio/voxware\",\".vqe\":\"audio/x-twinvq-plugin\",\".vqf\":\"audio/x-twinvq\",\".vql\":\"audio/x-twinvq\",\".vre\":\"x-world/x-vream\",\".vrml\":\"x-world/x-vrml\",\".vrt\":\"x-world/x-vrt\",\".vrw\":\"x-world/x-vream\",\".vts\":\"workbook/formulaone\",\".wav\":\"audio/x-wav\",\".wax\":\"audio/x-ms-wax\",\".wbmp\":\"image/vnd.wap.wbmp\",\".wcm\":\"application/vnd.ms-works\",\".wdb\":\"application/vnd.ms-works\",\".web\":\"application/vnd.xara\",\".wi\":\"image/wavelet\",\".wis\":\"application/x-InstallShield\",\".wks\":\"application/vnd.ms-works\",\".wm\":\"video/x-ms-wm\",\".wma\":\"audio/x-ms-wma\",\".wmd\":\"application/x-ms-wmd\",\".wmf\":\"application/x-msmetafile\",\".wml\":\"text/vnd.wap.wml\",\".wmlc\":\"application/vnd.wap.wmlc\",\".wmls\":\"text/vnd.wap.wmlscript\",\".wmlsc\":\"application/vnd.wap.wmlscriptc\",\".wmlscript\":\"text/vnd.wap.wmlscript\",\".wmv\":\"audio/x-ms-wmv\",\".wmx\":\"video/x-ms-wmx\",\".wmz\":\"application/x-ms-wmz\",\".wpng\":\"image/x-up-wpng\",\".wps\":\"application/vnd.ms-works\",\".wpt\":\"x-lml/x-gps\",\".wri\":\"application/x-mswrite\",\".wrl\":\"x-world/x-vrml\",\".wrz\":\"x-world/x-vrml\",\".ws\":\"text/vnd.wap.wmlscript\",\".wsc\":\"application/vnd.wap.wmlscriptc\",\".wv\":\"video/wavelet\",\".wvx\":\"video/x-ms-wvx\",\".wxl\":\"application/x-wxl\",\".x-gzip\":\"application/x-gzip\",\".xaf\":\"x-world/x-vrml\",\".xar\":\"application/vnd.xara\",\".xbm\":\"image/x-xbitmap\",\".xdm\":\"application/x-xdma\",\".xdma\":\"application/x-xdma\",\".xdw\":\"application/vnd.fujixerox.docuworks\",\".xht\":\"application/xhtml+xml\",\".xhtm\":\"application/xhtml+xml\",\".xhtml\":\"application/xhtml+xml\",\".xla\":\"application/vnd.ms-excel\",\".xlc\":\"application/vnd.ms-excel\",\".xll\":\"application/x-excel\",\".xlm\":\"application/vnd.ms-excel\",\".xls\":\"application/vnd.ms-excel\",\".xlsx\":\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\".xlt\":\"application/vnd.ms-excel\",\".xlw\":\"application/vnd.ms-excel\",\".xm\":\"audio/x-mod\",\".xml\":\"text/plain\",\".xmz\":\"audio/x-mod\",\".xof\":\"x-world/x-vrml\",\".xpi\":\"application/x-xpinstall\",\".xpm\":\"image/x-xpixmap\",\".xsit\":\"text/xml\",\".xsl\":\"text/xml\",\".xul\":\"text/xul\",\".xwd\":\"image/x-xwindowdump\",\".xyz\":\"chemical/x-pdb\",\".yz1\":\"application/x-yz1\",\".z\":\"application/x-compress\",\".zac\":\"application/x-zaurus-zac\",\".zip\":\"application/zip\",\".json\":\"application/json\"}");
fp = fopen("conf/mime.json", "w");
if (fp == NULL)
{
cJSON_Delete(json);
printf("打开文件mime.json失败:%s\n", strerror(errno));
return 1;
}
jdata = cJSON_Print(json);
fputs(jdata, fp);
cJSON_Delete(json);
fclose(fp);
return 0;
}