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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? login.c++

?? fax相關(guān)的東西
?? C++
字號(hào):
/*	$Id: Login.c++,v 1.12 2006/03/27 21:36:28 aidan Exp $ *//* * Copyright (c) 1995-1996 Sam Leffler * Copyright (c) 1995-1996 Silicon Graphics, Inc. * HylaFAX is a trademark of Silicon Graphics * * Permission to use, copy, modify, distribute, and sell this software and  * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. *  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   *  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  * OF THIS SOFTWARE. */#include "HylaFAXServer.h"#include "Sys.h"#include <unistd.h>#include <ctype.h>#include <fcntl.h>#include <pwd.h>#if HAS_CRYPT_H#include <crypt.h>#endifvoidHylaFAXServer::loginRefused(const char* why){    if (++loginAttempts >= maxLoginAttempts) {	reply(530, "Login incorrect (closing connection).");	logNotice("Repeated login failures for user %s from %s [%s]"	    , (const char*) the_user	    , (const char*) remotehost	    , (const char*) remoteaddr	);	dologout(0);    } else {	reply(530, "User %s access denied.", (const char*) the_user);	logNotice("HylaFAX LOGIN REFUSED (%s) FROM %s [%s], %s"	    , why	    , (const char*) remotehost	    , (const char*) remoteaddr	    , (const char*) the_user	);    }}/* * USER command. Sets global passwd state if named * account exists and is acceptable; sets askpasswd if a * PASS command is expected.  If logged in previously, * need to reset state.  User account must be accessible * from client host according to the contents of the * userAccessFile. */voidHylaFAXServer::userCmd(const char* name){    if (IS(LOGGEDIN)) {	if (IS(PRIVILEGED) && the_user == name) {// revert to unprivileged mode	    state &= ~S_PRIVILEGED;	    reply(230, "User %s logged in.", name);	    return;	}        end_login();    }    the_user = name;    state &= ~S_PRIVILEGED;    adminwd = "*";			// make sure no admin privileges    passwd = "*";			// just in case...    if (checkUser(name)) {	if (passwd != "") {	    state |= S_WAITPASS;	    reply(331, "Password required for %s.", name);	    /*	     * Delay before reading passwd after first failed	     * attempt to slow down password-guessing programs.	     */	    if (loginAttempts)		sleep(loginAttempts);	} else	    login(230);    } else	loginRefused("user denied");}#ifdef HAVE_PAMintpamconv(int num_msg, STRUCT_PAM_MESSAGE **msg, struct pam_response **resp, void *appdata){	char *password =(char*) appdata;	struct pam_response* replies;	if (num_msg != 1 || msg[0]->msg_style != PAM_PROMPT_ECHO_OFF)	    return PAM_CONV_ERR;	if (password == NULL)	    /*	     * Solaris doesn't have PAM_CONV_AGAIN defined.	     */	    #ifdef PAM_CONV_AGAIN		return PAM_CONV_AGAIN;	    #else		return PAM_CONV_ERR;	    #endif	replies=(struct pam_response*)calloc(num_msg, sizeof(struct pam_response));	replies[0].resp = strdup(password);	replies[0].resp_retcode = 0;	*resp = replies;	return PAM_SUCCESS;}#endif //HAVE_PAMboolHylaFAXServer::pamIsAdmin(const char* user){	bool retval = false;#ifdef HAVE_PAM	int i;	static struct group* grinfo = getgrnam(admingroup);	const char *curruser = (user == NULL ? the_user.c_str() : user);	if (grinfo != NULL) {		for (i=0; grinfo->gr_mem[i] != NULL; i++) {			if (strcmp(curruser, grinfo->gr_mem[i]) == 0) retval = true;		}	}#endif //HAVE_PAM	return(retval);}boolHylaFAXServer::pamCheck(const char* user, const char* pass){	bool retval = false;#ifdef HAVE_PAM	if (pamh == NULL)	    return false;	if (user == NULL) user = the_user;	if (pass == NULL) pass = passwd.c_str();	struct pam_conv conv = {		pamconv,		(void*)pass	};       	int pamret;	/*	 * Solaris has proprietary pam_[sg]et_item() extension.	 * Sun defines PAM_MSG_VERSION therefore is possible to use	 * it in order to recognize the extensions of Solaris	 */	#ifdef PAM_MSG_VERSION	    pamret = pam_set_item(pamh, PAM_CONV, (const void *)&conv);	#else	    pamret = pam_set_item(pamh, PAM_CONV, &conv);	#endif	if (pamret == PAM_SUCCESS)	    pamret = pam_authenticate(pamh, 0);	if (pamret == PAM_SUCCESS)	    pamret = pam_acct_mgmt(pamh, 0);	if (pamret == PAM_SUCCESS)		retval = true;	pamEnd(pamret);#endif	return retval;}void HylaFAXServer::pamEnd(int pamret){#ifdef HAVE_PAM    if (pamret == PAM_SUCCESS)    {	if (pamIsAdmin())	    state |= S_PRIVILEGED;	char *newname=NULL;	/*	 * Solaris has proprietary pam_[sg]et_item() extension.	 * Sun defines PAM_MSG_VERSION therefore is possible to use	 * it in order to recognize the extensions of Solaris	 */	#ifdef PAM_MSG_VERSION	    pamret = pam_get_item(pamh, PAM_USER, (void **)&newname);	#else	    pamret = pam_get_item(pamh, PAM_USER, (const void **)&newname);	#endif	if (pamret == PAM_SUCCESS && newname != NULL)	    the_user = strdup(newname);	struct passwd* uinfo=getpwnam((const char *)the_user);	if (uinfo != NULL) {	    uid = uinfo->pw_uid;	}	    }    pamret = pam_end(pamh, pamret);    pamh = NULL;#endif //HAVE_PAM}voidHylaFAXServer::passCmd(const char* pass){    if (IS(LOGGEDIN)) {        reply(503, "Already logged in as USER %s.", (const char*) the_user);        return;    }    if (!IS(WAITPASS)) {        reply(503, "Login with USER first.");        return;    }    state &= ~S_WAITPASS;    /*     * Disable long reply messages for old (broken) FTP     * clients if the first character of the password     * is a ``-''.     */    if (pass[0] == '-') {	state &= ~S_LREPLIES;	pass++;    } else	state |= S_LREPLIES;    if (pass[0] == '\0' || !(strcmp(crypt(pass, passwd), passwd) == 0 || pamCheck(the_user, pass))) {	if (++loginAttempts >= maxLoginAttempts) {	    reply(530, "Login incorrect (closing connection).");	    logNotice("Repeated login failures for user %s from %s [%s]"		, (const char*) the_user		, (const char*) remotehost		, (const char*) remoteaddr	    );	    dologout(0);	}	reply(530, "Login incorrect.");	logInfo("Login failed from %s [%s], %s"	    , (const char*) remotehost	    , (const char*) remoteaddr	    , (const char*) the_user	);	return;    }    login(230);}/* * Login is shared between SNPP and HylaFAX RFC 959 protocol, * but different protocols use different codes for success. * We make the caller tell us what success is. */voidHylaFAXServer::login(int code){    loginAttempts = 0;		// this time successful    state |= S_LOGGEDIN;    uid_t ouid = geteuid();    (void) seteuid(0);    bool isSetup = (chroot(".") >= 0 && chdir("/") >= 0);    /*     * Install the client's fax-uid as the effective gid     * so that created files automatically are given the     * correct ``ownership'' (we store the owner's fax-uid     * in the group-id field of the inode).     */    if (isSetup)	(void) setegid(uid);    (void) seteuid(ouid);    if (!isSetup) {	reply(550, "Cannot set privileges.");	end_login();	return;    }#ifdef HAVE_PAM    pam_chrooted = true;#endif    (void) isShutdown(false);	// display any shutdown messages    reply(code, "User %s logged in.", (const char*) the_user);    if (TRACE(LOGIN))	logInfo("FAX LOGIN FROM %s [%s], %s"	    , (const char*) remotehost	    , (const char*) remoteaddr	    , (const char*) the_user	);    (void) umask(077);    if (tracingLevel & (TRACE_INXFERS|TRACE_OUTXFERS))        xferfaxlog = Sys::open(xferfaxLogFile, O_WRONLY|O_APPEND|O_CREAT, 0600);    initDefaultJob();		// setup connection-related state    dirSetup();			// initialize directory handling	if (pamIsAdmin()) state |= S_PRIVILEGED;}voidHylaFAXServer::adminCmd(const char* pass){    fxAssert(IS(LOGGEDIN), "ADMIN command permitted when not logged in");    // NB: null adminwd is permitted    if ((strcmp(crypt(pass, adminwd), adminwd) != 0) && !pamIsAdmin()) {	if (++adminAttempts >= maxAdminAttempts) {	    reply(530, "Password incorrect (closing connection).");	    logNotice("Repeated admin failures from %s [%s]"		, (const char*) remotehost		, (const char*) remoteaddr	    );	    dologout(0);	} else {	    reply(530, "Password incorrect.");	    logInfo("ADMIN failed from %s [%s], %s"		, (const char*) remotehost		, (const char*) remoteaddr		, (const char*) the_user	    );	}	return;    }    if (TRACE(SERVER))	logInfo("FAX ADMIN FROM %s [%s], %s"	    , (const char*) remotehost	    , (const char*) remoteaddr	    , (const char*) the_user	);    adminAttempts = 0;    state |= S_PRIVILEGED;    reply(230, "Administrative privileges established.");}/* * Terminate login as previous user, if any, * resetting state; used when USER command is * given or login fails. */voidHylaFAXServer::end_login(void){    if (IS(LOGGEDIN)) {	uid_t ouid = geteuid();	seteuid(0);	seteuid(ouid);    }    state &= ~(S_LOGGEDIN|S_PRIVILEGED|S_WAITPASS);    passwd = "*";    adminwd = "*";}/* * Record logout in wtmp file, cleanup state, * and exit with supplied status. */voidHylaFAXServer::dologout(int status){    if (IS(LOGGEDIN))	end_login();    if (trigSpec != "") {	fxStr emsg;	cancelTrigger(emsg);    }    for (u_int i = 0, n = tempFiles.length(); i < n; i++)	(void) Sys::unlink(tempFiles[i]);    if (xferfaxlog != -1)        Sys::close(xferfaxlog);    if (clientFd != -1)	Sys::close(clientFd);    if (clientFIFOName != "")	Sys::unlink(clientFIFOName);    for (JobDictIter iter(blankJobs); iter.notDone(); iter++) {	Job* job = iter.value();	fxStr file("/" | job->qfile);	Sys::unlink(file);    }    _exit(status);		// beware of flushing buffers after a SIGPIPE}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区综合| 国产欧美一区二区三区鸳鸯浴| 9久草视频在线视频精品| 国产精品中文字幕欧美| 国精产品一区一区三区mba视频| 美女视频黄久久| 国模套图日韩精品一区二区| 国产一区二区主播在线| 国产91精品免费| 欧美亚洲一区三区| 欧美日韩黄色影视| 欧美日本一道本| 精品久久人人做人人爰| 精品国产百合女同互慰| 国产精品毛片无遮挡高清| 一区二区在线观看免费| 麻豆专区一区二区三区四区五区| 国产在线精品一区二区三区不卡| 国产成人免费在线观看| 欧美日本在线视频| 国产精品视频九色porn| 亚洲国产aⅴ成人精品无吗| 国产在线日韩欧美| 欧美老人xxxx18| 亚洲欧美日韩国产综合在线 | 五月激情六月综合| 国产高清久久久久| 欧美精品国产精品| 亚洲色欲色欲www| 成人在线综合网| 精品久久久久久无| 青青草97国产精品免费观看无弹窗版| 国产传媒欧美日韩成人| 日韩一区二区在线观看视频| 亚洲精品日日夜夜| www.欧美.com| 国产精品久久久久桃色tv| 国产福利一区二区三区视频在线| 91麻豆精品国产91久久久更新时间 | 91麻豆精品国产91| 日韩不卡一区二区三区| 欧美片在线播放| 日韩精品午夜视频| 欧美xfplay| 国产成人午夜精品5599| 国产清纯在线一区二区www| jvid福利写真一区二区三区| 国产精品素人一区二区| 成人av在线播放网站| 亚洲免费观看高清在线观看| 色一情一乱一乱一91av| 日韩国产欧美在线视频| 久久久综合视频| 一本色道亚洲精品aⅴ| 亚洲国产日韩在线一区模特| 欧美一级二级三级乱码| 成人av片在线观看| 亚洲国产日韩精品| 国产视频一区在线观看 | 中文字幕免费不卡| 日韩亚洲欧美成人一区| 高清在线观看日韩| 日韩高清不卡在线| √…a在线天堂一区| 777午夜精品视频在线播放| 国产在线不卡一区| 成人免费看的视频| 亚洲欧洲精品一区二区三区| 日韩精品最新网址| 欧美视频在线观看一区| 国产成人丝袜美腿| 免费观看91视频大全| 一区二区三区精品久久久| 久久综合五月天婷婷伊人| 欧美日韩欧美一区二区| 99国产精品一区| 国产成人在线免费观看| 免费成人美女在线观看.| 亚洲高清免费观看 | 国产精品影视网| 天堂成人免费av电影一区| 一区二区三区四区中文字幕| 亚洲欧美成人一区二区三区| 欧美日产在线观看| 欧美色综合久久| 欧美午夜精品一区二区三区| 色8久久人人97超碰香蕉987| av资源站一区| 在线中文字幕一区二区| 色呦呦一区二区三区| 在线日韩一区二区| 欧美在线观看视频一区二区三区 | 国产精品国产自产拍在线| 欧美国产视频在线| 亚洲欧美成aⅴ人在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲私人黄色宅男| 亚洲国产日韩精品| 久久精品国产精品亚洲精品 | 日本一区二区综合亚洲| 国产精品三级视频| 午夜精品久久久久久久99樱桃| 美日韩一区二区| 91性感美女视频| 欧美一区二区观看视频| 久久久久9999亚洲精品| 亚洲另类春色国产| 国产精品一区二区久久不卡| 99视频一区二区| 精品国产乱码久久久久久久久| 中文字幕va一区二区三区| 一区二区三区在线视频播放| 韩国视频一区二区| 欧美日韩mp4| 亚洲三级在线免费| 欧美三级电影在线观看| 《视频一区视频二区| 国产一区二区在线影院| 欧美一区二区黄色| 老司机一区二区| 91精品国产91久久久久久最新毛片| 亚洲色图视频网站| 国产91精品一区二区麻豆网站| 欧美电影免费观看高清完整版在 | 欧美日韩一区久久| 亚洲国产中文字幕在线视频综合| 99久久久久久99| 中文字幕亚洲一区二区va在线| 国产成人综合网| 国产精品麻豆久久久| 99久久免费视频.com| 国产精品国产三级国产普通话蜜臀| 国产激情一区二区三区四区| 国产亲近乱来精品视频| 99re成人在线| 午夜电影一区二区三区| 精品少妇一区二区三区免费观看| 精品无码三级在线观看视频 | 另类小说一区二区三区| 亚洲精品一区二区三区福利| 国产经典欧美精品| 一区二区视频免费在线观看| 欧美丰满少妇xxxxx高潮对白 | 91日韩一区二区三区| 欧美日韩免费高清一区色橹橹| 日韩一区在线播放| 7777精品伊人久久久大香线蕉完整版 | 天天影视涩香欲综合网 | 日韩1区2区日韩1区2区| 国产精品嫩草久久久久| 色婷婷综合五月| 国产精品影视网| 日日摸夜夜添夜夜添国产精品| 91精品国产综合久久久久久久 | 国产日韩欧美精品综合| 欧美亚一区二区| 国产一区二区在线观看视频| 亚洲图片有声小说| 日韩理论在线观看| 国产亚洲欧美日韩在线一区| 欧美日韩dvd在线观看| 色哟哟日韩精品| 成人国产电影网| 成人自拍视频在线观看| 狠狠色综合日日| 国产呦精品一区二区三区网站| 亚洲成人一区在线| 亚洲成人www| 裸体健美xxxx欧美裸体表演| 亚洲丶国产丶欧美一区二区三区| 综合亚洲深深色噜噜狠狠网站| 国产午夜精品久久久久久久 | 人人精品人人爱| 六月婷婷色综合| 国产传媒日韩欧美成人| 成人av动漫在线| 在线观看亚洲a| 日韩欧美不卡在线观看视频| 日韩精品一区国产麻豆| 久久久精品国产免费观看同学| 久久精品亚洲精品国产欧美kt∨| 亚洲另类中文字| 天堂va蜜桃一区二区三区| 美女一区二区久久| 国产自产高清不卡| 色噜噜狠狠成人中文综合| 欧美日韩极品在线观看一区| 欧美精品一区二区三区在线| 国产午夜亚洲精品理论片色戒| 亚洲欧洲国产日本综合| 天堂资源在线中文精品| 看国产成人h片视频| 99国内精品久久| 日韩精品中文字幕在线不卡尤物 | 久久久久久久久久美女| 亚洲激情六月丁香| 成人av在线一区二区三区| 欧美另类z0zxhd电影| 亚洲欧洲性图库| 国产成人av一区|