====== webv4 Configuration ======

The optional echicken webv4 user interface for Synchronet (a.k.a. ecweb v4, or ecwebv4) is located in the ''webv4/'' directory and is available from the [[dev:git]] repository.

===== Enable =====

To enable webv4, edit [[config:sbbs.ini]] so that the ''RootDirectory'' key under the ''[Web]'' section points to ''../webv4/root''. You'll also want to ensure that ''index.xjs'' is included in your list of IndexFileNames:

''[[config:sbbs.ini]]''
<code ini>
[Web]
RootDirectory=../webv4/root
IndexFileNames=index.html,index.ssjs,index.xjs
</code>

You should also verify that the XJS handler is enabled in the ''[JavaScript]'' section of ''[[dir:ctrl]]/web_handler.ini''. (This should be true except on very old Synchronet installs.)

''[[dir:ctrl]]/web_handler.ini''
<code ini>
[JavaScript]
xjs = xjs_handler.js
</code>

To disable webv4 (or switch back to the old web UI), edit [[config:sbbs.ini]] and set the value of ''RootDirectory'' back to what it was before (eg. ''../web'').

===== Configure =====

webv4's settings are contained in the ''[web]'' section of ''[[dir:ctrl]]/modopts.ini''.

Shown below are the default values. If your ''[[dir:ctrl]]/modopts.ini'' file does not have a ''[web]'' section, or is missing one of these values, the default will be used.

''[[dir:ctrl]]/modopts.ini''
<code ini>
[web]
; Unauthenticated visitors will be logged in as the user with this alias
; (Only give this user privileges you want unknown web visitors to have)
guest = Guest
; Login sessions expire after this many seconds of inactivity
timeout = 43200
; Web-based users disappear from the "Who's online" list after this many seconds
inactivity = 900
; Allow new users to register via the web interface (default: no)
user_registration = false
; Enforce a minimum password length if user_registration is true
; (This should probably '8', which is also Synchronet's unfortunate maximum.)
minimum_password_length = 6
; Limit the length of a telegram (in characters) that a web user can send
maximum_telegram_length = 800
; Where (absolute or relative to 'exec') the 'lib' and 'root' directories live
web_directory = ../webv4
; Enable ftelnet / display on Home page
ftelnet = true
; Path to a .ans file to use as the ftelnet splash screen
ftelnet_splash = ../text/synch.ans
; Display the fTelnet menu bar / buttons?
ftelnet_menubar = false
; Use an fTelnet variant with RIP support?
ftelnet_rip = false
; Use an fTelnet variant with YModem G file transfer support?
ftelnet_xfer = false
; Enable or disable keyboard navigation in message threads
keyboard_navigation = false
; Display upvote/downvote buttons in message threads (3.17)
vote_functions = true
; Refresh nodelist, vote counts, etc. this often (in milliseconds)
refresh_interval = 60000
; External Programs (or entire sections) to exclude from the Games page
xtrn_blacklist = scfg,oneliner
; Disable the sidebar altogether
layout_sidebar_off = false
; Place the sidebar on the left-hand side of the page
layout_sidebar_left = false
; Make the page consume the entire width of the browser window
layout_full_width = false
; Only show active nodes in the sidebar, hide Who's Online if nobody is
active_node_list = true
; Don't show lame stats in the sidebar (no calls today, etc.)
hide_empty_stats = true
; The localization settings to use (web/lib/locale/*.[ini,js])
locale = en_us
; Use extended-ASCII characters when displaying forum messages (default: true)
forum_extended_ascii = true
; Only load this many messages from each sub (default: 0 for all)
max_messages = 0
; On the Files page, display a file's contents in the browser when possible
; Known filetypes are in ctrl/mime_types.ini
; Enable with caution due to security implications (eg. user-uploaded HTML files)
files_inline = false
; Offer dark mode to users
darkmode_allow = true
; Enable dark mode by default:
darkmode_on = false
</code>

==== New User Values ====

If you enabled ''user_registration'' above, new users can sign up via your website. If you want to apply a special security level, flags, exemptions, or restrictions to these users, you can add any or all of the following settings to the ''[web]'' section of ''[[dir:ctrl]]/modopts.ini'':

''[[dir:ctrl]]/modopts.ini''
<code ini>
; Users who register via the web are given this security level:
newuser_level = 0
; Users who register via the web are given these flags / exemptions / restrictions:
newuser_flags1 = ABCDEFGHIJKLMNOPQRSTUVWXYZ
newuser_flags2 = ABCDEFGHIJKLMNOPQRSTUVWXYZ
newuser_flags3 = ABCDEFGHIJKLMNOPQRSTUVWXYZ
newuser_flags4 = ABCDEFGHIJKLMNOPQRSTUVWXYZ
newuser_exemptions = ABCDEFGHIJKLMNOPQRSTUVWXYZ
newuser_restrictions = ABCDEFGHIJKLMNOPQRSTUVWXYZ
</code>

If these settings are absent, then the system defaults (as set in scfg) will be used.

==== Optional Settings ====

Advanced settings are available but not included by default. These are:

''[[dir:ctrl]]/modopts.ini''
<code ini>
; Text to use in place of system name at top of page (HTML is okay here)
brand = <img src="/images/my-bbs-logo.png">
; Override WS and WSS (websocket, websocket-secure) service ports
; (Will be looked up from services.ini otherwise, via exec/load/ftelnethelper.js)
wsp = 1123
wssp = 11235
</code>

Only include these settings if you wish to override the built-in defaults.

* Setting forum_extended_ascii to false may resolve problems with displaying UTF-8 encoded characters; character codes > 127 will not be assumed to be extended-ASCII references to CP437 characters.

* Tweaking the `max_messages` setting may help if you get _out of memory_ errors or find your site being hit hard by bots / search indexers.

===== fTelnet =====

[[https://www.ftelnet.ca/|fTelnet]] is a web-based telnet/rlogin client written by [[https://www.rickparrish.ca/|Rick Parrish]]. It's the telnet client that you see on the Home and Games pages of a typical webv4 site.

fTelnet **does not** connect directly to your telnet server. fTelnet connects to a ''WebSocket proxy server'', which mediates between fTelnet and the telnet server. The ''WebSocket proxy server'' runs on your server, and must be running and reachable by external clients in order for this to work.

To enable the WebSocket service, ensure that you have the following section in ''[[dir:ctrl]]/services.ini'':

<code ini>
[WS]
Port=1123
Options=NO_HOST_LOOKUP
Command=websocketservice.js
</code>

If you server your website via ''HTTPS'', you should also include a ''[WSS]'' (WebSocket Secure) service definition:

<code ini>
[WSS]
Port=11235
Options=NO_HOST_LOOKUP|TLS
Command=websocketservice.js
</code>

You must also ensure that the above ports are open in your firewall, and forwarded to your BBS if necessary.

**Before you request support for fTelnet, please double-check that the above sections exist in ''[[dir:ctrl]]/services.ini'', and that the relevant ports are open in your firewall and forwarded in your BBS. Now go and check again. This is the problem 99.5% of the time.**

===== See Also =====
  * [[:config:|config index]]

{{tag>configuration web_server}}
