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

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

?? smisc.c

?? 這是新華龍(www.xhl.xom.xn)開發(fā)的
?? C
字號:
/* Miscellaneous Internet servers: discard, echo and remote
 */
#include <stdio.h>
#include "global.h"
#include "mbuf.h"
#include "socket.h"
#include "proc.h"
#include "remote.h"
#include "smtp.h"
#include "tcp.h"
#include "commands.h"
#include "hardware.h"
#include "mailbox.h"
#include "asy.h"
#include "n8250.h"
#include "devparam.h"
#include "telnet.h"

char *Rempass = "";	/* Remote access password */

static int chkrpass(struct mbuf *bp);
static void discserv(int s,void *unused,void *p);
static void echoserv(int s,void *unused,void *p);
static void termserv(int s,void *unused,void *p);
static void termrx(int s,void *p1,void *p2);
static void tunregister(struct iface *,int);
static void tregister(struct iface *);

static int Rem = -1;
static int Bsr = -1;

struct tserv {
	struct tserv *next;
	struct proc *proc;
	struct iface *ifp;
};
struct tserv *Tserv;

/* Start up TCP discard server */
int
dis1(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	uint16 port;

	if(argc < 2)
		port = IPPORT_DISCARD;
	else
		port = atoi(argv[1]);
	return start_tcp(port,"Discard Server",discserv,576);
}
static void
discserv(s,unused,p)
int s;
void *unused;
void *p;
{
	struct mbuf *bp;

	sockowner(s,Curproc);
	logmsg(s,"open discard");
	if(availmem() == 0){
		while(recv_mbuf(s,&bp,0,NULL,NULL) > 0)
			free_p(&bp);
	}
	logmsg(s,"close discard");
	close_s(s);
}
/* Stop discard server */
int
dis0(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	uint16 port;

	if(argc < 2)
		port = IPPORT_DISCARD;
	else
		port = atoi(argv[1]);
	return stop_tcp(port);
}
/* Start up TCP echo server */
int
echo1(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	uint16 port;

	if(argc < 2)
		port = IPPORT_ECHO;
	else
		port = atoi(argv[1]);
	return start_tcp(port,"Echo Server",echoserv,512);
}
static void
echoserv(s,unused,p)
int s;
void *unused;
void *p;
{
	struct mbuf *bp;

	sockowner(s,Curproc);
	logmsg(s,"open echo");
	if(availmem() == 0){
		while(recv_mbuf(s,&bp,0,NULL,NULL) > 0)
			send_mbuf(s,&bp,0,NULL,0);
	}
	logmsg(s,"close echo");
	close_s(s);
}
/* stop echo server */
int
echo0(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	uint16 port;

	if(argc < 2)
		port = IPPORT_ECHO;
	else
		port = atoi(argv[1]);
	return stop_tcp(port);
}
/* Start remote exit/reboot server */
int
rem1(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct sockaddr_in lsocket,fsock;
	int i;
	int command;
	struct mbuf *bp;
	int32 addr;
	int (*kp)(int32);

	if(Rem != -1){
		return 0;
	}
	ksignal(Curproc,0);
	chname(Curproc,"Remote listener");
	lsocket.sin_family = AF_INET;
	lsocket.sin_addr.s_addr = INADDR_ANY;
	if(argc < 2)
		lsocket.sin_port = IPPORT_REMOTE;
	else
		lsocket.sin_port = atoi(argv[1]);
	
	Rem = socket(AF_INET,SOCK_DGRAM,0);
	bind(Rem,(struct sockaddr *)&lsocket,sizeof(lsocket));
	for(;;){
		i = sizeof(fsock);
		if(recv_mbuf(Rem,&bp,0,(struct sockaddr *)&fsock,&i) == -1)
			break;
		command = PULLCHAR(&bp);

		switch(command){
#ifdef	MSDOS	/* Only present on PCs running MSDOS */
		case SYS_RESET:
			i = chkrpass(bp);
			logmsg(Rem,"%s - Remote reset %s",
			 psocket((struct sockaddr *)&fsock),
			 i == 0 ? "PASSWORD FAIL" : "" );
			if(i != 0){
				iostop();
				sysreset();	/* No return */
			}
			break;
#endif
		case SYS_EXIT:
			i = chkrpass(bp);
			logmsg(Rem,"%s - Remote exit %s",
			 psocket((struct sockaddr *)&fsock),
			 i == 0 ? "PASSWORD FAIL" : "" );
			if(i != 0){
				iostop();
				exit(0);
			}
			break;
		case KICK_ME:
			if(len_p(bp) >= sizeof(int32))
				addr = pull32(&bp);
			else
				addr = fsock.sin_addr.s_addr;
			for(i=0;(kp = Kicklist[i]) != NULL;i++)
				(*kp)(addr);
			break;
		}
		free_p(&bp);
	}
	close_s(Rem);
	Rem = -1;
	return 0;
}
/* Check remote password */
static int
chkrpass(bp)
struct mbuf *bp;
{
	char *lbuf;
	uint16 len;
	int rval = 0;

