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

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

?? vconvert.c

?? 相當(dāng)優(yōu)秀的 UNIX 進(jìn)程管理工具
?? C
字號(hào):
/* * $Id: vconvert.c,v 1.2.2.1 2004/03/10 15:18:50 tomcollins Exp $ * Copyright (C) 1999-2002 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 <time.h>#include <pwd.h>#include <sys/types.h>#include <dirent.h>#include <sys/stat.h>#include <fcntl.h>#include <signal.h>#include "config.h"#include "vpopmail.h"#include "vauth.h"#include "vmysql.h"#ifdef HAS_SHADOW#include <shadow.h>#endifint do_all_domains();#define MAX_BUFF 256char User[MAX_BUFF];char Passwd[MAX_BUFF];char Gecos[MAX_BUFF];char Dir[MAX_BUFF];#define MYSQL_SITE_ARG "-m"#define CDB_SITE_ARG   "-c"#define ETC_SITE_ARG   "-e"#define ETC_FILE_ARG   "-f"#define PASSWD_FILE_ARG "-p"#define MYSQL_SITE     1#define CDB_SITE       2#define ETC_SITE       3#define PASSWD_SITE    4#define SQWEBMAIL_SITE 5#define FORMAT_NOFORMAT 0 #define FORMAT_USERPASS 1 #define PASSWD_TOKENS " :\n\t"int FromFormat;int ToFormat;int Debug;int conv_domain( char *); int set_sqwebmail_pass( char *);int cdb_to_default( char *);int sql_to_cdb( char *);int etc_to_default( char *);void usage();void get_options(int argc, char **argv);int passwd_to_vpopmail( char *domain );char PasswdFile[MAX_BUFF];int  PasswdFormat;int main(int argc, char *argv[]){	get_options(argc,argv);	if ( optind == argc ) {		do_all_domains();	} else {		for(;optind<argc;++optind){			printf("converting %s ", argv[optind]);			lowerit(argv[optind]);			if ( conv_domain( argv[optind] ) != 0 ) {				printf("domain conversion failed\n");				/* should exit -1 here? */			} else {				printf("done\n");			}		}	}	return(vexit(0));}int do_all_domains(){ FILE *fs; char assign_file[MAX_BUFF]; static char tmpbuf[MAX_BUFF]; int i;    snprintf(assign_file, sizeof(assign_file), "%s/users/assign",  QMAILDIR);     if ( (fs=fopen(assign_file, "r"))==NULL ) {       snprintf(tmpbuf, sizeof(tmpbuf), "could not open qmail assign file at %s\n", assign_file);       perror(tmpbuf);       vexit(-1);    }    while ( fgets(tmpbuf, sizeof(tmpbuf),fs) != NULL ) {        if (*tmpbuf != '+') continue;  /* ignore non-domain entries */        for(i=1;tmpbuf[i]!=':';++i);        tmpbuf[i-1] = 0;        /* ignore non-domain entries */        if (strchr (tmpbuf, '.') == NULL) continue;	if ( tmpbuf[1] != '\n' ) {            printf("converting %s ...", &tmpbuf[1] );            if ( conv_domain( &tmpbuf[1] ) != 0 ) {                printf("domain conversion failed\n");                /* should vexit -1 here? */            } else {                printf("done\n");            }        }    }    fclose(fs);    return(0);}int conv_domain( char *domain ){	switch ( FromFormat ) {		case SQWEBMAIL_SITE:			return(set_sqwebmail_pass( domain));			break;		case MYSQL_SITE:			switch (ToFormat) {				case CDB_SITE:					return(sql_to_cdb( domain));				default:					printf("unknown conversion\n");					return(-1);			}			break;		case CDB_SITE:			return(cdb_to_default( domain));			break;		case ETC_SITE:			switch ( ToFormat ) {				case MYSQL_SITE: 					return(etc_to_default( domain));				case CDB_SITE:					return(etc_to_default( domain ));				default:					printf("unknown conversion\n");					return(-1);			}			break;		case PASSWD_SITE:			return( passwd_to_vpopmail( domain ));		default: 			printf("unknown converstion\n");			return(-1);	}	printf(".");}int cdb_to_default( char *domain ){#ifdef USE_SQL FILE *fs; char tmpbuf[MAX_BUFF]; struct vqpasswd *pw; int domain_str_len = strlen( domain ); char domain_dir[MAX_BUFF]; FILE *assign_fs; static char assignbuf[MAX_BUFF]; int i, colon_count, dir_count; int bFoundDomain = 0; char assign_file[MAX_BUFF];    snprintf(assign_file, sizeof(assign_file), "%s/users/assign",  QMAILDIR);          if ( (assign_fs=fopen(assign_file, "r"))==NULL ) {       snprintf(tmpbuf, sizeof(tmpbuf), "could not open qmail assign file at %s\n", assign_file);       perror(tmpbuf);       return(-1);    }    while ( fgets(assignbuf, sizeof(assignbuf), assign_fs) != NULL && !bFoundDomain )    {	/* search for the matching domain record */	if ( strncmp( domain, &assignbuf[1], domain_str_len ) == 0 )	{		bFoundDomain = 1;		/* found match, now get directory */		for ( i=1, colon_count = 0;		      colon_count < 4;		      colon_count++, i++ )		{			for( ; 			     assignbuf[i]!=':';			     ++i )				; /* skip non-colon characters */		}			/* found 4th colon, so get the directory name */		for( dir_count = 0; 		     assignbuf[i]!=':';		     ++i, dir_count++ )		{			domain_dir[dir_count] = assignbuf[i];		}		domain_dir[dir_count] = 0;  /* null termination */	}    }        fclose(assign_fs);    vauth_deldomain(domain);    vauth_adddomain(domain);    vget_assign(domain, Dir, sizeof(Dir), NULL, NULL );    snprintf(tmpbuf, sizeof(tmpbuf), "%s/vpasswd", Dir);    fs = fopen(tmpbuf,"r");    if ( fs == NULL ) return(-1);    while( (pw=vgetent(fs)) != NULL ) {      if (vauth_adduser(pw->pw_name, domain, pw->pw_passwd,                         pw->pw_gecos, pw->pw_dir, pw->pw_uid) != 0) {        printf("User %s domain %s did not add\n", pw->pw_name, domain);        continue;      }      vauth_setpw(pw, domain);    }    fclose(fs);#endif /* USE_SQL */    return(0);}int sql_to_cdb( char *domain){#ifdef USE_SQL struct vqpasswd *pw; FILE *fs; char tmpbuf[MAX_BUFF];        if (vget_assign(domain, Dir, sizeof(Dir), NULL, NULL ) == NULL) {		printf("Error. Domain not found\n");		return (-1);	}	snprintf(tmpbuf, sizeof(tmpbuf), "%s/vpasswd", Dir);	if ( (fs = fopen(tmpbuf,"w")) == NULL ) {		printf("could not open vpasswd file %s\n", tmpbuf);		return(-1);	}	pw = vauth_getall(domain, 1, 1);	while( pw != NULL ) {#ifdef CLEAR_PASS		fprintf(fs, "%s:%s:%d:%d:%s:%s:%s:%s\n",			pw->pw_name,			pw->pw_passwd,			pw->pw_uid,			pw->pw_gid,			pw->pw_gecos,			pw->pw_dir,			pw->pw_shell,			pw->pw_clear_passwd);#else /* CLEAR_PASS */ 		fprintf(fs, "%s:%s:%d:%d:%s:%s:%s\n", 			pw->pw_name,			pw->pw_passwd,			pw->pw_uid,			pw->pw_gid,			pw->pw_gecos,			pw->pw_dir,			pw->pw_shell);#endif /* CLEAR_PASS */		pw = vauth_getall(domain, 0, 1);	}	fclose(fs);	printf("%s done\n", domain);#endif /* USE_SQL */	return(0);}int etc_to_default( char *domain ){ struct passwd *mypw; struct vqpasswd *newpw = NULL; char *passwd; int i;#ifdef HAS_SHADOW struct spwd *smypw;#endif	while( (mypw = getpwent()) != NULL ) {#ifdef HAS_SHADOW		if ( (smypw = getspnam(mypw->pw_name)) == NULL) continue;		i = strlen(smypw->sp_pwdp)+1;		passwd = malloc(i);		snprintf( passwd, i, "%s", smypw->sp_pwdp );#else		i = strlen(mypw->pw_passwd)+1;		passwd = malloc(i);		snprintf( passwd, i, "%s", mypw->pw_passwd );#endif		if ( strlen(passwd) > 2 ) {			if (vadduser( mypw->pw_name, domain, "xxxx", 				mypw->pw_gecos, USE_POP) != 0) {				printf("user %s domain %s did not add\n", 					mypw->pw_name, domain);				continue;			}			newpw = vauth_getpw( mypw->pw_name, domain);			newpw->pw_passwd = passwd;			vauth_setpw( newpw, domain);		} else {			printf("skipping %s\n", mypw->pw_name);		}		free(passwd);	}	return(0);}void usage(){	fprintf(stdout, "vconvert: usage\n");	fprintf(stdout, " The first option sets which format to convert FROM,\n");	fprintf(stdout, " the second option sets which format to convert TO.\n");	fprintf(stdout, " -e = etc format\n"); 	fprintf(stdout, " -c = cdb format\n"); 	fprintf(stdout, " -m = sql format\n"); 	fprintf(stdout, " -S = set sqwebmail passwords\n"); 	fprintf(stdout, " -v = version\n"); 	fprintf(stdout, " -d = debug info\n"); 	/*	fprintf(stdout, " [-f file] lets you override /etc/passwd as the\n"); 	fprintf(stdout, " default file to use for -e option\n"); 	*/}void get_options(int argc, char **argv){ int c; int errflag;	errflag = 0;	FromFormat = -1;	ToFormat = -1;	PasswdFile[0] = 0;	PasswdFormat = 0;	Debug = 0;	while( !errflag && (c=getopt(argc,argv,"mcep:Svd")) != -1 ) {		switch(c) {			case 'd':				Debug = 1;				break;			case 'v':				printf("version: %s\n", VERSION);				break;			case 'S':				FromFormat = SQWEBMAIL_SITE;				ToFormat = SQWEBMAIL_SITE;				break;			case 'm':				if ( FromFormat == -1 ) FromFormat = MYSQL_SITE;				else ToFormat = MYSQL_SITE;				break;			case 'c':				if ( FromFormat == -1 ) FromFormat = CDB_SITE;				else ToFormat = CDB_SITE;				break;			case 'e':				if ( FromFormat == -1 ) FromFormat = ETC_SITE;				else ToFormat = ETC_SITE;				break;			case 'p':				if ( FromFormat == -1 ) FromFormat = PASSWD_SITE;				else ToFormat = PASSWD_SITE;				PasswdFormat = FORMAT_USERPASS;				snprintf(PasswdFile, sizeof(PasswdFile), "%s", optarg);				break;			default:				errflag = 1;				break;		}	}	if ( FromFormat == -1 || ToFormat == -1 || errflag > 0 ) {		usage();		vexit(-1);	}}int passwd_to_vpopmail( char *domain ){ FILE *fs,*fs1; char tmpbuf[MAX_BUFF]; char tmpbuf1[MAX_BUFF]; char *user; char *crypted_passwd; struct vqpasswd *mypw; int err = 0;	if ( (fs=fopen(PasswdFile, "r")) == NULL) {		printf("Could not open passwd file %s\n", PasswdFile);		perror("fopen");		return(-1);	}	while( fgets(tmpbuf, sizeof(tmpbuf), fs) != NULL ) {		if ( (user=strtok(tmpbuf, PASSWD_TOKENS))==NULL) continue;		if ( (crypted_passwd=strtok(NULL, PASSWD_TOKENS))==NULL) continue;		snprintf(Gecos, sizeof(Gecos), "%s", user);	    if ( (err=vadduser(user, domain, "foob", user, USE_POP )) < 0 ) {	        printf("Error: %s\n", verror(err));			break;		}		if ( (mypw = vauth_getpw( user, domain )) == NULL ) {			printf("no such user %s@%s\n", user, domain);			break;		}		mypw->pw_passwd = crypted_passwd;		if ( (err=vauth_setpw( mypw, domain )) != 0 ) {			printf("Error: %s\n", verror(err));			break;		}		snprintf(tmpbuf1, sizeof(tmpbuf1),                     "%s/Maildir/sqwebmail-pass", mypw->pw_dir);		if ( (fs1=fopen(tmpbuf1, "w")) == NULL) {			break;		}		fprintf(fs1, "\t%s", crypted_passwd);		fclose(fs1);	}	fclose(fs);	return(err);}int set_sqwebmail_pass( char *domain){ struct vqpasswd *pw;	if ( Debug == 1 ) {		printf("Setting sqwebmail passwords for %s\n", domain);	}	pw = vauth_getall(domain, 1, 0);	while( pw != NULL ) {		if ( Debug == 1 ) {			printf("%s\n", pw->pw_name);		}    		vsqwebmail_pass( pw->pw_dir, pw->pw_passwd, 			VPOPMAILUID, VPOPMAILGID);		pw = vauth_getall(domain, 0, 0);	}	return(0);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区影院在线午夜| 中文字幕一区av| 成人激情免费电影网址| 亚洲综合在线第一页| 久久只精品国产| 欧美三级视频在线播放| 丁香激情综合国产| 免费观看在线综合色| 一区二区在线观看不卡| 亚洲精选在线视频| 日韩精品在线看片z| 欧美熟乱第一页| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日韩一区二区在线观看视频播放| av电影在线观看一区| 国产剧情一区二区三区| 蜜乳av一区二区| 午夜伊人狠狠久久| 亚洲观看高清完整版在线观看| 国产精品久久久久7777按摩| 国产亚洲精品资源在线26u| 91麻豆精品国产91久久久久久| 欧美性生活久久| 91色九色蝌蚪| 99精品国产视频| 成人精品亚洲人成在线| 国产成人啪免费观看软件| 狠狠色狠狠色合久久伊人| 蜜臀精品久久久久久蜜臀 | 国产尤物一区二区| 琪琪久久久久日韩精品| 五月天一区二区三区| 一区二区三区 在线观看视频| 亚洲丝袜制服诱惑| 亚洲免费色视频| 一区二区久久久| 亚洲精品成a人| 一区二区三区在线视频免费| 一区二区三区欧美激情| 一区二区三区在线免费观看| 亚洲激情中文1区| 亚洲一区成人在线| 午夜日韩在线电影| 美女视频免费一区| 狠狠网亚洲精品| 国产999精品久久久久久| 国产精品69毛片高清亚洲| 成人免费视频网站在线观看| 成人性生交大片免费看视频在线 | 亚州成人在线电影| 天堂va蜜桃一区二区三区漫画版| 五月综合激情日本mⅴ| 日韩av在线播放中文字幕| 久久精品噜噜噜成人88aⅴ| 激情五月播播久久久精品| 国产高清不卡二三区| 99久久伊人网影院| 欧美色大人视频| 91精品国产综合久久精品app| 日韩免费高清av| 国产日产精品一区| 亚洲在线观看免费视频| 日日噜噜夜夜狠狠视频欧美人 | 国产精选一区二区三区| av亚洲精华国产精华| 在线观看成人小视频| 日韩一区二区三区电影在线观看| 久久亚洲欧美国产精品乐播 | 青青草精品视频| 国产麻豆91精品| 色狠狠色狠狠综合| 日韩欧美123| 最新高清无码专区| 日韩精品一二三| 丁香一区二区三区| 欧美日本免费一区二区三区| 国产午夜精品一区二区三区四区| 日韩理论片一区二区| 日韩高清中文字幕一区| 成人午夜免费电影| 91精品免费在线| 中文字幕在线视频一区| 麻豆免费看一区二区三区| 91在线丨porny丨国产| 欧美电视剧在线观看完整版| 中文字幕亚洲精品在线观看| 青青草一区二区三区| 99国产精品久久久| 精品国产区一区| 亚洲香蕉伊在人在线观| 大白屁股一区二区视频| 在线成人午夜影院| 亚洲欧美在线aaa| 久久99久久99| 欧美吞精做爰啪啪高潮| 国产人伦精品一区二区| 裸体歌舞表演一区二区| 欧美性欧美巨大黑白大战| 久久麻豆一区二区| 三级一区在线视频先锋 | 老司机免费视频一区二区三区| 成人a级免费电影| 亚洲精品在线免费观看视频| 亚洲在线中文字幕| 99免费精品在线| 国产亚洲自拍一区| 美国欧美日韩国产在线播放| 91国产视频在线观看| 国产精品乱码一区二三区小蝌蚪| 精品一区二区三区免费观看 | 成人精品一区二区三区中文字幕| 欧美一二三区在线观看| 亚洲国产综合在线| 一本大道久久a久久精二百| 国产欧美一区二区精品仙草咪| 蜜桃视频在线观看一区| 欧美体内she精视频| 亚洲精品欧美专区| 99视频一区二区三区| 欧美国产97人人爽人人喊| 久久99精品国产.久久久久久 | 99精品国产99久久久久久白柏| 欧美精品一区二区久久久| 欧美aaaaaa午夜精品| 欧美精品777| 一区二区三区.www| 欧美性猛交一区二区三区精品| 亚洲黄色在线视频| 91网站最新地址| 亚洲三级免费电影| 色综合欧美在线视频区| 成人免费在线观看入口| 99精品视频一区| 亚洲欧美韩国综合色| 色综合久久66| 亚洲美女淫视频| 欧美性极品少妇| 婷婷久久综合九色综合绿巨人| 欧美欧美欧美欧美| 免费av成人在线| 久久久久9999亚洲精品| 国产91精品一区二区麻豆亚洲| 国产欧美精品一区二区色综合| 国产精品一区二区在线播放| 久久久亚洲午夜电影| 成人福利在线看| 亚洲女女做受ⅹxx高潮| 欧美在线一区二区三区| 亚洲h动漫在线| 欧美电影免费观看高清完整版| 韩国精品主播一区二区在线观看| 久久久蜜臀国产一区二区| 国产成人亚洲综合色影视| 国产精品久久久久久久午夜片| 色综合中文综合网| 欧美午夜片在线看| 日韩精品欧美精品| 337p日本欧洲亚洲大胆精品| 成人免费av网站| 亚洲已满18点击进入久久| 日韩欧美第一区| 成人白浆超碰人人人人| 亚洲成人高清在线| 日韩欧美成人激情| 99久久精品国产毛片| 亚洲黄色av一区| 日韩一卡二卡三卡四卡| 国产v综合v亚洲欧| 亚洲综合色噜噜狠狠| 欧美岛国在线观看| 91欧美激情一区二区三区成人| 偷拍日韩校园综合在线| 中文字幕免费一区| 欧美视频第二页| 国产精品亚洲专一区二区三区| 亚洲欧洲精品一区二区三区| 欧美日本韩国一区| 不卡视频免费播放| 免费久久99精品国产| 日韩毛片精品高清免费| 日韩精品中午字幕| 91麻豆高清视频| 激情综合色综合久久综合| 亚洲人亚洲人成电影网站色| 日韩一级片在线播放| jizzjizzjizz欧美| 麻豆91精品视频| 亚洲精品日日夜夜| 国产午夜精品理论片a级大结局 | 成人高清视频在线| 蜜臀av一区二区在线免费观看| 亚洲欧洲99久久| 久久先锋影音av鲁色资源网| 91精彩视频在线| 国产成人一级电影| 日韩成人av影视| 一区二区三区不卡视频| 日本一区二区三区电影| 日韩精品专区在线| 欧美精品aⅴ在线视频|