<title>Waiting For Caller (WFC) | ENiGMA½ BBS Software</title>
<metaname="generator"content="Jekyll v4.2.1"/>
<metaproperty="og:title"content="Waiting For Caller (WFC)"/>
<metaproperty="og:locale"content="en_US"/>
<metaname="description"content="The Waiting For Caller (WFC) Module The wfc.js module provides a Waiting For Caller (WFC) type dashboard from a bygone era. Many traditional features are available including newer concepts for modern times. Node spy is left out as it feels like something that should be left in the past."/>
<metaproperty="og:description"content="The Waiting For Caller (WFC) Module The wfc.js module provides a Waiting For Caller (WFC) type dashboard from a bygone era. Many traditional features are available including newer concepts for modern times. Node spy is left out as it feels like something that should be left in the past."/>
{"datePublished":"2022-09-13T19:59:53+00:00","description":"The Waiting For Caller (WFC) Module The wfc.js module provides a Waiting For Caller (WFC) type dashboard from a bygone era. Many traditional features are available including newer concepts for modern times. Node spy is left out as it feels like something that should be left in the past.","mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/wfc.html"},"url":"/enigma-bbs/modding/wfc.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Waiting For Caller (WFC)","dateModified":"2022-09-13T19:59:53+00:00","@context":"https://schema.org"}</script>
<h1class="page-title">Waiting For Caller (WFC)</h1>
<h2id="the-waiting-for-caller-wfc-module">The Waiting For Caller (WFC) Module</h2>
<p>The <codeclass="language-plaintext highlighter-rouge">wfc.js</code> module provides a Waiting For Caller (WFC) type dashboard from a bygone era. Many traditional features are available including newer concepts for modern times. Node spy is left out as it feels like something that should be left in the past.</p>
<p>By default, the WFC may be accessed via the <codeclass="language-plaintext highlighter-rouge">!WFC</code> main menu command when connected over a secure connection via a user with the proper <ahref="/enigma-bbs/configuration/acs.html">ACS</a>. This can be configured as per any other menu in the system. Note that ENiGMA½ does not expose the WFC as a standalone application as this would be much less flexible. To connect locally, simply use your favorite terminal or for example: <codeclass="language-plaintext highlighter-rouge">ssh -l yourname localhost 8889</code>. See <strong>Security</strong> below for more information.</p>
<h2id="security">Security</h2>
<p>The system allows any user with the proper security to access the WFC / system operator functionality. The security policy is enforced by ACS with the default of <codeclass="language-plaintext highlighter-rouge">SCAF2ID1GM[wfc]</code>, meaning the following are true:</p>
<ol>
<li>Securely Connected (such as SSH or Secure WebSocket, but not Telnet)</li>
<li>
<ahref="modding/user-2fa-otp-config.md">Auth Factor 2+</a>. That is, the user has 2FA enabled.</li>
<li>User ID of 1 (root/admin)</li>
<li>The user belongs to the <codeclass="language-plaintext highlighter-rouge">wfc</code> group.</li>
</ol>
<blockquote>
<p><imgclass="emoji"title=":information_source:"alt=":information_source:"src="https://github.githubassets.com/images/icons/emoji/unicode/2139.png"height="20"width="20"> Due to the above, the WFC screen is <strong>disabled</strong> by default as at a minimum, you’ll need to add your user to the <codeclass="language-plaintext highlighter-rouge">wfc</code> group. See also <ahref="/enigma-bbs/configuration/security.html">Security</a> for more information on keeping your system secure!</p>
<p>Adding your user to the <codeclass="language-plaintext highlighter-rouge">wfc</code> group:</p>
<divclass="language-bash highlighter-rouge"><divclass="highlight"><preclass="highlight"><code><spanclass="c"># Repalce USERNAME with your leet +op username</span>
./oputil.js user group USERNAME <spanclass="s2">"+wfc"</span>
<p>To change the ACS required, specify a alternative <codeclass="language-plaintext highlighter-rouge">acs</code> in the <codeclass="language-plaintext highlighter-rouge">config</code> block. For example:</p>
<p><imgclass="emoji"title=":bulb:"alt=":bulb:"src="https://github.githubassets.com/images/icons/emoji/unicode/1f4a1.png"height="20"width="20"> You can add additional co-ops by adjusting the required ACS and/or adding them to an WFC-able group.</p>
<p><imgclass="emoji"title=":lock:"alt=":lock:"src="https://github.githubassets.com/images/icons/emoji/unicode/1f512.png"height="20"width="20"> ENiGMA½ will enforce ACS of at least <codeclass="language-plaintext highlighter-rouge">SC</code> (secure connection)</p>
</blockquote>
<h2id="theming">Theming</h2>
<p>The following MCI codes are available:</p>
<ul>
<li>
<codeclass="language-plaintext highlighter-rouge">VM1</code>: Node status list with the following format items available:
<ul>
<li>
<codeclass="language-plaintext highlighter-rouge">text</code>: Username or <codeclass="language-plaintext highlighter-rouge">*Pre Auth*</code>.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">action</code>: Current action/menu.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">affils</code>: Any affiliations related to the if <codeclass="language-plaintext highlighter-rouge">authenticated</code>, else “N/A”.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">authenticated</code>: Boolean rather the node is authenticated (logged in) or not.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">availIndicator</code>: Indicator of availability (e.g. for messaging)? Displayed via <codeclass="language-plaintext highlighter-rouge">statusAvailableIndicators</code> or system theme. See also <ahref="/enigma-bbs/art/themes.html">Themes</a>.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">isAvailalbe</code>: Boolean rather the node is availalbe (e.g. for messaging) or not.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">isSecure</code>: Is the node securely connected (ie: SSL)?</li>
<li>
<codeclass="language-plaintext highlighter-rouge">isVisible</code>: Boolean rather the node is visible to others or not.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">node</code>: The node ID.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">realName</code>: Real name of authenticated user, or “N/A”.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">serverName</code>: Name of connected server such as “Telnet” or “SSH”.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">timeOn</code>: How long the node has been connected.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">timeOnMinutes</code>: How long in <strong>minutes</strong> the node has been connected.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">userId</code>: User ID of authenticated node, or 0 if not yet authenticated.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">userName</code>: User name of authenticated user or “<em>Pre Auth</em>”</li>
<li>
<codeclass="language-plaintext highlighter-rouge">visIndicator</code>: Indicator of visibility. Displayed via <codeclass="language-plaintext highlighter-rouge">statusVisibleIndicators</code> or system theme. See also <ahref="/enigma-bbs/art/themes.html">Themes</a>.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">remoteAddress</code>: A friendly formatted remote address such as a IPv4 or IPv6 address.</li>
</ul>
</li>
<li>
<codeclass="language-plaintext highlighter-rouge">VM2</code>: Quick log with the following format keys available:
<ul>
<li>
<codeclass="language-plaintext highlighter-rouge">timestamp</code>: Log entry timestamp in <codeclass="language-plaintext highlighter-rouge">quickLogTimestampFormat</code> format.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">level</code>: Log entry level from Bunyan.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">levelIndicator</code>: Level indicators can be overridden with the <codeclass="language-plaintext highlighter-rouge">quickLogLevelIndicators</code> key (see defaults below)</li>
<li>
<codeclass="language-plaintext highlighter-rouge">quickLogLevelIndicators</code>: A <strong>map</strong> defaulting to the following`:
<codeclass="language-plaintext highlighter-rouge">quickLogLevelMessagePrefixes</code>: A <strong>map</strong> of log level names (see above) to message prefixes. Commonly used for changing message color with pipe codes, such as <codeclass="language-plaintext highlighter-rouge">|04</code> for red errors.</li>
<li>MCI 10…99: Custom entries with the following format keys available:
<ul>
<li>
<codeclass="language-plaintext highlighter-rouge">nowDate</code>: Current date in the <codeclass="language-plaintext highlighter-rouge">dateFormat</code> style, defaulting to <codeclass="language-plaintext highlighter-rouge">short</code>.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">nowTime</code>: Current time in the <codeclass="language-plaintext highlighter-rouge">timeFormat</code> style, defaulting to <codeclass="language-plaintext highlighter-rouge">short</code>.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">now</code>: Current date and/or time in <codeclass="language-plaintext highlighter-rouge">nowDateTimeFormat</code> format.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">processUptimeSeconds</code>: Process (the BBS) uptime in seconds.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">totalCalls</code>: Total calls to the system.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">totalPosts</code>: Total posts to the system.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">totalUsers</code>: Total users on the system.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">totalFiles</code>: Total number of files on the system.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">totalFileBytes</code>: Total size in bytes of the file base.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">callsToday</code>: Number of calls today.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">postsToday</code>: Number of posts today.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">uploadsToday</code>: Number of uploads today.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">uploadBytesToday</code>: Total size in bytes of uploads today.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">downloadsToday</code>: Number of downloads today.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">downloadsBytesToday</code>: Total size in bytes of uploads today.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">newUsersToday</code>: Number of new users today.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">currentUserName</code>: Current user name.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">currentUserRealName</code>: Current user’s real name.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">lastLoginUserName</code>: Last login username.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">lastLoginRealName</code>: Last login user’s real name.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">lastLoginDate</code>: Last login date in <codeclass="language-plaintext highlighter-rouge">dateFormat</code> format.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">lastLoginTime</code>: Last login time in <codeclass="language-plaintext highlighter-rouge">timeFormat</code> format.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">lastLogin</code>: Last login date/time.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">totalMemoryBytes</code>: Total system memory in bytes.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">freeMemoryBytes</code>: Free system memory in bytes.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">systemAvgLoad</code>: System average load.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">systemCurrentLoad</code>: System current load.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">newPrivateMail</code>: Number of new <strong>private</strong> mail for current user.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">newMessagesAddrTo</code>: Number of new messages <strong>addressed to the current user</strong>.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">availIndicator</code>: Is the current user availalbe? Displayed via <codeclass="language-plaintext highlighter-rouge">statusAvailableIndicators</code> or system theme. See also <ahref="/enigma-bbs/art/themes.html">Themes</a>.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">visIndicator</code>: Is the current user visible? Displayed via <codeclass="language-plaintext highlighter-rouge">statusVisibleIndicators</code> or system theme. See also <ahref="/enigma-bbs/art/themes.html">Themes</a>.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">processBytesIngress</code>: Ingress bytes since ENiGMA started.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">processBytesEgress</code>: Egress bytes since ENiGMA started.</li>
</ul>
</li>
</ul>
<blockquote>
<p><imgclass="emoji"title=":information_source:"alt=":information_source:"src="https://github.githubassets.com/images/icons/emoji/unicode/2139.png"height="20"width="20"> While <ahref="/enigma-bbs/art/mci.html">Standard MCI</a> codes work on any menu, they will <strong>not</strong> refresh. For values that may change over time, please use the custom format values above.</p>