forked from GNUsocial/gnu-social
		
	[DOCUMENTATION][DEFAULTS] Documented all defaults and updated some. Restructured other documentation.
This commit is contained in:
		
							
								
								
									
										1
									
								
								DOCUMENTATION/DEVELOPERS/install.md
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								DOCUMENTATION/DEVELOPERS/install.md
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | ||||
| ../../INSTALL.md | ||||
							
								
								
									
										762
									
								
								DOCUMENTATION/SYSTEM_ADMINISTRATORS/CONFIGURE.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										762
									
								
								DOCUMENTATION/SYSTEM_ADMINISTRATORS/CONFIGURE.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,762 @@ | ||||
| Configuration options | ||||
| ================================================================================ | ||||
|  | ||||
| The configuration for GNU social is stored in the database table | ||||
| `config`.  | ||||
|  | ||||
| A Web based configuration panel exists so the site admin can configure | ||||
| GNU social. The preferred method for changing config options is to use this | ||||
| panel. | ||||
|  | ||||
| A command-line script, `set_config.php`, can be used to set individual | ||||
| configuration options. It's in the `bin/` directory. | ||||
|  | ||||
| Almost all configuration options are made through a two-dimensional | ||||
| associative array, cleverly named `$config`. A typical configuration | ||||
| line will be: | ||||
|  | ||||
|     $config['section']['setting] = value; | ||||
|  | ||||
| The following documentation describes each section and setting. | ||||
|  | ||||
|  | ||||
| site | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| This section is a catch-all for site-wide variables. | ||||
|  | ||||
| * `name` (string, required, defaults to the value provided in the configre script, | ||||
|     sitename): the name of your site, like 'YourCompany Microblog'. | ||||
|  | ||||
| * `server` (string, required, defaults to the value provided in the configre script, | ||||
|     sitename): the server domain, like 'example.net'. | ||||
|  | ||||
| * `notice` (string, default null): A plain string that will appear on every page. A good | ||||
|     place to put introductory information about your service, or info about upgrades and | ||||
|     outages, or other community info. Any HTML will be escaped. | ||||
|  | ||||
| * `theme` (string, default 'default'): Theme for your site (see Theme section). | ||||
|          | ||||
| * `logo` (string, default null): URL of an image file to use as the logo for the site. | ||||
|     Overrides the logo in the theme, if any. | ||||
|      | ||||
| * `language` (string, default "en"): default language for your site. Defaults to English. | ||||
|     Note that this is overridden, if enabled in the following setting, if a user is logged | ||||
|     in and has selected a different language or if the user is NOT logged in, but their | ||||
|     browser requests a different langauge. Since pretty much everybody's browser requests | ||||
|     a language, that means that changing this setting has little or no effect in practice. | ||||
|  | ||||
| * `detect_language` (boolean, default true): whether to use the most appropriate language | ||||
|     depending on the requester's browser preferences. | ||||
|  | ||||
| * `languages` (array, default null): A list of languages supported on your site. Typically | ||||
|     you'd only change this if you wanted to disable support for one or more languages: | ||||
|  | ||||
|     `unset($config['site']['languages']['de'])` will disable support for German. | ||||
|      | ||||
| * `email` (string, required): contact email address for your site. By default, it's | ||||
|     extracted from your Web server environment or the value provided in the configure | ||||
|     script; you may want to customize it. | ||||
|  | ||||
| * `recovery_disclose` (boolean, default false): whether to confirm if the email exists | ||||
|     when attempting to login. Recommended to keep it false, for some privacy. | ||||
|  | ||||
| * `timezone` (string, default 'UTC'): default timezone for message display. Users | ||||
|     can set their own time zone. Defaults to 'UTC', which is a pretty good | ||||
|     default. | ||||
|  | ||||
| * `brought_by` (string, default null): text used for the "brought by" link. | ||||
|  | ||||
| * `brought_by_url` (string, default null): name of an organization or individual who | ||||
|     provides the service. Each page will include a link to this name in the footer or | ||||
|     sidebar. A good way to link to the blog, forum, wiki, corporate portal, or whoever is | ||||
|     making the service available. | ||||
|      | ||||
| * `closed` (boolean, default false): If set to 'true', will disallow registration on your | ||||
|     site. This is a easy way to restrict accounts to only one individual or group; just | ||||
|     register the accounts you want on the service, *then* set this variable to 'true'. | ||||
|  | ||||
| * `invite_only` (boolean, default false): If set to 'true', will only allow registration | ||||
|     if the user was invited by an existing user. | ||||
|  | ||||
| * `private` (boolean, default false): If set to 'true', anonymous users will be redirected | ||||
|     to the 'login' page. Also, API methods that normally require no authentication will | ||||
|     require it. Note that this does not turn off registration; use 'closed' or | ||||
|     'invite_only' for that behaviour. | ||||
|  | ||||
| * `ssl` (enum['always', 'sometimes', 'never'], default always'): Whether to use SSL and | ||||
|     https:// URLs for some or all pages. | ||||
|  | ||||
|     Possible values are 'always' (use it for all pages), 'never' (don't use it for any | ||||
|     pages), or 'sometimes' (use it for sensitive pages that include passwords like login | ||||
|     and registration, but not for regular pages). | ||||
|  | ||||
| * `ssl_proxy` (string|boolean, default false): Whether to force GNUsocial to think it is | ||||
|     HTTPS when the server gives no such information. I.e. when you're using a reverse | ||||
|     proxy that adds the encryption layer but the webserver that runs PHP isn't configured | ||||
|     with a key and certificate. If a string is given, it will be used as the URL of the | ||||
|     proxy server. | ||||
|  | ||||
| * `duplicate_time_limit` (integer, default 60): minimum time allowed for one person to say | ||||
|     the same thing twice. Default 60s. If it happens faster than this, it's considered a | ||||
|     user or UI error. | ||||
|  | ||||
| * `text_limit` (integer, default 1000): default max size for texts in the site. Can be | ||||
|     fine-tuned for notices, messages, profile bios and group descriptions. Zero indicates | ||||
|     no limit. | ||||
|  | ||||
| * `x-static-delivery` (string, default null): when a string, use this as the header with | ||||
|     which to serve static files. Possible values are 'X-Sendfile' (for Apache and others) | ||||
|     and 'X-Accel-Redirect' (for nginx). | ||||
|  | ||||
|  | ||||
| security | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `hash_algos` (array, default ['sha1', 'sha256', 'sha512']): set to null for anything | ||||
|     that `hash_hmac()` can handle; can be any combination of the result of `hash_algos()` | ||||
|  | ||||
|  | ||||
| db | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `mirror` (array, default null): you can set this to an array of database connection | ||||
|     URIs. If it's set, load will be split among these, and replication will be enabled. | ||||
|  | ||||
|  | ||||
| fix | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `fancy_urls` (boolean, default true): fix any non-facy url to the correct form, when | ||||
|     possible. | ||||
|  | ||||
| * `http` (boolean, default true): fixe any http links to https. | ||||
|  | ||||
|  | ||||
| queue | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| You can configure the software to queue time-consuming tasks, like | ||||
| sending out SMS, email or XMPP messages, for off-line processing. | ||||
|  | ||||
| * `enabled` (boolean, default true): Whether to uses queues. | ||||
|  | ||||
| * `daemon` (boolean, default false): Whether to use queuedaemon. False means | ||||
|     you'll use OpportunisticQM plugin. | ||||
|  | ||||
| * `threads` (int): How many queue processes to run. Defaults to number of cpu cores in | ||||
|     unix-like systems or 1 on other OSes. | ||||
|      | ||||
| * `subsystem` (enum["db", "stomp", "redis"], default 'db'): Which kind of | ||||
|     queueserver to use. Values include "db" for our database queuing (no other server | ||||
|     required), "stomp" for a stomp server amd "redis" for a Redis server. | ||||
|  | ||||
| * `basename` (string, default '/queue/gnusocial/'): a root name to use for queues (stomp | ||||
|     and redis only). Typically something like '/queue/sitename/' makes sense. If running | ||||
|     multiple instances on the same server, make sure that either this setting or | ||||
|     `$config['site']['nickname']` are unique for each site to keep them separate. | ||||
|  | ||||
| * `control_channel` (string, default '/topic/gnusocial/control'): the control channel used | ||||
|     for different queue processes to communicate. | ||||
|  | ||||
| * `monitor` (string, default null): URL endpoint to monitor queue status | ||||
|  | ||||
| * `soft_limit` (string, default '90%'): an absolute or relative "soft memory limit"; | ||||
|     daemons will restart themselves gracefully when they find they've hit this amount of | ||||
|     memory usage. Relative means a percentage of PHP's global `memory_limit` setting. | ||||
|  | ||||
| * `spawn_delay` (integer, default 1): seconds to wait between deamon restarts. | ||||
|  | ||||
| * `debug_memory` (boolean, default false): log daemon's memory usage. | ||||
|  | ||||
| * `stomp_server` (string, default null): URI for stomp server. Something like | ||||
|     "tcp://hostname:61613". More complicated ones are possible; see your stomp server's | ||||
|     documentation for details. | ||||
|  | ||||
| * `stomp_username` (string, default null): username for connecting to the stomp server. | ||||
|  | ||||
| * `stomp_password` (string, default null): password for connecting to the stomp server. | ||||
|  | ||||
| * `stomp_persistent` (boolean, default true): Keep items across queue server restart, if | ||||
|     enabled. Note: Under ActiveMQ, the server configuration determines if and how | ||||
|     persistent storage is actually saved. Not all stomp servers support persistence. | ||||
|  | ||||
| * `stomp_transactions` (boolean, default true): use transactions to aid in error | ||||
|     detection. A broken transaction will be seen quickly, allowing a message to be | ||||
|     redelivered immediately if a daemon crashes. Not all stop servers support | ||||
|     transactions. | ||||
|  | ||||
| * `stomp_acks` (boolean, default true): send acknowledgements to aid in flow control. An | ||||
|     acknowledgement of successful processing tells the server we're ready for more and can | ||||
|     help keep things moving smoothly. This should *not* be turned off when running with | ||||
|     ActiveMQ, (it breaks if you do), but if using another message queue server that does | ||||
|     not support acknowledgements you might need to disable this. | ||||
|  | ||||
| * `stomp_manual_failover` (boolean, default true): if multiple servers are listed, treat | ||||
|     them as separate (enqueue on one randomly, listen on all). | ||||
|  | ||||
| * `max_retries` (integer, default 10): for stomp, drop messages after N failed | ||||
|     attempts to process. | ||||
|  | ||||
| * `dead_letter_dir` (string, default null): for stomp, optional directory to dump | ||||
|     data on failed queue processing events after discarding them. | ||||
|  | ||||
|  | ||||
| avatar | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `server` (string, default null): If set, defines another server where avatars are | ||||
|     stored. Note that the `dir` still has to be writeable. You'd typically use this to | ||||
|     split HTTP requests on the client to speed up page loading, either with another | ||||
|     virtual server or with an NFS or SAMBA share. Clients typically only make 2 | ||||
|     connections to a single server at a time | ||||
|     <https://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4>, so this can | ||||
|     parallelize the job. | ||||
|      | ||||
| * `url_base` (string, 'default '/avatar/'): URL where avatars can be found. | ||||
|  | ||||
| * `ssl` (boolean, default null): Whether to access avatars using HTTPS. Defaults | ||||
|     to null, meaning to guess based on site-wide SSL settings. | ||||
|  | ||||
| * `dir` (string, default 'file/avatar/'): Directory to save avatar files to.  | ||||
|      | ||||
| * `max_size_px` (integer, default 300): Maximum width or height for user avatars, in pixels | ||||
|  | ||||
|  | ||||
| javascript | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `server` (string, default null): You can speed up page loading by pointing the | ||||
|     javascript file lookup to another server (virtual or real). Defaults to NULL, meaning | ||||
|     to use the site server. | ||||
|  | ||||
| * `url_base` (string default '/js/'): URL part for JavaScript files. | ||||
|  | ||||
| * `ssl` (boolean, default null): Whether to use SSL for JavaScript files. Default is null, | ||||
|     which means guess based on site SSL settings. | ||||
|  | ||||
| * `bust_frames` (boolean, default true): If true, all web pages will break out of | ||||
|     framesets. If false, can comfortably live in a frame or iframe... probably. | ||||
|  | ||||
|  | ||||
| attachments | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `server` (string, default null): Server name to use when creating URLs for uploaded | ||||
|     files. Defaults to null, meaning to use the default Web server. Using a virtual server | ||||
|     here can speed up Web performance. | ||||
|  | ||||
| * `url_base` (string, default '/file/'): URL path, relative to the server, to find | ||||
|     files. Defaults to main path + '/file/'. | ||||
|  | ||||
| * `ssl` (boolean, default null): Whether to use HTTPS for file URLs. Defaults to null, | ||||
|     meaning to use other SSL settings. | ||||
|  | ||||
| * `dir` (string, default '/file/uploads/'): Directory accessible to the Web process where | ||||
|     uploads should go. | ||||
|  | ||||
| * `supported` (array): An associative array of mime types you accept to store and | ||||
|     distribute, like 'image/gif', 'video/mpeg', 'audio/mpeg', to the corresponding file | ||||
|     extension. Make sure you setup your server to properly recognize the types you want to | ||||
|     support. It's important to use the result of calling `image_type_to_extension` for the | ||||
|     appropriate image type, in the case of images. This is so all parts of the code see | ||||
|     the same file extension for each image type (jpg vs jpeg). For example, to enable BMP | ||||
|     uploads, add this to the config.php file:  | ||||
|     `image_type_to_mime_type(IMAGETYPE_BMP) => image_type_to_extension(IMAGETYPE_BMP);` See | ||||
|     https://www.php.net/manual/en/function.image-type-to-mime-type.php for a list of such | ||||
|     constants. If a filetype is not listed there, it's possible to add the mimetype and | ||||
|     the extension by hand, but they need to match those returned by the file command. | ||||
|  | ||||
| For quotas, be sure you've set the `upload_max_filesize` and `post_max_size` in php.ini to | ||||
| be large enough to handle your upload. In httpd.conf (if you're using apache), check that | ||||
| the LimitRequestBody directive isn't set too low (it's optional, so it may not be there at | ||||
| all). | ||||
|  | ||||
| * `file_quota` (integer, defaults to minimum of `'post_max_size', 'upload_max_filesize', | ||||
|     'memory_limit'`): Maximum size for a single file upload, in bytes. A user can send any | ||||
|     amount of notices with attachments as long as each attachment is smaller than | ||||
|     file_quota. | ||||
|  | ||||
| * `user_quota` (integer, default 200M): Total size, in bytes, a user can store on this | ||||
|     server. Each user can store any number of files as long as their total size does not | ||||
|     exceed the user_quota. | ||||
|  | ||||
| * `monthly_quota` (integer, default 20M): Total size in bytes that a user can upload each | ||||
|     month. | ||||
|  | ||||
| * `uploads` (boolean, default true): Whether to allow uploading files with notices. | ||||
|  | ||||
| * `show_html` (boolean, default true): Whether to show (filtered) text/html attachments | ||||
|     (and oEmbed HTML etc.). Doesn't affect AJAX calls. | ||||
|  | ||||
| * `show_thumbs` (boolean, default true): Whether to show thumbnails in notice lists for | ||||
|     uploaded images, and photos and videos linked remotely that provide oEmbed info. | ||||
|  | ||||
| * `process_links` (boolean, default true): Whether to follow redirects and save all | ||||
|     available file information (mimetype, date, size, oembed, etc.). | ||||
|  | ||||
| * `ext_blacklist` (array, default []): associative array to either deny certain extensions or | ||||
|     change them to a different one. For example: | ||||
|  | ||||
|         $config['attachments']['extblacklist']['php'] = 'phps';  // this turns .php into .phps | ||||
|         $config['attachments']['extblacklist']['exe'] = false;   // this would deny any uploads | ||||
|                                                                  // of files with the "exe" extension | ||||
|  | ||||
| * `filename` (string, default hash): Name for new files, one of: 'upload', 'hash'. | ||||
|  | ||||
| * `memory_limit` (string, default '1024M'): PHP memory limit to use temporarily when | ||||
|     handling images | ||||
|  | ||||
|  | ||||
| thumbnail | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `server` (string, default null): Server name from which to serve thumbnails. Defaults to | ||||
|     null, meaning to use the default Web server. Using a virtual server here can speed up | ||||
|     Web performance. | ||||
|  | ||||
| * `url_base` (string, default '/thumb/'): URL path, relative to the server, to find | ||||
|     files. | ||||
|  | ||||
| * `ssl` (boolean, default null): Whether to use HTTPS for thumbnail URLs. Defaults to null, | ||||
|     meaning to use other SSL settings. | ||||
|      | ||||
| * `dir` (string, default '/file/thumbnails/'): Path where to store thumbnails. | ||||
|  | ||||
| * `crop` (boolean, default false): Whether to crop thumbnails (or scale them down) | ||||
|  | ||||
| * `max_size_px` (integer, default 1000): Thumbnails with an edge greater than this will | ||||
|     not be generated. | ||||
|      | ||||
| * `width` (integer, default 450): Width for generated thumbnails. | ||||
|  | ||||
| * `height` (integer, default 600): Heigth for generated thumbnails. | ||||
|  | ||||
| * `upscale` (boolean, default false): Whether to generate thumbnails bigger than the original. | ||||
|    | ||||
| * `animated` (boolean, default false): Whether to allow animated thumbnails. | ||||
|  | ||||
|  | ||||
| theme | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `server` (string, default null): Like avatars, you can speed up page loading | ||||
|     by pointing the theme file lookup to another server (virtual or real). | ||||
|     The default of null will use the same server as PA. | ||||
|  | ||||
| * `url_base` (string, default '/theme'): Path part of theme URLs, before the theme name. | ||||
|     Relative to the theme server. It may make sense to change this path when upgrading, | ||||
|     (using version numbers as the path) to make sure that all files are reloaded by | ||||
|     caching clients or proxies. | ||||
|  | ||||
| * `ssl` (boolean, default null): Whether to use SSL for theme elements. Default | ||||
|     is null, which means guess based on site SSL settings. | ||||
|  | ||||
| * `dir` (string, default "./themes"): Directory where theme files are stored. | ||||
|     Used to determine whether to show parts of a theme file. Defaults to the | ||||
|     theme subdirectory of the install directory. | ||||
|  | ||||
|  | ||||
| plugins | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `server` (string, default null): Server to find static files for a plugin when the page | ||||
| 	is plain old HTTP. Defaults to site/server (same as pages). You can use this to move | ||||
| 	plugin CSS and JS files to a CDN. | ||||
|  | ||||
| * `url_base` (string, default '/plugins/'): Path to the plugin files. Expects that each | ||||
|     plugin will have a subdirectory at plugins/NameOfPlugin. Change this if you're using | ||||
|      a CDN. | ||||
|  | ||||
| * `ssl` (boolean, default null) Whether to use ssl for files served by plugins. | ||||
|  | ||||
| * `core` (associative array, default TODO): Core GNU social modules, cannot be disabled. | ||||
|  | ||||
| * `default`: (associative array, default TODO): Mapping from plugin name to array of | ||||
|     plugin arguments. | ||||
|  | ||||
| * `locale_path` (string, default null): Path for finding plugin locale files. In the | ||||
|     plugin's directory by default. | ||||
|  | ||||
|  | ||||
| license | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| The default license to use for your users' notices. The default is the Creative Commons | ||||
| Attribution 4.0 license, which is probably the right choice for any public site. Note that | ||||
| some other servers will not accept notices if you apply a stricter license than this. | ||||
|  | ||||
| * `type` (enum["cc", "allrightsreserved", "private"], default 'cc'): One of 'cc' (for | ||||
|     Creative Commons licenses), 'allrightsreserved' (default copyright), or 'private' (for | ||||
|     private and confidential information). | ||||
|  | ||||
| * `owner` (string|boolean, default null): For 'allrightsreserved' or 'private', an | ||||
|     assigned copyright holder (for example, an employer for a private site). Use true to | ||||
|     attribute it to the poster. | ||||
|  | ||||
| * `url` (string, default 'https://creativecommons.org/licenses/by/4.0/'): URL of the | ||||
|     license, used for links. | ||||
|  | ||||
| * `title` (string, default 'Creative Commons Attribution 4.0'): Title for the license. | ||||
|  | ||||
| * `image` (string, default '/theme/licenses/cc_by_4.0.png'): URL path for the license image. | ||||
|  | ||||
|  | ||||
| mail | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| This is for configuring out-going email.  | ||||
|  | ||||
| * `backend` (enum["mail", "sendmail", "smtp"], default 'mail'): The backend to use for | ||||
|    mail. We recommend SMTP where your setup supports it as it is of the three the more | ||||
|    difficult one for script exploits to abuse (relatively speaking - they all have | ||||
|    potential problems.). | ||||
|  | ||||
| * `params` (array, default null): If the mail backend requires any parameters, you can | ||||
|     provide them in this array. | ||||
|  | ||||
| * `domain_check` (boolean, default true): Check email origin is valid. | ||||
|  | ||||
|  | ||||
| nickname | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `blacklist` (array, default ['doc', 'main', 'avatar', 'theme']): an array of strings for | ||||
|     usernames that may not be registered. You may want to add others if you have other | ||||
|     software installed in a subdirectory of GNU social or if you just don't want certain | ||||
|     words used as usernames. | ||||
|  | ||||
| * `featured` (array, default null): an array of nicknames of 'featured' users of the site. | ||||
|     Can be useful to draw attention to well-known users, or interesting people, or | ||||
|     whatever. | ||||
|  | ||||
|  | ||||
| profile | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `banned` (array, defualt []): array of users to hell-ban | ||||
|  | ||||
| * `bio_text_limit` (integer, default null): Max character length of bio; 0 means no | ||||
|     limit; null means to use the site text limit default. | ||||
|  | ||||
| * `allow_nick_change` (boolean, default false): Whether to allow users to change their | ||||
|     nickname. | ||||
|  | ||||
| * `allow_private_stream` (boolean, default true): Whether users can set their streams to | ||||
|     private, so only followers can see it. | ||||
|  | ||||
| * `backup` (boolean, default false): Whether users can backup their own profiles. Can | ||||
|     cause DoS. | ||||
|  | ||||
| * `restore` (boolean, default false): Whether users can restore their profiles from backup | ||||
|     files. Can cause DoS. | ||||
|  | ||||
| * `delete` (boolean, default false): Whether users can delete their own accounts. | ||||
|  | ||||
| * `move` (boolean, default false): Whether users can move their accounts to another | ||||
|     server. | ||||
|    | ||||
|    | ||||
| image | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `jpegquality` {integer, default 85}: default quality to use when reencoding images as | ||||
|     jpeg. | ||||
|  | ||||
|  | ||||
| theme_upload | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `enabled` (boolean, default true): Whether to allow users to upload themes | ||||
|  | ||||
| * `formats` (array, default ['zip', 'tar', 'gz', 'tar.gz']): Formats to allow | ||||
|  | ||||
| foaf | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `mbox_sha1sum` (boolean, default false): whether to include this box in the FOAF | ||||
|     protocol page | ||||
|  | ||||
|  | ||||
| public | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| For configuring the public stream. | ||||
|  | ||||
| * `local_only` (boolean, default false): If set to true, only messages posted by users of | ||||
|     this instance (rather than remote instances) are shown in the public stream. | ||||
|  | ||||
| * `blacklist` (array, default []): An array of IDs of users to hide from the public | ||||
|     stream. Useful if you have someone making an excessive amount of posts to the site or | ||||
|     some kind of automated poster, testing bots, etc. | ||||
|  | ||||
| * `exclude_sources` (array, default []): Sources of notices that should be kept off of | ||||
|     the public timeline (because they're from automatic posters, for instance). | ||||
|  | ||||
|  | ||||
| throttle | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| For notice-posting throttles. | ||||
|  | ||||
| * `enabled` (boolean, default true): Whether to throttle posting. | ||||
|  | ||||
| * `count` (integer, default 20): Each user can make this many posts in 'timespan' seconds. | ||||
|     So, if count is 100 and timespan is 3600, then there can be only 100 posts from a user | ||||
|     every hour. | ||||
|  | ||||
| * `timespan` (integer, default 600): See 'count'. | ||||
|  | ||||
|  | ||||
| invite | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `enabled` (boolean, default true): Whether to allow users to send invites. | ||||
|  | ||||
|  | ||||
| tag | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `dropoff` (integer, default 86400 * 10): Exponential decay factor for tag listing, in | ||||
|     seconds. You can twiddle with this to try to get better results for your site. | ||||
|  | ||||
| * `cutoff` (integer, default 86400 * 90): Cutoff, in seconds, before which to not look for | ||||
|     notices. | ||||
|  | ||||
|  | ||||
| popular | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `dropoff` (integer, default 86400 * 10): Exponential decay factor for popular notices, in | ||||
|     seconds. You can twiddle with this to try to get better results for your site. | ||||
|  | ||||
| * `cutoff` (integer, default 86400 * 90): Cutoff, in seconds, before which to not look for | ||||
|     notices. | ||||
|  | ||||
|  | ||||
| daemon | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `piddir` (string, default `sys_get_temp_dir()`): Directory that daemon processes should | ||||
|     write their PID file (process ID) to. | ||||
|  | ||||
| * `user` (string|integer, default false): If set, the daemons will try to change their | ||||
|     effective user ID to this user before running. Probably a good idea, especially if you | ||||
|     start the daemons as root. | ||||
|  | ||||
| * `group` (string|integer, default false): If set, the daemons will try to change their | ||||
|     effective group ID to this named group. | ||||
|  | ||||
|  | ||||
| ping | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| Using the "XML-RPC Ping" method initiated by weblogs.com, the site can | ||||
| notify third-party servers of updates. | ||||
|  | ||||
| * `notify` (array, default []): An array of URLs for ping endpoints. | ||||
|  | ||||
| * `timeout` (integer, default 2): Interval in seconds between notifications. | ||||
|  | ||||
|  | ||||
| new_users | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `default_subscriptions` (array, default null): Nickname of user accounts to | ||||
|     automatically subscribe new users to. Typically this would be a system account for e.g. | ||||
|     service updates or announcements. Users are able to unsub if they want. | ||||
|  | ||||
| * `welcome_user` (string, default null): Nickname of a user account that sends welcome | ||||
|     messages to new users. | ||||
|  | ||||
| N.B. If either of these special user accounts are specified, the users should be created | ||||
|      before the configuration is updated. | ||||
|  | ||||
|  | ||||
| linkify | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `bare_domain` (boolean, default false): Prepend schema to any linked domains (a href, | ||||
|     not display text). | ||||
|      | ||||
| * `linkify_ipv4` (boolean, default false): Convert IPv4 addresses into hyperlinks. | ||||
|  | ||||
| * `linkify_ipv6` (boolean, default false): Convert IPv6 addresses into hyperlinks. | ||||
|  | ||||
|  | ||||
| group | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `max_aliases` (integer, default 3): Maximum number of aliases a group can have. | ||||
|     Set to 0 or less to prevent aliases in a group. | ||||
|  | ||||
| * `description_limit` (integer, default null): Maximum number of characters to allow in | ||||
|     group descriptions. null means to use the site-wide text limits. 0 means no limit. | ||||
|  | ||||
|  | ||||
| people_tag | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `max_tags` (integer, default 100): Maximum number of people tags a user can create. | ||||
|  | ||||
| * `max_people` (integer, default 500): Maximum number of people with the same user people tag. | ||||
|    | ||||
| * `allow_tagging` (associative array, default ['local' => true, 'remote' => true])>: Which | ||||
|     kind of user to allow tagging. | ||||
|  | ||||
| * `description_limit` (integer, default null): Maximum tag description lenght. | ||||
|  | ||||
|  | ||||
| search | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `type` (enum('fulltext', 'like'), default 'like'): type of search. Ignored if PostgreSQL | ||||
|     is enabled. Can either be 'fulltext' or 'like'. The former is faster and more | ||||
|     efficient but requires the lame old MyISAM engine for MySQL. The latter will work with | ||||
|     InnoDB but could be miserably slow on large systems. | ||||
|  | ||||
|  | ||||
| html_filter | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `tags` (array, default ['img', 'video', 'audio', 'script']): Remove tags from | ||||
|     user/remotely generated HTML. | ||||
|  | ||||
|  | ||||
| notice | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `content_limit` (integer, default null): Max length of the plain-text content of a | ||||
|     notice. Null means to use the site-wide text limit. 0 means no limit. | ||||
|  | ||||
| * `allow_private` (boolean, default false): Whether to allow users to post notices visible | ||||
|     only to their subscribers. | ||||
|  | ||||
| * `hide_banned` (boolean, default true): Whether to hide hell-banned users' notices. | ||||
|  | ||||
|  | ||||
| message | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `content_limit` (integer, default null): Max length of the plain-text content of a | ||||
|     message. Null means to use the site-wide text limit. 0 means no limit. | ||||
|  | ||||
|  | ||||
| location | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `share` (enum('always', 'user', 'never'), default 'user'): Whether to share user | ||||
|     location. 'user' means each user can choose. | ||||
|      | ||||
|  | ||||
| admin | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `panels` (array, default ['site', 'user', 'paths', 'access', 'sessions', 'sitenotice', | ||||
|   'license', 'plugins']): Which panels to include in the admin tab. | ||||
|    | ||||
|  | ||||
| single_user | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| If an installation has only one user, this can simplify a lot of the | ||||
| interface. It also makes the user's profile the root URL. | ||||
|  | ||||
| * `enabled` (boolean, default value provided in configure): Whether to run in "single user mode". | ||||
|  | ||||
| * `nickname` (string, default null): nickname of the single user. If no nickname is | ||||
|   specified, the site owner account will be used (if present). | ||||
|  | ||||
|  | ||||
| robots_txt | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `crawl_delay` (integer, default 0): if non-zero, this value is provided as the | ||||
|     'Crawl-Delay:' for the robots.txt file. see | ||||
|     <https://en.wikipedia.org/wiki/Robots_exclusion_standard#Crawl-delay_directive> for | ||||
|     more information. Default is zero, no explicit delay. | ||||
|  | ||||
| * `disallow`(array, default ['main', 'settings', 'admin', 'search', 'message']): Array of | ||||
|     paths to disallow. Ignored when site is private, in which case the entire site ('/') | ||||
|     is disallowed. | ||||
|  | ||||
|  | ||||
| nofollow | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| We optionally put 'rel="nofollow"' on some links in some pages. The following | ||||
| configuration settings let you fine-tune how or when things are nofollowed. See | ||||
| http://en.wikipedia.org/wiki/Nofollow for more information on what 'nofollow' means. | ||||
|  | ||||
| * `subscribers` (boolean, default true): Whether to nofollow links to subscribers on the | ||||
|     profile and personal pages. | ||||
|  | ||||
| * `members` (boolean, default true): Whether to nofollow links to members on the group | ||||
|     page. Default true. | ||||
|  | ||||
| * `peopletag` (boolean, default true): Whether to nofollow links to people listed in the | ||||
|     peopletag page. Default true. | ||||
|  | ||||
| * `external` (enum('always', 'sometimes', 'never'), default 'sometimes'): External links | ||||
|     in notices. One of three values: 'always', 'sometimes', 'never'. If 'sometimes', then | ||||
|     external links are not nofollowed on profile, notice, and favorites page. Default is | ||||
|     'sometimes'. | ||||
|  | ||||
|  | ||||
| url_shortener | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `service` (string, default 'internal'): URL shortening service to use by default. Users | ||||
|     can override individually. | ||||
|  | ||||
| * `max_url_length` (integer, default 100): If an URL is strictly longer than this limit, | ||||
|     it will be shortened. Note that the URL shortener service may return an URL longer | ||||
|     than this limit. Users can override. If set to 0, all URLs will be shortened. | ||||
|  | ||||
| * `max_notice_length` (integer, default null): If a notice is strictly longer than this | ||||
|     limit, all URLs in the notice will be shortened. Users can override this. | ||||
|  | ||||
|  | ||||
| http | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `ssl_cafile` (string, default '/docker/certbot/files/live/'): location of the CA file | ||||
|     for SSL connections. If not set, peers won't be able to verify our identity. | ||||
|  | ||||
| * `timeout` (integer, default `ini_get('default_socket_timeout')`): Timeout in seconds | ||||
|     when to close a connection. | ||||
|  | ||||
| * `proxy_host` (string, default null): Host to use for proxying HTTP requests. If null, | ||||
| 	    doesn't use an HTTP proxy. | ||||
|  | ||||
| * `proxy_port` (integer, default null): Port to use to connect to HTTP proxy host. | ||||
|  | ||||
| * `proxy_user` (string, default null): Username to use for authenticating to the HTTP proxy. | ||||
|  | ||||
| * `proxy_password` (string, default null): Password to use for authenticating to the HTTP proxy. | ||||
|  | ||||
| * `proxy_auth_scheme` (TODO): Scheme to use for authenticating to the HTTP proxy. | ||||
|  | ||||
|  | ||||
| discovery | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `CORS` (boolean, default false): Whether to allow Cross-Origin Resource Sharing for | ||||
|     service discovery (host-meta, XRD, etc.) | ||||
|  | ||||
|  | ||||
| performance | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `high` (boolean, default fakse): Disables some high-performance-intensity components. | ||||
|  | ||||
|  | ||||
| login_command | ||||
| ------------------------------------------------------------------------------- | ||||
|  | ||||
| * `enabled` (boolean, default false): Whether to enable users to send the text 'login' to | ||||
|     the site through any channel and receive a link to login to the site automatically in | ||||
|     return. Possibly useful for users who primarily use an XMPP or SMS interface. Note | ||||
|     that the security implications of this are pretty serious. You should enable it only | ||||
|     after you've convinced yourself that it is safe. | ||||
|  | ||||
							
								
								
									
										1
									
								
								DOCUMENTATION/SYSTEM_ADMINISTRATORS/install.md
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								DOCUMENTATION/SYSTEM_ADMINISTRATORS/install.md
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | ||||
| ../../INSTALL.md | ||||
| @@ -1 +0,0 @@ | ||||
| ../INSTALL.md | ||||
| @@ -31,6 +31,7 @@ | ||||
| namespace App\Core; | ||||
|  | ||||
| use App\Entity\Config; | ||||
| use App\Util\Common; | ||||
| use Symfony\Component\Config\Definition\Exception\Exception; | ||||
|  | ||||
| abstract class DefaultSettings | ||||
| @@ -40,14 +41,13 @@ abstract class DefaultSettings | ||||
|     { | ||||
|         self::$defaults = | ||||
|             ['site' => | ||||
|                  ['name'                 => $_ENV['SOCIAL_SITENAME'], | ||||
|                  ['name'                 => $_ENV['SOCIAL_SITENAME'] ?? 'Another social instance', | ||||
|                   'server'               => $_ENV['SOCIAL_DOMAIN'] ?? 'localhost', | ||||
|                   'notice'               => null,  // site wide notice text | ||||
|                   'theme'                => 'neo-gnu', | ||||
|                   'theme'                => 'default', | ||||
|                   'logo'                 => null, | ||||
|                   'fancy'                => true, | ||||
|                   'locale_path'          => INSTALLDIR . '/translations', | ||||
|                   'language'             => 'en', | ||||
|                   'langdetect'           => true, | ||||
|                   'detect_language'      => true, | ||||
|                   'languages'            => I18n::get_all_languages(), | ||||
|                   'email'                => $_ENV['SERVER_ADMIN'] ?? $_ENV['SOCIAL_ADMIN_EMAIL'] ?? null, | ||||
|                   'recovery_disclose'    => false, // Whether to not say that we found the email in the database, when asking for recovery | ||||
| @@ -59,28 +59,26 @@ abstract class DefaultSettings | ||||
|                   'private'              => false, | ||||
|                   'ssl'                  => 'always', | ||||
|                   'ssl_proxy'            => false, // set to true to force GNU social to think it is HTTPS (i.e. using reverse proxy to enable it) | ||||
|                   'ssl_proxy_server'     => null, | ||||
|                   'duplicate_time_limit' => 60,    // default for same person saying the same thing | ||||
|                   'text_limit'           => 1000,  // in chars; 0 == no limit | ||||
|                   'use_x_sendfile'       => false, | ||||
|                   'description_limit'    => null | ||||
|                   'x-static-delivery'    => null, | ||||
|                  ], | ||||
|              'security' => ['hash_algos' => ['sha1', 'sha256', 'sha512']],   // set to null for anything that hash_hmac() can handle (and is in hash_algos()) | ||||
|              'db' => ['mirror' => null],   // TODO implement | ||||
|              'fix' => | ||||
|                  ['fancyurls'   => true,   // makes sure aliases in WebFinger etc. are not f'd by index.php/ URLs | ||||
|                   'legacy_http' => false,  // set this to true if you have upgraded your site from http=>https | ||||
|                  ['fancy_urls'  => true,  // makes sure aliases in WebFinger etc. are not f'd by index.php/ URLs | ||||
|                   'http' => true,         // set this to true if you have upgraded your site from http=>https | ||||
|                  ], | ||||
|              'queue' => | ||||
|                  ['enabled'               => true, | ||||
|                   'daemon'                => false, // Use queuedaemon. Default to false | ||||
|                   'threads'               => null,  // an empty value here uses processor count to determine | ||||
|                   'subsystem'             => false,  // default to database, or 'stomp' | ||||
|                   'basename'              => '/gnusocial/queue/', | ||||
|                   'basename'              => '/queue/gnusocial/', | ||||
|                   'control_channel'       => '/topic/gnusocial/control', // broadcasts to all queue daemons | ||||
|                   'monitor'               => null,  // URL to monitor ping endpoint (work in progress) | ||||
|                   'softlimit'             => '90%', // total size or % of memory_limit at which to restart queue threads gracefully | ||||
|                   'spawndelay'            => 1,     // Wait at least N seconds between (re)spawns of child processes to avoid slamming the queue server with subscription startup | ||||
|                   'soft_limit'            => '90%', // total size or % of memory_limit at which to restart queue threads gracefully | ||||
|                   'spawn_delay'           => 1,     // Wait at least N seconds between (re)spawns of child processes to avoid slamming the queue server with subscription startup | ||||
|                   'debug_memory'          => false, // true to spit memory usage to log | ||||
|                   'stomp_server'          => null, | ||||
|                   'stomp_username'        => null, | ||||
| @@ -92,92 +90,24 @@ abstract class DefaultSettings | ||||
|                   'max_retries'           => 10,    // drop messages after N failed attempts to process (Stomp) | ||||
|                   'dead_letter_dir'       => false, // set to directory to save dropped messages into (Stomp) | ||||
|                  ], | ||||
|              'license' => | ||||
|                  ['type'  => 'cc',  // can be 'cc', 'allrightsreserved', 'private' | ||||
|                   'owner' => null,  // can be name of content owner e.g. for enterprise | ||||
|                   'url'   => 'https://creativecommons.org/licenses/by/3.0/', | ||||
|                   'title' => 'Creative Commons Attribution 3.0', | ||||
|                   'image' => '/theme/licenses/cc_by_3.0_80x15.png', | ||||
|                  ], | ||||
|              'mail' => | ||||
|                  ['backend'      => 'mail', | ||||
|                   'params'       => null, | ||||
|                   'domain_check' => true, | ||||
|                  ], | ||||
|              'nickname' => | ||||
|                  ['blacklist' => [], | ||||
|                   'featured'  => [], | ||||
|                  ], | ||||
|              'profile' => | ||||
|                  ['banned'               => [], | ||||
|                   'bio_text_limit'       => null, | ||||
|                   'allow_change_nick'    => false, | ||||
|                   'allow_private_stream' => false,  // whether to allow setting stream to private ("only followers can read") | ||||
|                   'backup'               => false,  // can cause DoS, so should be done via CLI | ||||
|                   'restore'              => false, | ||||
|                   'delete'               => false, | ||||
|                   'move'                 => false, | ||||
|                  ], | ||||
|              'image'  => ['jpegquality' => 85], | ||||
|              'avatar' => | ||||
|                  ['server'      => null, | ||||
|                   'dir'         => INSTALLDIR . '/file/avatar/', | ||||
|                   'url_base'    => '/avatar/', | ||||
|                   'ssl'         => null, | ||||
|                   'max_px_size' => 300, | ||||
|                   'dir'         => INSTALLDIR . '/file/avatar/', | ||||
|                   'max_size_px' => 300, | ||||
|                  ], | ||||
|              'foaf' => ['mbox_sha1sum' => false], | ||||
|              'public' => | ||||
|                  ['local_only'       => false, | ||||
|                   'blacklist'        => [], | ||||
|                   'exclude_sources'  => [], | ||||
|                  ], | ||||
|              'theme_upload' => ['enabled' => extension_loaded('zip')], | ||||
|              'javascript'   => | ||||
|                   ['server'     => null, | ||||
|                    'url_base'   => null, | ||||
|                    'ssl'        => null, | ||||
|                    'bustframes' => true, | ||||
|              'javascript' => | ||||
|                   ['server'      => null, | ||||
|                    'url_base'    => '/js/', | ||||
|                    'ssl'         => null, | ||||
|                    'bust_frames' => true, | ||||
|                   ], | ||||
|              'throttle' => | ||||
|                  ['enabled'  => true, // whether to throttle posting dents | ||||
|                   'count'    => 20,    // number of allowed messages in timespan | ||||
|                   'timespan' => 600,   // timespan for throttling | ||||
|                  ], | ||||
|              'invite' => ['enabled' => true], | ||||
|              'tag' => | ||||
|                  ['dropoff' => 864000.0,   // controls weighting based on age | ||||
|                   'cutoff'  => 86400 * 90, // only look at notices posted in last 90 days | ||||
|                  ], | ||||
|              'popular' => | ||||
|                  ['dropoff' => 864000.0,   // controls weighting based on age | ||||
|                   'cutoff'  => 86400 * 90, // only look at notices favorited in last 90 days | ||||
|                  ], | ||||
|              'daemon' => | ||||
|                  ['piddir' => sys_get_temp_dir(), | ||||
|                   'user'   => false, | ||||
|                   'group'  => false, | ||||
|                  ], | ||||
|              'email_post' => ['enabled' => false], | ||||
|              'sms'        => ['enabled' => false], | ||||
|              'ping'  => | ||||
|                  ['notify'  => [], | ||||
|                   'timeout' => 2, | ||||
|                  ], | ||||
|              'new_users' => | ||||
|                 ['default_subscriptions' => null, | ||||
|                  'welcome_user'          => null, | ||||
|                 ], | ||||
|              'linkify' => // "bare" below means "without schema", like domain.com vs. https://domain.com | ||||
|                  ['bare_domains' => false, // convert domain.com to <a href="http://domain.com/" ...>domain.com</a> ? | ||||
|                   'bare_ipv4'    => false, // convert IPv4 addresses to hyperlinks? | ||||
|                   'bare_ipv6'    => false, // convert IPv6 addresses to hyperlinks? | ||||
|                  ], | ||||
|              'attachments' => | ||||
|                  ['server'     => null, | ||||
|                   'dir'        => INSTALLDIR . '/file/', | ||||
|                   'url_base'   => '/file/', | ||||
|                   'ssl'        => null, | ||||
|                  ['server'    => null, | ||||
|                   'url_base'  => '/file/', | ||||
|                   'ssl'       => null, | ||||
|                   'dir'       => INSTALLDIR . '/file/uploads/', | ||||
|                   'supported' => | ||||
|                       ['application/vnd.oasis.opendocument.chart'                 => 'odc', | ||||
|                        'application/vnd.oasis.opendocument.formula'               => 'odf', | ||||
| @@ -222,77 +152,144 @@ abstract class DefaultSettings | ||||
|                   'show_thumbs'   => true,    // show thumbnails in notice lists for uploaded images, and photos and videos linked remotely that provide oEmbed info | ||||
|                   'process_links' => true,    // check linked resources for embeddable photos and videos; this will hit referenced external web sites when processing new messages. | ||||
|                   'ext_blacklist' => [], | ||||
|                   'filename'      => 'hash', | ||||
|                   'memory_limit'  => '1024M', // PHP memory limit to use temporarily when handling images | ||||
|                  ], | ||||
|              'thumbnail' => | ||||
|                  ['dir'          => INSTALLDIR . '/file/thumbnails/',  // falls back to File::path('thumb') (equivalent to ['attachments']['dir'] .  '/thumb/') | ||||
|                   'url_base'     => null,  // falls back to generating a URL with File::url('thumb/$filename') (equivalent to ['attachments']['path'] . '/thumb/') | ||||
|                   'server'       => null,  // Only used if ['thumbnail']['path'] is NOT empty, and then it falls back to ['site']['server'], schema is decided from GNUsocial::useHTTPS() | ||||
|                  ['server'       => null, | ||||
|                   'url_base'     => '/thumb/', | ||||
|                   'ssl'          => null, | ||||
|                   'dir'          => INSTALLDIR . '/file/thumbnails/',  // falls back to File::path('thumb') (equivalent to ['attachments']['dir'] .  '/thumb/') | ||||
|                   'crop'         => false, // overridden to true if thumb height === null | ||||
|                   'max_px_size'  => 1000,  // thumbs with an edge larger than this will not be generated | ||||
|                   'max_size_px'  => 1000,  // thumbs with an edge larger than this will not be generated | ||||
|                   'width'        => 450, | ||||
|                   'height'       => 600, | ||||
|                   'upscale'      => false, | ||||
|                   'animated'     => false, // null="UseFileAsThumbnail", false="can use still frame". true="allow animated" | ||||
|                  ], | ||||
|              'theme' => | ||||
|                  ['server'   => null, | ||||
|                   'url_base' => '/theme/', | ||||
|                   'ssl'      => null, | ||||
|                   'dir'      => INSTALLDIR . '/public/theme/' | ||||
|                  ], | ||||
|              'plugins' => | ||||
|                  ['server'      => null, | ||||
|                   'url_base'    => null, | ||||
|                   'ssl'         => null, | ||||
|                   'core'        => [], | ||||
|                   'default'     => [], | ||||
|                   'locale_path' => null, // Set to a path to use *instead of* each plugin's own locale subdirectories | ||||
|                  ], | ||||
|              'license' => | ||||
|                  ['type'  => 'cc',            // can be 'cc', 'allrightsreserved', 'private' | ||||
|                   'owner' => null,  // can be name of content owner e.g. for enterprise | ||||
|                   'url'   => 'https://creativecommons.org/licenses/by/4.0/', | ||||
|                   'title' => 'Creative Commons Attribution 4.0', | ||||
|                   'image' => '/theme/licenses/cc_by_4.0.png', | ||||
|                  ], | ||||
|              'mail' => | ||||
|                  ['backend'      => 'mail', | ||||
|                   'params'       => null, | ||||
|                   'domain_check' => true, | ||||
|                  ], | ||||
|              'nickname' => | ||||
|                  ['blacklist' => ['doc', 'main', 'avatar', 'theme'], | ||||
|                   'featured'  => [], | ||||
|                  ], | ||||
|              'profile' => | ||||
|                  ['banned'               => [], | ||||
|                   'bio_text_limit'       => null, | ||||
|                   'allow_nick_change'    => false, | ||||
|                   'allow_private_stream' => true,  // whether to allow setting stream to private ("only followers can read") | ||||
|                   'backup'               => false, // can cause DoS, so should be done via CLI | ||||
|                   'restore'              => false, | ||||
|                   'delete'               => false, | ||||
|                   'move'                 => false, | ||||
|                  ], | ||||
|              'image'  => ['jpegquality' => 85], | ||||
|              'theme_upload' => | ||||
|                  ['enabled' => true, | ||||
|                   'formats' => ['zip', 'tar', 'gz', 'tar.gz']], | ||||
|              'foaf' => ['mbox_sha1sum' => false], | ||||
|              'public' => | ||||
|                  ['local_only'       => false, | ||||
|                   'blacklist'        => [], | ||||
|                   'exclude_sources'  => [], | ||||
|                  ], | ||||
|              'throttle' => | ||||
|                  ['enabled'  => true, // whether to throttle posting dents | ||||
|                   'count'    => 20,    // number of allowed messages in timespan | ||||
|                   'timespan' => 600,   // timespan for throttling | ||||
|                  ], | ||||
|              'invite' => ['enabled' => true], | ||||
|              'tag' => | ||||
|                  ['dropoff' => 86400 * 10, // controls weighting based on age | ||||
|                   'cutoff'  => 86400 * 90, // only look at notices posted in last 90 days | ||||
|                  ], | ||||
|              'popular' => | ||||
|                  ['dropoff' => 86400 * 10, // controls weighting based on age | ||||
|                   'cutoff'  => 86400 * 90, // only look at notices favorited in last 90 days | ||||
|                  ], | ||||
|              'daemon' => | ||||
|                  ['piddir' => sys_get_temp_dir(), | ||||
|                   'user'   => false, | ||||
|                   'group'  => false, | ||||
|                  ], | ||||
|              'ping'  => | ||||
|                  ['notify'  => [], | ||||
|                   'timeout' => 2, | ||||
|                  ], | ||||
|              'new_users' => | ||||
|                 ['default_subscriptions' => null, | ||||
|                  'welcome_user'          => null, | ||||
|                 ], | ||||
|              'linkify' => // "bare" below means "without schema", like domain.com vs. https://domain.com | ||||
|                  ['bare_domains' => false, // convert domain.com to <a href="http://domain.com/" ...>domain.com</a> ? | ||||
|                   'linkify_ipv4' => false, // convert IPv4 addresses to hyperlinks? | ||||
|                   'linkify_ipv6' => false, // convert IPv6 addresses to hyperlinks? | ||||
|                  ], | ||||
|              'group' => | ||||
|                  ['max_aliases'       => 3, | ||||
|                   'description_limit' => null, | ||||
|                   'auto_add_tag'      => true, | ||||
|                  ], | ||||
|              'people_tag' => | ||||
|                  ['max_tags'          => 100,             // maximum number of tags a user can create. | ||||
|                   'max_people'        => 500,             // maximum no. of people with the same tag by the same user | ||||
|                   'allow_tagging'     => ['all' => true], // equivalent to array('local' => true, 'remote' => true) | ||||
|                   'allow_tagging'     => ['local' => true, 'remote' => true], // equivalent to array() | ||||
|                   'description_limit' => null, | ||||
|                  ], | ||||
|              'search' => ['type' => 'like'], | ||||
|              'html_filter' => // remove tags from user/remotely generated HTML if they are === true | ||||
|                  ['img'    => true, | ||||
|                   'video'  => true, | ||||
|                   'audio'  => true, | ||||
|                   'script' => true, | ||||
|                  ], | ||||
|              'html_filter' => ['tags' => ['img', 'video', 'audio', 'script']], | ||||
|              'notice' => | ||||
|                  ['content_limit' => null, | ||||
|                   'allow_private' => false, // whether to allow users to "check the padlock" to publish notices available for their subscribers. | ||||
|                   'default_scope' => null,  // null means 1 if site/private, 0 otherwise | ||||
|                   'hide_spam'     => true,  // Whether to hide silenced users from timelines | ||||
|                   'hide_banned'   => true,  // Whether to hide silenced users from timelines | ||||
|                  ], | ||||
|              'message'  => ['content_limit' => null], | ||||
|              'location' => | ||||
|                  ['share'         => 'user', // whether to share location; 'always', 'user', 'never' | ||||
|                   'share_default' => false, ], | ||||
|              'plugins' => | ||||
|                  ['core'        => [], | ||||
|                   'default'     => [], | ||||
|                   'locale_path' => false, // Set to a path to use *instead of* each plugin's own locale subdirectories | ||||
|                   'server'      => null, | ||||
|                   'url_base'    => null, | ||||
|                  ], | ||||
|              'location' => ['share'         => 'user'], | ||||
|              'admin' => ['panels' => ['site', 'user', 'paths', 'access', 'sessions', 'sitenotice', 'license', 'plugins']], | ||||
|              'single_user' => | ||||
|                  ['enabled'  => $_ENV['SOCIAL_SITE_PROFILE'] == 'single_user', | ||||
|                  ['enabled'  => $_ENV['SOCIAL_SITE_PROFILE'] ?? '' == 'single_user', | ||||
|                   'nickname' => null, | ||||
|                  ], | ||||
|              'robots_txt' => | ||||
|                  ['crawl_delay' => 0, | ||||
|                   'disallow'    => ['main', 'settings', 'admin', 'search', 'message'], | ||||
|                  ], | ||||
|              'api' => ['realm' => null], | ||||
|              'nofollow' => | ||||
|                  ['subscribers' => true, | ||||
|                   'members'     => true, | ||||
|                   'peopletag'   => true, | ||||
|                   'external'    => 'sometimes', // Options: 'sometimes', 'never', default = 'sometimes' | ||||
|                  ], | ||||
|              'url' => | ||||
|                  ['shortener'          => 'internal', | ||||
|              'url_shortener' => | ||||
|                  ['service'            => 'internal', | ||||
|                   'max_url_length'     => 100, | ||||
|                   'max_notice_length'  => -1, | ||||
|                   'max_notice_length'  => null, | ||||
|                  ], | ||||
|              'http' => // HTTP client settings when contacting other sites | ||||
|                 ['connect_timeout'   => 5, | ||||
|                 ['ssl_ca_file'       => '/docker/certbot/files/live/', | ||||
|                  'timeout'           => (int) (ini_get('default_socket_timeout')),   // effectively should be this by default already, but this makes it more explicitly configurable for you users .) | ||||
|                  'proxy_host'        => null, | ||||
|                  'proxy_port'        => null, | ||||
| @@ -300,9 +297,9 @@ abstract class DefaultSettings | ||||
|                  'proxy_password'    => null, | ||||
|                  'proxy_auth_scheme' => null, | ||||
|                 ], | ||||
|              'router'      => ['cache' => true],  // whether to cache the router object. Defaults to true, turn off for devel | ||||
|              'discovery'   => ['cors'  => false], // Allow Cross-Origin Resource Sharing for service discovery (host-meta, XRD, etc.) | ||||
|              'performance' => ['high'  => false], // disable some features for higher performance; default false | ||||
|              'discovery'     => ['CORS'  => false], // Allow Cross-Origin Resource Sharing for service discovery (host-meta, XRD, etc.) | ||||
|              'performance'   => ['high'  => false], // disable some features for higher performance; default false | ||||
|              'login_command' => ['enabled' => false], | ||||
|             ]; | ||||
|  | ||||
|         self::loadDefaults(!$_ENV['APP_DEBUG']); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user