亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 開發板bios源碼 開發板bios源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
 * main.c -- Main program for the GoAhead WebServer (VxWorks version)
 *
 * Copyright (c) GoAhead Software Inc., 1995-2000. All Rights Reserved.
 *
 * See the file "license.txt" for usage and redistribution license requirements
 *
 * $Id: main.c,v 1.3 2002/01/24 21:57:47 bporter Exp $
 */

/******************************** Description *********************************/

/*
 *	Main program for for the GoAhead WebServer. This is a demonstration
 *	main program to initialize and configure the web server.
 */

/********************************* Includes ***********************************/

#include	<envLib.h>
#include	<hostLib.h>
#include	<iosLib.h>
#include	<loadLib.h>
#include	<sigLib.h>
#include	<sysSymTbl.h>
#include	<unldLib.h>

#include	"../uemf.h"
#include	"../wsIntrn.h"

#ifdef WEBS_SSL_SUPPORT
#include	"../websSSL.h"
#endif

#ifdef USER_MANAGEMENT_SUPPORT
#include	"../um.h"
void	formDefineUserMgmt(void);
#endif

/*********************************** Locals ***********************************/
/*
 *	Change configuration here
 */
#define				ROOT_DIR		T("/ata0/webs")

static char_t		*rootWeb = T("web");			/* Root web directory */
static char_t		*password = T("");				/* Security password */
static int			port = 80;						/* Server port */
static int			retries = 5;					/* Server port retries */
static int			finished;						/* Finished flag */

/****************************** Forward Declarations **************************/

static int 	initWebs();
static int	aspTest(int eid, webs_t wp, int argc, char_t **argv);
static void formTest(webs_t wp, char_t *path, char_t *query);
static int  websHomePageHandler(webs_t wp, char_t *urlPrefix, char_t *webDir,
				int arg, char_t *url, char_t *path, char_t *query);
static void vxWebsCgiEntry(void *entryAddr(int argc, char_t **argv),
				char_t **argv, char_t **envp, char_t *stdIn, char_t *stdOut);
static void websTermSigHandler(int signo);
extern void defaultErrorHandler(int etype, char_t *msg);
extern void defaultTraceHandler(int level, char_t *buf);
#ifdef B_STATS
static void printMemStats(int handle, char_t *fmt, ...);
static void memLeaks();
#endif

/*********************************** Code *************************************/
/*
 *	Main -- entry point from VXWORKS
 */

int websvxmain(int argc, char **argv)
{
/*
 *	Initialize the memory allocator. Allow use of malloc and start 
 *	with a 60K heap.  For each page request approx 8KB is allocated.
 *	60KB allows for several concurrent page requests.  If more space
 *	is required, malloc will be used for the overflow.
 */
	bopen(NULL, (60 * 1024), B_USE_MALLOC);

/*
 *	Initialize the web server
 */
	finished = 0;
	if (initWebs() < 0) {
		return -1;
	}

#ifdef WEBS_SSL_SUPPORT
	websSSLOpen();
#endif

/*
 *	Basic event loop. SocketReady returns true when a socket is ready for
 *	service. SocketSelect will block for two seconds or until an event
 *	occurs. SocketProcess will actually do the servicing.
 */
	while (!finished) {
		if (socketReady(-1) || socketSelect(-1, 2000)) {
			socketProcess(-1);
		}
		websCgiCleanup();
		emfSchedProcess();
	}

#ifdef WEBS_SSL_SUPPORT
	websSSLClose();
#endif

#ifdef USER_MANAGEMENT_SUPPORT
	umClose();
#endif

/*
 *	Close the socket module, report memory leaks and close the memory allocator
 */
	websCloseServer();
	websDefaultClose();
	socketClose();
	symSubClose();
#ifdef B_STATS
	memLeaks();
#endif
	bclose();
	return 0;
}

/******************************************************************************/
/*
 *	Initialize the web server.
 */

