A few tidbits about me:
- Father to an amazing daughter
- Coder
- Textmode is king!
ENiGMA½ BBS Software
Home Page: https://nuskooler.github.io/enigma-bbs/
License: BSD 2-Clause "Simplified" License
FidoNet FTN style import/export needs to be fully implemented. Some experimental import code has been written, but needs quite a bit of restructure. Gaze can be utilized to monitor for FTN packet arrivals.
Is there a template somewhere which will help with the creation of a theme? Some information on this would be great.
May want to create an enigma-bbs org, and re-locate the code to that org... If you're interested in using the bbs-io org, I invited you with full access.
It will make it easier to add contributors.
The current User Configuration menu/mod is non-functional. It should allow view & edit of all user-editable properties of themselves.
It may be worthwhile to have/document an IRC channel for BBS support, either via freenode, irc.synchro.net or efnet.
May want to consider the use of babel with gulp so that you can use ES6/7 features in the codebase.
It will mean a build step for changes, but could simply check in the built version in npm, and have the source in core-src
building to ./bbs.js
(not checked into github) or use babel-node
as an npm start-dev
script that will run directly against the source.
Update lodash to 4.0.x
This might break things, so it will need careful inspection.
Display of .txt files can be broken. For example, Amiga Collys's do not wrap properly.
Due to recent versions of Node preventing iconv-lite extendNodeEncodings()
, an exception is thrown when door.py attempts to call setEncoding()
if the encoding is not supported by Node itself (e.g. 'cp437')
Stack:
< string_decoder.js:24
< throw new Error('Unknown encoding: ' + encoding);
< ^
< Error: Unknown encoding: cp437
< at assertEncoding (string_decoder.js:24:11)
< at new exports.StringDecoder (string_decoder.js:38:3)
< at Socket.Readable.setEncoding (_stream_readable.js:206:33)
< at Terminal.setEncoding (/home/bashby/dev/enigma-bbs/node_modules/ptyw.js/lib/pty.js:288:17)
< at Door.run (/home/bashby/dev/enigma-bbs/core/door.js:50:7)
< at AbracadabraModule.runDoor (/home/bashby/dev/enigma-bbs/mods/abracadabra.js:157:16)
< at AbracadabraModule.finishedLoading (/home/bashby/dev/enigma-bbs/mods/abracadabra.js:178:7)
< at complete (/home/bashby/dev/enigma-bbs/mods/abracadabra.js:126:11)
< at /home/bashby/dev/enigma-bbs/node_modules/async/lib/async.js:721:13
< at _toString (/home/bashby/dev/enigma-bbs/node_modules/async/lib/async.js:52:16)
Just as the user configuration option, the who is online (W) isn't working either.
Files Base
Meta bug for files base/area.
Features
Not limited to:
Database should be optionally encrypted with key information stored in config.hjson
.
Code options
A few things:
from
, to
or subject
(perhaps this last one, subject, might be editable).Need the ability to send feedback to the system operator without being logged in to an existing user account. This can be used for example on a matrix menu.
Email addresses uniqueness must be enforced such that password resets and similar can be utilized in the future.
The view MaskEditTextView
is very clunky. Cursor jumps around, things get out of wack under some scenarios.
Needs a good overhaul.
Message areas currently do not validate the current user's group membership before allowing access.
Note that a full access framework also needs implemented.
Need more documentation, and perhaps one full example of the HJSON file. After running npm install
, and running node main.js
it will not print anything, and I would not know what to do, or where to check a telnet connection, as I could not find the port to connect to.
Anyway, alpha stage, I guess. Work on it! :-)
MultiLineTextEditView
needs preview mode implemented. This should provide the following at a minimum:
bold: bold + colored
italic: /italic/ + colored
link/href: colored
Modile for generating QWK packet for user.
Update requirements for Node.js to v4.2.x or higher. Currently it's at v0.12.2. Using 4.2.x+ will give the ability to use newer ES6 features.
Problem:
The "time on" value under Who's Online always reports "An hour"
Expected:
Something closer to reality
I got it going but had to read through the source a bit to see the folder, just had to create the db folder (also the logs folder) but the db part wasn't super-clear when the error was thrown.
coruscant:enigma-bbs matt$ node main.js
events.js:141
throw er; // Unhandled 'error' event
^
Error: SQLITE_CANTOPEN: unable to open database file
at Error (native)
A generic live (that is, before submit) form validation framework needs designed & implemented. This would allow for example non-empty usernames, subjects, invalid emails, etc. to be checked and rejected.
What can be used to customize the .ANS files? Can they be replaced by simple text files? What is the content in them?
Overtype (aka overwrite) mode in MultiLineEditTextView
is broken and breaks input.
The current ACS system needs documented. Mostly of interest now is in relation to message conferences & areas.
Got it to run, using defaults. Getting this after using "Apply:"
(node) Buffer.get is deprecated. Use array indexes instead.
/Users/David/Desktop/enigma-bbs/mods/apply.js:105
message_area_name : getDefaultMessageArea().name,
^
TypeError: Cannot read property 'name' of undefined
at validationResult (/Users/David/Desktop/enigma-bbs/mods/apply.js:105:48)
at userIdAndName (/Users/David/Desktop/enigma-bbs/mods/apply.js:62:4)
at Statement.onResults (/Users/David/Desktop/enigma-bbs/core/user.js:399:6)
I am testing Enigma under OS X right now.
EditTextView
should allow movement keys (←, →, HOME, END) for cursor placement and editing from cursor placement.
The current MCI implementation breaks when art is used that has a height greater than term height (e.g. > ~24/25 rows). Note that breakage can also occur when the height is truncated due to the SyncTERM status bar.
MCI data retrieval should be asynchronous, e.g. for predefined MCI codes. This is needed to have MCI for things like "posts today" that query the DB on the fly.
Various issues exist on Windows for doors (not limited to):
Possible solution for (2) is to have a temporary server that spawns for communication purposes (e.g. QEMU and DOSBox can likely use this)
Are there plans to localize? I am not interested in any other language pack, but others might. What I am interested in is to change the prompts and other strings to ones that are more appropriate for a professional environment.
Rumor Support
Add support for standard/expected BBS rumors:
A message network framework needs implemented. This will allow for various networks (e.g. FidoNet/FTN, QWK based, etc.) to integrate & import/export with the system. I have a design I'm working on for this. This bug is for tracking / relating existing issues.
Some general notes on what's coming:
area_name
stuff in DB/code is being renamed to area_tag
config.hjson
)Current design for menu.hjson
message areas & conferences is something like such:
conferences: {
agn: {
name: Agoranet
desc: The Official Network of ACiD Productions
// simple ACS for access
acs: THEACSSTRING
areas: {
agn_bbs: {
name: BBS Discussion
desc: General BBS discussion
// ACS for what users can do here
acs: {
read: THEACSSTRING
write: THEACSSTRING
manage: THEACSSTRING
}
default: true
}
}
}
}
Door support is an essential feature... I've looked into it a little bit... My plan was to make a separate door runner server... But worth mentioning dosemu for Linux and dosbox/vdos for elsewhere.
Glad to see you working in this... My efforts aren't as far along at all.
The current Menu fallback mechanism is severely broken. A full menu stack should be used instead. This can be thought about similar to the Android Activity stack
Problem
When configuration files (menu.hjson
, theme.hjson
, ...) are re-cached due to an external modification, changes are not properly reflected back into the "live" view of the data. The system must be restarted for them to apply.
Expected
Changes should update in with a restart
The dependency pty.js
fails to build on Windows due to binding errors. A updated ptyw.js
@ https://github.com/iiegor/ptyw.js may resolve some of these issues with some work.
First pass using Visual Studio 2012 results compilation errors as well.
I know there's still some firming up of the web-ui to go... but some tool suggestions for a web user interface...
I'm happy to help with this, I'm planning on using my week off at the end of the month to work on a BBS ui anyways, and the wiring for services should be generic enough to reuse. I'm planning on tightly coupling the web ui, with a node api service, but that node api service should be able to be replaced with different backends, synchronet, enigma, x84, etc.
Ability to cancel a message without addressing the message, subject, etc.
When discarding messages (new post, reply, ...) an confirmation prompt should be provided, e.g. "Are you sure?" along with a toggle switch.
iconv-lite
's extendNodeEncodings() API is not compatible with Node 4.x. All encoding related calls will need converted to the 4.x compatible direct encode()
and decode()
calls.
See https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility
General Idea
Examples
It would be nice to have a installation script that users -- especially those completely new to Node.js -- can use to quickly get up and running.
Example:
curl -o- https://github.com/NuSkooler/enigma-bbs/misc/install.sh | bash
(Note: Just an example! The above does not currently exist!)
The script should try to work on most popular *nix environments. Windows will require something else...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.