thelounge/defaults/config.js

538 lines
11 KiB
JavaScript
Raw Normal View History

"use strict";
2014-09-13 16:41:11 +00:00
module.exports = {
2014-09-14 17:50:00 +00:00
//
// Set the server mode.
// Public servers does not require authentication.
//
// Set to 'false' to enable users.
//
// @type boolean
// @default false
2014-09-15 21:54:01 +00:00
//
public: false,
2014-09-15 21:54:01 +00:00
2014-09-14 17:50:00 +00:00
//
// IP address or hostname for the web server to listen on.
// Setting this to undefined will listen on all interfaces.
2014-09-14 17:50:00 +00:00
//
// For UNIX domain sockets, use unix:/absolute/path/to/file.sock.
//
2014-09-14 17:50:00 +00:00
// @type string
// @default undefined
2014-09-14 17:50:00 +00:00
//
host: undefined,
2014-09-15 21:54:01 +00:00
2014-09-14 17:50:00 +00:00
//
// Set the port to listen on.
//
// @type int
// @default 9000
//
port: 9000,
2014-10-11 06:17:41 +00:00
//
// Set the local IP to bind to for outgoing connections. Leave to undefined
// to let the operating system pick its preferred one.
2014-10-11 06:17:41 +00:00
//
// @type string
2016-02-09 14:07:50 +00:00
// @default undefined
2014-10-11 06:17:41 +00:00
//
bind: undefined,
2016-04-03 05:12:49 +00:00
//
// Sets whether the server is behind a reverse proxy and should honor the
// X-Forwarded-For header or not.
//
// @type boolean
// @default false
//
reverseProxy: false,
2014-09-14 17:50:00 +00:00
//
// Set the default theme.
// Find out how to add new themes at https://thelounge.github.io/docs/plugins/themes.html
2014-09-14 17:50:00 +00:00
//
// @type string
2018-04-02 05:59:33 +00:00
// @default "default"
2014-09-14 17:50:00 +00:00
//
2018-04-02 05:59:33 +00:00
theme: "default",
2014-09-14 17:50:00 +00:00
2014-10-10 21:12:01 +00:00
//
// Prefetch URLs
//
// If enabled, The Lounge will try to load thumbnails and site descriptions from
2014-10-10 21:12:01 +00:00
// URLs posted in channels.
//
// @type boolean
2016-02-09 14:07:50 +00:00
// @default false
2014-10-10 21:12:01 +00:00
//
2015-09-18 20:11:17 +00:00
prefetch: false,
2014-09-24 22:23:54 +00:00
//
// Store and proxy prefetched images and thumbnails.
// This improves security and privacy by not exposing client IP address,
// and always loading images from The Lounge instance and making all assets secure,
// which in result fixes mixed content warnings.
//
// If storage is enabled, The Lounge will fetch and store images and thumbnails
// in the `${THELOUNGE_HOME}/storage` folder.
//
// Images are deleted when they are no longer referenced by any message (controlled by maxHistory),
// and the folder is cleaned up on every The Lounge restart.
//
// @type boolean
// @default false
//
prefetchStorage: false,
//
// Prefetch URLs Image Preview size limit
//
// If prefetch is enabled, The Lounge will only display content under the maximum size.
// Specified value is in kilobytes. Default value is 2048 kilobytes.
//
// @type int
// @default 2048
//
prefetchMaxImageSize: 2048,
2015-03-22 13:32:01 +00:00
//
// Display network
//
2016-02-21 12:02:35 +00:00
// If set to false network settings will not be shown in the login form.
2015-03-22 13:32:01 +00:00
//
// @type boolean
// @default true
//
displayNetwork: true,
2016-02-21 12:02:35 +00:00
//
// Lock network
//
// If set to true, users will not be able to modify host, port and tls
// settings and will be limited to the configured network.
//
// @type boolean
// @default false
//
lockNetwork: false,
2016-11-19 18:32:47 +00:00
//
// Hex IP
//
// If enabled, clients' username will be set to their IP encoded has hex.
// This is done to share the real user IP address with the server for host masking purposes.
//
// @type boolean
// @default false
//
useHexIp: false,
2016-04-03 05:12:49 +00:00
//
// WEBIRC support
//
// If enabled, The Lounge will pass the connecting user's host and IP to the
// IRC server. Note that this requires to obtain a password from the IRC network
// The Lounge will be connecting to and generally involves a lot of trust from the
// network you are connecting to.
//
// Format (standard): {"irc.example.net": "hunter1", "irc.example.org": "passw0rd"}
// Format (function):
// {"irc.example.net": function(client, args, trusted) {
// // here, we return a webirc object fed directly to `irc-framework`
2016-05-06 17:51:38 +00:00
// return {username: "thelounge", password: "hunter1", address: args.ip, hostname: "webirc/"+args.hostname};
2016-04-03 05:12:49 +00:00
// }}
//
// @type string | function(client, args):object(webirc)
// @default null
webirc: null,
2017-11-28 17:56:53 +00:00
//
// Message logging
// Logging is also controlled per user individually (logs variable)
// Leave the array empty to disable all logging globally
//
// text: Text file per network/channel in user folder
// sqlite: Messages are stored in SQLite, this allows them to be reloaded on server restart
//
// @type array
// @default ["sqlite", "text"]
//
messageStorage: ["sqlite", "text"],
2014-09-16 19:47:01 +00:00
//
// Log settings
//
// Logging has to be enabled per user. If enabled, logs will be stored in
2016-05-15 21:15:03 +00:00
// the 'logs/<user>/<network>/' folder.
2014-09-16 19:47:01 +00:00
//
// @type object
// @default {}
//
logs: {
//
// Timestamp format
//
// @type string
// @default "YYYY-MM-DD HH:mm:ss"
//
format: "YYYY-MM-DD HH:mm:ss",
//
// Timezone
//
// @type string
// @default "UTC+00:00"
//
timezone: "UTC+00:00",
2014-09-16 19:47:01 +00:00
},
//
// Maximum number of history lines per channel
//
// Defines the maximum number of history lines that will be kept in
// memory per channel/query, in order to reduce the memory usage of
2017-01-29 09:18:33 +00:00
// the server. Setting this to -1 will keep unlimited amount.
//
// @type integer
2017-01-29 09:18:33 +00:00
// @default 10000
maxHistory: 10000,
2014-09-15 21:54:01 +00:00
//
// Default values for the 'Connect' form.
//
// @type object
// @default {}
//
defaults: {
//
// Name
//
// @type string
// @default "Freenode"
//
name: "Freenode",
//
// Host
//
// @type string
// @default "chat.freenode.net"
2014-09-15 21:54:01 +00:00
//
host: "chat.freenode.net",
2014-09-15 21:54:01 +00:00
//
// Port
//
// @type int
// @default 6697
//
port: 6697,
//
// Password
//
// @type string
// @default ""
//
password: "",
//
// Enable TLS/SSL
//
// @type boolean
// @default true
//
tls: true,
//
// Enable certificate verification
//
// If true, the server certificate is verified against
// the list of supplied CAs by your node.js installation.
//
// @type boolean
// @default true
//
rejectUnauthorized: true,
2014-09-15 21:54:01 +00:00
//
// Nick
//
// Percent sign (%) will be replaced into a random number from 0 to 9.
// For example, Guest%%% will become Guest123 on page load.
//
2014-09-15 21:54:01 +00:00
// @type string
2018-02-21 16:05:31 +00:00
// @default "thelounge%%"
2014-09-15 21:54:01 +00:00
//
2018-02-21 16:05:31 +00:00
nick: "thelounge%%",
2014-09-15 21:54:01 +00:00
2014-11-02 15:44:52 +00:00
//
// Username
//
// @type string
2018-02-21 16:05:31 +00:00
// @default "thelounge"
2014-11-02 15:44:52 +00:00
//
2018-02-21 16:05:31 +00:00
username: "thelounge",
2014-11-02 15:44:52 +00:00
2014-09-15 21:54:01 +00:00
//
// Real Name
//
// @type string
// @default "The Lounge User"
2014-09-15 21:54:01 +00:00
//
realname: "The Lounge User",
2014-09-15 21:54:01 +00:00
//
// Channels
// This is a comma-separated list.
2014-09-15 21:54:01 +00:00
//
// @type string
// @default "#thelounge"
2014-09-15 21:54:01 +00:00
//
join: "#thelounge",
2014-09-26 23:26:21 +00:00
},
2014-11-06 11:48:10 +00:00
//
// Set socket.io transports
//
// @type array
2016-03-19 16:48:36 +00:00
// @default ["polling", "websocket"]
//
2014-11-06 11:48:10 +00:00
transports: ["polling", "websocket"],
2014-09-26 23:26:21 +00:00
//
// Run The Lounge using encrypted HTTP/2.
// This will fallback to regular HTTPS if HTTP/2 is not supported.
2014-09-26 23:26:21 +00:00
//
// @type object
// @default {}
//
https: {
//
// Enable HTTP/2 / HTTPS support.
2014-09-26 23:26:21 +00:00
//
// @type boolean
// @default false
//
enable: false,
//
// Path to the key.
//
// @type string
// @example "sslcert/key.pem"
// @default ""
//
key: "",
//
// Path to the certificate.
//
// @type string
// @example "sslcert/key-cert.pem"
// @default ""
//
2017-04-10 18:49:58 +00:00
certificate: "",
//
// Path to the CA bundle.
//
// @type string
// @example "sslcert/bundle.pem"
// @default ""
//
ca: "",
2014-10-09 15:46:12 +00:00
},
2017-08-18 19:04:16 +00:00
//
// Default quit and part message if none is provided.
//
// @type string
// @default "The Lounge - https://thelounge.chat"
2017-08-18 19:04:16 +00:00
//
leaveMessage: "The Lounge - https://thelounge.chat",
2017-08-18 19:04:16 +00:00
2014-10-09 15:46:12 +00:00
//
// Run The Lounge with identd support.
2014-10-09 15:46:12 +00:00
//
// @type object
// @default {}
2014-10-11 17:33:28 +00:00
//
2014-10-09 15:46:12 +00:00
identd: {
//
2014-10-11 17:33:28 +00:00
// Run the identd daemon on server start.
2014-10-09 15:46:12 +00:00
//
// @type boolean
2014-10-11 17:33:28 +00:00
// @default false
//
enable: false,
2014-10-09 15:46:12 +00:00
//
2014-10-11 17:33:28 +00:00
// Port to listen for ident requests.
2014-10-09 15:46:12 +00:00
//
// @type int
2014-10-11 17:33:28 +00:00
// @default 113
2014-10-09 15:46:12 +00:00
//
port: 113,
2016-04-26 20:41:08 +00:00
},
//
// Enable oidentd support using the specified file
//
// Example: oidentd: "~/.oidentd.conf",
//
// @type string
// @default null
//
oidentd: null,
2016-07-30 01:20:38 +00:00
//
// LDAP authentication settings (only available if public=false)
// @type object
// @default {}
//
// The authentication process works as follows:
//
// 1. Lounge connects to the LDAP server with its system credentials
// 2. It performs a LDAP search query to find the full DN associated to the
// user requesting to log in.
// 3. Lounge tries to connect a second time, but this time using the user's
// DN and password. Auth is validated iff this connection is successful.
//
// The search query takes a couple of parameters in `searchDN`:
// - a base DN `searchDN/base`. Only children nodes of this DN will be likely
// to be returned;
// - a search scope `searchDN/scope` (see LDAP documentation);
// - the query itself, build as (&(<primaryKey>=<username>) <filter>)
// where <username> is the user name provided in the log in request,
// <primaryKey> is provided by the config and <fitler> is a filtering complement
// also given in the config, to filter for instance only for nodes of type
// inetOrgPerson, or whatever LDAP search allows.
//
// Alternatively, you can specify the `bindDN` parameter. This will make the lounge
// ignore searchDN options and assume that the user DN is always:
// <bindDN>,<primaryKey>=<username>
// where <username> is the user name provided in the log in request, and <bindDN>
// and <primaryKey> are provided by the config.
//
2016-07-30 01:20:38 +00:00
ldap: {
//
// Enable LDAP user authentication
//
// @type boolean
// @default false
//
enable: false,
//
// LDAP server URL
//
// @type string
//
url: "ldaps://example.com",
//
// LDAP connection tls options (only used if scheme is ldaps://)
//
// @type object (see nodejs' tls.connect() options)
// @default {}
//
// Example:
// You can use this option in order to force the use of IPv6:
// {
// host: 'my::ip::v6',
// servername: 'example.com'
// }
tlsOptions: {},
//
// LDAP base dn, alternative to searchDN
2016-07-30 01:20:38 +00:00
//
// @type string
//
// baseDN: "ou=accounts,dc=example,dc=com",
2016-07-30 01:20:38 +00:00
//
// LDAP primary key
//
// @type string
// @default "uid"
//
primaryKey: "uid",
//
// LDAP search dn settings. This defines the procedure by which the
// lounge first look for user DN before authenticating her.
// Ignored if baseDN is specified
//
// @type object
//
searchDN: {
//
// LDAP searching bind DN
// This bind DN is used to query the server for the DN of the user.
// This is supposed to be a system user that has access in read only to
// the DNs of the people that are allowed to log in.
//
// @type string
//
rootDN: "cn=thelounge,ou=system-users,dc=example,dc=com",
//
// Password of the lounge LDAP system user
//
// @type string
//
rootPassword: "1234",
//
// LDAP filter
//
// @type string
// @default "uid"
//
2017-08-30 09:49:21 +00:00
filter: "(objectClass=person)(memberOf=ou=accounts,dc=example,dc=com)",
//
// LDAP search base (search only within this node)
//
// @type string
//
base: "dc=example,dc=com",
//
// LDAP search scope
//
// @type string
// @default "sub"
//
scope: "sub",
},
},
2016-07-30 01:20:38 +00:00
2016-12-10 08:53:06 +00:00
// Extra debugging
//
2016-12-10 08:53:06 +00:00
// @type object
// @default {}
//
2016-12-10 08:53:06 +00:00
debug: {
// Enables extra debugging output provided by irc-framework.
//
// @type boolean
// @default false
//
ircFramework: false,
// Enables logging raw IRC messages into each server window.
//
// @type boolean
// @default false
//
raw: false,
},
2014-09-13 16:41:11 +00:00
};