	len = len_p(bp);
	if(strlen(Rempass) != len)
		return rval;
	lbuf = mallocw(len);
	pullup(&bp,lbuf,len);
	if(strncmp(Rempass,lbuf,len) == 0)
		rval = 1;
	free(lbuf);
	return rval;
}
int
rem0(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	close_s(Rem);
	return 0;
}

/* Start up TCP term server */
int
term1(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	uint16 port;

	if(argc < 2)
		port = IPPORT_TERM;
	else
		port = atoi(argv[1]);
	return start_tcp(port,"Term Server",termserv,576);
}
static void
termserv(s,unused,p)
int s;
void *unused;
void *p;
{
	FILE *network = NULL;
	FILE *asy;
	char *buf = NULL;
	struct iface *ifp;
	struct route *rp;
	struct sockaddr_in fsocket;
	struct proc *rxproc = NULL;
	int i;
	
	sockowner(s,Curproc);
	logmsg(s,"open term");
	network = fdopen(s,"r+");

	if(network == NULL || (buf = malloc(BUFSIZ)) == NULL)
		goto quit;

	if(SETSIG(EABORT)){
		fprintf(network,"Abort\r\n");
		goto quit;
	}
	/* Prompt for and check remote password */
	fprintf(network,"Password: ");
	fgets(buf,BUFSIZ,network);
	rip(buf);
	if(strcmp(buf,Rempass) != 0){
		fprintf(network,"Login incorrect\n");
		goto quit;
	}
	/* Prompt for desired interface. Verify that it exists, that
	 * we're not using it for our TCP connection, that it's an
	 * asynch port, and that there isn't already another tip, term
	 * or dialer session active on it.
	 */
	for(;;){
		fprintf(network,"Interface: ");
		fgets(buf,BUFSIZ,network);
		rip(buf);
		if((ifp = if_lookup(buf)) == NULL){
			fprintf(network,"Interface %s does not exist\n",buf);
			continue;
		}
		if(getpeername(s,(struct sockaddr *)&fsocket,&i) != -1
		 && !ismyaddr(fsocket.sin_addr.s_addr)
		 && (rp = rt_lookup(fsocket.sin_addr.s_addr)) != NULL
		 && rp->iface == ifp){
			fprintf(network,"You're using interface %s!\n",ifp->name);
			continue;
		}
		if((asy = asyopen(buf,"r+b")) != NULL)
			break;
		fprintf(network,"Can't open interface %s\n",buf);
		fprintf(network,"Try to bounce current user? ");
		fgets(buf,BUFSIZ,network);
		if(buf[0] == 'y' || buf[0] == 'Y'){
			tunregister(ifp,1);
			kwait(NULL);
		}
	}
	setvbuf(asy,NULL,_IONBF,0);
	tregister(ifp);
	fprintf(network,"Wink DTR? ");
	fgets(buf,BUFSIZ,network);
	if(buf[0] == 'y' || buf[0] == 'Y'){
		asy_ioctl(ifp,PARAM_DTR,1,0);	/* drop DTR */
		ppause(1000L);
		asy_ioctl(ifp,PARAM_DTR,1,1);	/* raise DTR */
	}
	fmode(network,STREAM_BINARY);	/* Switch to raw mode */
	setvbuf(network,NULL,_IONBF,0);
	fprintf(network,"Turn off local echo? ");
	fgets(buf,BUFSIZ,network);
	if(buf[0] == 'y' || buf[0] == 'Y'){
		fprintf(network,"%c%c%c",IAC,WILL,TN_ECHO);
		/* Eat the response */
		for(i=0;i<3;i++)
			(void)fgetc(network);
	}
#ifdef	notdef
	FREE(buf);
#endif
	/* Now fork into receive and transmit processes */
	rxproc = newproc("term rx",1500,termrx,s,network,asy,0);

	/* We continue to handle the TCP->asy direction */
	fblock(network,PART_READ);
	while((i = fread(buf,1,BUFSIZ,network)) > 0)
		fwrite(buf,1,i,asy);
quit:	fclose(network);
	fclose(asy);
	killproc(rxproc);
	logmsg(s,"close term");
	free(buf);
	close_s(s);
	tunregister(ifp,0);
}
void
termrx(s,p1,p2)
int s;
void *p1,*p2;
{
	int i;
	FILE *network = (FILE *)p1;
	FILE *asy = (FILE *)p2;
	char buf[BUFSIZ];
	
	fblock(asy,PART_READ);
	while((i = fread(buf,1,BUFSIZ,asy)) > 0){
		fwrite(buf,1,i,network);
		kwait(NULL);
	}
}
void
tregister(ifp)
struct iface *ifp;
{
	struct tserv *tserv;

