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

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

?? vchkpw.c

?? 相當(dāng)優(yōu)秀的 UNIX 進(jìn)程管理工具
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* * $Id: vchkpw.c,v 1.11 2004/01/13 15:59:42 tomcollins Exp $ * Copyright (C) 1999-2003 Inter7 Internet Technologies, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA *  */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <syslog.h>#include <errno.h>#include <sys/wait.h>#include <pwd.h>#include <sys/types.h>#include "config.h"#include "vpopmail.h"#include "vlog.h"#include "vauth.h"#include "vlimits.h"/* for cram-md5 */#include "global.h"#include "md5.h"#include "hmac_md5.h"static char hextab[]="0123456789abcdef";#ifdef HAS_SHADOW#include <shadow.h>#endif/* Definitions */#define VCHKPW_USER     "USER="#define VCHKPW_HOME     "HOME="#define VCHKPW_SHELL    "SHELL=NOLOGIN"#define VCHKPW_VPOPUSER "VPOPUSER="/* For tracking ip of client asking for pop service */char *IpAddr;/* Embed the port in the log when smtp-auth is used */char VchkpwLogName[18];/* For logging, relay info */unsigned int LocalPort;/* storage of authentication information */#define AUTH_SIZE 156#define AUTH_INC_SIZE 155char TheName[AUTH_SIZE];char TheUser[AUTH_SIZE];char ThePass[AUTH_SIZE]; 	/* for C/R this is 'TheResponse' */char TheChallenge[AUTH_SIZE];char TheCrypted[AUTH_SIZE];char TheDomain[AUTH_SIZE];/* log line buffer */#define LOG_LINE_SIZE 500char LogLine[LOG_LINE_SIZE];/* environment variable buffers */#define MAX_ENV_BUF 100static char envbuf1[MAX_ENV_BUF];static char envbuf2[MAX_ENV_BUF];static char envbuf3[MAX_ENV_BUF];static char envbuf4[MAX_ENV_BUF];/* shared data */uid_t pw_uid;gid_t pw_gid;char *pw_dir=NULL;struct vqpasswd *vpw = NULL;/* Forward declaration */char *sysc(char *mess);void login_virtual_user();void login_system_user();void read_user_pass();void vlog(int verror, char *TheUser, char *TheDomain, char *ThePass, char *TheName, char *IpAddr, char *LogLine);void vchkpw_exit(int err);void run_command(char *prog);int authcram(unsigned char *response, unsigned char *challenge, unsigned char *password);int authapop(unsigned char *password, unsigned char *timestamp, unsigned char *clearpass);#define POP_CONN  0#define SMTP_CONN 1#define IMAP_CONN 2int ConnType = 0;int main( int argc, char **argv){ char *tmpstr;  if ( (IpAddr = get_remote_ip())  == NULL) IpAddr="";  if ( (tmpstr = getenv("TCPLOCALPORT")) == NULL) LocalPort = 110;  else LocalPort = atoi(tmpstr);  /* Check which port they are coming in on and    * setup the log name and connection type   */  switch(LocalPort) {    case 25:      strcpy(VchkpwLogName, "vchkpw-smtp");      ConnType = SMTP_CONN;      break;    case 110:      strcpy(VchkpwLogName, "vchkpw-pop3");      ConnType = POP_CONN;      break;    case 143:      strcpy(VchkpwLogName, "vchkpw-imap");      ConnType = IMAP_CONN;      break;    case 465:      strcpy(VchkpwLogName, "vchkpw-smtps");      ConnType = SMTP_CONN;      break;    case 587:      strcpy(VchkpwLogName, "vchkpw-submission");      ConnType = SMTP_CONN;      break;    case 993:      strcpy(VchkpwLogName, "vchkpw-imaps");      ConnType = IMAP_CONN;      break;    case 995:      strcpy(VchkpwLogName, "vchkpw-pop3s");      ConnType = POP_CONN;      break;    default:      sprintf(VchkpwLogName, "vchkpw-%u", LocalPort);      /*       * We're running on an unknown port, so it could be any one of       * the three protocols (SMTP, POP or IMAP).  Try to guess the       * protocol based on argv[1].  For SMTP AUTH, argv[1] is usually       * /bin/true.  For IMAP, it's usually imapd (or something like       * that).  Keep the old default of POP.       * Note that the popular Courier-IMAP does not use vchkpw, it       * links libvpopmail directly into its server.       */      if (strstr (argv[1], "true") != NULL)  /* used as STMP AUTH */        ConnType = SMTP_CONN;      else if (strstr (argv[1], "imap") != NULL)  /* used with IMAP */        ConnType = IMAP_CONN;      else  /* default to POP */        ConnType = POP_CONN;      break;  }  /* read in the user name and password from file descriptor 3 */  read_user_pass();  if ( parse_email( TheName, TheUser, TheDomain, AUTH_SIZE) != 0 ) {    snprintf(LogLine, sizeof(LogLine),       "%s: invalid user/domain characters %s:%s",       VchkpwLogName, TheName, IpAddr);    vlog(VLOG_ERROR_PASSWD, TheUser, TheDomain, ThePass,                             TheName, IpAddr, LogLine);        vchkpw_exit(20);  }  /* check if this virtual domain is in the system    * we look in /var/qmail/users/cdb file   * and while we are at it, let's get the domains   * user id and group id.   */  if ( (vpw = vauth_getpw(TheUser, TheDomain)) != NULL ) {    vget_assign(TheDomain,NULL,0,&pw_uid,&pw_gid);    login_virtual_user();#ifdef ENABLE_PASSWD  /* if it is not in the virtual domains    * then check the user in /etc/passwd   */  } else if ( ENABLE_PASSWD == 1 ) {    login_system_user();#endif  } else {    snprintf(LogLine, sizeof(LogLine), "%s: vpopmail user not found %s@%s:%s",             VchkpwLogName, TheUser, TheDomain, IpAddr);    vlog(VLOG_ERROR_LOGON, TheUser, TheDomain, ThePass,                            TheName, IpAddr, LogLine);    vchkpw_exit(3);  }  vclose();  /* The user is authenticated, now setup the environment */   /* Set the programs effective group id */   if ( ConnType != SMTP_CONN && setgid(pw_gid) == -1 ) {    snprintf(LogLine, sizeof(LogLine), "%s: setgid %lu failed errno %d %s@%s:%s",       VchkpwLogName, (long unsigned)pw_gid, errno, TheUser, TheDomain, IpAddr);    vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass,                               TheName, IpAddr, LogLine);    vchkpw_exit(4);  }  /* Set the programs effective user id */   if ( ConnType != SMTP_CONN && setuid(pw_uid) == -1 ) {    snprintf(LogLine, sizeof(LogLine), "%s: setuid %lu failed errno %d %s@%s:%s",       VchkpwLogName, (long unsigned)pw_uid, errno, TheUser, TheDomain, IpAddr);    vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass,                                 TheName, IpAddr, LogLine);    vchkpw_exit(5);  }  /* Change to the users Maildir directory    * don't do this for smtp authentication connections   */  if (ConnType != SMTP_CONN &&  chdir(pw_dir) == -1) {    if ( vpw!=NULL) {       if ( vmake_maildir(TheDomain, vpw->pw_dir )!= VA_SUCCESS ) {        snprintf(LogLine, sizeof(LogLine),           "%s: autocreate dir errno %d %s %s@%s:%s",           VchkpwLogName, errno, pw_dir, TheUser, TheDomain, IpAddr);        vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass,                                   TheName, IpAddr, LogLine);        vchkpw_exit(6);      }      chdir(pw_dir);    } else {      snprintf(LogLine, sizeof(LogLine), "%s: chdir failed errno %d %s %s@%s:%s",         VchkpwLogName, errno, pw_dir, TheUser, TheDomain, IpAddr);      vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass,                                 TheName, IpAddr, LogLine);      vchkpw_exit(6);    }  }  /* The the USER variable */  snprintf (envbuf1, sizeof(envbuf1), "%s%s", VCHKPW_USER, TheUser);  if ( putenv(envbuf1) == -1 ) {    snprintf(LogLine, sizeof(LogLine),       "%s: putenv(USER) failed errno %d %s@%s:%s",       VchkpwLogName, errno, TheUser, TheDomain, IpAddr);    vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass,                               TheName, IpAddr, LogLine);    vchkpw_exit(7);  }  /* Now HOME */  snprintf (envbuf2, sizeof(envbuf2), "%s%s", VCHKPW_HOME, pw_dir);  if ( putenv(envbuf2) == -1 ) {    snprintf(LogLine, sizeof(LogLine),       "%s: putenv(HOME) failed errno %d %s@%s:%s",       VchkpwLogName, errno, TheUser, TheDomain, IpAddr);    vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass,                               TheName, IpAddr, LogLine);    vchkpw_exit(8);  }  /* Now SHELL */  strncpy(envbuf3,VCHKPW_SHELL,sizeof(envbuf3));  envbuf3[sizeof(envbuf3)-1] = 0;   /* make sure it's NULL terminated */  if ( putenv(envbuf3) == -1 ) {    snprintf(LogLine, sizeof(LogLine),       "%s: putenv(SHELL) failed errno %d %s@%s:%s",       VchkpwLogName, errno, TheUser, TheDomain, IpAddr);    vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass,                               TheName, IpAddr, LogLine);    vchkpw_exit(9);  }  /* Now VPOPUSER */  snprintf (envbuf4, sizeof(envbuf4), "%s%s", VCHKPW_VPOPUSER, TheName);  if ( putenv(envbuf4) == -1 ) {    snprintf(LogLine, sizeof(LogLine),      "%s: putenv(VPOPUSER) failed errno %d %s@%s:%s",       VchkpwLogName, errno, TheUser, TheDomain, IpAddr);    vlog(VLOG_ERROR_INTERNAL, TheUser, TheDomain, ThePass,                               TheName, IpAddr, LogLine);    vchkpw_exit(10);  }  /* close the log connection */  if ( ENABLE_LOGGING > 0 ) closelog();  /* And now a simple way to kick off the next program */  execvp(argv[1],argv+1);  /* all done, time to release resources and go away */   exit(0);}/* clean a buffer for syslog */char *sysc(char *mess){ char *ripper;  for(ripper=mess;*ripper!=0;++ripper) {    if ( *ripper=='%' ) *ripper = '#';  }  return(mess);}void read_user_pass(){ int i,j,l;  /* Read the user and password from file descriptor 3   * use TheDomain variable as temporary storage of the    * full incoming line    */   memset(TheDomain,0,AUTH_SIZE);  for(i=0;i<AUTH_SIZE;i+=j){            /* read a chunk */    j = read(3,&TheDomain[i],AUTH_SIZE-i-1);    /* on error exit out */    if ( j == -1 ) {           fprintf(stderr, "%s: vchkpw is only for talking with qmail-popup and qmail-pop3d. \It is not for runnning on the command line.\n", VchkpwLogName);      vchkpw_exit(11);    } else if ( j == 0 ) {      break;    }  }  /* close the user/pass file descriptor */  close(3);  /* parse out the name */  memset(TheName,0,AUTH_SIZE);  for(l=0;l<AUTH_INC_SIZE;++l){    TheName[l] = TheDomain[l];    if ( TheName[l] == 0 ) break;    if ( l==i ) break;  }  /* parse out the password  (or response or C/R) */  memset(ThePass,0,AUTH_SIZE);  for(j=0,++l;l<AUTH_INC_SIZE;++j,++l){    ThePass[j] = TheDomain[l];    if ( ThePass[j] == 0 ) break;    if ( l==i ) break;  }  /* parse out the challenge */  memset(TheChallenge,0,AUTH_SIZE);  for(j=0,++l;l<AUTH_INC_SIZE;++j,++l){    TheChallenge[j] = TheDomain[l];    if ( TheChallenge[j] == 0 ) break;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色狠狠色综合系列| 国产美女精品在线| 色偷偷久久一区二区三区| 国产目拍亚洲精品99久久精品| 美女脱光内衣内裤视频久久网站| 欧美另类videos死尸| 亚洲电影在线播放| 欧美三级一区二区| 亚洲成a人片综合在线| 欧美日韩国产首页在线观看| 亚洲成人在线观看视频| 欧美日韩一二三区| 日本一不卡视频| 日韩一二三区视频| 精久久久久久久久久久| 久久精品综合网| 成人av在线播放网址| 中文字幕亚洲不卡| 色先锋资源久久综合| 亚洲综合视频在线| 欧美日韩亚洲综合一区二区三区| 午夜电影网一区| 日韩女优电影在线观看| 国内精品国产成人国产三级粉色| 国产亚洲成aⅴ人片在线观看 | 亚洲一区二区在线播放相泽| 在线亚洲一区二区| 视频在线观看一区| 精品日韩一区二区| 高清国产午夜精品久久久久久| 国产精品成人午夜| 欧美体内she精高潮| 日本午夜精品视频在线观看| 精品盗摄一区二区三区| 成人一区二区三区视频| 一区二区三区精品| 91精品国产日韩91久久久久久| 黄色日韩三级电影| 中文av字幕一区| 欧美视频精品在线| 久草这里只有精品视频| 国产精品沙发午睡系列990531| 色婷婷综合中文久久一本| 亚洲一区精品在线| 精品88久久久久88久久久| gogo大胆日本视频一区| 五月天精品一区二区三区| 精品国产免费一区二区三区香蕉| 成人黄色国产精品网站大全在线免费观看| 亚洲精选一二三| 日韩一区二区三区在线观看| 国产99久久久国产精品免费看| 亚洲乱码中文字幕| 欧美刺激午夜性久久久久久久| 大白屁股一区二区视频| 天堂蜜桃一区二区三区| 国产丝袜欧美中文另类| 欧美三级一区二区| 国产精品 欧美精品| 亚洲图片欧美色图| 久久美女高清视频| 欧美午夜寂寞影院| 国产成人精品影视| 性久久久久久久久| 国产精品天干天干在观线| 欧美伦理电影网| 成人动漫av在线| 日本人妖一区二区| 亚洲欧美国产三级| 精品国产欧美一区二区| 在线免费精品视频| 加勒比av一区二区| 亚洲午夜激情av| 中文av一区二区| 欧美大片在线观看一区| 在线观看欧美黄色| 成人国产免费视频| 久久不见久久见免费视频1| 亚洲精品v日韩精品| 久久久99精品免费观看| 在线不卡的av| 91视频免费看| 国产成人在线视频网站| 日本午夜一本久久久综合| 亚洲精品欧美二区三区中文字幕| 久久亚洲一级片| 欧美高清激情brazzers| 91片黄在线观看| 国产精品99久| 美美哒免费高清在线观看视频一区二区| 亚洲美女视频在线| 欧美极品美女视频| 精品日韩一区二区三区 | 欧美午夜电影网| 成人国产一区二区三区精品| 激情小说欧美图片| 日本va欧美va精品发布| 亚洲在线中文字幕| 国产精品卡一卡二| 久久久久久久久蜜桃| 欧美一区二区在线观看| 日本道精品一区二区三区| 国产精品中文字幕一区二区三区| 五月天激情小说综合| 亚洲精品网站在线观看| 国产精品初高中害羞小美女文| 精品国产1区2区3区| 亚洲一区在线观看网站| 欧美国产视频在线| 337p粉嫩大胆噜噜噜噜噜91av| 欧美区一区二区三区| 欧美综合久久久| 色婷婷av一区二区三区软件| av高清不卡在线| 不卡视频一二三四| 国产伦精一区二区三区| 老司机午夜精品99久久| 青青草一区二区三区| 午夜欧美2019年伦理| 亚洲午夜三级在线| 亚洲最新视频在线观看| 亚洲免费av网站| 亚洲三级电影全部在线观看高清| 中文字幕一区二区三区蜜月 | 欧美日韩国产成人在线免费| 色哟哟精品一区| 91高清在线观看| 欧美亚洲一区二区三区四区| 在线视频一区二区免费| 欧美色偷偷大香| 欧美日韩国产影片| 91精品国产色综合久久不卡蜜臀| 7777精品伊人久久久大香线蕉超级流畅 | 欧美videos大乳护士334| 日韩一区二区中文字幕| 日韩视频免费观看高清在线视频| 日韩视频在线你懂得| 日韩美女在线视频| 精品国产一区二区三区av性色| 2019国产精品| 欧美大片拔萝卜| 精品精品国产高清a毛片牛牛| 日韩一区二区精品在线观看| 日韩欧美的一区| 精品久久久久久久人人人人传媒 | 色天天综合久久久久综合片| 在线看日韩精品电影| 欧美吻胸吃奶大尺度电影 | 中文字幕在线观看一区| 综合激情成人伊人| 一区二区三区在线视频播放| 亚洲国产另类av| 蜜桃传媒麻豆第一区在线观看| 国模冰冰炮一区二区| 成人性生交大片免费看中文 | 欧美三级韩国三级日本一级| 欧美久久久久中文字幕| 精品国产一区二区三区久久影院| 国产午夜精品一区二区| 亚洲欧美在线aaa| www.欧美亚洲| 91福利视频在线| 日产国产高清一区二区三区 | 一区二区三区欧美激情| 午夜精品一区二区三区免费视频 | 91在线观看美女| 欧美色电影在线| 精品久久国产97色综合| 国产精品理论片| 午夜欧美在线一二页| 精品一区二区三区免费观看| 成人黄色777网| 欧美日韩情趣电影| 久久久久久黄色| 一区二区三区精品视频| 久久精品国产一区二区三| 波多野结衣精品在线| 欧美日韩一区二区三区不卡 | 日韩视频一区二区| 中文字幕一区在线观看| 日韩成人精品视频| 高清视频一区二区| 欧美乱妇20p| 中文字幕的久久| 偷偷要91色婷婷| 成人性生交大合| 欧美美女一区二区| 欧美激情一区不卡| 日本不卡1234视频| jlzzjlzz欧美大全| 日韩区在线观看| 亚洲人成网站精品片在线观看| 麻豆精品视频在线观看视频| 91小视频在线免费看| 日韩免费看的电影| 一区二区三区91| 国产成人av电影在线| 欧美放荡的少妇| 亚洲欧美在线视频| 狠狠v欧美v日韩v亚洲ⅴ|