Compare commits
No commits in common. "gh-pages" and "master" have entirely different histories.
|
@ -0,0 +1,9 @@
|
|||
FROM library/node:lts-bookworm
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt update \
|
||||
&& apt install -y --no-install-recommends sudo telnet \
|
||||
&& apt autoremove -y \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& echo "node ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/node \
|
||||
&& chmod 0440 /etc/sudoers.d/node
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"name": "Basic Node.js",
|
||||
"build": { "dockerfile": "Dockerfile" },
|
||||
"remoteUser": "root",
|
||||
"forwardPorts": [8888, 4000],
|
||||
"postCreateCommand": "gem install jekyll bundler && /bin/rm -rf node_modules && npm install && cd docs && bundle install && cd ..",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/python:1": {
|
||||
"installTools": true,
|
||||
"version": "3.11"
|
||||
},
|
||||
"ghcr.io/devcontainers-contrib/features/curl-apt-get:1": {},
|
||||
"ghcr.io/jungaretti/features/ripgrep:1": {},
|
||||
"ghcr.io/warrenbuckley/codespace-features/sqlite:1": {},
|
||||
"ghcr.io/devcontainers/features/ruby:1": {
|
||||
"version": "3.1"
|
||||
}
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": ["ms-azuretools.vscode-docker","alexcvzz.vscode-sqlite","yzhang.markdown-all-in-one", "DavidAnson.vscode-markdownlint", "christian-kohler.npm-intellisense", "dbaeumer.vscode-eslint", "bierner.markdown-yaml-preamble"]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
node_modules
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
|
||||
filebase
|
||||
db
|
||||
drop
|
||||
file_base
|
||||
logs
|
||||
mail
|
||||
docs/_site
|
||||
docs/.sass-cache
|
|
@ -0,0 +1,2 @@
|
|||
# ACS parser is generated
|
||||
core/acs_parser.js
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"env": {
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": ["eslint:recommended", "prettier"],
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
4,
|
||||
{
|
||||
"SwitchCase": 1
|
||||
}
|
||||
],
|
||||
"linebreak-style": ["error", "unix"],
|
||||
"quotes": ["error", "single"],
|
||||
"semi": ["error", "always"],
|
||||
"comma-dangle": 0,
|
||||
"no-trailing-spaces": "error"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2020
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
*.asc eol=crlf
|
||||
*.ASC eol=crlf
|
||||
*.ans eol=crlf
|
||||
*.ANS eol=crlf
|
||||
*.txt eol=crlf
|
||||
*.TXT eol=crlf
|
||||
*.diz eol=crlf
|
||||
*.DIZ eol=crlf
|
||||
|
||||
# Don't mess with shell script line endings
|
||||
*.sh text eol=lf
|
||||
|
||||
# Same thing for optutil.js which functions as a shell script
|
||||
optutil.js text eol=lf
|
||||
|
||||
# The devcontainer is also unix
|
||||
.devcontainer/Dockerfile text eol=lf
|
||||
.devcontainer/devcontainer.json text eol=lf
|
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Help improve ENiGMA½!
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the Bug**
|
||||
A clear and concise description of what the :bug: bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Any relevant steps to reproduce the behavior:
|
||||
|
||||
**Expected Behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Actual Behavior**
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Environment**
|
||||
* [ ] I am using Node.js v14.x LTS or higher
|
||||
* [ ] `npm install` or `yarn` reports success
|
||||
* Actual Node.js version (`node --version`):
|
||||
* Operating system (`uname -a` on *nix systems):
|
||||
* Revision (`git rev-parse --short HEAD`):
|
||||
* Any additional relevant information about your setup
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here. Links to relevant specs such as FTN or documentation are appreciated if relevant.
|
|
@ -0,0 +1,74 @@
|
|||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ "master" ]
|
||||
schedule:
|
||||
- cron: '41 0 * * 5'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
|
||||
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
# queries: security-extended,security-and-quality
|
||||
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
|
||||
# If the Autobuild fails above, remove it and uncomment the following three lines.
|
||||
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
|
||||
|
||||
# - run: |
|
||||
# echo "Run, Build Application using script"
|
||||
# ./location_of_script_within_repo/buildscript.sh
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
|
@ -0,0 +1,35 @@
|
|||
name: Docker
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
buildx:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
tags: enigmabbs/enigma-bbs:latest
|
||||
file: docker/Dockerfile
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
push: true
|
|
@ -0,0 +1,75 @@
|
|||
name: Build and deploy jekyll site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
# - source
|
||||
# It is highly recommended that you only run this action on push to a
|
||||
# specific branch, eg. master or source (if on *.github.io repo)
|
||||
|
||||
jobs:
|
||||
jekyll:
|
||||
runs-on: ubuntu-latest # can change this to ubuntu-latest if you prefer
|
||||
steps:
|
||||
- name: 📂 setup
|
||||
uses: actions/checkout@v2
|
||||
# include the lines below if you are using jekyll-last-modified-at
|
||||
# or if you would otherwise need to fetch the full commit history
|
||||
# however this may be very slow for large repositories!
|
||||
# with:
|
||||
# fetch-depth: '0'
|
||||
|
||||
- name: 💎 setup ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.7 # can change this to 2.7 or whatever version you prefer
|
||||
|
||||
- name: 🔨 install dependencies & build site
|
||||
uses: limjh16/jekyll-action-ts@v2
|
||||
with:
|
||||
enable_cache: true
|
||||
### Enables caching. Similar to https://github.com/actions/cache.
|
||||
#
|
||||
# format_output: true
|
||||
### Uses prettier https://prettier.io to format jekyll output HTML.
|
||||
#
|
||||
# prettier_opts: '{ "useTabs": true }'
|
||||
### Sets prettier options (in JSON) to format output HTML. For example, output tabs over spaces.
|
||||
### Possible options are outlined in https://prettier.io/docs/en/options.html
|
||||
#
|
||||
# prettier_ignore: 'about/*'
|
||||
### Ignore paths for prettier to not format those html files.
|
||||
### Useful if the file is exceptionally large, so formatting it takes a while.
|
||||
### Also useful if HTML compression is enabled for that file / formatting messes it up.
|
||||
#
|
||||
jekyll_src: docs
|
||||
### If the jekyll website source is not in root, specify the directory. (in this case, sample_site)
|
||||
### By default, this is not required as the action searches for a _config.yml automatically.
|
||||
#
|
||||
gem_src: docs
|
||||
### By default, this is not required as the action searches for a _config.yml automatically.
|
||||
### However, if there are multiple Gemfiles, the action may not be able to determine which to use.
|
||||
### In that case, specify the directory. (in this case, sample_site)
|
||||
###
|
||||
### If jekyll_src is set, the action would automatically choose the Gemfile in jekyll_src.
|
||||
### In that case this input may not be needed as well.
|
||||
#
|
||||
# key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
|
||||
# restore-keys: ${{ runner.os }}-gems-
|
||||
### In cases where you want to specify the cache key, enable the above 2 inputs
|
||||
### Follows the format here https://github.com/actions/cache
|
||||
#
|
||||
# custom_opts: '--drafts --lsi'
|
||||
### If you need to specify any Jekyll build options, enable the above input
|
||||
### Flags accepted can be found here https://jekyllrb.com/docs/configuration/options/#build-command-options
|
||||
|
||||
- name: 🚀 deploy
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_dir: ./_site
|
||||
# if the repo you are deploying to is <username>.github.io, uncomment the line below.
|
||||
# if you are including the line below, make sure your source files are NOT in the master branch:
|
||||
# publish_branch: master
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Don't check in SSH keys!
|
||||
*.pem
|
||||
|
||||
# Various directories
|
||||
config/
|
||||
db/
|
||||
drop/
|
||||
file_base/
|
||||
logs/
|
||||
mail/
|
||||
node_modules/
|
||||
docs/_site/
|
||||
docs/.sass-cache/
|
||||
|
||||
docs/.jekyll-cache/
|
|
@ -0,0 +1,12 @@
|
|||
art
|
||||
config
|
||||
db
|
||||
docs
|
||||
drop
|
||||
gopher
|
||||
logs
|
||||
misc
|
||||
www
|
||||
mkdocs.yml
|
||||
*.md
|
||||
.github
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"arrowParens": "avoid",
|
||||
"bracketSameLine": false,
|
||||
"bracketSpacing": true,
|
||||
"embeddedLanguageFormatting": "auto",
|
||||
"htmlWhitespaceSensitivity": "css",
|
||||
"insertPragma": false,
|
||||
"jsxSingleQuote": false,
|
||||
"printWidth": 90,
|
||||
"proseWrap": "preserve",
|
||||
"quoteProps": "as-needed",
|
||||
"requirePragma": false,
|
||||
"semi": true,
|
||||
"singleQuote": true,
|
||||
"tabWidth": 4,
|
||||
"trailingComma": "es5",
|
||||
"useTabs": false,
|
||||
"vueIndentScriptAndStyle": false
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"recommendations": [
|
||||
"ms-vscode-remote.remote-containers",
|
||||
"laktak.hjson"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Start Jekyll (ENiGMA½ documentation server)",
|
||||
"command": "cd docs && bundle exec jekyll serve",
|
||||
"isBackground": true,
|
||||
"type": "shell"
|
||||
},
|
||||
{
|
||||
"label": "(re)build Jekyll bundles",
|
||||
"command": "cd docs && bundle install",
|
||||
"type": "shell"
|
||||
},
|
||||
{
|
||||
"label": "(re)build node modules",
|
||||
"command": "/bin/rm -rf node_modules && npm install",
|
||||
"type": "shell"
|
||||
},
|
||||
{
|
||||
"label": "ENiGMA½ new configuration",
|
||||
"command": "./oputil.js config new",
|
||||
"type": "shell"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
# Contributing
|
||||
|
||||
## Style & Formatting
|
||||
* In general, [Prettier](https://prettier.io) is used. See the [Prettier installation and basic instructions](https://prettier.io/docs/en/install.html) for more information.
|
||||
* Though you'll see a lot of older style callback code, please utilize modern JavaScript. ES6 classes, arrow functions, and builtins.
|
||||
* There is almost never a reason to use `var`. Prefer `const` where you can and and `let` otherwise.
|
||||
* Save with UNIX line feeds, UTF-8 without BOM, and tabs set to 4 spaces.
|
|
@ -0,0 +1,23 @@
|
|||
Copyright (c) 2015-2022, Bryan D. Ashby
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -0,0 +1,117 @@
|
|||
# ENiGMA½ BBS Software
|
||||
|
||||
![ENiGMA½ BBS](docs/assets/images/enigma-bbs.png "ENiGMA½ BBS")
|
||||
|
||||
ENiGMA½ is a modern BBS software with a nostalgic flair!
|
||||
|
||||
## Features
|
||||
Below are just some of the features ENiGMA½ supports out of the box:
|
||||
* **Multi platform** — Anywhere [Node.js](https://nodejs.org/) runs likely works (known to work under Linux, FreeBSD, OpenBSD, OS X and Windows)
|
||||
* Unlimited multi node support (for all those BBS "callers"!)
|
||||
* **Highly customizable** via [HJSON](http://hjson.org/) based configuration, menus, and themes in addition to JavaScript based [mods](./docs/_docs/modding/existing-mods.md)
|
||||
* [MCI support](./docs/_docs/art/mci.md) for lightbars, toggles, input areas, and so on plus many other other bells and whistles
|
||||
* Telnet, **SSH**, and both secure and non-secure [WebSocket](https://en.wikipedia.org/wiki/WebSocket) access built in! Additional servers are easy to implement
|
||||
* [CP437](http://www.ascii-codes.com/) and UTF-8 output
|
||||
* [SyncTERM](http://syncterm.bbsdev.net/) style font and baud emulation support. Display PC/DOS and Amiga style artwork as it's intended! In general, ANSI-BBS / [cterm.txt](http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt?content-type=text%2Fplain&revision=HEAD) / [bansi.txt](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/bansi.txt) are followed for expected BBS behavior.
|
||||
* Full [SAUCE](http://www.acid.org/info/sauce/sauce.htm) support.
|
||||
* Renegade style [pipe color codes](./docs/_docs/configuration/colour-codes.md).
|
||||
* [SQLite](http://sqlite.org/) storage of users, message areas, etc.
|
||||
* Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption.
|
||||
* Support for **2-Factor Authentication** with One-Time-Passwords
|
||||
* [Door support](./docs/_docs/modding/door-servers.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), and [Exodus](https://oddnetwork.org/exodus/)!
|
||||
* Structured [Bunyan](https://github.com/trentm/node-bunyan) logging!
|
||||
* [Message networks](./docs/_docs/messageareas/message-networks.md) with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export. Messages Bases can also be exposed via [Gopher](./docs/_docs/servers/contentservers/gopher.md), or [NNTP](./docs/_docs/servers/contentservers/nntp.md)!
|
||||
* [Gazelle](https://github.com/WhatCD/Gazelle) inspired File Bases including fast fully indexed full text search (FTS), #tags, and HTTP(S) temporary download URLs using a built in [web server](./docs/_docs/servers/contentservers/web-server.md). Legacy X/Y/Z modem also supported!
|
||||
* Upload processor supporting [FILE_ID.DIZ](https://en.wikipedia.org/wiki/FILE_ID.DIZ) and [NFO](https://en.wikipedia.org/wiki/.nfo) extraction, year estimation, and more!
|
||||
* ANSI support in the Full Screen Editor (FSE), file descriptions, etc.
|
||||
* Expandable **achievement system** — BBSing gamified!
|
||||
* A remote accessible [Waiting For Caller (WFC)](./docs/_docs/modding/wfc.md)!
|
||||
|
||||
...and much much more. Please check out [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues) and feel free to request features (or contribute!) features!
|
||||
|
||||
## Documentation
|
||||
[Browse the docs online](https://nuskooler.github.io/enigma-bbs/). Be sure to checkout the [/docs/](./docs/_docs/) folder as well for the latest and greatest documentation.
|
||||
|
||||
## Installation
|
||||
On most *nix systems simply run the following from your terminal:
|
||||
```bash
|
||||
curl -o- https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh | bash
|
||||
```
|
||||
|
||||
Please see [Installation Methods](https://nuskooler.github.io/enigma-bbs/installation/installation-methods.html) for Windows, Docker, and so on...
|
||||
|
||||
## Donating
|
||||
If you feel the urge to donate, [you can do so here](https://liberapay.com/NuSkooler/donate)<br/>
|
||||
|
||||
<a href="https://liberapay.com/NuSkooler/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
|
||||
|
||||
## Support
|
||||
* See [Discussions](https://github.com/NuSkooler/enigma-bbs/discussions) and [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues)
|
||||
* **Discussion on a ENiGMA BBS!** (see Boards below)
|
||||
* IRC: **#enigma-bbs** on **irc.libera.chat:6697(TLS)** ([webchat](https://web.libera.chat/gamja/?channels=#enigma-bbs))
|
||||
* `FSX_ENG` on [fsxNet](https://fsxnet.nz) or `ARK_ENIG` on [ArakNet](https://www.araknet.xyz/) available on many fine boards
|
||||
* Email: bryan -at- l33t.codes
|
||||
* [Facebook ENiGMA½ group](https://www.facebook.com/groups/enigmabbs/)
|
||||
|
||||
## Terminal Clients
|
||||
ENiGMA has been tested with many terminals. However, the following are suggested for BBSing:
|
||||
* [VTX](https://github.com/codewar65/VTX_ClientServer) (Try [Xibalba using VTX](https://l33t.codes/vtx/xibalba.html)!)
|
||||
* [SyncTERM](http://syncterm.bbsdev.net/)
|
||||
* [EtherTerm](https://github.com/M-griffin/EtherTerm)
|
||||
* [NetRunner](http://mysticbbs.com/downloads.html)
|
||||
* [MagiTerm](https://magickabbs.com/index.php/magiterm/)
|
||||
|
||||
## Some Boards
|
||||
* :skull: [Xibalba - ENiGMA WHQ](https://l33t.codes/xibalba-bbs) :skull: (**ssh://xibalba.l33t.codes:44511** or **telnet://xibalba.l33t.codes:44510**)
|
||||
* [fORCE9](http://bbs.force9.org/): (**telnet://bbs.force9.org**)
|
||||
* [Undercurrents](https://undercurrents.io): (**ssh://undercurrents.io**)
|
||||
* [PlaneT Afr0](https://planetafr0.org/): (**ssh://planetafr0.org:8889**)
|
||||
|
||||
## Special Thanks
|
||||
(in no particular order)
|
||||
* [Dave Stephens aka RiPuk](https://github.com/davestephens) for the awesome [ENiGMA website](https://enigma-bbs.github.io/) and [KICK ASS documentation](https://nuskooler.github.io/enigma-bbs/), code contributions, etc.
|
||||
* [Daniel Mecklenburg Jr.](https://github.com/codewar65) for the awesome VTX terminal and general coding talk
|
||||
* [M. Brutman](http://www.brutman.com/), author of [mTCP](http://www.brutman.com/mTCP/mTCP.html) (Interwebs for DOS!)
|
||||
* [M. Griffin](https://github.com/M-griffin), author of [Enthral BBS](https://github.com/M-griffin/Enthral), [Oblivion/2 XRM](https://github.com/M-griffin/Oblivion2-XRM) and [EtherTerm](https://github.com/M-griffin/EtherTerm)!
|
||||
* [Caphood](http://www.reddit.com/user/Caphood), supreme SysOp of [BLACK ƒlag](http://www.bbsnexus.com/directory/listing/blackflag.html) BBS
|
||||
* [Luciano Ayres](http://www.lucianoayres.com.br/) of [Blocktronics](http://blocktronics.org/), creator of the "Mystery Skulls" default ENiGMA½ theme!
|
||||
* Sudndeath for Xibalba ANSI work!
|
||||
* Jack Phlash for kick ass ENiGMA½ and Xibalba ASCII (Check out [IMPURE60](http://pc.textmod.es/pack/impure60/)!!)
|
||||
* Avon of [Agency BBS](http://bbs.nz/) and [fsxNet](https://fsxnet.nz) for putting up with my experiments to his system and for FSX_ENG!
|
||||
* Maskreet of [Throwback BBS](http://www.throwbackbbs.com/) hosting [DoorParty](http://forums.throwbackbbs.com/)!
|
||||
* [Apam](https://github.com/apamment) of [Magicka](https://magickabbs.com/)
|
||||
* [nail/blocktronics](http://blocktronics.org/tag/nail/) for the [sickmade Xibalba logo](http://pc.textmod.es/pack/blocktronics-420/n-xbalba.ans)!
|
||||
* [Whazzit/blocktronics](http://blocktronics.org/tag/whazzit/) for the amazing Mayan ANSI pieces scattered about Xibalba BBS!
|
||||
* [Smooth](https://16colo.rs/tags/artist/smooth)/[fUEL](https://fuel.wtf/) for lots of dope art. Why not [snag a T-Shirt](https://www.redbubble.com/people/araknet/works/39126831-enigma-1-2-software-logo-design-by-smooth-of-fuel?p=t-shirt)?
|
||||
* Al's Geek Lab for the [installation video](https://youtu.be/WnN-ucVi3ZU) and of course the [Back to the BBS - Part one: The return to being online](https://www.youtube.com/watch?reload=9&v=n0OwGSX2IiQ) documentary!
|
||||
* Alpha for the [FTN-style configuration guide](https://medium.com/@alpha_11845/setting-up-ftn-style-message-networks-with-enigma%C2%BD-bbs-709b22a1ae0d)!
|
||||
* Huge shout out to [cognitivegears ](https://github.com/cognitivegears) for the various fixes, improvements, and **removing the need for cursor position reports** providing a much better terminal experience!
|
||||
|
||||
...and so many others! This project would be nothing without the BBS and artscene communities!
|
||||
|
||||
## License
|
||||
Released under the [BSD 2-clause](https://opensource.org/licenses/BSD-2-Clause) license:
|
||||
|
||||
Copyright (c) 2015-2022, Bryan D. Ashby
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -0,0 +1,31 @@
|
|||
# Troubleshooting
|
||||
|
||||
## Installation
|
||||
|
||||
### Compiler Issues
|
||||
Currently a number of ENiGMA½'s NPM dependencies include modules that require C bindings, and thus, may need compiled uf prebuilt binaries are not available on NPM for your system/architecture. This is often the case for older Linux systems, some ARM devices, etc.
|
||||
|
||||
**Example**: Compiling `sqlite3` from source with `npm`:
|
||||
```bash
|
||||
npm rebuild --build-from-source sqlite3
|
||||
```
|
||||
|
||||
With `yarn`:
|
||||
```bash
|
||||
env npm_config_build_from_source=true yarn install sqlite3
|
||||
```
|
||||
|
||||
If you get compiler errors when running `npm install` or `yarn`, you can try rebuilding with compiler overrides.
|
||||
|
||||
**Example**: Overriding compilers for `node-pty` compilation:
|
||||
|
||||
```bash
|
||||
env CC=gcc CXX=gcc npm rebuild --build-from-source node-pty
|
||||
```
|
||||
|
||||
## Upgrades
|
||||
|
||||
### Missing Menu & Theme Entries
|
||||
One thing to be sure and check after an update is your menu/prompt HJSON configurations as well as your theme(s). The default templates are updated alongside features, but you may need to merge in fragments missing from your own.
|
||||
|
||||
See also [Updating](./docs/_docs/admin/updating.md)
|
|
@ -0,0 +1,175 @@
|
|||
# Introduction
|
||||
This document covers basic upgrade notes for major ENiGMA½ version updates.
|
||||
|
||||
> :information_source: **Be sure to read the version-to-version upgrade notes below** for each upgrade!
|
||||
|
||||
# Before Upgrading
|
||||
* Always back up your system! (See [Administration](./docs/admin/administration.md))
|
||||
* Seriously, always back up your system!
|
||||
|
||||
# General Notes
|
||||
## Configuration File Updates
|
||||
In general, look at template menu files in `misc/menu_templates`, and `config_template.in.hjson` as well as the default `luciano_blocktronics/theme.hjson` files when you update. These files may come with new sections you wish to merge into your system!
|
||||
|
||||
### Menus & Theme Updates
|
||||
Upgrades often come with changes to the default menu templates found in `misc/menu_tempaltes`. You can use these as references for changes and additions to the default menu sets. This also applies to the default `luciano_blocktronics` theme and it's `theme.hjson` file.
|
||||
|
||||
See [Updating](./docs/admin/updating.md) for details on menu files/etc.
|
||||
|
||||
# Upgrading the Code
|
||||
Upgrading from GitHub is easy:
|
||||
|
||||
```bash
|
||||
cd /path/to/enigma-bbs
|
||||
git pull
|
||||
rm -rf npm_modules # do this any time you update Node.js itself
|
||||
npm install # or simply 'yarn'
|
||||
```
|
||||
|
||||
# Problems
|
||||
1. Check [TROUBLESHOOTING](TROUBLESHOOTING.md) first.
|
||||
2. Report your issue on Xibalba BBS, hop in #`enigma-bbs` on FreeNode and chat, or [file a issue on GitHub](https://github.com/NuSkooler/enigma-bbs/issues) if you believe you've found a bug or missing feature.
|
||||
|
||||
# Version to Version Notes
|
||||
> :warning: Be sure to inspect these notes during any upgrades!
|
||||
|
||||
## 0.0.13-beta to 0.0.14-beta
|
||||
|
||||
* Due to changes to supported algorithms in newer versions of openssl, the default list of supported algorithms for the ssh login server has changed. There are both removed ciphers as well as optional new kex algorithms available now. ***NOTE:*** Changes to supported algorithms are only needed to support keys generated with new versions of openssl, if you already have a ssl key in use you should not have to make any changes to your config.
|
||||
* Removed ciphers: 'blowfish-cbc', 'arcfour256', 'arcfour128', and 'cast128-cbc'
|
||||
* Added kex: 'curve25519-sha256', 'curve25519-sha256@libssh.org', 'curve25519-sha256', 'curve25519-sha256@libssh.org', 'ecdh-sha2-nistp256', 'ecdh-sha2-nistp384', 'ecdh-sha2-nistp521'
|
||||
|
||||
## 0.0.12-beta to 0.0.13-beta
|
||||
* To enable the new Waiting for Caller (WFC) support, please see [WFC](docs/modding/wfc.md).
|
||||
* :exclamation: The SSH server's `ssh2` module has gone through a major upgrade. Existing users will need to comment out two SSH KEX algorithms from their `config.hjson` if present else clients such as NetRunner will not be able to connect over SSH. Comment out `diffie-hellman-group-exchange-sha256` and `diffie-hellman-group-exchange-sha1`
|
||||
* Gopher configuration change. See [WHATSNEW](WHATSNEW.md)
|
||||
* All features and changes are backwards compatible. There are a few new configuration options in a new `term` section in the configuration. These are all optional, but include the following options in case you use them:
|
||||
|
||||
```hjson
|
||||
{
|
||||
term: {
|
||||
// checkUtf8Encoding requires the use of cursor
|
||||
// position reports, which are not supported on all terminals.
|
||||
// Using this with a terminal that does not support cursor
|
||||
// position reports results in a 2 second delay during the
|
||||
// connect process, but provides better autoconfiguration of utf-8
|
||||
checkUtf8Encoding: true
|
||||
|
||||
|
||||
// Checking the ANSI home position also requires the use of
|
||||
// cursor position reports, which are not supported on all
|
||||
/// terminals. Using this with a terminal that does not support
|
||||
// cursor position reports results in a 3 second delay during
|
||||
// the connect process, but works around positioning problems with
|
||||
// non-standard terminals.
|
||||
checkAnsiHomePosition: true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
In addition to these, there are also new options for `term.cp437TermList` and `term.utf8TermList`. Under most circumstances these should not need to be changed. If you want to customize these lists, more information is available in `config_default.js`
|
||||
|
||||
## 0.0.11-beta to 0.0.12-beta
|
||||
* Be aware that `master` is now mainline! This means all `git pull`'s will yield the latest version. See [WHATSNEW](WHATSNEW.md) for more information.
|
||||
* **BREAKING CHANGE** There is no longer a `prompt.hjson` file. Prompts are now simply part of the menu set in the `prompts` section. If you have an existing system you will need to add your `prompt.hjson` to your `menu.hjson`'s `includes` section at a minimum. Example:
|
||||
```hjson
|
||||
// menu.hjson
|
||||
{
|
||||
includes: [
|
||||
my-prompts.hjson // ref your old prompts here
|
||||
]
|
||||
}
|
||||
```
|
||||
* A set of database fixes were made that cause some records to be properly cleaned up when e.g. deleting a file. Existing `file.db` databases will need to be updated **manually**. Note that this applies to users upgrading within 0.0.12-beta as well:
|
||||
1. **Make a backup of your file.db!**
|
||||
2. Shut down ENiGMA.
|
||||
3. From the enigma-bbs directory:
|
||||
```
|
||||
sqlite3 db/file.sqlite3 < ./misc/update/tables_update_2020-11-29.sql
|
||||
```
|
||||
|
||||
## 0.0.10-alpha to 0.0.11-beta
|
||||
* Node.js 12.x LTS is now in use. Follow standard Node.js upgrade procedures (e.g.: `nvm install 12 && nvm use 12`).
|
||||
|
||||
## 0.0.9-alpha to 0.0.10-alpha
|
||||
* Security related files such as private keys and certs are now looked for in `config/security` by default.
|
||||
* Default archive handler for zip files has switched to InfoZip due to a bug in the latest p7Zip packages causing "volume not found" errors. Ensure you have the InfoZip `zip` and `unzip` commands in ENiGMA's path. You can switch back to 7Zip by overriding `archiveHandler` for `application/zip` in your `config.hjson` under `fileTypes` to `7Zip`.
|
||||
|
||||
## 0.0.8-alpha to 0.0.9-alpha
|
||||
* Development is now against Node.js 10.x LTS. Follow your standard upgrade path to update to Node 10.x before using 0.0.9-alpha!
|
||||
* The property `justify` found on various views previously had `left` and `right` values swapped (oops!); you will need to adjust any custom `theme.hjson` that use one or the other and swap them as well.
|
||||
* Possible breaking changes in FSE: The MCI code `%TL13` for error indicator is now `%TL4`. This is part of a cleanup and standardization on "custom ranges". You may need to update your `theme.hjson` and related artwork.
|
||||
* Removed view width auto-size: Some views still can auto-size their height, but in general you should be explicit in your themes
|
||||
* More standardization using "custom ranges" and `itemFormat` / `focusItemFormat` semantics. Update your themes!
|
||||
* In addition to using `itemFormat`, the `onelinerz` module uses `userName` vs `username` (note the case) to match other modules
|
||||
* `loginServers.webSocket` configuration block has changed to be more consistent with other servers. Example:
|
||||
```
|
||||
webSocket: {
|
||||
ws: {
|
||||
enabled: true
|
||||
}
|
||||
wss: {
|
||||
enabled: true
|
||||
port: 1234
|
||||
}
|
||||
proxied: true // X-Forwarded-Proto: https support
|
||||
}
|
||||
```
|
||||
* The module export `registerEvents` has been deprecated. If you have a module that depends on this, use the new more generic `moduleInitialize` export instead.
|
||||
* The `system.db` `user_event_log` table has been updated to include a unique session ID. Previously this table was not used, but you will need to perform a slight maintenance task before it can be properly used. After updating to `0.0.9-alpha`, please run the following: `sqlite3 db/system.db DROP TABLE user_event_log;`. The new table format will be created and used at startup.
|
||||
* If you have art configured for message conference or area selection via the `art` configuration value, you will need to include a `show_art` menu reference. Defaulted to `changeMessageConfPreArt` for conferences and `changeMessageAreaPreArt` for areas & included in the example `menu.hjson`.
|
||||
* Config `defaults` section was theme related and as such, has been renamed to `theme`. `defaults.theme` is now `theme.default`, and `preLoginTheme` is now `theme.preLogin`. See `config.js` if this isn't clear as mud.
|
||||
* Similar to the last item, `defaults.general.passwordChar` in `theme.hjson` is now just `defaults.passwordChar`.
|
||||
|
||||
|
||||
## 0.0.7-alpha to 0.0.8-alpha
|
||||
ENiGMA 0.0.8-alpha comes with some structure changes:
|
||||
* Configuration files are defaulted to `./config`. Related, the `--config` option now points to a configuration **directory**
|
||||
* `./mods/art` has been moved to `./art/general`
|
||||
* `./mods` is now reserved for actual user addon modules
|
||||
* Themes have been moved from `./mods/themes` to `./art/themes`
|
||||
|
||||
With the change to the `./mods` directory, `@systemModule` is now implied for `module` declarations in `menu.hjson`. To use a user module in `./mods` you must specify `@userModule`!
|
||||
|
||||
With the above changes, you'll need to to at least:
|
||||
* Move your `~/.config/enigma-bbs/config.hjson` to `./config/config.hjson` or utlize the `--config` option.
|
||||
* Move your `prompt.hjson` and `menu.hjson` (e.g. `myboardname.hjson`) to `./config`
|
||||
* Move any non-theme art files, and theme directories to their appropriate locations mentioned above
|
||||
* Move any module directories such as `message_post_evt` to `./mods/`
|
||||
* Move any certificates, pub/private keys, etc. from `./misc` to `./config`
|
||||
* Specify user modules as `@userModule:my_module_name`
|
||||
|
||||
## 0.0.6-alpha to 0.0.7-alpha
|
||||
No issues
|
||||
|
||||
## 0.0.5-alpha to 0.0.6-alpha
|
||||
No issues
|
||||
|
||||
## 0.0.4-alpha to 0.0.5-alpha
|
||||
No issues
|
||||
|
||||
## 0.0.1-alpha to 0.0.4-alpha
|
||||
### Node.js 6.x+ LTS is now **required**
|
||||
You will need to upgrade Node.js to [6.x+](https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V6.md). If using [nvm](https://github.com/creationix/nvm) (you should be!) the process will go something like this:
|
||||
```bash
|
||||
nvm install 6
|
||||
nvm alias default 6
|
||||
```
|
||||
|
||||
### ES6
|
||||
Newly written code will use ES6 and a lot of code has started the migration process. Of note is the `MenuModule` class. If you have created a mod that inherits from `MenuModule`, you will need to upgrade your class to ES6.
|
||||
|
||||
### Manual Database Upgrade
|
||||
A few upgrades need to be made to your SQLite databases:
|
||||
|
||||
```bash
|
||||
rm db/file.sqltie3 # safe to delete this time as it was not used previously
|
||||
sqlite3 db/message.sqlite
|
||||
sqlite> INSERT INTO message_fts(message_fts) VALUES('rebuild');
|
||||
```
|
||||
|
||||
### Archiver Changes
|
||||
If you have overridden or made additions to archivers in your `config.hjson` you will need to update them. See [Archive Configuration](docs/archive.md) and `core/config.js`
|
||||
|
||||
### File Base Configuration
|
||||
As 0.0.4-alpha contains file bases, you'll want to create a suitable configuration if you wish to use the feature. See [File Base Configuration](docs/file_base.md).
|
|
@ -0,0 +1,158 @@
|
|||
# Whats New
|
||||
This document attempts to track **major** changes and additions in ENiGMA½. For details, see GitHub.
|
||||
|
||||
## 0.0.14-beta
|
||||
* The [Web Server](/docs/_docs/servers/contentservers/web-server.md) has made some possibly breaking changes:
|
||||
* `/static/` prefixes are no longer required. This was a ugly hack.
|
||||
* Some internal routes such as those used for password resets live within `/_internal/`.
|
||||
* Routes for the file base now default to `/_f/` prefixed instead of just `/f/`. If `/f/` is in your `config.hjson` you are encouraged to update it!
|
||||
* Finally, the system will search for `index.html` and `index.htm` in that order, if another suitable route cannot be established.
|
||||
* CombatNet has shut down, so the module (`combatnet.js`) has been removed.
|
||||
* The Menu Flag `popParent` has been removed and `noHistory` has been updated to work as expected. In general things should "Just Work", but check your `menu.hjson` entries if you see menu stack issues.
|
||||
* Various New User Application (NUA) properties are now optional. If you would like to reduce the information users are required, remove optional fields from NUA artwork and collect less. These properties will be stored as "" (empty). Optional properties are as follows: Real name, Birth date, Sex, Location, Affiliations (Affils), Email, and Web address.
|
||||
* Art handling has been changed to respect the art width contained in SAUCE when present in the case where the terminal width is greater than the art width. This fixes art files that assume wrapping at 80 columns on wide (mostly new utf8) terminals.
|
||||
|
||||
## 0.0.13-beta
|
||||
* **Note for contributors**: ENiGMA has switched to [Prettier](https://prettier.io) for formatting/style. Please see [CONTRIBUTING](CONTRIBUTING.md) and the Prettier website for more information.
|
||||
* Removed terminal `cursor position reports` from most locations in the code. This should greatly increase the number of terminal programs that work with Enigma 1/2. For more information, see [Issue #222](https://github.com/NuSkooler/enigma-bbs/issues/222). This may also resolve other issues, such as [Issue #365](https://github.com/NuSkooler/enigma-bbs/issues/365), and [Issue #320](https://github.com/NuSkooler/enigma-bbs/issues/320). Anyone that previously had terminal incompatibilities please re-check and let us know!
|
||||
* Bumped up the minimum [Node.js](https://nodejs.org/en/) version to v14. This will allow more expressive Javascript programming syntax with ECMAScript 2020 to improve the development experience.
|
||||
* **New Waiting For Caller (WFC)** support via the `wfc.js` module.
|
||||
* Added new configuration options for `term.checkUtf8Encoding`, `term.checkAnsiHomePosition`, `term.cp437TermList`, and `term.utf8TermList`. More information on these options is available in [UPGRADE](UPGRADE.md).
|
||||
* Many new system statistics available via the StatLog such as current and average load, memory, etc.
|
||||
* Many new MCI codes: `MB`, `MF`, `LA`, `CL`, `UU`, `FT`, `DD`, `FB`, `DB`, `LC`, `LT`, `LD`, and more. See [MCI](./docs/art/mci.md).
|
||||
* SyncTERM style font support detection.
|
||||
* Added a system method to support setting the client encoding from menus, `@systemMethod:setClientEncoding`.
|
||||
* Many additional backward-compatible bug fixes since the first release of 0.0.12-beta. See the [project repository](https://github.com/NuSkooler/enigma-bbs) for more information.
|
||||
* Deprecated Gopher's `messageConferences` configuration key in favor of a easier to deal with `exposedConfAreas` allowing wildcards and exclusions. See [Gopher](./docs/servers/contentservers/gopher.md).
|
||||
* NNTP write (aka POST) access support for authenticated users over TLS.
|
||||
* [Advanced MCI formatting](./docs/art/mci.md#mci-formatting)!
|
||||
* Additional options in the `abracadabra` module for launching doors. See [Local Doors](./docs/modding/local-doors.md)
|
||||
|
||||
## 0.0.12-beta
|
||||
* The `master` branch has become mainline. What this means to users is `git pull` will always give you the latest and greatest. Make sure to read [Updating](./docs/admin/updating.md) and keep an eye on `WHATSNEW.md` (this file) and [UPGRADE](UPGRADE.md)! See also [ticket #276](https://github.com/NuSkooler/enigma-bbs/issues/276).
|
||||
* Development now occurs against [Node.js 14 LTS](https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V14.md).
|
||||
* The default configuration has been moved to [config_default.js](/core/config_default.js).
|
||||
* A full configuration revamp has taken place. Configuration files such as `config.hjson`, `menu.hjson`, and `theme.hjson` can now utilize includes via the `includes` directive, reference 'self' sections using `@reference:` and import environment variables with `@environment`.
|
||||
* An explicit prompt file previously specified by `general.promptFile` in `config.hjson` is no longer necessary. Instead, this now simply part of the `prompts` section in `menu.hjson`. The default setup still creates a separate prompt HJSON file, but it is `includes`ed in `menu.hjson`. With the removal of prompts the `PromptsChanged` event will no longer be fired.
|
||||
* New `PV` ACS check for arbitrary user properties. See [ACS](./docs/configuration/acs.md) for details.
|
||||
* The `message` arg used by `msg_list` has been deprecated. Please starting using `messageIndex` for this purpose. Support for `message` will be removed in the future.
|
||||
* A number of new MCI codes (see [MCI](./docs/art/mci.md))
|
||||
* Added ability to export/download messages. This is enabled in the default menu. See `messageAreaViewPost` in [the default message base template](./misc/menu_templates/message_base.in.hjson) and look for the download options (`@method:addToDownloadQueue`, etc.) for details on adding to your system!
|
||||
* The Gopher server has had a revamp! Standard `gophermap` files are now served along with any other content you configure for your Gopher Hole! A default [gophermap](https://en.wikipedia.org/wiki/Gopher_(protocol)#Source_code_of_a_menu) can be found [in the misc directory](./misc/gophermap) that behaves like the previous implementation. See [Gopher docs](./docs/servers/gopher.md) for more information.
|
||||
* Default file browser up/down/pageUp/pageDown scrolls description (e.g. FILE_ID.DIZ). If you want to expose this on an existing system see the `fileBaseListEntries` in the default `file_base.in.hjson` template.
|
||||
* File base search has had an improvement to search term handling.
|
||||
* `./oputil user group -group` to now accepts `~group` removing the need for special handling of the "-" character. #331
|
||||
* A fix has been made to clean up old `file.db` entries when a file is removed. Previously stale records could be left or even recycled into new entries. Please see [UPGRADE.md](UPGRADE.md) for details on applying this fix (look for `tables_update_2020-11-29.sql`).
|
||||
* The [./docs/modding/onelinerz.md](onelinerz) module can have `dbSuffix` set in it's `config` block to specify a separate DB file. For example to use as a requests list.
|
||||
* Default hash tags can now be set in file areas. Simply supply an array or list of values in a file area block via `hashTags`.
|
||||
* Added ability to pass an `env` value (map) to `abracadabra` doors. See [Local Doors](./docs/modding/local-doors.md]).
|
||||
* `dropFileType` is now optional when launching doors with `abracadabra`. It can also be explicitly set to `none`.
|
||||
* FSE in *view* mode can now stylize quote indicators. Supply `quoteStyleLevel1` in the `config` block. This can be a single string or an array of two strings (one to style the quotee's initials, the next for the '>' character, and finally the quoted text). See the `messageAreaViewPost` menu `config` block in the default `luciano_blocktronics` `theme.hjson` file for an example. An additional level style (e.g. for nested quotes) may be added in the future.
|
||||
* FSE in *view* mode can now stylize tear lines and origin lines via `tearLineStyle` and `originStyle` `config` values in the same manor as `quoteStyleLevel`.
|
||||
|
||||
## 0.0.11-beta
|
||||
* Upgraded from `alpha` to `beta` -- The software is far along and mature enough at this point!
|
||||
* Development is now against Node.js 12.x LTS. Other versions may work but are not currently supported!
|
||||
* [QWK support](./docs/messageareas/qwk.md)
|
||||
* `oputil fb scan *areaTagWildcard*` scans all areas in which wildcard is matched.
|
||||
* The archiver configuration `escapeTelnet` has been renamed `escapeIACs`. Support for the old value will be removed in the future.
|
||||
|
||||
## 0.0.10-alpha
|
||||
+ `oputil.js user rename USERNAME NEWNAME`
|
||||
+ `my_messages.js` module (defaulted to "m" at the message menu) to list public messages addressed to the currently logged in user. Takes into account their username and `real_name` property.
|
||||
+ SSH Public Key Authentication has been added. The system uses a OpenSSH style public key set on the `ssh_public_key` user property.
|
||||
+ 2-Factor (2FA) authentication is now available using [RFC-4266 - HOTP: HMAC-Based One-Time Password Algorithm)](https://tools.ietf.org/html/rfc4226), [RFC-6238 - TOTP: Time-Based One-Time Password Algorithm](https://tools.ietf.org/html/rfc6238), or [Google Authenticator](http://google-authenticator.com/). QR codes for activation are available as well. One-time backup aka recovery codes can also be used. See [Security](./docs/configuration/security.md) for more info!
|
||||
* New ACS codes for new 2FA/OTP: `AR` and `AF`. See [ACS](./docs/configuration/acs.md) for details.
|
||||
+ `oputil.js user 2fa USERNAME TYPE` enables 2-factor authentication for a user.
|
||||
* `oputil.js user info USERNAME --security` can now display additional security information such as 2FA/OTP.
|
||||
* `oputil.js fb scan --quick` is now the default. Override with `--full`.
|
||||
* ACS checks can now be applied to form actions. For example:
|
||||
```hjson
|
||||
{
|
||||
value: { command: "SEC" }
|
||||
action: [
|
||||
{
|
||||
// secure connections can go here
|
||||
acs: SC
|
||||
action: @menu:securityMenu
|
||||
}
|
||||
{
|
||||
// non-secure connections
|
||||
action: @menu:secureConnectionRequired
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
* `idleLogoutSeconds` and `preAuthIdleLogoutSeconds` can now be set to `0` to fully disable the idle monitor.
|
||||
* Switched default archive handler for zip files from 7zip to InfoZip (`zip` and `unzip`) commands. See [UPGRADE](UPGRADE.md).
|
||||
* Menu submit `action`'s can now in addition to being a simple string such as `@menu:someMenu`, or an array of objects with ACS checks, be a simple array of strings. In this case, a random match will be made. For example:
|
||||
```hjson
|
||||
submit: [
|
||||
{
|
||||
value: { command: "FOO" }
|
||||
action: [
|
||||
// one of the following actions will be matched:
|
||||
"@menu:menuStyle1"
|
||||
"@menu:menuStyle2"
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
* Added `read` (list/view) and `write` (post) ACS support to message conferences and areas.
|
||||
* Many new built in modules adding support for things like auto signatures, listing "my" messages, top stats, etc. Take a look in the docs for setting them up!
|
||||
* Built in MRC support!
|
||||
* Added an customizable achievement system!
|
||||
|
||||
|
||||
## 0.0.9-alpha
|
||||
* Development is now against Node.js 10.x LTS. While other Node.js series may continue to work, you're own your own and YMMV!
|
||||
* Fixed `justify` properties: `left` and `right` values were formerly swapped (oops!)
|
||||
* Menu items can now be arrays of *objects* not just arrays of strings.
|
||||
* The properties `itemFormat` and `focusItemFormat` allow you to supply the string format for items. For example if a menu object is `{ "userName" : "Bob", "age" : 35 }`, a `itemFormat` might be `|04{userName} |08- |14{age}`.
|
||||
* If no `itemFormat` is supplied, the default formatter is `{text}`.
|
||||
* Setting the `data` member of an object will cause form submissions to use this value instead of the selected items index.
|
||||
* See the default `luciano_blocktronics` `matrix` menu for example usage.
|
||||
* You can now set the `sort` property on a menu to sort items. If `true` items are sorted by `text`. If the value is a string, it represents the key in menu objects to sort by.
|
||||
* Hot-reload of configuration files such as menu.hjson, config.hjson, your themes.hjson, etc.: When a file is saved, it will be hot-reloaded into the running system
|
||||
* Note that any custom modules should make use of the new Config.get() method.
|
||||
* The old concept of `autoScale` has been removed. See https://github.com/NuSkooler/enigma-bbs/issues/166
|
||||
* Ability to delete from personal mailbox (finally!)
|
||||
* Add ability to skip file and/or message areas during newscan. Set config.omitFileAreaTags and config.omitMessageAreaTags in new_scan configuration of your menu.hjson
|
||||
* `{userName}` (sanitized) and `{userNameRaw}` as well as `{cwd}` have been added to param options when launching a door.
|
||||
* Any module may now register for a system startup initialization via the `initializeModules(initInfo, cb)` export.
|
||||
* User event log is now functional. Various events a user performs will be persisted to the `system.sqlite3` `user_event_log` table for up to 90 days. An example usage can be found in the updated `last_callers` module where events are turned into Ami/X style actions. Please see `UPGRADE.md`!
|
||||
* New MCI codes including general purpose movement codes. See [MCI codes](docs/art/mci.md)
|
||||
* `install.sh` will now attempt to use NPM's `--build-from-source` option when ARM is detected.
|
||||
* `oputil.js config new` will now generate a much more complete configuration file with comments, examples, etc. `oputil.js config cat` dumps your current config to stdout.
|
||||
* Handling of failed login attempts is now fully in. Disconnect clients, lock out accounts, ability to auto or unlock at (email-driven) password reset, etc. See `users.failedLogin` in `config.hjson`.
|
||||
* NNTP support! See [NNTP docs](./docs/servers/nntp.md) for more information.
|
||||
* `oputil.js user rm` and `oputil.js user info` are in! See [oputil CLI](./docs/admin/oputil.md).
|
||||
* Performing a file scan/import using `oputil.js fb scan` now recognizes various `FILES.BBS` formats.
|
||||
* Usernames found in the `config.users.badUserNames` are now not only disallowed from applying, but disconnected at any login attempt.
|
||||
* Total minutes online is now tracked for users. Of course, it only starts after you get the update :)
|
||||
* Form entries in `menu.hjson` can now be omitted from submission handlers using `omit: true`
|
||||
|
||||
## 0.0.8-alpha
|
||||
* [Mystic BBS style](http://wiki.mysticbbs.com/doku.php?id=displaycodes) extended pipe color codes. These allow for example, to set "iCE" background colors.
|
||||
* File descriptions (FILE_ID.DIZ, etc.) now support Renegade |## pipe, PCBoard, and other less common color codes found commonly in BBS era scene releases.
|
||||
* New menu stack flags: `noHistory` now works as expected, and a new addition of `popParent`. See the default `menu.hjson` for usage.
|
||||
* File structure changes making ENiGMA½ much easier to maintain and run in Docker. Thanks to RiPuk ([Dave Stephens](https://github.com/davestephens))! See [UPGRADE.md](UPGRADE.md) for details.
|
||||
* Switch to pure JS [xxhash](https://github.com/mscdex/node-xxhash) instead of farmhash. Too many issues on ARM and other less popular CPUs with farmhash ([Dave Stephens](https://github.com/davestephens))
|
||||
* Native [CombatNet](http://combatnet.us/) support! ([Dave Stephens](https://github.com/davestephens))
|
||||
* Fix various issues with legacy DOS Telnet terminals. Note that some may still have issues with extensive CPR usage by ENiGMA½ that will be addressed in a future release.
|
||||
* Added web (http://, https://) based download manager including batch downloads. Clickable links if using [VTXClient](https://github.com/codewar65/VTX_ClientServer)!
|
||||
* General VTX hyperlink support for web links
|
||||
* DEL vs Backspace key differences in FSE
|
||||
* Correctly parse oddball `INTL`, `TOPT`, `FMPT`, `Via`, etc. FTN kludge lines
|
||||
* NetMail support! You can now send and receive NetMail. To send a NetMail address a external user using `Name <address>` format from your personal email menu. For example, `Foo Bar <123:123/123>`. The system also detects other formats such asa `Name @ address` (`Foo Bar@123:123/123`)
|
||||
* `oputil.js`: Added `mb areafix` command to quickly send AreaFix messages from the command line. You can manually send them from personal mail as well.
|
||||
* `oputil.js fb rm|remove|del|delete` functionality to remove file base entries.
|
||||
* `oputil.js fb desc` for setting/updating a file entry description.
|
||||
* Users can now (re)set File and Message base pointers
|
||||
* Add `--update` option to `oputil.js fb scan`
|
||||
* Fix @watch path support for event scheduler including FTN, e.g. when looking for a `toss!.now` file produced by Binkd.
|
||||
|
||||
...LOTS more!
|
||||
|
||||
## Pre 0.0.8-alpha
|
||||
See GitHub
|
File diff suppressed because it is too large
Load Diff
2797
admin/oputil.html
2797
admin/oputil.html
File diff suppressed because it is too large
Load Diff
2393
admin/updating.html
2393
admin/updating.html
File diff suppressed because it is too large
Load Diff
2572
art/general.html
2572
art/general.html
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,19 @@
|
|||
[0m[1m [0;31mーーーーーーーーー[37m[7C[1mワイワワ[0m[16C[1m [0m[15C[1;30m [33mー[30m [37m [0m[7C[1mワワ[0m[4C[1m [0m
|
||||
[1m [0;31mーーー[1;37;41mー[0;31mーー [37m[3C[1mワワ゚ロロロイ[47mロ[41mロロ[40mロロ゚ [0m[7C ーー[8C[1;33m [0m [1;33mーーー[37m [33mーーーー ー[0m [1mワワワ゚゚゚ワワイロロロロロ゚[0m
|
||||
[31mー[37m[4C[1mワワワ゚゚[0m[3C[1m゙ロ[47mロロロ[41mイイ[40mロン[0m[3C[1;30m [0mーー[1;30m [0m[3C[1m ワワワ [0m[4C[1mワワ[0m[6C[1m [33mー[37mワワワ゚゚[0m[8C[1mロ[41mイイ[40mロロン[0m
|
||||
[1m゚ワワワロ[47mロロ[40mイロ [0;31m ー[37m[3C[1mロ[47mロロイイイアア[0m[8C[1mワワワ゚゚ロロロロ[41mイロ[40m゚[0m[3C[1mロイ[47mイイイア[40mワワワイ[47mイイイ[40mーー[0m [1mーー[0m[5C[1m゙ロロロロロイ[0m
|
||||
[1m ゙[47mロ[41mイイ[47mロロロ[40mン[0m[5C[1m゙ロ[47mイイアアアー[40mン [47mイア[40mワワ[47mーア[40m゚ [0m[4C[1m゙[47mイイイイロ[40mン ゙[47mイイアアアアアイイイアアア[0m[10C[1m゙[47mイイ[40mロ[41mロ[40mロン[0m
|
||||
[1;47mロロロロイイ゚[0m [1m [0m [1m [0m [1;47mイイアアーーー[0mロロ[1;47mー ーーー[30mー[0mン[6C[1;30m [47m [37mアアアイイ[30;40m [37;47mイイアアーー[30m [37mーアアアーーー[0m[10C[1;47mーアアイイロ[40mン[0m [1m [0m
|
||||
[1mーーイロ[47mイイアーー[40mーー ー [0m ゚゚゚[1;47mーー[0mロロヷ[1;47mーー[30mーーアア[37;40mーー[0m [1mーー[0m [1mー[47mー[30m [37mーーアア[30m [0m゙[1;47m ーアー[30mーーー[0m゙[1;47m ーー[30mーーー[37;40mーー[0m [1mーー ー ーー[47mーーーアアイ[40mーー[0m [1m [0m [1mー゙[47mイアアーー[0;47m [40mワワ [1m [0m [1;30m [0m[9C[1;30;47mーーアアイ[40mロ [0m[4C[1;30m ゙[47mアアーー[37mー [30m ー[37mー[30mーアア[40m [0m゙[1;47mー[30mーーーア[40mン[0m[3C[34m ワ[37m ゙ロ[1;47m ーーアア[0m[3C[1m [0m
|
||||
[34mワ[1;30m [0m゙[1;47mアーー[30m ーー[40mン [0;34m ワ[1;30m ワロロワワワ ワロ[47mイイイ[40mロロン[0;34m゙ワイ゚[1;30m ゙ロ[47mイイアーー ーーアアアア[0m [34mワ[37m [1;30;47mアアアアイ[40mロ[0m [34m゙ロワロロイロ[37m ゙ロロロロ[1;47mー [0m [34m゙ワ [37m
|
||||
[1;34;44mー[0;34mン[37m [1;47mー [30mーーアイ[40mン [34;44mーー[0;34mロワ[37m [1;30mロロ[47mイイ[40mロロロロロロ[47mイ[40mロロイン[0;34m [1;44mーー[0m [1;30m゚゚゚゚ロ[47mイアア[40m゚゙[47mアアイイ[40m [0;34m゙[1;44mー[0;34mン[37m [1;30mロ[47mイイロ[40mロン[0m [34mロ[1;44mーー[0;34mロロン[37m [1;30;47mーーーー[0mロロン[34m ロロ[1;44mー[0m
|
||||
[34m゚ [37m [1;30;47mーーーアアイイ[40m [0;34m゚゚イ゚[37m [1;30m゙ロロ[47mロロ[40mロロイロロロロロロイ [0;34m゚゚゚イ ゚[37m[4C[1;30m゚ [47mイイ[40mロン[0m [34m゚イ゚[37m [1;30m゙ロイロイイ ワワワ [0;34m゚[1;30m ゙[47mアアーーー[0mン[1;30m [0;34m゚イ゚[37m
|
||||
[3C[1;30m゙[47mアアアイイ[40mロン [0m[3C[1;30m ロロロロロロロロロロロロロロ゚゚[0m[12C[1;30mロロイ[0m[6C[1;30mロ゚゚ ゚゚゚[0m[3C[1;30m゚゚ ロ[47mイイアアアア[0m
|
||||
[4C[1;30mロ[47mイイロロロ[40mロ ゙ロロロロロイロ ロ゚゚ [0m[11C[1;30m゙イ[0m[14C[1;30mワ[0m[6C[1;30mロロ[47mイイイ[40mロン[0m
|
||||
[1;30m ワワ゚゚ ゚゚゚ワワワ ロロロロイ゚[0m[30C[1;30m ワワロロロロ[0m[6C[1;30m゙ロ[47mロイ[40mロロ [0m
|
||||
[4C[31m [1;30mーー ゚゚゚゚゚[0m[4C[1;31mーーー[30m [31mーー[30m [37meni[41mg[40mmaォ[0m[3Cbbs soft[6C[1;30mロロロ[47mイイ[40mロン[0m[4C[31mー[1;30m ゙ロロロロイ [0;31mーー[37m
|
||||
[1;30mdangermouse ーー[0m[42C[1;30mロイロロロロ[0m[7C[1;30mロ[47mイロ[40mイロ [0;31mー[37m
|
||||
[12C[1;30m [0m[37C[1;30m ーー[0m [1;30m ロイロロロロワワワワ゚゚゚゚゚゚゚゚ワワワ[0m
|
||||
[57C[1;30m゙ロロ゚゚[0m[7C[31mー[1;37;41mー[0;31mーーー[37m
|
||||
[53C[1;30m ー[0m [1;30m゚[0m[5C[31m ーーーーーーーーーー[37m
|
||||
[0m
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,52 @@
|
|||
You should never see this!
|
||||
|
||||
|
||||
... nor this
|
||||
[2J[0m[?33h
|
||||
[1;31m fONT tEST[0m
|
||||
[1;30m ~~~~~~~~~[0m
|
||||
|
||||
|[1;33m 0[0m |[1;33m 1[0m |[1;33m 2[0m |[1;33m 3[0m |[1;33m 4[0m |[1;33m 5[0m |[1;33m 6[0m |[1;33m 7[0m |[1;33m 8[0m |[1;33m 9[0m |[1;33m A[0m |[1;33m B[0m |[1;33m C[0m |[1;33m D[0m |[1;33m E[0m |[1;33m F[0m
|
||||
---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
|
||||
[1;33m0 [0m|[1;36mNUL[0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;36mBS [0m|[1;36mHT [0m|[1;36mLF [0m|[1;37m [0m|[1;37m [0m|[1;36mCR [0m|[1;37m [0m|[1;37m [0m
|
||||
[1;33m1 [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;36mEOF[0m|[1;36mESC[0m|[1;37m [0m|[1;37m [0m|[1;37m [0m|[1;37m [0m
|
||||
[1;33m2 [0m|[1;37m [0m|[1;37m ! [0m|[1;37m " [0m|[1;37m # [0m|[1;37m $ [0m|[1;37m % [0m|[1;37m & [0m|[1;37m ' [0m|[1;37m ( [0m|[1;37m ) [0m|[1;37m * [0m|[1;37m + [0m|[1;37m , [0m|[1;37m - [0m|[1;37m . [0m|[1;37m / [0m
|
||||
[1;33m3 [0m|[1;37m 0 [0m|[1;37m 1 [0m|[1;37m 2 [0m|[1;37m 3 [0m|[1;37m 4 [0m|[1;37m 5 [0m|[1;37m 6 [0m|[1;37m 7 [0m|[1;37m 8 [0m|[1;37m 9 [0m|[1;37m : [0m|[1;37m ; [0m|[1;37m < [0m|[1;37m = [0m|[1;37m > [0m|[1;37m ? [0m
|
||||
---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
|
||||
[1;33m4 [0m|[1;37m @ [0m|[1;37m A [0m|[1;37m B [0m|[1;37m C [0m|[1;37m D [0m|[1;37m E [0m|[1;37m F [0m|[1;37m G [0m|[1;37m H [0m|[1;37m I [0m|[1;37m J [0m|[1;37m K [0m|[1;37m L [0m|[1;37m M [0m|[1;37m N [0m|[1;37m O [0m
|
||||
[1;33m5 [0m|[1;37m P [0m|[1;37m Q [0m|[1;37m R [0m|[1;37m S [0m|[1;37m T [0m|[1;37m U [0m|[1;37m V [0m|[1;37m W [0m|[1;37m X [0m|[1;37m Y [0m|[1;37m Z [0m|[1;37m [ [0m|[1;37m \ [0m|[1;37m ] [0m|[1;37m ^ [0m|[1;37m _ [0m
|
||||
[1;33m6 [0m|[1;37m ` [0m|[1;37m a [0m|[1;37m b [0m|[1;37m c [0m|[1;37m d [0m|[1;37m e [0m|[1;37m f [0m|[1;37m g [0m|[1;37m h [0m|[1;37m i [0m|[1;37m j [0m|[1;37m k [0m|[1;37m l [0m|[1;37m m [0m|[1;37m n [0m|[1;37m o [0m
|
||||
[1;33m7 [0m|[1;37m p [0m|[1;37m q [0m|[1;37m r [0m|[1;37m s [0m|[1;37m t [0m|[1;37m u [0m|[1;37m v [0m|[1;37m w [0m|[1;37m x [0m|[1;37m y [0m|[1;37m z [0m|[1;37m { [0m|[1;37m | [0m|[1;37m } [0m|[1;37m ~ [0m|[1;37m [0m
|
||||
---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
|
||||
[1;33m8 [0m|[1;37m € [0m|[1;37m <20> [0m|[1;37m ‚ [0m|[1;37m ƒ [0m|[1;37m „ [0m|[1;37m … [0m|[1;37m † [0m|[1;37m ‡ [0m|[1;37m ˆ [0m|[1;37m ‰ [0m|[1;37m Š [0m|[1;37m ‹ [0m|[1;37m Œ [0m|[1;37m <20> [0m|[1;37m Ž [0m|[1;37m <20> [0m
|
||||
[1;33m9 [0m|[1;37m <20> [0m|[1;37m ‘ [0m|[1;37m ’ [0m|[1;37m “ [0m|[1;37m ” [0m|[1;37m • [0m|[1;37m – [0m|[1;37m — [0m|[1;37m ˜ [0m|[1;37m ™ [0m|[1;37m š [0m|[1;37m › [0m|[1;37m œ [0m|[1;37m <20> [0m|[1;37m ž [0m|[1;37m Ÿ [0m
|
||||
[1;33mA [0m|[1;37m [0m|[1;37m ¡ [0m|[1;37m ¢ [0m|[1;37m £ [0m|[1;37m ¤ [0m|[1;37m ¥ [0m|[1;37m ¦ [0m|[1;37m § [0m|[1;37m ¨ [0m|[1;37m © [0m|[1;37m ª [0m|[1;37m « [0m|[1;37m ¬ [0m|[1;37m [0m|[1;37m ® [0m|[1;37m ¯ [0m
|
||||
[1;33mB [0m|[1;37m ° [0m|[1;37m ± [0m|[1;37m ² [0m|[1;37m ³ [0m|[1;37m ´ [0m|[1;37m µ [0m|[1;37m ¶ [0m|[1;37m · [0m|[1;37m ¸ [0m|[1;37m ¹ [0m|[1;37m º [0m|[1;37m » [0m|[1;37m ¼ [0m|[1;37m ½ [0m|[1;37m ¾ [0m|[1;37m ¿ [0m
|
||||
---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
|
||||
[1;33mC [0m|[1;37m À [0m|[1;37m Á [0m|[1;37m  [0m|[1;37m à [0m|[1;37m Ä [0m|[1;37m Å [0m|[1;37m Æ [0m|[1;37m Ç [0m|[1;37m È [0m|[1;37m É [0m|[1;37m Ê [0m|[1;37m Ë [0m|[1;37m Ì [0m|[1;37m Í [0m|[1;37m Î [0m|[1;37m Ï [0m
|
||||
[1;33mD [0m|[1;37m Ð [0m|[1;37m Ñ [0m|[1;37m Ò [0m|[1;37m Ó [0m|[1;37m Ô [0m|[1;37m Õ [0m|[1;37m Ö [0m|[1;37m × [0m|[1;37m Ø [0m|[1;37m Ù [0m|[1;37m Ú [0m|[1;37m Û [0m|[1;37m Ü [0m|[1;37m Ý [0m|[1;37m Þ [0m|[1;37m ß [0m
|
||||
[1;33mE [0m|[1;37m à [0m|[1;37m á [0m|[1;37m â [0m|[1;37m ã [0m|[1;37m ä [0m|[1;37m å [0m|[1;37m æ [0m|[1;37m ç [0m|[1;37m è [0m|[1;37m é [0m|[1;37m ê [0m|[1;37m ë [0m|[1;37m ì [0m|[1;37m í [0m|[1;37m î [0m|[1;37m ï [0m
|
||||
[1;33mF [0m|[1;37m ð [0m|[1;37m ñ [0m|[1;37m ò [0m|[1;37m ó [0m|[1;37m ô [0m|[1;37m õ [0m|[1;37m ö [0m|[1;37m ÷ [0m|[1;37m ø [0m|[1;37m ù [0m|[1;37m ú [0m|[1;37m û [0m|[1;37m ü [0m|[1;37m ý [0m|[1;37m þ [0m|[1;37m ÿ [0m
|
||||
|
||||
|
||||
[1;31m cOLOR tEST[0m
|
||||
[1;30m ~~~~~~~~~~[0m
|
||||
|
||||
[0;30;40m°±²Û[0;30;41m°±²Û[0;30;42m°±²Û[0;30;43m°±²Û[0;30;44m°±²Û[0;30;45m°±²Û[0;30;46m°±²Û[0;30;47m°±²Û[1;30;40m°±²Û[1;30;41m°±²Û[1;30;42m°±²Û[1;30;43m°±²Û[1;30;44m°±²Û[1;30;45m°±²Û[1;30;46m°±²Û[1;30;47m°±²Û[0m
|
||||
[0;31;40m°±²Û[0;31;41m°±²Û[0;31;42m°±²Û[0;31;43m°±²Û[0;31;44m°±²Û[0;31;45m°±²Û[0;31;46m°±²Û[0;31;47m°±²Û[1;31;40m°±²Û[1;31;41m°±²Û[1;31;42m°±²Û[1;31;43m°±²Û[1;31;44m°±²Û[1;31;45m°±²Û[1;31;46m°±²Û[1;31;47m°±²Û[0m
|
||||
[0;32;40m°±²Û[0;32;41m°±²Û[0;32;42m°±²Û[0;32;43m°±²Û[0;32;44m°±²Û[0;32;45m°±²Û[0;32;46m°±²Û[0;32;47m°±²Û[1;32;40m°±²Û[1;32;41m°±²Û[1;32;42m°±²Û[1;32;43m°±²Û[1;32;44m°±²Û[1;32;45m°±²Û[1;32;46m°±²Û[1;32;47m°±²Û[0m
|
||||
[0;33;40m°±²Û[0;33;41m°±²Û[0;33;42m°±²Û[0;33;43m°±²Û[0;33;44m°±²Û[0;33;45m°±²Û[0;33;46m°±²Û[0;33;47m°±²Û[1;33;40m°±²Û[1;33;41m°±²Û[1;33;42m°±²Û[1;33;43m°±²Û[1;33;44m°±²Û[1;33;45m°±²Û[1;33;46m°±²Û[1;33;47m°±²Û[0m
|
||||
[0;34;40m°±²Û[0;34;41m°±²Û[0;34;42m°±²Û[0;34;43m°±²Û[0;34;44m°±²Û[0;34;45m°±²Û[0;34;46m°±²Û[0;34;47m°±²Û[1;34;40m°±²Û[1;34;41m°±²Û[1;34;42m°±²Û[1;34;43m°±²Û[1;34;44m°±²Û[1;34;45m°±²Û[1;34;46m°±²Û[1;34;47m°±²Û[0m
|
||||
[0;35;40m°±²Û[0;35;41m°±²Û[0;35;42m°±²Û[0;35;43m°±²Û[0;35;44m°±²Û[0;35;45m°±²Û[0;35;46m°±²Û[0;35;47m°±²Û[1;35;40m°±²Û[1;35;41m°±²Û[1;35;42m°±²Û[1;35;43m°±²Û[1;35;44m°±²Û[1;35;45m°±²Û[1;35;46m°±²Û[1;35;47m°±²Û[0m
|
||||
[0;36;40m°±²Û[0;36;41m°±²Û[0;36;42m°±²Û[0;36;43m°±²Û[0;36;44m°±²Û[0;36;45m°±²Û[0;36;46m°±²Û[0;36;47m°±²Û[1;36;40m°±²Û[1;36;41m°±²Û[1;36;42m°±²Û[1;36;43m°±²Û[1;36;44m°±²Û[1;36;45m°±²Û[1;36;46m°±²Û[1;36;47m°±²Û[0m
|
||||
[0;37;40m°±²Û[0;37;41m°±²Û[0;37;42m°±²Û[0;37;43m°±²Û[0;37;44m°±²Û[0;37;45m°±²Û[0;37;46m°±²Û[0;37;47m°±²Û[1;37;40m°±²Û[1;37;41m°±²Û[1;37;42m°±²Û[1;37;43m°±²Û[1;37;44m°±²Û[1;37;45m°±²Û[1;37;46m°±²Û[1;37;47m°±²Û[0m
|
||||
[5;30;40m°±²Û[5;30;41m°±²Û[5;30;42m°±²Û[5;30;43m°±²Û[5;30;44m°±²Û[5;30;45m°±²Û[5;30;46m°±²Û[5;30;47m°±²Û[1;5;30;40m°±²Û[1;5;30;41m°±²Û[1;5;30;42m°±²Û[1;5;30;43m°±²Û[1;5;30;44m°±²Û[1;5;30;45m°±²Û[1;5;30;46m°±²Û[1;5;30;47m°±²Û[0m
|
||||
[5;31;40m°±²Û[5;31;41m°±²Û[5;31;42m°±²Û[5;31;43m°±²Û[5;31;44m°±²Û[5;31;45m°±²Û[5;31;46m°±²Û[5;31;47m°±²Û[1;5;31;40m°±²Û[1;5;31;41m°±²Û[1;5;31;42m°±²Û[1;5;31;43m°±²Û[1;5;31;44m°±²Û[1;5;31;45m°±²Û[1;5;31;46m°±²Û[1;5;31;47m°±²Û[0m
|
||||
[5;32;40m°±²Û[5;32;41m°±²Û[5;32;42m°±²Û[5;32;43m°±²Û[5;32;44m°±²Û[5;32;45m°±²Û[5;32;46m°±²Û[5;32;47m°±²Û[1;5;32;40m°±²Û[1;5;32;41m°±²Û[1;5;32;42m°±²Û[1;5;32;43m°±²Û[1;5;32;44m°±²Û[1;5;32;45m°±²Û[1;5;32;46m°±²Û[1;5;32;47m°±²Û[0m
|
||||
[5;33;40m°±²Û[5;33;41m°±²Û[5;33;42m°±²Û[5;33;43m°±²Û[5;33;44m°±²Û[5;33;45m°±²Û[5;33;46m°±²Û[5;33;47m°±²Û[1;5;33;40m°±²Û[1;5;33;41m°±²Û[1;5;33;42m°±²Û[1;5;33;43m°±²Û[1;5;33;44m°±²Û[1;5;33;45m°±²Û[1;5;33;46m°±²Û[1;5;33;47m°±²Û[0m
|
||||
[5;34;40m°±²Û[5;34;41m°±²Û[5;34;42m°±²Û[5;34;43m°±²Û[5;34;44m°±²Û[5;34;45m°±²Û[5;34;46m°±²Û[5;34;47m°±²Û[1;5;34;40m°±²Û[1;5;34;41m°±²Û[1;5;34;42m°±²Û[1;5;34;43m°±²Û[1;5;34;44m°±²Û[1;5;34;45m°±²Û[1;5;34;46m°±²Û[1;5;34;47m°±²Û[0m
|
||||
[5;35;40m°±²Û[5;35;41m°±²Û[5;35;42m°±²Û[5;35;43m°±²Û[5;35;44m°±²Û[5;35;45m°±²Û[5;35;46m°±²Û[5;35;47m°±²Û[1;5;35;40m°±²Û[1;5;35;41m°±²Û[1;5;35;42m°±²Û[1;5;35;43m°±²Û[1;5;35;44m°±²Û[1;5;35;45m°±²Û[1;5;35;46m°±²Û[1;5;35;47m°±²Û[0m
|
||||
[5;36;40m°±²Û[5;36;41m°±²Û[5;36;42m°±²Û[5;36;43m°±²Û[5;36;44m°±²Û[5;36;45m°±²Û[5;36;46m°±²Û[5;36;47m°±²Û[1;5;36;40m°±²Û[1;5;36;41m°±²Û[1;5;36;42m°±²Û[1;5;36;43m°±²Û[1;5;36;44m°±²Û[1;5;36;45m°±²Û[1;5;36;46m°±²Û[1;5;36;47m°±²Û[0m
|
||||
[5;37;40m°±²Û[5;37;41m°±²Û[5;37;42m°±²Û[5;37;43m°±²Û[5;37;44m°±²Û[5;37;45m°±²Û[5;37;46m°±²Û[5;37;47m°±²Û[1;5;37;40m°±²Û[1;5;37;41m°±²Û[1;5;37;42m°±²Û[1;5;37;43m°±²Û[1;5;37;44m°±²Û[1;5;37;45m°±²Û[1;5;37;46m°±²Û[1;5;37;47m°±²Û[0m
|
||||
|
||||
[0m
|
3171
art/mci.html
3171
art/mci.html
File diff suppressed because it is too large
Load Diff
2610
art/themes.html
2610
art/themes.html
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue