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

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

?? vpopmail.c

?? 相當優秀的 UNIX 進程管理工具
?? C
?? 第 1 頁 / 共 5 頁
字號:
      } /* switch for morercpthosts */       break;    case 1 : /* we removed the line successfully */      /* make sure correct permissions are set on rcpthosts */      chmod(tmpbuf1, VPOPMAIL_QMAIL_MODE );      break;   } /* switch for rcpthosts */  /* delete entry from control/virtualdomains (if it exists) */  snprintf(tmpbuf1, sizeof(tmpbuf1), "%s:%s", domain, domain);  snprintf(tmpbuf2, sizeof(tmpbuf2), "%s/control/virtualdomains", QMAILDIR);  if (remove_line( tmpbuf1, tmpbuf2) < 0 ) {    fprintf(stderr, "Failed while attempting to remove_line() the virtualdomains file\n");     problem_occurred = 1;   }  /* make sure correct permissions are set on virtualdomains */  chmod(tmpbuf2, VPOPMAIL_QMAIL_MODE );     if (problem_occurred == 1) {    return (-1);  } else {     return(0);  }}/************************************************************************//* * delete a domain from the users/assign file * input : lots ;) * output : 0 = success *          less than error = failure * */int del_domain_assign( char *alias_domain, char *real_domain,                        char *dir, gid_t uid, gid_t gid )  { char search_string[MAX_BUFF]; char assign_file[MAX_BUFF];  /* format the removal string */   snprintf(search_string, sizeof(search_string), "+%s-:%s:%lu:%lu:%s:-::",    alias_domain, real_domain, (long unsigned)uid, (long unsigned)gid, dir);  /* format the assign file name */  snprintf(assign_file, sizeof(assign_file), "%s/users/assign", QMAILDIR);  /* remove the formatted string from the file */  if (remove_line( search_string, assign_file) < 0) {    fprintf(stderr, "Failed while attempting to remove_line the assign file\n");    return (-1);  }  /* force the permission on the file */  chmod(assign_file, VPOPMAIL_QMAIL_MODE );   /* compile assign file */  update_newu();  return(0);}/************************************************************************//* * Generic remove a line from a file utility * input: template to search for *        file to search inside * * output: -1 on failure *          0 on success, no match found *          1 on success, match was found */int remove_line( char *template, char *filename ){ char tmpbuf1[MAX_BUFF]; struct stat statbuf; FILE *fs_orig; FILE *fs_bak;#ifdef FILE_LOCKING FILE *fs_lock;#endif int found; int i;  /* if we can't stat the file, return error */  if ( stat(filename,&statbuf) == -1 ) return(-1);#ifdef FILE_LOCKING  /* format the lock file name */  snprintf(tmpbuf1, sizeof(tmpbuf1), "%s.lock", filename);  /* open the file with write permissions and check for error */  if ( (fs_lock = fopen(tmpbuf1, "w+")) == NULL ) {    /* return error */    fprintf(stderr, "could not open lock file %s\n", tmpbuf1);    return(-1);  }  /* ask for a write lock on the file   * we don't want anyone writing to it now    */  if ( get_write_lock(fs_lock) < 0 ) {    /* remove lock */    unlock_lock(fileno(fs_lock), 0, SEEK_SET, 0);    fclose(fs_lock);    /* print error message */    fprintf(stderr, "could not get write lock on %s\n", tmpbuf1);    /* return error */    return(-1);  }#endif  /* format a backup file name */  snprintf(tmpbuf1, sizeof(tmpbuf1), "%s.bak", filename);  /* remove the file if it exists already */  unlink(tmpbuf1);  /* move the orignal file to the .bak file */  rename(filename, tmpbuf1);  /* open the file and check for error */  if ( (fs_orig = fopen(filename, "w+")) == NULL ) {#ifdef FILE_LOCKING    /* release resources */    fclose(fs_lock);#endif    fprintf(stderr, "%s file would not open w+\n", filename);    return(-1);  }  /* open the .bak file in read mode and check for error *//* Michael Bowe 23rd August 2003 * Isnt the w+ bit of this code wrong? * At this point our orignal file is known as .bak * so why would we want to try and w+ it? Wont this * del the contents of the file? Ouch! * I have remarked the original code out and left my version below * *  if ( (fs_bak = fopen(tmpbuf1, "r+")) == NULL ) { *   if ( (fs_bak = fopen(tmpbuf1, "w+")) == NULL ) { *     fprintf(stderr, "%s would not open r+ or w+\n", tmpbuf1); *     fclose(fs_orig); * #ifdef FILE_LOCKING *     unlock_lock(fileno(fs_lock), 0, SEEK_SET, 0); *     fclose(fs_lock); * #endif *      return(-1); *    } *  } */  if ( (fs_bak = fopen(tmpbuf1, "r+")) == NULL ) {     fprintf(stderr, "%s would not open r+ \n", tmpbuf1);     fclose(fs_orig);#ifdef FILE_LOCKING     unlock_lock(fileno(fs_lock), 0, SEEK_SET, 0);     fclose(fs_lock);#endif     return(-1);  }  /* Search the .bak file line by line.   * Copy across any lines that do not contain our search string   * back to the original filename.   */  found = 0;  /* suck in a line from the .bak file */  while (fgets(tmpbuf1,sizeof(tmpbuf1),fs_bak)!=NULL){    /* if a newline was sucked in (likely), change it to be a \0 */    for(i=0;tmpbuf1[i]!=0;++i) if (tmpbuf1[i]=='\n') tmpbuf1[i]=0;    /* look to see if this line contains our search string */     if ( strcmp(template, tmpbuf1) != 0) {      /* match not found, so copy this line from the .bak to the filename */      fputs(tmpbuf1, fs_orig);      fputs("\n", fs_orig);    } else {      found = 1;    }  }  /* we are done with these two, release the resources */  fclose(fs_orig);  fclose(fs_bak);  /* format the name of the backup file */  snprintf(tmpbuf1, sizeof(tmpbuf1), "%s.bak", filename);  /* remove the .bak file */  unlink(tmpbuf1);#ifdef FILE_LOCKING  /* unlock, we are done */  unlock_lock(fileno(fs_lock), 0, SEEK_SET, 0);  /* close the lock file to release resources */  fclose(fs_lock);#endif  /* return 0 = everything went okay, but we didn't find it   *        1 = everything went okay, and we found a match   */  return(found);}/************************************************************************//*  * Recursive change ownership utility  */int r_chown(char *path, uid_t owner, gid_t group ){ DIR *mydir; struct dirent *mydirent; struct stat statbuf;  chown(path,owner,group);  if (chdir(path) == -1) {    fprintf(stderr, "r_chown() : Failed to cd to directory %s", path);    return(-1);  }  mydir = opendir(".");  if ( mydir == NULL ) {     fprintf(stderr, "r_chown() : Failed to opendir()");    return(-1);  }  while((mydirent=readdir(mydir))!=NULL){    if ( strncmp(mydirent->d_name,".", 2)!=0 &&          strncmp(mydirent->d_name,"..", 3)!=0 ) {      stat( mydirent->d_name, &statbuf);      if ( S_ISDIR(statbuf.st_mode) ) {        r_chown( mydirent->d_name, owner, group);      } else {        chown(mydirent->d_name,owner,group);      }    }  }  closedir(mydir);  if (chdir("..") == -1) {    fprintf(stderr, "rchown() : Failed to cd to parent");    return(-1);  }  return(0);}/************************************************************************//*  * Send a signal to a process utility function * * name    = name of process * sig_num = signal number  */int signal_process(char *name, int sig_num){ FILE *ps; char *tmpstr; int  col; pid_t tmppid; pid_t mypid; int  pid_col=0; char pid[MAX_BUFF]; char tmpbuf1[MAX_BUFF];  mypid = getpid();  if ( (ps = popen(PS_COMMAND, "r")) == NULL ) {    perror("popen on ps command");    return(-1);  }  if (fgets(tmpbuf1, sizeof(tmpbuf1), ps)!= NULL ) {    col=0;    tmpstr = strtok(tmpbuf1, PS_TOKENS);    while (tmpstr != NULL ) {      if (strcmp(tmpstr, "PID") == 0 ) pid_col = col;      tmpstr = strtok(NULL, PS_TOKENS);      ++col;    }  }  while (fgets(tmpbuf1, sizeof(tmpbuf1), ps)!= NULL ) {    if ( strstr( tmpbuf1, name ) != NULL &&          strstr(tmpbuf1,"supervise")==NULL) {      tmpstr = strtok(tmpbuf1, PS_TOKENS);      col = 0;      do {        if( col == pid_col ) {          snprintf(pid, sizeof(pid), "%s", tmpstr);          break;        }         ++col;        tmpstr = strtok(NULL, PS_TOKENS);      } while ( tmpstr!=NULL );      tmppid = atoi(pid);      if ( tmppid != mypid ) {         kill(tmppid,sig_num);      }    }  }  pclose(ps);  return(0);}/************************************************************************//* * Compile the users/assign file using qmail-newu program */int update_newu(){ int pid;  pid=vfork();  if ( pid==0){    execl(QMAILNEWU,"qmail-newu", NULL);    exit(127);  } else {    wait(&pid);  }  return(0);}/************************************************************************//* * parse out user and domain from an email address utility function *  * email  = input email address * user   = parsed user * domain = parsed domain * buff_size = the size of the user and domain buffer.  *             These need to be the same size or potential buffer overflows *             could occur! *  * return 0 on success *       -1 on error */int parse_email(char *email, char *user, char *domain, int buff_size ) { int i; int n; int len; char *at = NULL;  lowerit(email);  len = strlen(ATCHARS);  for(i=0;i<len; ++i ) if ((at=strchr(email,ATCHARS[i]))) break;  /* did we find an "AT" char in the email address? */  if ( at!=NULL ) {    /* yep we found an AT char */    /* work out what pos it is in the email address array, store this in n */    n = at - email + 1;    if ( n > buff_size ) n = buff_size;    /* suck out the username */    snprintf(user, n, "%s", email);     /* now suck out the domain name */    snprintf(domain, buff_size, "%s", ++at);  } else {    /* No AT char found, so populate username, leave domain blank */    snprintf(user, buff_size, "%s", email);    domain[0] = 0;  }  /* check the username for any invalid chars */  if ( is_username_valid( user ) != 0 ) {    fprintf(stderr, "user invalid %s\n", user);    return(-1);  }  /* check the domain for any invalid chars */  if ( is_domain_valid( domain ) != 0 ) {    fprintf(stderr, "domain invalid %s\n", domain);    return(-1);  }  /* if we havent found a domain, try and set it to the the default domain */  vset_default_domain(domain);  return(0);} /************************************************************************//* * update a users virtual password file entry with a different password */int vpasswd( char *username, char *domain, char *password, int apop ){ struct vqpasswd *mypw; char Crypted[MAX_BUFF];#ifdef SQWEBMAIL_PASS uid_t uid; gid_t gid;#endif  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(password) >= MAX_PW_CLEAR_PASSWD ) return(VA_PASSWD_TOO_LONG);  lowerit(username);  lowerit(domain);  /* get the password entry for this user */  mypw = vauth_getpw( username, domain);  if ( mypw == NULL ) return(-1);   /* dont update password, if password updates are disabled */  if ( mypw->pw_flags & NO_PASSWD_CHNG ) return(-1);  /* encrypt their supplied password, and save it */  mkpasswd3(password,Crypted, sizeof(Crypted));  mypw->pw_passwd = Crypted;#ifdef CLEAR_PASS  /* save the clear password too (if clear passwords are enabled) */  mypw->pw_clear_passwd = password;#endif#ifdef SQWEBMAIL_PASS  /* update the sqwebmail-pass file in the user's maildir (if required) */  vget_assign(domain, NULL, 0, &uid, &gid );  vsqwebmail_pass( mypw->pw_dir, Crypted, uid, gid);#endif  return (vauth_setpw( mypw, domain));}/************************************************************************//* * delete a user from a virtual domain password file */int vdeluser( char *user, char *domain ){ struct vqpasswd *mypw; char Dir[MAX_BUFF]; uid_t uid; gid_t gid; char calling_dir[MAX_BUFF];  if ( user == 0 || strlen(user)<=0) return(VA_ILLEGAL_USERNAME);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人黄色影院| 欧美精品日韩精品| 91久久精品午夜一区二区| 在线看不卡av| 日韩午夜激情电影| 国产目拍亚洲精品99久久精品| 成人黄色小视频| 成人av电影在线网| 欧美一区二区三区四区久久| 国产一区二区精品久久99| 日韩黄色片在线观看| 美女一区二区三区| 国产成人一级电影| 在线看日本不卡| 欧美一三区三区四区免费在线看| 日韩一区二区麻豆国产| 国产精品日韩精品欧美在线| 日韩免费高清av| 国产日产精品一区| 亚洲国产欧美另类丝袜| 精品综合免费视频观看| 在线一区二区观看| 久久精品一区八戒影视| 亚洲v日本v欧美v久久精品| 国产美女一区二区| 欧美裸体一区二区三区| 国产精品丝袜91| 水蜜桃久久夜色精品一区的特点| 粉嫩久久99精品久久久久久夜| 欧美日韩在线三级| 亚洲欧洲av另类| 久久精品72免费观看| 色婷婷av一区二区三区大白胸| 精品国一区二区三区| 亚洲国产欧美另类丝袜| 成人手机在线视频| 欧美va日韩va| 午夜精品久久久久影视| 99久久精品情趣| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 蜜臀久久久久久久| 99精品久久99久久久久| 久久综合色之久久综合| 日韩成人一区二区| 欧美在线免费观看亚洲| 国产精品美女久久久久久2018| 九九视频精品免费| 欧美日本国产一区| 亚洲欧美日韩中文播放| 国产乱国产乱300精品| 欧美一区二区精品在线| 亚洲va中文字幕| 欧美性受xxxx黑人xyx性爽| 欧美国产日产图区| 国产精品影视在线观看| 欧美一区二区三区喷汁尤物| 午夜亚洲福利老司机| 91成人免费在线| 亚洲黄一区二区三区| 99久久免费视频.com| 国产精品乱码人人做人人爱 | 91精品国产日韩91久久久久久| 亚洲高清免费视频| 色欲综合视频天天天| 懂色一区二区三区免费观看| 日韩精品中文字幕在线不卡尤物 | 国产精品女同一区二区三区| 国产制服丝袜一区| 欧美国产综合色视频| 成人av网站在线观看免费| 精品一区二区三区视频在线观看 | 成人视屏免费看| 国产欧美视频在线观看| 久久99蜜桃精品| 91精品国产丝袜白色高跟鞋| 午夜亚洲国产au精品一区二区| 精品视频一区二区不卡| 亚洲综合丝袜美腿| 欧美中文字幕一二三区视频| 亚洲精品videosex极品| 一本到高清视频免费精品| 亚洲私人黄色宅男| 91色在线porny| 亚洲免费观看高清完整| 色婷婷狠狠综合| 亚洲v精品v日韩v欧美v专区 | 免费欧美日韩国产三级电影| 欧美日韩国产免费| 久久成人免费日本黄色| 2021中文字幕一区亚洲| 国产99一区视频免费| 中文字幕一区视频| 在线免费观看视频一区| 午夜精品福利一区二区三区av| 欧美一级高清片| 国产精一区二区三区| 中文字幕成人在线观看| 成人高清视频在线观看| 亚洲自拍偷拍麻豆| 69久久夜色精品国产69蝌蚪网| 久久精品国产一区二区| 中文成人综合网| 在线观看一区不卡| 久久国产尿小便嘘嘘| 亚洲国产成人一区二区三区| 91亚洲精华国产精华精华液| 午夜精品久久久久影视| 2022国产精品视频| 亚洲美女区一区| 欧美日韩中文国产| 激情综合色播激情啊| √…a在线天堂一区| 欧美色综合影院| 久久97超碰国产精品超碰| 中文欧美字幕免费| 欧美日韩国产电影| 国产麻豆精品一区二区| 亚洲女子a中天字幕| 欧美一级久久久| 成人爱爱电影网址| 肉色丝袜一区二区| 欧美国产日本视频| 欧美日韩大陆一区二区| 亚洲午夜免费福利视频| 日韩精品一二区| 视频一区欧美精品| 亚洲一区二区三区在线看| 亚洲高清在线精品| 久久不见久久见免费视频1| 国产一区免费电影| 91在线视频免费观看| 欧美中文字幕久久| 日韩免费观看高清完整版| 精品成人一区二区三区四区| 国产精品一线二线三线| 欧亚洲嫩模精品一区三区| 日韩国产欧美在线观看| 国产精品毛片高清在线完整版| 欧美精品九九99久久| 成人av免费在线观看| 蜜臀av一区二区| 亚洲午夜视频在线观看| 国产精品电影院| 精品国产一区二区精华| 欧美午夜在线观看| av电影在线观看一区| 美女被吸乳得到大胸91| 亚洲综合色网站| 国产精品传媒在线| 久久先锋影音av| 欧美二区在线观看| 91浏览器打开| 国产·精品毛片| 激情丁香综合五月| 午夜精品123| 亚洲蜜臀av乱码久久精品蜜桃| 国产亚洲精品资源在线26u| 欧美日韩免费不卡视频一区二区三区| 国产精品一区二区久激情瑜伽| 视频一区在线播放| 亚洲成人1区2区| 一区二区三区四区视频精品免费| 国产亚洲欧美一级| 久久综合成人精品亚洲另类欧美| 91麻豆精品国产无毒不卡在线观看 | 亚洲第一成年网| 国产精品久久久久久久岛一牛影视 | 一区二区三区在线视频免费| 国产精品三级久久久久三级| 精品国产亚洲在线| 日韩欧美另类在线| 日韩欧美在线123| 91精品国产综合久久久久| 欧美日韩一区高清| 欧美日韩你懂的| 在线观看国产一区二区| 色噜噜久久综合| 91免费视频大全| 91在线视频播放| 99r精品视频| 91影院在线免费观看| 91免费在线看| 在线观看一区不卡| 精品视频一区二区三区免费| 欧美日韩在线一区二区| 欧美日本国产视频| 欧美伦理影视网| 丁香一区二区三区| 国产精品二三区| 中文字幕日韩av资源站| 91麻豆精品国产| 国产又黄又大久久| 看电视剧不卡顿的网站| 精品国免费一区二区三区| 国产超碰在线一区| 亚洲一区在线视频| 精品国产91亚洲一区二区三区婷婷| 国产一区美女在线| 亚洲一二三区视频在线观看| 欧美电视剧免费全集观看|