⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpauth.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <auth.h>#include <authsrv.h>/* deprecated.	This is the mechanism that put entries in /sys/lib/httpd.rewrite	and passwords on the authserver in /sys/lib/httppasswords, which	was awkward to administer.  Instead, use local .httplogin files,	which are implemented in sys/src/cmd/ip/httpd/authorize.c */inthttpauth(char *name, char *password){	int afd;	Ticketreq tr;	Ticket	t;	char key[DESKEYLEN];	char buf[512];	afd = authdial(nil, nil);	if(afd < 0)		return -1;	/* send ticket request to AS */	memset(&tr, 0, sizeof(tr));	strcpy(tr.uid, name);	tr.type = AuthHttp;	convTR2M(&tr, buf);	if(write(afd, buf, TICKREQLEN) != TICKREQLEN){		close(afd);		return -1;	}	if(_asrdresp(afd, buf, TICKETLEN) < 0){		close(afd);		return -1;	}	close(afd);	/*	 *  use password and try to decrypt the	 *  ticket.  If it doesn't work we've got a bad password,	 *  give up.	 */	passtokey(key, password);	convM2T(buf, &t, key);	if(t.num != AuthHr || strcmp(t.cuid, tr.uid))		return -1;	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -