VirtualMailManager/cli/clihelp.py
author Pascal Volk <user@localhost.localdomain.org>
Sun, 02 Sep 2012 21:01:40 +0000
changeset 606 ab97727357a4
child 608 0ed93eb8b364
permissions -rw-r--r--
VMM/cli: Activated help subcommand. Implemented Command.help_(), which reads the command's help message from cli.clihelp.

# -*- coding: UTF-8 -*-
# Copyright (c) 2012, Pascal Volk
# See COPYING for distribution information.
"""
    VirtualMailManager.cli.vmmhelp
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Virtual Mail Manager's command line help.
"""

_ = lambda msg: msg


help_msgs = {'configget': (_(u"""This subcommand is used to display the
actual value of the given configuration <option>."""),),
    # configset
    'configset': (_(u"""Use this subcommand to set or update a single
configuration option's value. <option> is the configuration option, <value>
is the <option>'s new value."""),
_(u"""Note: This subcommand will create a new vmm.cfg without any comments.
Your current configuration file will be backed as vmm.cfg.bak."""),),
    # configure
    'configure': (_(u"""Starts the interactive configuration for all
configuration sections."""),
_(u"""In this process the currently set value of each option will be displayed
in square brackets. If no value is configured, the default value of each
option will be displayed in square brackets. Press the return key, to accept
the displayed value."""),
_(u"""If the optional argument <section> is given, only the configuration
options from the given section will be displayed and will be configurable.
The following sections are available:
"""),
"""    account, bin, database, domain, mailbox, misc""",
_(u"""All configuration options are described in vmm.cfg(5)."""),
_(u"""Note: This subcommand will create a new vmm.cfg without any comments.
Your current configuration file will be backed as vmm.cfg.bak."""),),
    # getuser
    'getuser': (_(u"""If only the <uid> is available, for example from process
list, the subcommand getuser will show the user's address."""),),
    # listdomains
    'listdomains': (_(u"""This subcommand lists all available domains. All
domain names will be prefixed either with `[+]', if the domain is a primary
domain, or with `[-]', if it is an alias domain name. The output can be
limited with an optional <pattern>."""),
_(u"""To perform a wild card search, the % character can be used at the start
and/or the end of the <pattern>."""),),
    # listpwschemes
    'listpwschemes': (_(u"""This subcommand lists all password schemes which
could be used in the vmm.cfg as value of the misc.password_scheme option.
The output varies, depending on the used Dovecot version and the system's
libc."""),
_(u"""When your Dovecot installation isn't too old, you will see additionally
a few usable encoding suffixes. One of them can be appended to the password
scheme."""),),
    # version
    'version': (_(u"""Prints vmm's version and copyright information to stdout.
After this vmm exits."""),),
    # domainadd
    'domainadd': (_(u"""Adds the new domain into the database and creates the
domain directory."""),
_(u"""If the optional argument <transport> is given, it will override the
default transport (domain.transport) from vmm.cfg. The specified <transport>
will be the default transport for all new accounts in this domain."""),
_(u"""Configuration-related behavior:"""),
u""" * domain.auto_postmaster""",
_(u"""When that option is set to true (default) vmm will automatically create
the postmaster account for the new domain and prompt for postmaster@<fqdn>'s
password."""),
u""" * account.random_password""",
_(u"""When the value of that option is also set to true, vmm will automatically
create the postmaster account for the new domain and print the generated
postmaster password to stdout."""),),
    # domaindelete
    'domaindelete': (_(u"""This subcommand deletes the domain specified by
<fqdn>."""),
_(u"""If there are accounts, aliases and/or relocated users assigned to the
given domain, vmm will abort the requested operation and show an error
message. If you know, what you are doing, you can specify the optional keyword
'force'."""),
_(u"""If you really always know what you are doing, edit your vmm.cfg and set
the option domain.force_deletion to true."""),),
    # domaininfo
    'domaininfo': (_(u"""This subcommand shows some information about the
given domain."""),
_(u"""For a more detailed information about the domain the optional argument
<details> can be specified. A possible <details> value can be one of the
following six keywords:"""),
"""    accounts, aliasdomains, aliases, catchall, relocated, full""",),
    # domainquota
    'domainquota': (_(u"""This subcommand is used to configure a new quota
limit for the accounts of the domain - not for the domain itself."""),
_(u"""The default quota limit for accounts is defined in the vmm.cfg
(domain.quota_bytes and domain.quota_messages)."""),
_(u"""The new quota limit will affect only those accounts for which the limit
has not been overridden. If you want to restore the default to all accounts,
you may pass the keyword 'force'. When the argument <messages> was omitted the
default number of messages 0 (zero) will be applied."""),),
    # domainservices
    'domainservices': (_(u"""To define which services could be used by the
users of the domain — with the given <fqdn> — use this subcommand."""),
_(u"""Each specified <service> will be enabled/usable. All other services
will be deactivated/unusable. Possible <service> names are:"""),
u"""    imap, pop3, sieve, smtp""",
_(u"""The new service set will affect only those accounts for which the set has
not been overridden. If you want to restore the default to all accounts, you
may pass the keyword 'force'."""),),
    # domaintransport
    'domaintransport': (_(u"""A new transport for the indicated domain can be
set with this subcommand."""),
_(u"""The new transport will affect only those accounts for which the transport
has not been overridden. If you want to restore the default to all accounts,
you may pass the keyword 'force'."""),),
    # domainnote
    'domainnote': (_(u"""With this subcommand, it is possible to attach a
note to the specified domain. Without an argument, an existing note is
removed."""),),
    # aliasdomainadd
    'aliasdomainadd': (_(u"""This subcommand adds the new alias domain
(<fqdn>) to the destination <domain> that should be aliased."""),),
    # aliasdomaindelete
    'aliasdomaindelete': (_(u"""Use this subcommand if the alias domain
<fqdn> should be removed."""),),
    # aliasdomaininfo
    'aliasdomaininfo': (_(u"""This subcommand shows to which domain the alias
domain <fqdn> is assigned to."""),),
    # aliasdomainswitch
    'aliasdomainswitch': (_(u"""If the destination of the existing alias
domain <fqdn> should be switched to another <destination> use this
subcommand."""),),
    # useradd
    'useradd': (_(u"""Use this subcommand to create a new e-mail account for
the given <address>."""),
_(u"""If the <password> is not provided, vmm will prompt for it interactively.
When no <password> is provided and account.random_password is set to true, vmm
will generate a random password and print it to stdout after the account has
been created."""),),
    # userdelete
    'userdelete': (_(u"""Use this subcommand to delete the account with the
given <address>."""),
_(u"""If there are one or more aliases with an identical destination address,
vmm will abort the requested operation and show an error message. To prevent
this, specify the optional keyword 'force'."""),),
    # userinfo
    'userinfo': (_(u"""This subcommand displays some information about the
account specified by <address>."""),
_(u"""If the optional argument <details> is given some more information will be
displayed. Possible values for <details> are:"""),
u"""    aliases, du. full""",),
    # username
    'username': (_(u"""The user's real <name> can be set/updated with this
subcommand."""),
_(u"""If no <name> is given, the value stored for the account is erased."""),
),
    # userpassword
    'userpassword': (_(u"""The password of an account can be updated with this
subcommand."""),
_(u"""If no <password> was provided, vmm will prompt for it interactively."""),
),
    # usernote
    'usernote': (_(u"""With this subcommand, it is possible to attach a note
to the specified account. Without an argument, an existing note is
removed."""),),
    # userquota
    'userquota': (_(u"""This subcommand is used to set a new quota limit for
the given account."""),
_(u"""When the argument <messages> was omitted the default number of messages
0 (zero) will be applied."""),
_(u"""Instead of <storage> pass the keyword 'domain' to remove the
account-specific override, causing the domain's value to be in effect."""),),
    # userservices
    'userservices': (_(u"""To grant a user access to the specified services,
use this command."""),
_(u"""All omitted services will be deactivated/unusable for the user with the
given <address>."""),
_(u"""Instead of <service> pass 'domain' to remove the account-specific
override, causing the domain's value to be in effect."""),),
    # usertransport
    'usertransport': (_(u"""A different <transport> for an account can be
specified with this subcommand."""),
_(u"""Instead of <transport> pass 'domain' to remove the account-specific
override, causing the domain's value to be in effect."""),),
    # aliasadd
    'aliasadd': (_(u"""This subcommand is used to create a new alias
<address> with one or more <destination> addresses."""),
_(u"""Within the destination address, the placeholders '%n', '%d', and '%='
will be replaced by the local part, the domain, or the email address with '@'
replaced by '=' respectively. In combination with alias domains, this enables
domain-specific destinations."""),),
    # aliasinfo
    'aliasinfo': (_(u"""Information about the alias with the given <address>
can be displayed with this subcommand."""),),
    # relocatedadd
    'relocatedadd': (_(u"""A new relocated user can be created with this
subcommand."""),
_(u"""<address> is the user's ex-email address, for example
b.user@example.com, and <newaddress> points to the new email address where
the user can be reached."""),),
    # relocatedinfo
    'relocatedinfo': (_(u"""This subcommand shows the new address of the
relocated user with the given <address>."""),),
    # relocateddelete
    'relocateddelete': (_(u"""Use this subcommand in order to delete the
relocated user with the given <address>."""),),
    # catchalladd
    'catchalladd': (_(u"""This subcommand allows to specify destination
addresses for a domain, which shall receive mail addressed to unknown
local-parts within that domain. Those catch-all aliases hence "catch all" mail
to any address in the domain (unless a more specific alias, mailbox or
relocated entry exists)."""),
_(u"""WARNING: Catch-all addresses can cause mail server flooding because
spammers like to deliver mail to all possible combinations of names, e.g.
to all addresses between abba@example.org and zztop@example.org."""),),
    # catchallinfo
    'catchallinfo': (_(u"""This subcommand displays information about catch-all
aliases defined for the domain <fqdn>."""),),
    # catchalldelete
    'catchalldelete': (_(u"""With this subcommand, catch-all aliases defined
for a domain can be removed, either all of them, or a single one if specified
explicitly."""),),
}

del _