/*
 * Example configuration file for MemoServ.
 */

/*
 * First, create the service.
 */
service
{
	/*
	 * The name of the MemoServ client.
	 * If you change this value, you probably want to change the client directive in the configuration for the memoserv module too.
	 */
	nick = "MemoServ"

	/*
	 * The username of the MemoServ client.
	 */
	user = "services"

	/*
	 * The hostname of the MemoServ client.
	 */
	host = "services.host"

	/*
	 * The realname of the MemoServ client.
	 */
	gecos = "Memo Service"

	/*
	 * The modes this client should use.
	 * Do not modify this unless you know what you are doing.
	 *
	 * These modes are very IRCd specific. If left commented, sane defaults
	 * are used based on what protocol module you have loaded.
	 *
	 * Note that setting this option incorrectly could potentially BREAK some, if
	 * not all, usefulness of the client. We will not support you if this client is
	 * unable to do certain things if this option is enabled.
	 */
	#modes = "+o"

	/*
	 * An optional comma separated list of channels this service should join. Outside
	 * of log channels this is not very useful, as the service will just idle in the
	 * specified channels, and will not accept any types of commands.
	 *
	 * Prefixes may be given to the channels in the form of mode characters or prefix symbols.
	 */
	#channels = "@#services,#mychan"
}

/*
 * Core MemoServ module.
 *
 * Provides essential functionality for MemoServ.
 */
module
{
	name = "memoserv"
	/*
	 * The name of the client that should be MemoServ. Clients are configured
	 * with the service blocks.
	 */
	client = "MemoServ"

	/*
	 * The maximum number of memos a user is allowed to keep by default. Normal users may set the
	 * limit anywhere between 0 and this value. Services Admins can change it to any value or
	 * disable it.
	 *
	 * This directive is optional, but recommended. If not set, the limit is disabled
	 * by default, and normal users can set any limit they want.
	 */
	maxmemos = 20

	/*
	 * The delay between consecutive uses of the MemoServ SEND command. This can help prevent spam
	 * as well as denial-of-service attacks from sending large numbers of memos and filling up disk
	 * space (and memory). The default 3-second wait means a maximum average of 150 bytes of memo
	 * per second per user under the current IRC protocol.
	 *
	 * This directive is optional, but recommended.
	 */
	senddelay = 3s
}

/*
 * Core MemoServ commands.
 *
 * In Anope modules can provide (multiple) commands, each of which has a unique command name. Once these modules
 * are loaded you can then configure the commands to be added to any client you like with any name you like.
 *
 * Additionally, you may provide a permission name that must be in the opertype of users executing the command.
 *
 * Sane defaults are provided below that do not need to be edited unless you wish to change the default behavior.
 */

/* Give it a help command. */
command { service = "MemoServ"; name = "HELP"; command = "generic/help"; }

/*
 * ms_cancel
 *
 * Provides the command memoserv/cancel.
 *
 * Used to cancel memos already sent but not yet read.
 */
module { name = "ms_cancel" }
command { service = "MemoServ"; name = "CANCEL"; command = "memoserv/cancel"; }

/*
 * ms_check
 *
 * Provides the command memoserv/check.
 *
 * Used to check if a sent memo has been read.
 */
module { name = "ms_check" }
command { service = "MemoServ"; name = "CHECK"; command = "memoserv/check"; }

/*
 * ms_del
 *
 * Provides the command memoserv/del.
 *
 * Used to delete your memos.
 */
module { name = "ms_del" }
command { service = "MemoServ"; name = "DEL"; command = "memoserv/del"; }

/*
 * ms_ignore
 *
 * Provides the command memoserv/ignore.
 *
 * Used to ignore memos from specific users.
 */
module
{
	name = "ms_ignore"

	/*
	 * The maximum number of entries that may be on a memo ignore list.
	 *
	 * This directive is optional.
	 */
	max = 32
}
command { service = "MemoServ"; name = "IGNORE"; command = "memoserv/ignore"; }

/*
 * ms_info
 *
 * Provides the command memoserv/info.
 *
 * Used to show memo related information about an account or a channel.
 */
module { name = "ms_info" }
command { service = "MemoServ"; name = "INFO"; command = "memoserv/info"; }

/*
 * ms_list
 *
 * Provides the command memoserv/list.
 *
 * Used to list your current memos.
 */
module { name = "ms_list" }
command { service = "MemoServ"; name = "LIST"; command = "memoserv/list"; }

/*
 * ms_read
 *
 * Provides the command memoserv/read.
 *
 * Used to read your memos.
 */
module { name = "ms_read" }
command { service = "MemoServ"; name = "READ"; command = "memoserv/read"; }

/*
 * ms_rsend
 *
 * Provides the command memoserv/rsend.
 *
 * Used to send a memo requiring a receipt be sent back once it is read.
 *
 * Requires configuring memoserv:memoreceipt.
 */
#module
{
	name = "ms_rsend"

	/*
	 * Only allow Services Operators to use ms_rsend.
	 *
	 * This directive is optional.
	 */
	operonly = false
}
#command { service = "MemoServ"; name = "RSEND"; command = "memoserv/rsend"; }

/*
 * ms_send
 *
 * Provides the command memoserv/send.
 *
 * Used to send memos.
 */
module { name = "ms_send" }
command { service = "MemoServ"; name = "SEND"; command = "memoserv/send"; }

/*
 * ms_sendall
 *
 * Provides the command memoserv/sendall.
 *
 * Used to send a mass memo to every registered user.
 */
module { name = "ms_sendall" }
command { service = "MemoServ"; name = "SENDALL"; command = "memoserv/sendall"; permission = "memoserv/sendall"; }

/*
 * ms_set
 *
 * Provides the command memoserv/set.
 *
 * Used to set settings such as how you are notified of new memos, and your memo limit.
 */
module { name = "ms_set" }
command { service = "MemoServ"; name = "SET"; command = "memoserv/set"; }

/*
 * ms_staff
 *
 * Provides the command memoserv/staff.
 *
 * Used to send a memo to all registered staff members.
 */
module { name = "ms_staff" }
command { service = "MemoServ"; name = "STAFF"; command = "memoserv/staff"; permission = "memoserv/staff"; }