static int initWebs()
{
	struct in_addr	intaddr;
	char			*pString;
	char			host[64], webdir[128];
	char_t			wbuf[128];

/*
 *	Initialize the socket and sym subsystems
 */
	socketOpen();
	symSubOpen();

#ifdef USER_MANAGEMENT_SUPPORT
/*
 *	Initialize the User Management database
 */
	umOpen();
	umRestore(T("umconfig.txt"));
#endif

/*
 *	Define the local Ip address, host name, default home page and the 
 *	root web directory.
 */
	if (gethostname(host, sizeof(host)) < 0) {
		error(E_L, E_LOG, T("Can't get hostname"));
		return -1;
	}
	intaddr.s_addr = (unsigned long) hostGetByName(host);


/*
 *	Set ../web as the root web. Modify this to suit your needs
 */
	sprintf(webdir, "%s/%s", ROOT_DIR, rootWeb);

/*
 *	Configure the web server options before opening the web server
 */
	websSetDefaultDir(webdir);
	pString = inet_ntoa(intaddr);
	ascToUni(wbuf, pString, min(strlen(pString) + 1, sizeof(wbuf)));
	free(pString);
	websSetIpaddr(wbuf);
	ascToUni(wbuf, host, min(strlen(host) + 1, sizeof(wbuf)));
	websSetHost(wbuf);

/*
 *	Configure the web server options before opening the web server
 */
	websSetDefaultPage(T("default.asp"));
	websSetPassword(password);

/* 
 *	Open the web server on the given port. If that port is taken, try
 *	the next sequential port for up to "retries" attempts.
 */
	websOpenServer(port, retries);

/*
 * 	First create the URL handlers. Note: handlers are called in sorted order
 *	with the longest path handler examined first. Here we define the security 
 *	handler, forms handler and the default web page handler.
 */
	websUrlHandlerDefine(T(""), NULL, 0, websSecurityHandler, 
		WEBS_HANDLER_FIRST);
	websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0);
	websUrlHandlerDefine(T("/cgi-bin"), NULL, 0, websCgiHandler, 0);
	websUrlHandlerDefine(T(""), NULL, 0, websDefaultHandler, 
		WEBS_HANDLER_LAST); 

/*
 *	Now define two test procedures. Replace these with your application
 *	relevant ASP script procedures and form functions.
 */
	websAspDefine(T("aspTest"), aspTest);
	websFormDefine(T("formTest"), formTest);

/*
 *	Create the Form handlers for the User Management pages
 */
#ifdef USER_MANAGEMENT_SUPPORT
	formDefineUserMgmt();
#endif

/*
 *	Create a handler for the default home page
 */
	websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0); 

/*
 *	Provide signal for clean up on termination.
 */
	signal(SIGTERM,	websTermSigHandler);
	signal(SIGKILL,	websTermSigHandler);

	return 0;
}

/******************************************************************************/
/*
 *	Test Javascript binding for ASP. This will be invoked when "aspTest" is
 *	embedded in an ASP page. See web/asp.asp for usage. Set browser to 
 *	"localhost/asp.asp" to test.
 */

static int aspTest(int eid, webs_t wp, int argc, char_t **argv)
{
	char_t	*name, *address;

	if (ejArgs(argc, argv, T("%s %s"), &name, &address) < 2) {
		websError(wp, 400, T("Insufficient args\n"));
		return -1;
	}
	return websWrite(wp, T("Name: %s, Address %s"), name, address);
}
/******************************************************************************/
/*
 *	Test form for posted data (in-memory CGI). This will be called when the
 *	form in web/forms.asp is invoked. Set browser to "localhost/forms.asp" to test.
 */

static void formTest(webs_t wp, char_t *path, char_t *query)
{
	char_t	*name, *address;

	name = websGetVar(wp, T("name"), T("Joe Smith")); 
	address = websGetVar(wp, T("address"), T("1212 Milky Way Ave.")); 

	websHeader(wp);
	websWrite(wp, T("<body><h2>Name: %s, Address: %s</h2>\n"), name, address);
	websFooter(wp);
	websDone(wp, 200);
}

/******************************************************************************/
/*
 *	Home page handler
 */

static int websHomePageHandler(webs_t wp, char_t *urlPrefix, char_t *webDir,
	int arg, char_t *url, char_t *path, char_t *query)
{
/*
 *	If the empty or "/" URL is invoked, redirect default URLs to the home page
 */
	if (*url == '\0' || gstrcmp(url, T("/")) == 0) {
		websRedirect(wp, T("home.asp"));
		return 1;
	}
	return 0;
}

