Security System

Something I postponed a bit in the development cycle is the security system. The original PCBoard system mostly used the security level to check if something is allowed or not. For some commands let's say the page sysop 'o' there were special flags like start/stop times.

This is very easy to set up but has limits. For example it's not possbile that I want to be paged from 09:00-17:00 but only weekdays or let's say Wednesday only to 12:00.

Remote access solved that with adding DOW page start/stop times:

Remote Access Page Sysop hours

 And RA had something like user flags, minimum age options:

Remote Access Message Area Flags

The flags system gives the opportunity to give access with another system than the security level. This is useful for let's say to give access to a hidden file area. Let's say "source codes" and use the security level for access to certain commands for the BBS. This gives more flexibility than modelling the access just with the security level. 

The question is what should be done in icy board in this area?  There is a trade-off between easyness to set up and the flexibility the system offers. I did choose the more flexible system because I think this is more in the spirit of PCBoard. 

And the most flexible system are expressions. I made an expression subsystem that's close to PPL for checking the security.

Let's say I want to check for minimum security of 50 the expression would be:

U_SEC() >= 50

Or the Page Sysop Times from above would be:

 00:00 <= TIME() && TIME() <= 23:59

 The downside is that the expression string can become quite large, for example to page only weekdays the DOW needs to be checked: 

 (00:00 <= TIME() && TIME() <= 23:59) && DOW() > 1

 The DOW() and here the issues begin - you need to know how the DOW function works. It starts from Sunday == 0 - which is how the PPL DOW function works. But icy_board needs to have an expression editor for its config tool at some point to make it easier to discover & describe functions.

Working with Access is surely one of the higher level features of a BBS system and the approach I chose is something for software developers, but as said I value flexibility over easiness. Any thoughts?

Flags

I wanted something like the flag system back when I switched from RA to PCboard. My understanding of security level was to use that for setting up/dl limits, time limits etc. and using flags for access.

IcyBoard wont have flags because there is something better: Groups. UNIX is using groups for solving exactly this problem. The icy board groups file therefore looks like the UNIX groups file:
 
sysop:System Operators: SYSOP
users:Common Users: Mega Uploader, Leecher, Cool Guy, Hackbert
hidden_area:: SYSOP, Mega Uploader

Each group just has a name, description and comma separated list of the user name of the members. Nothing else.

If you want to give access to let's say only sysops the expression would just be:

 GROUP("SYSOP")

I think this is more handable than the flags system which Remote Access used.

Open question is if the Groups file should contain the list of users like Unix does or if the Users should have a list in which groups they are member of. Doesn't matter that much but in the latter case it's easier to delete a user. But in the group file it's easier give an overview of the members of the groups - however the list can become quite large.

Any input on that? For the config tools it doesn't matter much - it's just when using an text editor for altering the config files where it really matters.

Comments

Popular posts from this blog

Icy Board Menu System

Configuration tools

File Processing