⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vmoddomlimits.c

📁 相当优秀的 UNIX 进程管理工具
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * $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 + -