/******************************************************************************/
/*
 *	Returns a pointer to an allocated qualified unique temporary file name.
 *	This filename must eventually be deleted with bfree();
 */

char_t *websGetCgiCommName()
{
	char_t	*tname, buf[FNAMESIZE];

	fmtAlloc(&tname,FNAMESIZE, T("%s/%s"), ggetcwd(buf, FNAMESIZE),
			tmpnam(NULL));
	return tname;
}

/******************************************************************************/
/*
 *	Launch the CGI process and return a handle to it. Process spawning
 *	is not supported in VxWorks.  Instead, we spawn a "task".  A major
 *	difference is that we have to know the entry point for the taskSpawn
 *	API.  Also the module may have to be loaded before being executed;
 *	it may also be part of the OS image, in which case it cannot be 
 *	loaded or unloaded.  The following sequence is used:
 *	1. If the module is already loaded, unload it from memory.
 *	2. Search for a query string keyword=value pair in the environment 
 *		variables where the keyword	is cgientry.  If found use its value
 *		as the the entry point name.  If there is no such pair set 
 *		the entry point name to the default: basename_cgientry, where
 *		basename is the name of the cgi file without the extension.  Use
 *		the	entry point name in a symbol table search for that name to
 *		use as the entry point address.  If successful go to step 5.
 *	3. Try to load the module into memory.  If not successful error out.
 *	4. If step 3 is successful repeat the entry point search from step
 *		2.  If the entry point exists, go to step 5.  If it does not,
 *		error out.
 *	5. Use taskSpawn to start a new task which uses vxWebsCgiEntry 
 *		as its starting point.  The five arguments to vxWebsCgiEntry

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久影院视频免费| 综合亚洲深深色噜噜狠狠网站| 国产精品盗摄一区二区三区| 国产一区二区伦理片| 日韩欧美色综合| 久久黄色级2电影| 欧美成人欧美edvon| 国产精品12区| 欧美激情一二三区| 成人av在线播放网址| 中文字幕一区二区三区在线播放| 一本到一区二区三区| 亚洲天堂a在线| 91视频观看免费| 亚洲同性同志一二三专区| 国产精品一品二品| 亚洲欧美国产三级| 色婷婷香蕉在线一区二区| 一区二区三区在线免费播放| 欧美日韩美女一区二区| 久久成人免费日本黄色| 精品av久久707| 丁香婷婷综合色啪| 亚洲欧美另类久久久精品2019| 欧美精品自拍偷拍| 日韩国产欧美视频| 欧美精品一区二区三区在线播放 | 国产成人亚洲综合色影视| 久久九九全国免费| 91在线你懂得| 一区二区三区波多野结衣在线观看| 欧美年轻男男videosbes| 亚洲成a人片在线观看中文| 欧美综合欧美视频| 免费在线观看不卡| 欧美精品一区二区三区很污很色的| 激情文学综合网| 国产精品天干天干在观线| 91精彩视频在线| 日韩经典一区二区| 成人免费一区二区三区视频| 欧美精品在线视频| 国产一区二区女| 樱花草国产18久久久久| 舔着乳尖日韩一区| 亚洲欧洲精品一区二区三区| 欧美日韩在线三区| 国产成人在线观看免费网站| 一级中文字幕一区二区| 国产日韩欧美高清在线| 欧美网站大全在线观看| 国产99久久久国产精品潘金网站| 亚洲国产精品久久一线不卡| 精品久久久久久亚洲综合网 | 亚洲精品在线观看视频| 91久久奴性调教| 国内精品免费**视频| 洋洋av久久久久久久一区| 久久亚洲精品小早川怜子| 成人黄色777网| 狠狠色丁香久久婷婷综合丁香| 亚洲同性gay激情无套| 精品国产91乱码一区二区三区| 91毛片在线观看| 国产一区二区精品久久| 蜜桃久久av一区| 国产精品久久久久久久久动漫| 日韩一区二区免费视频| 国产成人精品免费看| 蜜桃精品在线观看| 一区二区三区鲁丝不卡| 国产日本欧洲亚洲| 欧美一区二区视频免费观看| 欧美无人高清视频在线观看| 成人天堂资源www在线| 久久精品国产亚洲一区二区三区| 亚洲欧美视频在线观看| 欧美videofree性高清杂交| 欧美一级爆毛片| 91豆麻精品91久久久久久| 国产精品综合久久| 成人亚洲一区二区一| 精品一区二区三区在线视频| 视频在线在亚洲| 性做久久久久久免费观看| 亚洲高清免费观看高清完整版在线观看| 亚洲国产精品99久久久久久久久| 欧美一卡二卡三卡四卡| 日韩欧美视频一区| 久久精品一区二区三区不卡 | 色婷婷精品大在线视频| 91成人在线免费观看| 欧美日韩精品三区| 制服丝袜日韩国产| 欧美zozozo| 国产精品久久国产精麻豆99网站| 国产精品福利一区| 一区二区三区av电影| 日本成人超碰在线观看| 开心九九激情九九欧美日韩精美视频电影 | 午夜国产不卡在线观看视频| 日韩av一级电影| 高清在线成人网| 色视频成人在线观看免| 欧美日本精品一区二区三区| 精品少妇一区二区三区在线视频| 精品卡一卡二卡三卡四在线| 国产精品免费久久久久| 一区二区在线看| 免费成人深夜小野草| 91精品国产免费久久综合| 日韩欧美一级二级三级| ●精品国产综合乱码久久久久 | 亚洲欧洲中文日韩久久av乱码| 亚洲高清免费视频| 国产精品一区二区三区网站| 色综合中文字幕| 日韩一区二区三区四区五区六区| 久久久国产精品午夜一区ai换脸| 亚洲免费观看高清完整版在线观看 | 日韩欧美一区二区久久婷婷| 国产精品久久二区二区| 蜜臀av一区二区在线免费观看| 成人免费视频视频| 欧美一区二区三区免费大片| 国产精品久久久久久久裸模 | 美女一区二区视频| 国产乱码精品1区2区3区| 亚洲精品大片www| 精品在线播放午夜| 成人视屏免费看| 欧美一区二区啪啪| 一区二区三区视频在线观看| 久久精品久久99精品久久| 色婷婷国产精品久久包臀| 久久美女艺术照精彩视频福利播放 | 亚洲另类中文字| 国产精品一区在线| 欧美一级xxx| 一区二区三区波多野结衣在线观看| 国产精品综合一区二区三区| 制服丝袜中文字幕亚洲| 自拍偷拍欧美精品| 国v精品久久久网| 久久久综合九色合综国产精品| 亚洲高清免费观看 | 欧美日韩一级片网站| 国产精品伦理在线| 国产一区二区伦理片| 日韩午夜av一区| 日韩不卡免费视频| 欧美日韩日日骚| 亚洲人被黑人高潮完整版| 成人黄色在线网站| 国产香蕉久久精品综合网| 国产在线视频一区二区| 欧美不卡一区二区三区四区| 蜜桃视频一区二区| 欧美一区日本一区韩国一区| 91影院在线免费观看| 久久精品视频免费观看| 国内成人精品2018免费看| 精品少妇一区二区三区日产乱码 | 欧美韩国日本不卡| 蜜桃久久av一区| 欧美成人a在线| 黄一区二区三区| 久久女同精品一区二区| 国产精品羞羞答答xxdd| 久久久.com| 国产成人免费网站| 亚洲国产精品高清| av网站免费线看精品| 亚洲精品第1页| 欧美女孩性生活视频| 青青草精品视频| 亚洲精品一区二区三区蜜桃下载 | 久久久久9999亚洲精品| 国产成人av影院| 一区在线播放视频| 在线观看视频一区二区| 婷婷中文字幕综合| 日韩三级电影网址| 国产激情视频一区二区三区欧美 | www亚洲一区| 国产精品亚洲一区二区三区妖精 | 欧美国产亚洲另类动漫| 不卡视频在线看| 亚洲一级在线观看| 91精品国产色综合久久| 国产一区二区精品在线观看| 中文字幕一区在线观看视频| 91官网在线观看| 免费一区二区视频| 国产欧美视频一区二区| 色网站国产精品| 免费在线观看一区| 国产精品理论在线观看| 欧美视频自拍偷拍| 国产一区二区在线影院|