enhanced httpd to accept a document root specified of the secure nwad prefixed with https://.
moved ssl context initialization for server from the httpd structure to the server structure
This commit is contained in:
		| @ -156,6 +156,7 @@ struct loccfg_t | ||||
| 	{ | ||||
| 		ROOT_TYPE_PATH = 0, | ||||
| 		ROOT_TYPE_NWAD, | ||||
| 		ROOT_TYPE_NWAD_SECURE, | ||||
| 		ROOT_TYPE_RELOC, | ||||
| 		ROOT_TYPE_ERROR | ||||
| 	} root_type; | ||||
| @ -234,9 +235,9 @@ struct server_xtn_t | ||||
| { | ||||
| 	int nodir; /* no directory listing */ | ||||
|  | ||||
| 	int num; | ||||
| 	qse_nwad_t bind; | ||||
| 	int secure; | ||||
| 	int num; /* the server number in the xli configuration */ | ||||
| 	qse_nwad_t bind; /* binding address */ | ||||
| 	int secure; /* ssl */ | ||||
| 	qse_mchar_t* scfg[SCFG_MAX]; | ||||
|  | ||||
| 	qse_httpd_serverstd_makersrc_t orgmakersrc; | ||||
| @ -590,8 +591,11 @@ static int get_server_root ( | ||||
|  | ||||
| 	switch (loccfg->root_type) | ||||
| 	{ | ||||
| 		case ROOT_TYPE_NWAD_SECURE: | ||||
| 			root->u.proxy.flags |= QSE_HTTPD_RSRC_PROXY_DST_SECURE; | ||||
| 			/* fall thru */ | ||||
| 		case ROOT_TYPE_NWAD: | ||||
| 			/* simple forwarding. it's not controlled by proxy.http or proxy.connect  */ | ||||
| 			/* simple forwarding. it's not controlled by proxy.http, proxy.https or proxy.connect  */ | ||||
| 			root->type = QSE_HTTPD_SERVERSTD_ROOT_PROXY; | ||||
|  | ||||
| 			root->u.proxy.dst.nwad = loccfg->root.nwad; | ||||
| @ -1679,6 +1683,7 @@ static int load_loccfg (qse_httpd_t* httpd, qse_xli_t* xli, qse_xli_list_t* list | ||||
| 	{ | ||||
| 		/* check if the root value is special */ | ||||
| 		const qse_mchar_t* root = cfg->xcfg[XCFG_ROOT]; | ||||
| 		int proto_len = 0; | ||||
|  | ||||
| 		if (root[0] == QSE_MT('<') && QSE_ISMDIGIT(root[1])) | ||||
| 		{ | ||||
| @ -1722,16 +1727,31 @@ static int load_loccfg (qse_httpd_t* httpd, qse_xli_t* xli, qse_xli_list_t* list | ||||
| 					goto done; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			root = cfg->xcfg[XCFG_ROOT]; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			if (qse_mbszcasecmp (root, QSE_MT("http://"), (proto_len = 7)) == 0 || | ||||
| 			    qse_mbszcasecmp (root, QSE_MT("https://"), (proto_len = 8)) == 0)  | ||||
| 			{ | ||||
| 				root += proto_len; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				proto_len = 0; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if (qse_mbstonwad (cfg->xcfg[XCFG_ROOT], &cfg->root.nwad) >= 0)  | ||||
| 		if (qse_mbstonwad (root, &cfg->root.nwad) >= 0)  | ||||
| 		{ | ||||
| 			if (cfg->root.nwad.type != QSE_NWAD_IN4 && cfg->root.nwad.type != QSE_NWAD_IN6) | ||||
| 			{ | ||||
| 				qse_printf (QSE_T("ERROR: invalid address for root - [%hs]\n"), cfg->xcfg[XCFG_ROOT]); | ||||
| 				return -1; | ||||
| 			} | ||||
| 			cfg->root_type = ROOT_TYPE_NWAD; | ||||
|  | ||||
| 			cfg->root_type = (proto_len == 8)? ROOT_TYPE_NWAD_SECURE: ROOT_TYPE_NWAD; | ||||
| 			goto done; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @ -137,6 +137,7 @@ server-default { | ||||
| 	#################################################################### | ||||
| 	proxy { | ||||
| 		http = yes;        # yes/on, no/off | ||||
| 		https = yes;        # yes/on, no/off | ||||
| 		connect = yes;     # yes/on, no/off | ||||
| 		intercept = yes;   # yes/proxy/on, local, no/off,  | ||||
| 		upgrade = yes;     # yes/on, no/off | ||||
|  | ||||
		Reference in New Issue
	
	Block a user