	tserv = (struct tserv *)calloc(1,sizeof(struct tserv));
	tserv->ifp = ifp;
	tserv->proc = Curproc;
	tserv->next = Tserv;
	Tserv = tserv;
}
void
tunregister(ifp,kill)
struct iface *ifp;
int kill;
{
	struct tserv *tserv;
	struct tserv *prev = NULL;

	for(tserv = Tserv;tserv != NULL;prev = tserv,tserv = tserv->next){
		if(tserv->ifp == ifp)
			break;
	}
	if(tserv == NULL)
		return;
	if(kill)
		alert(tserv->proc,EABORT);

	if(prev == NULL)
		Tserv = tserv->next;
	else
		prev->next = tserv->next;
	free(tserv);
}


/* Stop term server */
int
term0(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	uint16 port;

	if(argc < 2)
		port = IPPORT_TERM;
	else
		port = atoi(argv[1]);
	return stop_tcp(port);
}
/* Start BSR server */
int
bsr1(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct sockaddr_in lsocket,fsock;
	int i,c;
	struct mbuf *bp;
	char *cp;
	uint8 *dp;
	FILE *asy;

	if(Bsr != -1)
		return 1;

	ksignal(Curproc,0);
	chname(Curproc,"BSR listener");

	if((asy = asyopen(argv[1],"r+b")) == NULL){
		printf("Can't open interface %s\n",argv[1]);
		return 1;
	}
	/* Set up the UDP socket where we'll take commands */
	lsocket.sin_family = AF_INET;
	lsocket.sin_addr.s_addr = INADDR_ANY;
	if(argc < 3)
		lsocket.sin_port = IPPORT_BSR;
	else
		lsocket.sin_port = atoi(argv[2]);
	
	Bsr = socket(AF_INET,SOCK_DGRAM,0);
	bind(Bsr,(struct sockaddr *)&lsocket,sizeof(lsocket));

	/* Process commands */
	for(;;){
		i = sizeof(fsock);
		if(recv_mbuf(Bsr,&bp,0,(struct sockaddr *)&fsock,&i) == -1)
			break;
		/* Check password */
		for(cp = Rempass;;cp++){
			c = PULLCHAR(&bp);
			if(c == -1 || *cp != c)
				goto endcmd;
			if(*cp == '\0')
				break;
		}
		/* Send remainder of packet to BSR */
		while((c = PULLCHAR(&bp)) != -1){
			fputc(c,asy);
		}
		free_p(&bp);	/* Shouldn't be necessary */

		/* Now generate response */
		bp = ambufw(512);	/* Larger than max response */
		dp = bp->data;
		kalarm(500L);	/* Allow BSR time to respond */
		while((c = fgetc(asy)) != -1){
			kalarm(100L);	/* Reset timer */
			*dp++ = c;
			bp->cnt++;
		}
		kalarm(0L);
		/* Send response */
		send_mbuf(Bsr,&bp,0,(struct sockaddr *)&fsock,sizeof(fsock));
endcmd:
		free_p(&bp);
	}
	fclose(asy);
	close_s(Bsr);
	Bsr = -1;
	return 0;
}

