<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."/>
{"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.","headline":"Waiting For Caller (WFC)","url":"/enigma-bbs/modding/wfc.html","dateModified":"2023-05-22T15:14:12+00:00","@type":"BlogPosting","datePublished":"2023-05-22T15:14:12+00:00","mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/wfc.html"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"@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>
<p>The WFC <codeclass="language-plaintext highlighter-rouge">config</code> block allows for the following keys:
| Key | Required | Description |
|—–|———-|————-|
| <codeclass="language-plaintext highlighter-rouge">acs</code> | <imgclass="emoji"title=":+1:"alt=":+1:"src="https://github.githubassets.com/images/icons/emoji/unicode/1f44d.png"height="20"width="20"> | See <ahref="#security">Security</a> above. |
| <codeclass="language-plaintext highlighter-rouge">opVisibility</code> | <imgclass="emoji"title=":-1:"alt=":-1:"src="https://github.githubassets.com/images/icons/emoji/unicode/1f44e.png"height="20"width="20"> | Boolean. Set to <codeclass="language-plaintext highlighter-rouge">true</code> or <codeclass="language-plaintext highlighter-rouge">false</code> in order to change visbility when entering the WFC |
| <codeclass="language-plaintext highlighter-rouge">quickLogLevel</code> | <imgclass="emoji"title=":-1:"alt=":-1:"src="https://github.githubassets.com/images/icons/emoji/unicode/1f44e.png"height="20"width="20"> | Sets the log level for the quick log view. Defaults to <codeclass="language-plaintext highlighter-rouge">info</code>. See also <ahref="/enigma-bbs/troubleshooting/monitoring-logs.html">Monitoring Logs</a>. |
| <codeclass="language-plaintext highlighter-rouge">art</code> | <imgclass="emoji"title=":+1:"alt=":+1:"src="https://github.githubassets.com/images/icons/emoji/unicode/1f44d.png"height="20"width="20"> | An Object containing art information: <codeclass="language-plaintext highlighter-rouge">main</code> for the WFC main view itself and <codeclass="language-plaintext highlighter-rouge">help</code> for a help screen. |
| <codeclass="language-plaintext highlighter-rouge">confirmKickNodePrompt</code> | <imgclass="emoji"title=":-1:"alt=":-1:"src="https://github.githubassets.com/images/icons/emoji/unicode/1f44e.png"height="20"width="20"> | Override the prompt name used for the “Kick selected node?” prompt. Defaults to <codeclass="language-plaintext highlighter-rouge">confirmKickNodePrompt</code> |
<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>
<codeclass="language-plaintext highlighter-rouge">MT3</code> or <codeclass="language-plaintext highlighter-rouge">ET3</code>: Selected node status information. May be a single or multi line view.
<ul>
<li>Set <codeclass="language-plaintext highlighter-rouge">nodeStatusSelectionFormat</code> to the format desired including <codeclass="language-plaintext highlighter-rouge">\n</code> for line feeds in as <codeclass="language-plaintext highlighter-rouge">MT</code> view. The availalbe format keys are the same as the node status list above.</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>