forked from platypush/platypush
135 lines
4.1 KiB
Python
135 lines
4.1 KiB
Python
import os
|
|
|
|
from marshmallow import fields
|
|
from marshmallow.schema import Schema
|
|
|
|
from platypush.schemas import StrippedString
|
|
|
|
|
|
class IRCServerSchema(Schema):
|
|
server = fields.String(
|
|
required=True,
|
|
metadata=dict(
|
|
description='Server address or hostname',
|
|
example='irc.example.org',
|
|
)
|
|
)
|
|
|
|
port = fields.Int(
|
|
missing=6667,
|
|
metadata=dict(
|
|
description='IRC server port',
|
|
example=6667,
|
|
)
|
|
)
|
|
|
|
password = fields.String(allow_none=True, default=None, metadata=dict(example='password'))
|
|
nickname = fields.String(required=True, metadata=dict(example='testbot'))
|
|
realname = fields.String(allow_none=True, metadata=dict(example='My Real Name'))
|
|
alias = StrippedString(
|
|
metadata=dict(description='Friendly name for this bot/server connection')
|
|
)
|
|
|
|
channels = fields.List(
|
|
fields.String(),
|
|
missing=list,
|
|
metadata=dict(
|
|
description='List of channels the bot will connect to',
|
|
example=['#channel1', '#channel2', '#channel3']
|
|
)
|
|
)
|
|
|
|
ssl = fields.Boolean(missing=False)
|
|
ipv6 = fields.Boolean(missing=False)
|
|
stop_message = StrippedString(missing='Application stopped', metadata=dict(description='Quit/die message'))
|
|
|
|
dcc_ip_whitelist = fields.List(
|
|
fields.String,
|
|
missing=list,
|
|
metadata=dict(
|
|
description='If specified then only DCC connections from the IP addresses on this list will be accepted',
|
|
)
|
|
)
|
|
|
|
dcc_ip_blacklist = fields.List(
|
|
fields.String,
|
|
missing=list,
|
|
metadata=dict(
|
|
description='If specified then DCC connections from the IP addresses on this list will be rejected',
|
|
)
|
|
)
|
|
|
|
dcc_nick_whitelist = fields.List(
|
|
fields.String,
|
|
missing=list,
|
|
metadata=dict(
|
|
description='If specified then only DCC connections from the nicknames on this list will be accepted',
|
|
)
|
|
)
|
|
|
|
dcc_nick_blacklist = fields.List(
|
|
fields.String,
|
|
missing=list,
|
|
metadata=dict(
|
|
description='If specified then DCC connections from the nicknames on this list will be rejected',
|
|
)
|
|
)
|
|
|
|
dcc_downloads_dir = fields.String(
|
|
missing=os.path.join(os.path.expanduser('~'), 'Downloads'),
|
|
metadata=dict(description='DCC file transfers will be downloaded to this folder (default: ~/Downloads)'),
|
|
)
|
|
|
|
response_timeout = fields.Number(
|
|
missing=30.,
|
|
metadata=dict(
|
|
description='How long we should wait for a response to an IRC request '
|
|
'(default: 30 seconds)',
|
|
)
|
|
)
|
|
|
|
dcc_file_transfer_timeout = fields.Number(
|
|
missing=30.,
|
|
metadata=dict(
|
|
description='How long we should wait on a pending DCC file transfer with '
|
|
'no data being transmitted (default: 30 seconds)',
|
|
)
|
|
)
|
|
|
|
dcc_accept_timeout = fields.Number(
|
|
missing=300.,
|
|
metadata=dict(
|
|
description='How long we should wait on a pending DCC request '
|
|
'until the user accepts (default: 300 seconds)',
|
|
)
|
|
)
|
|
|
|
dcc_max_connections = fields.Int(
|
|
missing=10,
|
|
metadata=dict(
|
|
description='Maximum number of concurrent DCC connections allowed on this bot (default: 10)'
|
|
)
|
|
)
|
|
|
|
|
|
class IRCServerStatusSchema(Schema):
|
|
server = StrippedString(required=True)
|
|
port = fields.Int(required=True)
|
|
alias = StrippedString()
|
|
real_name = fields.String()
|
|
nickname = fields.String()
|
|
is_connected = fields.Boolean()
|
|
connected_channels = fields.List(fields.String)
|
|
|
|
|
|
class IRCChannelSchema(Schema):
|
|
name = fields.String(required=True)
|
|
modes = fields.List(fields.String)
|
|
opers = fields.List(fields.String)
|
|
owners = fields.List(fields.String)
|
|
users = fields.List(fields.String)
|
|
voiced = fields.List(fields.String)
|
|
is_invite_only = fields.Boolean()
|
|
is_moderated = fields.Boolean()
|
|
is_protected = fields.Boolean()
|
|
is_secret = fields.Boolean()
|