int
bsr0(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	close_s(Bsr);
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜av一区二区三区| 国产精品一区二区果冻传媒| 久久精品免费观看| 91热门视频在线观看| 精品国产一区久久| 亚洲3atv精品一区二区三区| 风间由美一区二区三区在线观看 | 亚洲免费电影在线| 激情偷乱视频一区二区三区| 在线免费观看视频一区| 亚洲国产成人一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美亚洲综合一区| 国产精品动漫网站| 国产精选一区二区三区| 91精品国产综合久久精品麻豆 | 欧美精品一区二区三区高清aⅴ| 亚洲精品高清视频在线观看| 成人晚上爱看视频| 久久只精品国产| 久久 天天综合| 日韩一级二级三级精品视频| 五月激情综合婷婷| 欧美精品一区二区在线播放| 香蕉影视欧美成人| 91黄色激情网站| ...xxx性欧美| 91麻豆精品秘密| 中文字幕欧美一| 91丨九色丨蝌蚪富婆spa| 欧美韩国日本不卡| 高清av一区二区| 欧美国产精品中文字幕| 丁香亚洲综合激情啪啪综合| 久久久精品免费网站| 国产精品91xxx| 国产日韩欧美一区二区三区乱码 | 成人av免费网站| 中文字幕在线观看不卡| 不卡电影免费在线播放一区| 国产精品久久久久三级| 91日韩在线专区| 一区二区三区欧美激情| 欧美日韩在线精品一区二区三区激情| 亚洲欧美一区二区在线观看| 色中色一区二区| 亚洲图片欧美色图| 日韩三级视频在线观看| 韩日欧美一区二区三区| 中文字幕欧美日本乱码一线二线| 成人激情电影免费在线观看| 亚洲色图欧洲色图| 在线电影国产精品| 久久er99热精品一区二区| 国产三级三级三级精品8ⅰ区| 成人午夜av影视| 一区二区三区精密机械公司| 在线不卡的av| 国产馆精品极品| 亚洲九九爱视频| 日韩区在线观看| 粗大黑人巨茎大战欧美成人| 亚洲自拍偷拍av| 精品国产乱码久久久久久夜甘婷婷| 国产成人午夜精品5599| 亚洲精品中文字幕乱码三区 | 欧美成人午夜电影| 成人av在线资源| 图片区日韩欧美亚洲| 久久久激情视频| 在线欧美小视频| 国产大陆精品国产| 午夜精品国产更新| 国产欧美一区二区精品久导航| 日本福利一区二区| 激情另类小说区图片区视频区| 亚洲视频一区二区在线观看| 宅男噜噜噜66一区二区66| 成人精品视频一区二区三区| 亚洲国产wwwccc36天堂| 国产欧美综合在线| 91精品国产综合久久久久久漫画 | 琪琪一区二区三区| 亚洲欧美日韩国产另类专区| 欧美精品一区二区三区蜜桃视频| 91美女在线观看| 国产乱人伦偷精品视频免下载 | 91免费看`日韩一区二区| 五月激情六月综合| 亚洲女爱视频在线| 久久久噜噜噜久久中文字幕色伊伊| 欧美网站一区二区| fc2成人免费人成在线观看播放 | 欧美变态tickling挠脚心| 色综合天天综合在线视频| 国产一区二区伦理片| 日韩成人伦理电影在线观看| 亚洲麻豆国产自偷在线| 国产日本欧美一区二区| 2023国产精品自拍| 日韩一区二区精品| 欧美亚洲一区二区在线观看| 91免费精品国自产拍在线不卡| 国产精品18久久久| 国产最新精品精品你懂的| 日本欧美一区二区| 亚洲国产人成综合网站| 亚洲精品欧美在线| 亚洲视频每日更新| 亚洲视频在线观看三级| 亚洲欧美日韩电影| 国产精品进线69影院| 国产精品另类一区| 中文字幕电影一区| 国产日韩欧美精品一区| 久久久久久久综合狠狠综合| 久久女同互慰一区二区三区| 2021国产精品久久精品| wwwwww.欧美系列| 久久―日本道色综合久久| 久久综合资源网| 欧美激情一区在线| 国产精品女人毛片| 亚洲免费色视频| 亚洲亚洲精品在线观看| 亚洲午夜在线观看视频在线| 亚洲国产一区在线观看| 日本不卡一二三| 精品亚洲国产成人av制服丝袜| 国内精品在线播放| 大陆成人av片| 在线欧美小视频| 欧美一区二区精美| 国产午夜精品美女毛片视频| 国产精品午夜电影| 亚洲最新视频在线播放| 日韩vs国产vs欧美| 国产麻豆成人精品| 91色九色蝌蚪| 欧美一区二区三区免费大片 | 欧美日韩国产综合视频在线观看 | 久久蜜桃香蕉精品一区二区三区| 久久久精品国产免大香伊| 日韩理论片一区二区| 午夜精品国产更新| 国产成人自拍网| 欧美色爱综合网| 久久久一区二区三区| 亚洲人成网站精品片在线观看| 亚洲国产成人91porn| 国产乱国产乱300精品| 91丨porny丨户外露出| 91精品国产高清一区二区三区蜜臀 | 亚洲色图制服诱惑| 日本成人在线一区| heyzo一本久久综合| 欧美一级二级三级乱码| 国产视频一区二区在线观看| 亚洲福利视频一区| 国产福利一区二区三区视频在线| 97精品久久久午夜一区二区三区| 欧美精品久久99| 国产日韩欧美在线一区| 视频在线观看一区| 成年人国产精品| 精品日韩一区二区三区免费视频| 中文字幕在线观看不卡视频| 久久成人精品无人区| 在线免费一区三区| 中文字幕巨乱亚洲| 久久精品噜噜噜成人88aⅴ| 欧美在线小视频| 中文字幕免费观看一区| 麻豆精品一区二区综合av| 欧美亚洲禁片免费| 中文字幕一区av| 国产ts人妖一区二区| 精品久久久久久久久久久久久久久久久| 亚洲欧美福利一区二区| 国产成人免费视| 26uuu精品一区二区三区四区在线| 亚洲一级不卡视频| 91免费看`日韩一区二区| 国产精品网站在线观看| 国产一区欧美一区| 日韩精品专区在线| 日本在线不卡视频| 欧美伦理视频网站| 亚洲成在线观看| 欧美综合一区二区| 一个色综合av| 91久久一区二区| 一区二区三区四区在线播放| 99精品久久免费看蜜臀剧情介绍| 久久久久久毛片| 国产成人一区二区精品非洲| 久久夜色精品国产欧美乱极品| 久久精品国产一区二区三| 日韩欧美一级二级三级久久久| 天堂va蜜桃一区二区三区|