?? vmoddomlimits.c
字號:
/* * $Id: vmoddomlimits.c,v 1.8 2004/01/23 15:45:33 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 <pwd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <signal.h>#include "config.h"#include "vpopmail.h"#include "vauth.h"#include "vlimits.h"#define MAX_BUFF 256char Domain[MAX_BUFF];char DomainQuota[MAX_BUFF];char DefaultUserQuota[MAX_BUFF];char DomainMaxMsgCount[MAX_BUFF];char DefaultUserMaxMsgCount[MAX_BUFF];char MaxPopAccounts[MAX_BUFF];char MaxAliases[MAX_BUFF];char MaxForwards[MAX_BUFF];char MaxAutoresponders[MAX_BUFF];char MaxMailinglists[MAX_BUFF];char GidFlagString[MAX_BUFF];char PermAccountFlagString[MAX_BUFF];char PermAliasFlagString[MAX_BUFF];char PermForwardFlagString[MAX_BUFF];char PermAutoresponderFlagString[MAX_BUFF];char PermMaillistFlagString[MAX_BUFF];char PermMaillistUsersFlagString[MAX_BUFF];char PermMaillistModeratorsFlagString[MAX_BUFF];char PermQuotaFlagString[MAX_BUFF];char PermDefaultQuotaFlagString[MAX_BUFF];int GidFlag = 0;int PermAccountFlag = 0;int PermAliasFlag = 0;int PermForwardFlag = 0;int PermAutoresponderFlag = 0;int PermMaillistFlag = 0;int PermMaillistUsersFlag = 0;int PermMaillistModeratorsFlag = 0;int PermQuotaFlag = 0;int PermDefaultQuotaFlag = 0;int QuotaFlag = 0;int ShowLimits = 0;int DeleteLimits = 0;int EditDefaultLimits = 0;struct vlimits limits;void usage();void get_options(int argc,char **argv);int main(int argc, char *argv[]){ int i; char OptionString[MAX_BUFF]; get_options(argc,argv); if (EditDefaultLimits || vget_assign(Domain, NULL, 0, NULL, NULL ) != NULL) { if (EditDefaultLimits) { if (vlimits_read_limits_file(VLIMITS_DEFAULT_FILE, &limits) != 0) { printf ("Failed to read the vlimits.default file.\n"); vexit(-1); } if (DeleteLimits) { printf ("Default limits must not be deleted. If you really want to do this,\n"); printf ("remove the vlimits.default file.\n"); printf ("But be warned: this might stop vpopmail from working!!\n"); vexit(-1); } } else { if (vget_limits(Domain,&limits) != 0) { printf ("Failed to vget_limits\n"); vexit(-1); } if (DeleteLimits) { if (vdel_limits(Domain)==0) { printf ("Limits deleted\n"); vexit(0); } else { printf ("Failed to delete limits\n"); vexit(-1); } } } if (ShowLimits) { memset (OptionString, 0, sizeof(OptionString)); if (EditDefaultLimits) printf("Default limits: %s\n", VLIMITS_DEFAULT_FILE); else printf("Domain: %s\n", Domain); printf("--\n"); printf("Max Pop Accounts: %d\n", limits.maxpopaccounts); printf("Max Aliases: %d\n", limits.maxaliases); printf("Max Forwards: %d\n", limits.maxforwards); printf("Max Autoresponders: %d\n", limits.maxautoresponders); printf("Max Mailinglists: %d\n", limits.maxmailinglists); printf("GID Flags:\n"); if (limits.disable_imap != 0) { printf(" NO_IMAP\n"); strncat(OptionString, "i", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_smtp != 0) { printf(" NO_SMTP\n"); strncat(OptionString, "s", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_pop != 0) { printf(" NO_POP\n"); strncat(OptionString, "p", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_webmail != 0) { printf(" NO_WEBMAIL\n"); strncat(OptionString, "w", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_passwordchanging != 0) { printf(" NO_PASSWD_CHNG\n"); strncat(OptionString, "d", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_relay != 0) { printf(" NO_RELAY\n"); strncat(OptionString, "r", sizeof(OptionString)-strlen(OptionString)-1); } if (limits.disable_dialup != 0) { printf(" NO_DIALUP\n"); strncat(OptionString, "u", sizeof(OptionString)-strlen(OptionString)-1); } printf("Flags (for commandline): %s\n", OptionString); printf("Flags for non postmaster accounts:"); printf("\n pop account: "); printf ((limits.perm_account & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_account & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_account & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n alias: "); printf ((limits.perm_alias & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_alias & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_alias & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n forward: "); printf ((limits.perm_forward & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_forward & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_forward & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n autoresponder: "); printf ((limits.perm_autoresponder & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_autoresponder & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_autoresponder & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n mailinglist: "); printf ((limits.perm_maillist & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_maillist & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_maillist & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n mailinglist users: "); printf ((limits.perm_maillist_users & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_maillist_users & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_maillist_users & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n mailinglist moderators: "); printf ((limits.perm_maillist_moderators & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_maillist_moderators & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_maillist_moderators & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n quota: "); printf ((limits.perm_quota & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_quota & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_quota & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n default quota: "); printf ((limits.perm_defaultquota & VLIMIT_DISABLE_CREATE ? "DENY_CREATE " :"ALLOW_CREATE ") ); printf ((limits.perm_defaultquota & VLIMIT_DISABLE_MODIFY ? "DENY_MODIFY " :"ALLOW_MODIFY ") ); printf ((limits.perm_defaultquota & VLIMIT_DISABLE_DELETE ? "DENY_DELETE " :"ALLOW_DELETE ") ); printf("\n"); printf("Domain Quota: %d MB\n", limits.diskquota); printf("Default User Quota: %d bytes\n", limits.defaultquota); printf("Max Domain Messages: %d\n", limits.maxmsgcount); printf("Default Max Messages per User: %d\n", limits.defaultmaxmsgcount); return(vexit(0)); } if (MaxPopAccounts[0] != 0) { limits.maxpopaccounts = atoi(MaxPopAccounts); } if (MaxAliases[0] != 0) { limits.maxaliases = atoi(MaxAliases); } if (MaxForwards[0] != 0) { limits.maxforwards = atoi(MaxForwards); } if (MaxAutoresponders[0] != 0) { limits.maxautoresponders = atoi(MaxAutoresponders); } if (MaxMailinglists[0] != 0) { limits.maxmailinglists = atoi(MaxMailinglists); } /* quota & message count limits */ if (DomainQuota[0] != 0) { limits.diskquota = atoi(DomainQuota); } if (DomainMaxMsgCount[0] != 0) { limits.maxmsgcount = atoi(DomainMaxMsgCount); } if (DefaultUserQuota[0] != 0) { limits.defaultquota = atoi(format_maildirquota(DefaultUserQuota)); } if (DefaultUserMaxMsgCount[0] != 0) { limits.defaultmaxmsgcount = atoi(DefaultUserMaxMsgCount); } if (GidFlag == 1) { GidFlag = 0; limits.disable_dialup = 0; limits.disable_passwordchanging = 0; limits.disable_pop = 0; limits.disable_smtp = 0; limits.disable_webmail = 0; limits.disable_imap = 0; limits.disable_relay = 0; for (i=0; i<strlen(GidFlagString); i++) { switch(GidFlagString[i]) { case 'u': limits.disable_dialup = 1; break; case 'd': limits.disable_passwordchanging = 1; break; case 'p': limits.disable_pop = 1; break; case 's': limits.disable_smtp = 1; break; case 'w': limits.disable_webmail = 1; break; case 'i': limits.disable_imap = 1; break; case 'r': limits.disable_relay = 1; break; } } } if (PermAccountFlag == 1) { limits.perm_account=0; for (i=0; i<strlen(PermAccountFlagString); i++) { switch(PermAccountFlagString[i]) { case 'a': limits.perm_account|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_account|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_account|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_account|=VLIMIT_DISABLE_DELETE; break; } } } if (PermAliasFlag == 1) { limits.perm_alias=0; for (i=0; i<strlen(PermAliasFlagString); i++) { switch(PermAliasFlagString[i]) { case 'a': limits.perm_alias|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_alias|=VLIMIT_DISABLE_CREATE; break; case 'm': limits.perm_alias|=VLIMIT_DISABLE_MODIFY; break; case 'd': limits.perm_alias|=VLIMIT_DISABLE_DELETE; break; } } } if (PermForwardFlag == 1) { limits.perm_forward=0; for (i=0; i<strlen(PermForwardFlagString); i++) { switch(PermForwardFlagString[i]) { case 'a': limits.perm_forward|=VLIMIT_DISABLE_ALL; break; case 'c': limits.perm_forward|=VLIMIT_DISABLE_CREATE; break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -