mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-01 09:19:23 +01:00
84452bec2e
This removes the use_experimental_whois option, which is always enabled now. The rationale behind this is that PyLink cannot accurately track signon and idle times for things like relay users, without forwarding WHOIS requests between servers in a way the hooks system is really not optimized to do. However, no IDLE response means that no WHOIS data is ever sent back to the calling user, so this workaround is probably the best solution, aside from faking values.
408 lines
16 KiB
YAML
408 lines
16 KiB
YAML
# This is a sample configuration file for PyLink. You'll likely want to rename it to pylink.yml
|
|
# and begin your configuration there.
|
|
|
|
# Note: lines starting with a "#" are comments and will be ignored.
|
|
# Note 2: Use SPACES, NOT tabs to indent, or you will get parser errors on start!
|
|
|
|
bot:
|
|
# Sets nick, user/ident, and real name.
|
|
nick: PyLink
|
|
ident: pylink
|
|
realname: PyLink Service Client
|
|
|
|
# Server description (shown in /links, /whois, etc.)
|
|
serverdesc: PyLink Server
|
|
|
|
# Options below this require the fantasy plugin to be loaded.
|
|
|
|
# Sets the default fantasy command prefix for calling commands inside channels
|
|
prefix: "&"
|
|
|
|
# Determines whether the bot will reply to commands prefixed with its nick
|
|
# (case sensitive and requires the fantasy plugin).
|
|
respondtonick: true
|
|
|
|
# Custom fantasy command prefixes for other service bots if they are loaded.
|
|
prefixes:
|
|
games: "@"
|
|
|
|
# Determines whether hideoper modes should be respected in WHOIS responses.
|
|
# Defaults to true if not specified.
|
|
whois_use_hideoper: true
|
|
|
|
# Determines whether PyLink service clients should protect themselves from
|
|
# kicks, kills, etc. using IRCd-side servprotect modes. For this to work
|
|
# properly, this requires that PyLink be U-Lined (on most IRCds). Defaults to
|
|
# False.
|
|
protect_services: false
|
|
|
|
# Determines how long plugins should wait (in seconds) before flushing their
|
|
# databases to disk. Defaults to 300 seconds. Changes here require a reload
|
|
# of all database-enabled plugins to take effect.
|
|
save_delay: 300
|
|
|
|
login:
|
|
# PyLink administrative login - Change this, or the service will not start!
|
|
user: admin
|
|
password: changeme
|
|
|
|
servers:
|
|
# Please note: these are only EXAMPLE link blocks. You should edit them and
|
|
# remove ones that you don't need in your config.
|
|
|
|
# Short name for the network. This is used for relay's nick suffixes, the
|
|
# network plugin's (dis)connect commands, and elsewhere internally.
|
|
# You should change this to some abbreviation representing your network
|
|
# name; usually something 3-5 characters should be good.
|
|
inspnet:
|
|
# Server IP, port, and passwords. The ip: field also supports resolving
|
|
# hostnames, but this is not well tested and thus not recommended.
|
|
ip: 127.0.0.1
|
|
port: 7000
|
|
recvpass: "abcd"
|
|
sendpass: "abcd"
|
|
|
|
# The full network name, used by plugins.
|
|
netname: "InspIRCd Network"
|
|
|
|
# Hostname we will use to connect to the remote server
|
|
hostname: "pylink.yournet.local"
|
|
|
|
# SID - required for InspIRCd and TS6 based servers. This must be three
|
|
# characters long.
|
|
# The first char must be a digit [0-9], and the remaining two chars may
|
|
# be either uppercase letters [A-Z] or digits.
|
|
sid: "0AL"
|
|
|
|
# SID range - the range of SIDs PyLink is allowed to use to generate
|
|
# server IDs. On TS6, this should be a combination of digits, letters,
|
|
# and #'s. Each # denotes a range (0-9A-Z) of characters that can be
|
|
# used by PyLink to generate appropriate SIDs. You will want to make
|
|
# sure no other servers are using this range.
|
|
# There must be at least one # in the entry.
|
|
sidrange: "8##"
|
|
|
|
# Autojoin channels. Leave this as an empty list or remove the key if
|
|
# you don't want to have service bots join any channels by default.
|
|
channels: ["#pylink"]
|
|
|
|
# Sets the protocol module to use - see the protocols/ folder for a list
|
|
# of valid values (omitting the .py extension).
|
|
protocol: "inspircd"
|
|
|
|
# Sets autoconnect delay - comment this out or set the value below 1 to
|
|
# disable autoconnect entirely.
|
|
autoconnect: 5
|
|
|
|
# Sets ping frequency (i.e. how long we should wait between sending
|
|
# pings to our uplink). When more than two consecutive pings are missed,
|
|
# PyLink will disconnect with a ping timeout. This defaults to 90 if
|
|
# not set.
|
|
pingfreq: 90
|
|
|
|
# Separator character (used by relay). Making this include anything other
|
|
# than letters, numbers, or /|_`-[]^ will void your support.
|
|
separator: "/"
|
|
|
|
# If enabled, this opts this network out of relay IP sharing. i.e. this network
|
|
# will not have its users' IPs sent across the relay, and it will not see any
|
|
# IPs of other networks' users.
|
|
#relay_no_ips: true
|
|
|
|
# Sets the max nick length for the network. It is important this is
|
|
# set correctly, or PyLink might introduce a nick that is too long and
|
|
# cause netsplits! This defaults to 30 if not set.
|
|
maxnicklen: 30
|
|
|
|
# Toggles SSL for this network. Defaults to false if not specified, and
|
|
# requires the ssl_certfile and ssl_keyfile options to work.
|
|
#ssl: true
|
|
|
|
#ssl_certfile: pylink-cert.pem
|
|
#ssl_keyfile: pylink-key.pem
|
|
|
|
# Optionally, you can set this option to verify the SSL certificate
|
|
# fingerprint of your uplink.
|
|
#ssl_fingerprint: "e0fee1adf795c84eec4735f039503eb18d9c35cc"
|
|
|
|
# This sets the hash type for the fingerprint (md5, sha1, sha256, etc.)
|
|
# Valid values include md5 and sha1-sha512, though others may be
|
|
# supported depending on your system: see
|
|
# https://docs.python.org/3/library/hashlib.html
|
|
# This setting defaults to sha256.
|
|
#ssl_fingerprint_type: sha256
|
|
|
|
ts6net:
|
|
ip: ::1
|
|
|
|
# Determines whether IPv6 should be used for this connection. Should the ip:
|
|
# above be a hostname instead of an IP, this will affect whether A records
|
|
# (IPv4) or AAAA records (IPv6) will be used in resolving it.
|
|
ipv6: yes
|
|
|
|
port: 7000
|
|
recvpass: "abcd"
|
|
sendpass: "abcd"
|
|
hostname: "pylink.example.com"
|
|
sid: "8PY"
|
|
netname: "some TS6 network"
|
|
sidrange: "8P#"
|
|
|
|
protocol: "ts6"
|
|
autoconnect: 5
|
|
|
|
# Note: /'s in nicks are automatically converted to |'s for TS6
|
|
# networks, since they don't allow "/" in nicks.
|
|
separator: "|"
|
|
|
|
# The following options are specific to TS6 servers:
|
|
# Toggles owner (+y), admin (+a), and halfop (+h) support for
|
|
# shadowircd/elemental-ircd.
|
|
# This defaults to off for the best compatibility.
|
|
use_owner: false
|
|
use_admin: false
|
|
use_halfop: false
|
|
|
|
# Toggles support of shadowircd/elemental-ircd specific channel modes:
|
|
# +T (no notice), +u (hidden ban list), +E (no kicks), +J (blocks
|
|
# kickrejoin),
|
|
# +K (no repeat messages), +d (no nick changes), and user modes:
|
|
# +B (bot), +C (blocks CTCP), +D (deaf), +V (no invites), +I (hides
|
|
# channel list)
|
|
use_elemental_modes: false
|
|
|
|
unrealnet:
|
|
ip: 1.2.3.4
|
|
port: 8067
|
|
recvpass: "coffee"
|
|
sendpass: "tea"
|
|
hostname: "pylink.example.com"
|
|
sid: "2PY"
|
|
netname: "This should match your UnrealIRCd config"
|
|
sidrange: "8##"
|
|
channels: []
|
|
protocol: "unreal"
|
|
autoconnect: 5
|
|
|
|
# This option enables SUPER HACKY UNREAL 3.2 COMPAT mode, which allows
|
|
# PyLink to link to mixed Unreal 3.2/4.0 networks, using a 4.0 server
|
|
# as a direct uplink.
|
|
# THIS IS EXPERIMENTAL, NOT WELL TESTED, AND MAY SET YOUR HOUSE ON FIRE
|
|
# AND G-LINE EVERYONE ON YOUR NETWORK.
|
|
# We encourage you to upgrade so that all your servers are running the
|
|
# same IRCd version.
|
|
#mixed_link: true
|
|
|
|
# You can also define network-specific nicks and idents for various service
|
|
# bots, using the configuration options "servicename_nick" and "servicename_ident".
|
|
#pylink_nick: MagicServ
|
|
#pylink_ident: magicserv
|
|
#games_nick: MagicGames
|
|
#games_ident: magicgames
|
|
|
|
nefarious:
|
|
ip: 1.2.3.4
|
|
port: 45454
|
|
recvpass: "recv"
|
|
sendpass: "send"
|
|
hostname: "pylink.midnight.vpn"
|
|
|
|
# For P10, the SID and SID range options are just numbers. Make sure nothing
|
|
# else is using the range you're reserving for PyLink.
|
|
sid: 50
|
|
sidrange: "100-150"
|
|
channels: ["#lounge"]
|
|
protocol: nefarious
|
|
autoconnect: 5
|
|
netname: "Nefarious test server"
|
|
|
|
# The following options are specific to Nefarious servers.
|
|
# Halfop is optional in Nefarious. This should match your IRCd configuration.
|
|
use_halfop: false
|
|
|
|
# Determines whether account-based cloaks should be used (someone.users.yournet.org
|
|
# format). This should match your IRCd configuration:
|
|
# ENABLE this if HOST_HIDING_STYLE is set to either 1 or 3.
|
|
use_account_cloaks: true
|
|
|
|
# The cloak suffix to be used for account-based cloaks. This **MUST** match your
|
|
# IRCd configuration if use_account_cloaks is enabled.
|
|
cloak_suffix: "users.yournet.org"
|
|
|
|
# Determines whether account-based cloaks should be used for opers
|
|
# (someone.opers.yournet.org format). If use_account_cloaks is disabled,
|
|
# this will have no effect. This should match your IRCd configuration:
|
|
use_oper_account_cloaks: true
|
|
|
|
# The cloak suffix to be used for IRCop account-based cloaks. This **MUST** match your
|
|
# IRCd configuration if use_oper_account_cloaks is enabled.
|
|
oper_cloak_suffix: "staff.yournet.org"
|
|
|
|
# Determines whether UnrealIRCd-style hashed-host cloaks will be used.
|
|
# This should match your IRCd configuration:
|
|
# ENABLE this if HOST_HIDING_STYLE is set to either 2 or 3.
|
|
use_hashed_cloaks: true
|
|
|
|
# Determines whether extended accounts should be used for this network.
|
|
# This **MUST** match the EXTENDED_ACCOUNTS setting in your IRCd configuration.
|
|
# Disable this if you are using X3, and leave it on for any other service package
|
|
# (atheme, etc.)
|
|
use_extended_accounts: true
|
|
|
|
# Plugins to load (omit the .py extension)
|
|
plugins:
|
|
# Commands plugin: Provides core commands such as logging in, shutting down
|
|
# PyLink, and various command help.
|
|
- commands
|
|
|
|
# Networks plugin: Allows you to manage (dis)connections to networks while
|
|
# PyLink is running.
|
|
- networks
|
|
|
|
# Ctcp plugin: handles basic CTCP replies (VERSION, etc).
|
|
- ctcp
|
|
|
|
# Oper commands plugin: Provides a subset of network management commands.
|
|
# (KILL, JUPE, etc.)
|
|
# Note: these commands will be made available to anyone who's opered on your
|
|
# network, so make sure your opers are trustworthy!
|
|
#- opercmds
|
|
|
|
# Bots plugin: Allows you to manipulate pseudo-clients (bots) on networks.
|
|
#- bots
|
|
|
|
# Relay plugin: Janus-style server-side relay plugin. See the relay: block
|
|
# below for configuration.
|
|
#- relay
|
|
|
|
# Fantasy plugin: Allows you to trigger commands in channels by PyLink's
|
|
# nick or a configurable prefix character.
|
|
#- fantasy
|
|
|
|
# Changehost plugin: Automatically changes the hostmask of matching users
|
|
# to a template string, as they connect. This requires the changehost: block
|
|
# to be configured correctly below.
|
|
#- changehost
|
|
|
|
logging:
|
|
# This configuration block defines targets that PyLink should log commands,
|
|
# errors, etc., to.
|
|
|
|
# This sets the level for STDOUT logging, which is always enabled. Valid
|
|
# settings include DEBUG, INFO, WARNING, ERROR, and CRITICAL: see
|
|
# https://docs.python.org/3/library/logging.html#logging-levels for details.
|
|
stdout: INFO
|
|
|
|
channels:
|
|
# Log to channels on the specified networks.
|
|
# Make sure that the main PyLink client is configured to join your
|
|
# log channel in the channels: blocks for the networks it will be
|
|
# logging on. It will not automatically join log channels.
|
|
|
|
# Note: Log messages are forwarded over relay, so you will get duplicate
|
|
# messages if you add log blocks for more than one channel in one
|
|
# relay.
|
|
|
|
# Note 2: DEBUG logging is not supported here: any log level settings
|
|
# below INFO be automatically raised to INFO.
|
|
loglevel: INFO
|
|
|
|
inspnet:
|
|
"#services":
|
|
loglevel: INFO
|
|
"#pylink-notifications":
|
|
loglevel: WARNING
|
|
|
|
ts6net:
|
|
"#services":
|
|
loglevel: INFO
|
|
|
|
files:
|
|
# Logs to file targets. These will be placed in the log/ folder in the
|
|
# PyLink directory, with a filename based on the current instance name
|
|
# and the target name defined: instancename-targetname.log
|
|
# Changing settings in this block will require a restart to take effect.
|
|
|
|
# When running with ./pylink, this will create log/pylink-errors.log
|
|
# When running with ./pylink someconf.yml, this will create log/someconf-errors.log
|
|
"errors":
|
|
loglevel: ERROR
|
|
|
|
# Ditto above. When running with ./pylink, it will use log/pylink-commands.log
|
|
# When running with ./pylink someconf.yml, this will create log/someconf-commands.log
|
|
"commands":
|
|
loglevel: INFO
|
|
|
|
changehost:
|
|
# This block configures the Changehost plugin. You don't need this if you
|
|
# aren't using it.
|
|
|
|
# Sets the networks where Changehost should be enabled.
|
|
enabled_nets:
|
|
- inspnet
|
|
- ts6net
|
|
|
|
# This sets the hostmasks that Changehost should look for. Whenever someone
|
|
# with a matching nick!user@host connects, their host will be set to the
|
|
# text defined. The following substitutions are available here:
|
|
# $uid, $ts (time of connection), $nick, $realhost, $host, $ident, $ip.
|
|
# Invalid characters in hosts are replaced with a "-".
|
|
# Also, make sure you quote each entry so the YAML parser treats them as
|
|
# raw strings.
|
|
hosts:
|
|
|
|
# Here are some examples. Note that to keep your users' details
|
|
# private, you should probably refrain from using $ip or $realhost,
|
|
# in these hostmasks, unless cloaking is already disabled.
|
|
"*!GLolol@*.yournet.com": "$nick.opers.yournet.com"
|
|
"*!*@localhost": "some-server.hostname"
|
|
|
|
# Freenode-style masks are possible with this (though without the
|
|
# hashing)
|
|
"*!*@bnc-server.yournet.com": "yournet/bnc-users/$ident"
|
|
"*!*@ircip?.mibbit.com": "$ident.$realhost"
|
|
"WebchatUser*!*@*": "webchat/users/$ident"
|
|
|
|
relay:
|
|
# This block defines various options for the Relay plugin. You don't need this
|
|
# if you aren't using it.
|
|
|
|
# Determines whether remote opers will have user mode +H (hideoper) set on
|
|
# them. This has the benefit of lowering the oper count in /lusers and
|
|
# /stats (P|p), but only on IRCds that support it. This defaults to true
|
|
# if not set.
|
|
hideoper: true
|
|
|
|
# Determines whether real IPs should be sent across the relay. You should
|
|
# generally have a consensus with your linked networks on whether this should
|
|
# be turned on. You will see other networks' user IP addresses, and they
|
|
# will see yours. Individual networks can also opt out of IP sharing
|
|
# both ways by defining "relay_no_ips: true" in their server block.
|
|
show_ips: false
|
|
|
|
# Determines whether NickServ login info should be shown in the /whois output for
|
|
# relay users. For InspIRCd networks, this requires "use_experimental_whois" to be
|
|
# set.
|
|
# Valid options include "all" (show this to everyone), "opers" (show only to
|
|
# opers), and "none" (disabled). Defaults to none if not specified.
|
|
whois_show_accounts: all
|
|
|
|
# Determines whether the origin server should be shown in the /whois output for
|
|
# relay users. For InspIRCd networks, this requires "use_experimental_whois" to be
|
|
# set.
|
|
# Valid options include "all" (show this to everyone), "opers" (show only to
|
|
# opers), and "none" (disabled). Defaults to none if not specified.
|
|
whois_show_server: opers
|
|
|
|
# Determines whether netsplits should be hidden as *.net *.split over the relay.
|
|
# Defaults to False.
|
|
show_netsplits: false
|
|
|
|
games:
|
|
# Sets the nick of the Games service, if you're using it.
|
|
nick: Games
|
|
|
|
automode:
|
|
# Sets the nick of the Automode service, if you're using it.
|
|
nick: ModeBot
|