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

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

?? vpopmail.c

?? 相當優(yōu)秀的 UNIX 進程管理工具
?? C
?? 第 1 頁 / 共 5 頁
字號:
  /* Michael Bowe 23rd August 2003    * should we do a vset_default_domain(domain) here?   * This function is called by vdeluser.c which will ensure   * domain is set. But what if this function is called from   * somewhere else and is passed with a null domain?   * Should we display en error (which is what will happen when   * vget_assign runs below.   */  umask(VPOPMAIL_UMASK);  lowerit(user);  lowerit(domain);  /* see if the user exists in the authentication system */  if ((mypw = vauth_getpw(user, domain)) == NULL) {     return(VA_USER_DOES_NOT_EXIST);  }  /* backup the dir where the vdeluser was run from */  getcwd(calling_dir, sizeof(calling_dir));  /* lookup the location of this domain's directory */  if ( vget_assign(domain, Dir, sizeof(Dir), &uid, &gid ) ==NULL ) {    return(VA_DOMAIN_DOES_NOT_EXIST);  }  /* change into that directory */  if ( chdir(Dir) != 0 ) {    chdir(calling_dir);    return(VA_BAD_D_DIR);  }  /* del the user from the auth system */  if (vauth_deluser( user, domain ) !=0 ) {    fprintf (stderr, "Failed to delete user from auth backend\n");    chdir(calling_dir);    return (-1);  }  dec_dir_control(domain, uid, gid);  /* remove the user's directory from the file system    * and check for error   */  if ( vdelfiles(mypw->pw_dir) != 0 ) {    fprintf(stderr, "could not remove %s\n", mypw->pw_dir);    chdir(calling_dir);    return(VA_BAD_DIR);  }  /* go back to the callers directory */  chdir(calling_dir);  return(VA_SUCCESS);}/************************************************************************//* * make all characters in a string be lower case */void lowerit(char *instr ){ int size;  if (instr==NULL) return;  for(size=0;*instr!=0;++instr,++size ) {    if (isupper((int)*instr)) *instr = tolower(*instr);        /* Michael Bowe 23rd August 2003     * this looks like a bit of a kludge...     * how can we improve on it?     */    /* add alittle size protection */    if ( size == 156 ) {      *instr = 0;      return;    }  } }/************************************************************************/int update_file(char *filename, char *update_line){ FILE *fs = NULL; FILE *fs1 = NULL;#ifdef FILE_LOCKING FILE *fs3 = NULL;#endif char tmpbuf1[MAX_BUFF]; char tmpbuf2[MAX_BUFF]; int user_assign = 0; int i;#ifdef FILE_LOCKING  snprintf(tmpbuf1, sizeof(tmpbuf1), "%s.lock", filename);  if ( (fs3 = fopen(tmpbuf1, "w+")) == NULL ) {    fprintf(stderr, "could not open lock file %s\n", tmpbuf1);    return(VA_COULD_NOT_UPDATE_FILE);  }  if ( get_write_lock(fs3) < 0 ) return(-1);#endif  snprintf(tmpbuf1, sizeof(tmpbuf1), "%s.%lu", filename, (long unsigned)getpid());  fs1 = fopen(tmpbuf1, "w+");  if ( fs1 == NULL ) {#ifdef FILE_LOCKING    unlock_lock(fileno(fs3), 0, SEEK_SET, 0);    fclose(fs3);    return(VA_COULD_NOT_UPDATE_FILE);#endif  }  snprintf(tmpbuf1, sizeof(tmpbuf1), "%s", filename);  if ( (fs = fopen(tmpbuf1, "r+")) == NULL ) {    if ( (fs = fopen(tmpbuf1, "w+")) == NULL ) {      fclose(fs1);#ifdef FILE_LOCKING      fclose(fs3);      unlock_lock(fileno(fs3), 0, SEEK_SET, 0);#endif      return(VA_COULD_NOT_UPDATE_FILE);    }  }  while( fgets(tmpbuf1,sizeof(tmpbuf1),fs) != NULL ) {    snprintf(tmpbuf2, sizeof(tmpbuf2), "%s", tmpbuf1);    for(i=0;tmpbuf1[i]!=0;++i) {      if (tmpbuf1[i]=='\n') {        tmpbuf1[i]=0;      }    }    /* special case for users/assign */    if ( strncmp(tmpbuf1, ".", sizeof(tmpbuf1)) == 0 ) {      fprintf(fs1, "%s\n", update_line);      user_assign = 1;    } else if ( strncmp(tmpbuf1, update_line, sizeof(tmpbuf1)) != 0 ) {      fputs(tmpbuf2, fs1);      }  }  if ( user_assign == 1 ) fprintf(fs1, ".\n");  else fprintf(fs1, "%s\n", update_line);  fclose(fs);  fclose(fs1);  snprintf(tmpbuf1, sizeof(tmpbuf1), "%s", filename);  snprintf(tmpbuf2, sizeof(tmpbuf2), "%s.%lu", filename, (long unsigned)getpid());  rename(tmpbuf2, tmpbuf1);#ifdef FILE_LOCKING  unlock_lock(fileno(fs3), 0, SEEK_SET, 0);  fclose(fs3);#endif  return(0);}/************************************************************************//* * Update a users quota */int vsetuserquota( char *username, char *domain, char *quota ){ struct vqpasswd *mypw; char *formattedquota; int ret;  if ( strlen(username) >= MAX_PW_NAME ) return(VA_USER_NAME_TOO_LONG);#ifdef USERS_BIG_DIR    if ( strlen(username) == 1 ) return(VA_ILLEGAL_USERNAME);#endif    if ( strlen(domain) >= MAX_PW_DOMAIN ) return(VA_DOMAIN_NAME_TOO_LONG);  if ( strlen(quota) >= MAX_PW_QUOTA )    return(VA_QUOTA_TOO_LONG);  lowerit(username);  lowerit(domain);  /* correctly format the quota string,   * and then store the quota into the auth backend   */  formattedquota = format_maildirquota(quota);  ret = vauth_setquota( username, domain, formattedquota);  if (ret != VA_SUCCESS ) return(ret);  mypw = vauth_getpw( username, domain );  remove_maildirsize(mypw->pw_dir);  if (strcmp (quota, "NOQUOTA") != 0) {   uid_t uid;   gid_t gid;   char maildir[MAX_BUFF];    snprintf(maildir, sizeof(maildir), "%s/Maildir/", mypw->pw_dir);    umask(VPOPMAIL_UMASK);    (void)vmaildir_readquota(maildir, formattedquota);    if ( vget_assign(domain, NULL, 0, &uid, &gid)!=NULL) {      strcat(maildir, "maildirsize");      chown(maildir,uid,gid);    }  }  return(0);}/************************************************************************//* * count the lines in /var/qmail/control/rcpthosts */int count_rcpthosts(){ char tmpstr1[MAX_BUFF]; FILE *fs; int count;  snprintf(tmpstr1, sizeof(tmpstr1), "%s/control/rcpthosts", QMAILDIR);  fs = fopen(tmpstr1, "r");  if ( fs == NULL ) return(0);  count = 0;  while( fgets(tmpstr1, sizeof(tmpstr1), fs) != NULL ) ++count;  fclose(fs);  return(count);}/************************************************************************//* * compile the morercpthosts file using qmail-newmrh program */int compile_morercpthosts(){ int pid;  pid=vfork();  if ( pid==0){    execl(QMAILNEWMRH,"qmail-newmrh", NULL);    exit(127);  } else {    wait(&pid);  }  return(0);}/************************************************************************//* * fill out a passwd structure from then next * line in a file  */ struct vqpasswd *vgetent(FILE *pw){    static struct vqpasswd pwent;    static char line[MAX_BUFF];    int i=0,j=0;    char *tmpstr;    char *tmpstr1;    if (fgets(line,sizeof(line),pw) == NULL) return NULL;    for (i=0; line[i] != 0; i++) if (line[i] == ':') j++;    if (j < 6) return NULL;    tmpstr = line;    pwent.pw_name   = line;    while (*tmpstr!=0 && *tmpstr!=':') ++tmpstr;    *tmpstr = 0; ++tmpstr;    pwent.pw_passwd = tmpstr;    while (*tmpstr!=0 && *tmpstr!=':') ++tmpstr;    *tmpstr = 0; ++tmpstr;     tmpstr1 = tmpstr;     while (*tmpstr!=0 && *tmpstr!=':') ++tmpstr;    *tmpstr = 0; ++tmpstr;    pwent.pw_uid = atoi(tmpstr1);     tmpstr1 = tmpstr;     while (*tmpstr!=0 && *tmpstr!=':') ++tmpstr;    *tmpstr = 0; ++tmpstr;    pwent.pw_gid = atoi(tmpstr1);     pwent.pw_gecos  = tmpstr;     while (*tmpstr!=0 && *tmpstr!=':') ++tmpstr;    *tmpstr = 0; ++tmpstr;    pwent.pw_dir    = tmpstr;     while (*tmpstr!=0 && *tmpstr!=':') ++tmpstr;    if (*tmpstr) { *tmpstr = 0; ++tmpstr; }    pwent.pw_shell  = tmpstr;     while (*tmpstr!=0 && *tmpstr!=':' && *tmpstr!='\n') ++tmpstr;    if (*tmpstr) { *tmpstr = 0; ++tmpstr; }#ifdef CLEAR_PASS    pwent.pw_clear_passwd  = tmpstr;     while (*tmpstr!=0 && *tmpstr!='\n') ++tmpstr;    if (*tmpstr) { *tmpstr = 0; ++tmpstr; }#endif    return &pwent;}/************************************************************************//* * figure out where to put the user and * make the directories if needed * * if successfull, return a pointer to the user hash * on error return NULL */char *make_user_dir(char *username, char *domain, uid_t uid, gid_t gid){ char *user_hash; struct vqpasswd *mypw; char calling_dir[MAX_BUFF]; char domain_dir[MAX_BUFF]; const char *dirnames[] = {"Maildir", "Maildir/new", "Maildir/cur", 	"Maildir/tmp"}; int i;  verrori = 0;  /* record the dir where the command was run from */  getcwd(calling_dir, sizeof(calling_dir));  /* retrieve the dir that stores this domain */  if (vget_assign(domain, domain_dir, sizeof(domain_dir), NULL, NULL) == NULL) {    fprintf(stderr, "Error. vget_assign() failed for domain : %s",domain);     return(NULL);  }  /* go to the dir for our chosen domain */  chdir(domain_dir);   user_hash="";#ifdef USERS_BIG_DIR  /* go into a user hash dir if required */  open_big_dir(domain, uid, gid);  user_hash = next_big_dir(uid, gid);  close_big_dir(domain, uid, gid);  chdir(user_hash);#endif  /* check the length of the dir path to make sure it is not too      long to save back to the auth backend */  if ((strlen(domain_dir)+strlen(user_hash)+strlen(username)) >= MAX_PW_DIR) {    fprintf (stderr, "Error. Path exceeds maximum permitted length\n");    chdir(calling_dir);    return (NULL);  }  /* create the users dir, including all the Maildir structure */   if ( mkdir(username, VPOPMAIL_DIR_MODE) != 0 ) {    /* need to add some code to remove the hashed dirs we created above... */    verrori = VA_EXIST_U_DIR;    chdir(calling_dir);    return(NULL);  }  if ( chdir(username) != 0 ) {    /* back out of changes made above */    chdir(domain_dir); chdir(user_hash); vdelfiles(username);    chdir(calling_dir);    fprintf(stderr, "make_user_dir: error 2\n");    return(NULL);  }  for (i = 0; i < sizeof(dirnames)/sizeof(dirnames[0]); i++) {    if (mkdir(dirnames[i],VPOPMAIL_DIR_MODE) == -1){       fprintf(stderr, "make_user_dir: failed on %s\n", dirnames[i]);      /* back out of changes made above */      chdir("..");      vdelfiles(username);      chdir(calling_dir);      return(NULL);    }  }  /* set permissions on the user's dir */  r_chown(".", uid, gid);  /* see if the user already exists in the auth backend */  mypw = vauth_getpw( username, domain);  if ( mypw != NULL ) {     /* user does exist in the auth backend, so fill in the dir field */    mypw->pw_dir = malloc(MAX_PW_DIR);    if ( strlen(user_hash) > 0 ) {      snprintf(mypw->pw_dir, MAX_PW_DIR, "%s/%s/%s", domain_dir, user_hash, username);    } else {      snprintf(mypw->pw_dir, MAX_PW_DIR, "%s/%s", domain_dir, username);    }    /* save these values to the auth backend */    vauth_setpw( mypw, domain );#ifdef SQWEBMAIL_PASS    vsqwebmail_pass( mypw->pw_dir, mypw->pw_passwd, uid, gid);#endif    free (mypw->pw_dir);  }  chdir(calling_dir);  return(user_hash);}/************************************************************************/int r_mkdir(char *path, uid_t uid, gid_t gid ){ char tmpbuf[MAX_BUFF]; int i;  for(i=0;path[i]!=0;++i){    if ( (i > 0) && (path[i] == '/') ) {      tmpbuf[i] = 0;      if (mkdir(tmpbuf,VPOPMAIL_DIR_MODE) == 0)        chown(tmpbuf, uid, gid);    }    tmpbuf[i] = path[i];  }  mkdir(path,VPOPMAIL_DIR_MODE);  chown(path, uid, gid);  return(0);}/************************************************************************/#ifdef APOPchar *dec2hex(unsigned char *digest){  static char ascii[33];  char *hex="0123456789abcdef";  int i,j,k;  memset(ascii,0,sizeof(ascii));  for (i=0; i < 16; i++) {    j = digest[i]/16;    k = digest[i]%16;    ascii[i*2] = hex[j];    ascii[(i*2)+1] = hex[k];  }  return ascii;}#endif/************************************************************************//* Function used by qmailadmin to auth users */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产欧美日韩另类综合| 狠狠色狠狠色综合日日91app| 久久久国际精品| 日韩一卡二卡三卡| 91精品国产欧美一区二区18| 欧美剧在线免费观看网站| 在线不卡a资源高清| 91精品麻豆日日躁夜夜躁| 日韩一区二区不卡| 久久精品夜色噜噜亚洲aⅴ| 国产亚洲一本大道中文在线| 国产视频一区在线播放| 中文字幕一区二区不卡| 亚洲在线成人精品| 麻豆精品在线观看| 国产精品一二三在| 97久久久精品综合88久久| 色婷婷久久99综合精品jk白丝| 在线精品视频免费播放| 欧美精品一二三区| 久久久久久久综合色一本| 国产精品福利在线播放| 亚洲图片欧美色图| 久久99精品久久久久婷婷| 国产xxx精品视频大全| 色婷婷av一区二区三区软件 | 欧美老肥妇做.爰bbww| 欧美图片一区二区三区| 精品黑人一区二区三区久久| 国产精品成人免费在线| 亚洲成人激情社区| 国产在线观看免费一区| 色拍拍在线精品视频8848| 欧美一级理论片| 日韩理论片网站| 蜜臀av一区二区三区| 99天天综合性| 精品国产一区二区三区av性色| 日本一区二区三区免费乱视频| 一片黄亚洲嫩模| 国产一区久久久| 欧美性色黄大片| 中文字幕精品—区二区四季| 亚洲午夜三级在线| 成人av在线一区二区三区| 欧美夫妻性生活| 亚洲日本在线a| 国产真实精品久久二三区| 欧美三级电影在线看| 国产精品免费观看视频| 久久精品国产一区二区三区免费看| aaa亚洲精品一二三区| 日韩视频一区在线观看| 亚洲一级二级在线| 99国产精品久久久久久久久久久| 欧美成人免费网站| 日韩中文字幕1| 在线观看日韩国产| 亚洲色图欧美激情| 国产成人一区在线| 欧美mv和日韩mv国产网站| 亚洲成人免费电影| 欧美亚洲日本一区| 亚洲国产日韩精品| 日本高清不卡在线观看| 亚洲人成在线播放网站岛国| 国产精品 日产精品 欧美精品| 精品精品国产高清a毛片牛牛| 人人超碰91尤物精品国产| 欧美日本一区二区三区四区| 亚洲激情校园春色| 欧美性受xxxx| 亚洲bt欧美bt精品| 7777精品伊人久久久大香线蕉完整版| 一区二区三区在线免费视频| 91久久人澡人人添人人爽欧美| 亚洲欧美另类久久久精品2019| 成a人片国产精品| 国产精品乱子久久久久| 99久久伊人网影院| 亚洲精品一二三| 欧美日韩精品福利| 日韩1区2区3区| 精品日韩欧美一区二区| 狠狠色丁香久久婷婷综合丁香| 精品国产sm最大网站免费看| 久久精品av麻豆的观看方式| 精品毛片乱码1区2区3区| 国产一区二区三区四区在线观看| 欧美韩国日本综合| 成人h精品动漫一区二区三区| 亚洲欧美欧美一区二区三区| 欧洲亚洲精品在线| 日本伊人精品一区二区三区观看方式| 日韩三级在线观看| 国产91富婆露脸刺激对白| 中文字幕一区二区三区四区不卡 | 婷婷夜色潮精品综合在线| 91网站视频在线观看| 亚洲精品网站在线观看| 在线一区二区三区做爰视频网站| 一区二区激情视频| 日韩一区二区免费电影| 国产精品 日产精品 欧美精品| 亚洲日本在线天堂| 日韩一二三区不卡| 91丨porny丨蝌蚪视频| 日韩精品免费专区| 国产精品视频第一区| 欧美剧在线免费观看网站| 国产麻豆午夜三级精品| 欧美大片在线观看| 色婷婷国产精品| 国产精品原创巨作av| 亚洲国产成人精品视频| 国产女主播视频一区二区| 欧美伊人久久久久久久久影院 | 国产精品嫩草久久久久| 欧美日韩在线综合| 波多野结衣中文字幕一区二区三区| 夜夜精品浪潮av一区二区三区| 久久婷婷综合激情| 欧美日韩精品一区二区三区| 国产精品亚洲а∨天堂免在线| 亚洲国产精品久久人人爱| 国产片一区二区三区| 欧美一区二区三区在| 色94色欧美sute亚洲13| 国产精品66部| 麻豆久久久久久| 亚洲成人第一页| 日韩毛片高清在线播放| 2020国产成人综合网| 91国产免费看| 97久久超碰精品国产| 激情久久五月天| 蜜桃精品在线观看| 丝袜美腿亚洲综合| 亚洲综合精品久久| 亚洲精品乱码久久久久久黑人| 国产性色一区二区| 国产午夜精品久久| 久久久激情视频| 国产情人综合久久777777| 精品免费99久久| 亚洲精品一区二区三区99| 日韩一级片网站| 日韩欧美不卡一区| 欧美手机在线视频| 欧美日韩一区 二区 三区 久久精品| av成人老司机| 色婷婷综合中文久久一本| 97精品国产露脸对白| 99视频在线观看一区三区| aaa欧美大片| 色婷婷综合久色| 欧美日韩一级黄| 欧美精品123区| 欧美xxxxxxxxx| 国产亚洲美州欧州综合国 | 国产a区久久久| 国产成人亚洲精品青草天美| 看电视剧不卡顿的网站| 韩国成人在线视频| 成人av网站在线观看| 99久久er热在这里只有精品15| 91丨九色porny丨蝌蚪| 欧美性色黄大片| 日韩免费性生活视频播放| 久久久久九九视频| 一区精品在线播放| 亚洲成人av中文| 国产一区二区三区不卡在线观看 | 欧美日韩大陆一区二区| 色域天天综合网| 在线观看国产日韩| 欧美日韩日日骚| 制服丝袜激情欧洲亚洲| 日韩一区二区三区视频| 久久精品视频免费| 亚洲综合清纯丝袜自拍| 六月婷婷色综合| av欧美精品.com| 欧美久久久久久久久中文字幕| 欧美体内she精视频| 精品久久久久久久久久久久包黑料| 国产三级一区二区三区| 一区二区在线电影| 国产在线麻豆精品观看| 日本精品一区二区三区高清 | 洋洋av久久久久久久一区| 香蕉影视欧美成人| 国产精品1区2区3区在线观看| 色哟哟欧美精品| 久久久久国产精品厨房| 亚洲成年人影院| 94色蜜桃网一区二区三区| 精品伦理精品一区| 亚洲成人av一区| 94-欧美-setu|