-
Notifications
You must be signed in to change notification settings - Fork 6
Icon Script Language
The old /X4 scripting language has been removed. I was unable to find any examples of the scripting language in actual use. I spent many hours disassembling the ACP code to determine the precise functionality and in the end decide to take a different approach.
The new scripting syntax is based on json notation and provides hierarchical structure that can be used to create all of the folders and icon files needed by /X5 to get you started configuring your bbs.
An example file is included with the /X5 package which should give you enough of an idea of how it works to allow you to edit it and then create your own bbs structure.
Each icon, directory and tooltype has its own entry within the json file and it can be extended to create any additional folders, icons or tooltypes as needed. If you need to create an empty folder then you can include an object with no properties and this will indicate to the tool that it should create a folder.
"Doors": {},
If you wish to create a new icon you should create an entry like this.
"ScreenTypes": {
"TITLE.1": "Amiga Ansi",
"Type.1": "txt.gr"
},
Nesting items within other items will determine where the object is created. Like this example, creates a folder called "Access" and then an icon within it called ACS.1 with the tooltypes as shown:
"Access": {
"ACS.1": [
"ACS.ENTER_MESSAGE",
"ACS.EALL_MESSAGES"
],
This should allow you to create all the necessary files express needs to run a node. As long as you have the directory structure created correctly AmiExpress will create msgbase files and user data files the first time you log on.
A more complete example which will create a 2 node, 4 conference bbs structure follows. This example contains examples of different ways that the setup file can be structured to achieve the results you desire:
{
"acp": {
"BBS_NAME": "Phantasm",
"BBS_STACK": 65535,
"BBS_LOCATION": "BBS:",
"BBS_GEOGRAPHIC": "The UK",
"NODES": 2,
"SYSOP_NAME": "REbEL",
"PRIORITY": 2,
"DONOTWAIT": null,
"ICONIFIED": null,
"ICONIFY.LEFTEDGE": 5,
"ICONIFY.TOPEDGE": 50,
"MULTICOM_PORT": null,
"NEW_ACCOUNTS": "APPEND",
"LANGUAGE_BASE": "bbs:languages",
"BUTTON_NAME.1": "test",
"BUTTON_COMMAND.1": "test2",
"NUTTON_NAME.1": "test2",
"NUTTON_COMMAND.1": "test2"
},
"bbs:computerlist": {
"COMPUTER.NUM": 18,
"COMPUTER.1": "Amiga 1000",
"COMPUTER.2": "Amiga 500",
"COMPUTER.3": "Amiga 500+",
"COMPUTER.4": "Amiga 600",
"COMPUTER.5": "Amiga 1200",
"COMPUTER.6": "Amiga 2000",
"COMPUTER.7": "Amiga 2500",
"COMPUTER.8": "Amiga 3000",
"COMPUTER.9": "Amiga 3000T",
"COMPUTER.10": "Amiga 4000/030",
"COMPUTER.11": "Amiga 4000/040",
"COMPUTER.12": "Amiga 4000/060",
"COMPUTER.13": "Amiga CDTV",
"COMPUTER.14": "Amiga CD32",
"COMPUTER.15": "PC 386 or worse (yuck!)",
"COMPUTER.16": "PC 486",
"COMPUTER.17": "PC Pentium",
"COMPUTER.18": "Other"
},
"bbs:ConfConfig": {
"NCONFS": 4,
"NAME.1": "New Users",
"LOCATION.1": "BBS:CONF01/",
"NAME.2": "Amiga Forever",
"LOCATION.2": "BBS:CONF02/",
"NAME.3": "Console Corner",
"LOCATION.3": "BBS:CONF03/",
"NAME.4": "Ami-Express Doors",
"LOCATION.4": "BBS:CONF04/"
},
"bbs:Conf01": {
"NDIRS": 1,
"ULPATH.1": "BBS:CONF01/UPLOADS/",
"DLPATH.1": "BBS:CONF01/UPLOADS/",
"(FREEDOWNLOADS)": null,
"Hold": {},
"LCFiles": {},
"MsgBase": {},
"Partupload": {},
"Uploads": {},
"Vote": {}
},
"bbs:Conf02": {
"NDIRS": 1,
"ULPATH.1": "BBS:CONF02/UPLOADS/",
"DLPATH.1": "BBS:CONF02/UPLOADS/",
"LOCAL_UPLOAD_PATH": "dh0:",
"(FORCE_NEWSCAN)": null,
"(FREEDOWNLOADS)": null,
"Hold": {},
"LCFiles": {},
"MsgBase": {},
"Partupload": {},
"Uploads": {},
"Vote": {}
},
"bbs:Conf03": {
"NDIRS": 1,
"ULPATH.1": "BBS:CONF03/UPLOADS/",
"DLPATH.1": "BBS:CONF03/UPLOADS/",
"LOCAL_UPLOAD_PATH": "dh0:",
"(FORCE_NEWSCAN)": null,
"(FREEDOWNLOADS)": null,
"Hold": {},
"LCFiles": {},
"MsgBase": {},
"Partupload": {},
"Uploads": {},
"Vote": {}
},
"bbs:Conf04": {
"NDIRS": 1,
"ULPATH.1": "BBS:CONF04/UPLOADS/",
"DLPATH.1": "BBS:CONF04/UPLOADS/",
"LOCAL_UPLOAD_PATH": "dh0:",
"(FORCE_NEWSCAN)": null,
"(FREEDOWNLOADS)": null,
"Hold": {},
"LCFiles": {},
"MsgBase": {},
"Partupload": {},
"Uploads": {},
"Vote": {}
},
"bbs:Drives": {
"DRIVE.1": "BBS:"
},
"bbs:Languages": {
"HOSTLANGUAGE": "English",
"TITLE.1": "English",
"TITLE.2": "French",
"TITLE.3": "German",
"LANGUAGE.1": "English",
"LANGUAGE.2": "French",
"LANGUAGE.3": "German"
},
"bbs:NamesNotAllowed": {
"NAME.1": "SYSOP",
"NAME.2": "EALL"
},
"bbs:Node0": {
"NODESTART": "express",
"PRIORITY": 0,
"CAPITOL_FILES": null,
"SYSOP_CHAT_COLOR": 33,
"USER_CHAT_COLOR": 32,
"KEEP_UPLOAD_CREDIT": 1,
"SCREENS": "BBS:Node0/Screens/",
"FREE_RESUMING": null,
"HDTRANSBUFFER": 1,
"(NO_TIMEOUT)": null,
"UD_LOG": null,
"(NO_WILDCARD_EXPANSION)": null,
"RINGCOUNT": 1,
"(NAME_PROMPT=Login)": null,
"CALLERS_LOG": null,
"VIEW_PASSWORD": null,
"(FILESNOTALLOWED=BBS:FCHECK/DUPE_LIST)": null,
"DEBUG_LOG": null,
"DEF_SCREENS": null,
"EXPFONT": "P0T-NOODLE.FONT",
"IDLENODE": null,
"TELNETD": null,
"CONSOLE_DEBUG": 3,
"NAME_PROMPT": "give us ya name",
"MAILSCAN_PROMPT": "scanning for aliens",
"SHOWPWFAIL": null,
"USERNUMBER_LOGIN": null,
"NO_EMAILS": null,
"OVERRIDE_TIMEOUT": 121,
"NO_MCI_MSG": null,
"BGFILECHECK": null,
"MODEM": {
"USR33600": {
"MODEM.INIT": "ATE0F1Q0V1X1S0=0S2=255S7=40S12=255",
"MODEM.RESET": "ATM1H0",
"MODEM.RING": "RING",
"MODEM.ANSWER": "ATA",
"MODEM.OFFHOOK": "ATH1M0"
}
},
"PLAYPEN": {},
"SERIAL": {
"LOCAL_UNIT": {
"SERIAL.UNIT": 0,
"SERIAL.BAUD": 115200
}
},
"WORK": {},
"TIMES.DEF": {
"START.9600": 0,
"END.9600": 2359,
"START.12000": 0,
"END.12000": 2359,
"START.14400": 0,
"END.14400": 2359,
"START.16800": 0,
"END.16800": 2359,
"START.19200": 0,
"END.19200": 2359,
"START.21600": 0,
"END.21600": 2359,
"START.24000": 0,
"END.24000": 2359,
"START.26400": 0,
"END.26400": 2359,
"START.28800": 0,
"END.28800": 2359,
"START.31200": 0,
"END.31200": 2359,
"START.33600": 0,
"END.33600": 2359,
"START.38400": 0,
"END.38400": 2359,
"START.57600": 0,
"END.57600": 2359,
"START.115200": 0,
"END.115200": 2359
},
"WINDOW.DEF": {
"WINDOW.NUM_COLORS": 8,
"WINDOW.LEFTEDGE": 0,
"WINDOW.TOPEDGE": 0,
"WINDOW.WIDTH": 640,
"WINDOW.HEIGHT": 256,
"WINDOW.ICONIFIED": null,
"WINDOW.INTERLACE)": null
}
},
"bbs:Node1": {
"NODESTART": "express",
"PRIORITY": 1,
"CAPITOL_FILES": null,
"SYSOP_CHAT_COLOR": 33,
"USER_CHAT_COLOR": 32,
"KEEP_UPLOAD_CREDIT": 1,
"SCREENS": "BBS:Node1/Screens/",
"FREE_RESUMING": null,
"HDTRANSBUFFER": 10,
"UD_LOG": null,
"NO_WILDCARD_EXPANSION": null,
"RINGCOUNT": 1,
"(NAME_PROMPT=Login)": null,
"CALLERS_LOG": null,
"VIEW_PASSWORD": null,
"USERNAME": null,
"SHOWPWFAIL": null,
"(FILESNOTALLOWED=BBS:FCHECK/DUPE_LIST)": null,
"DEBUG_LOG": null,
"SCREENPENS": "343364703343",
"CHAT_ON": null,
"DEF_SCREENS": null,
"EXPFONT": "P0T-NOODLE.FONT",
"NEWUSER_PASSWORD": "yoshi",
"IDLENODE": null,
"SCREENTOFRONT": null,
"MODEM": {
"USR33600": {
"MODEM.INIT": "ATE0F1Q0V1X1S0=0S2=255S7=40S12=255",
"MODEM.RESET": "ATM1H0",
"MODEM.RING": "RING",
"MODEM.ANSWER": "ATA",
"MODEM.OFFHOOK": "ATH1M0"
}
},
"PLAYPEN": {},
"SERIAL": {
"LOCAL_UNIT": {
"SERIAL.UNIT": 0,
"SERIAL.BAUD": 115200,
"SERIAL_DEVICE": "serial.device"
}
},
"WORK": {},
"TIMES.DEF": {
"START.9600": 0,
"END.9600": 2359,
"START.12000": 0,
"END.12000": 2359,
"START.14400": 0,
"END.14400": 2359,
"START.16800": 0,
"END.16800": 2359,
"START.19200": 0,
"END.19200": 2359,
"START.21600": 0,
"END.21600": 2359,
"START.24000": 0,
"END.24000": 2359,
"START.26400": 0,
"END.26400": 2359,
"START.28800": 0,
"END.28800": 2359,
"START.31200": 0,
"END.31200": 2359,
"START.33600": 0,
"END.33600": 2359,
"START.38400": 0,
"END.38400": 2359,
"START.57600": 0,
"END.57600": 2359,
"START.115200": 0,
"END.115200": 2359
},
"WINDOW.DEF": {
"WINDOW.NUM_COLORS": 8,
"WINDOW.LEFTEDGE": 0,
"WINDOW.TOPEDGE": 0,
"WINDOW.WIDTH": 640,
"WINDOW.HEIGHT": 256,
"WINDOW.ICONIFIED": null,
"WINDOW.INTERLACE)": null
}
},
"bbs:ScreenTypes": {
"TITLE.1": "Amiga Ansi",
"Type.1": "txt.gr"
},
"bbs:Access": {
"ACS.1": [
"ACS.ENTER_MESSAGE",
"ACS.EALL_MESSAGES"
],
"ACS.10": [
"ACS.COMMENT_TO_SYSOP",
"ACS.UPLOAD",
"ACS.PAGE_SYSOP",
"ACS.DISPLAY_USER_STATS",
"ACS.XPR_RECIEVE",
"ACS.MAX_PAGES=5",
"ACS.DUPE_FILECHECK"
],
"ACS.100": [
"ACS.READ_BULLETINS",
"ACS.DELETE_MESSAGE",
"ACS.WHO_IS_ONLINE",
"ACS.ZOOM_MAIL",
"ACS.COMMENT_TO_SYSOP",
"ACS.DOWNLOAD",
"ACS.UPLOAD",
"ACS.ENTER_MESSAGE",
"ACS.FILE_LISTINGS",
"ACS.JOIN_CONFERENCE",
"ACS.NEW_FILES_SINCE",
"ACS.PAGE_SYSOP",
"ACS.READ_MESSAGE",
"ACS.DISPLAY_USER_STATS",
"ACS.VIEW_A_FILE",
"ACS.EDIT_USER_INFO",
"ACS.EDIT_USER_LOCATION",
"ACS.EDIT_PHONE_NUMBER",
"ACS.EDIT_PASSWORD",
"ACS.ZIPPY_TEXT_SEARCH",
"ACS.FREE_RESUMING",
"ACS.QUIET_NODE",
"ACS.RELOGON",
"ACS.XPR_RECEIVE",
"ACS.XPR_SEND",
"ACS.PUB_MSGFILES",
"ACS.PRI_MSGFILES",
"ACS.MAX_PAGES=5",
"ACS.DUPE_FILECHECK",
"ACS.FULL_EDIT",
"ACS.CONFFLAGS",
"ACS.VOTE",
"ACS.OLM",
"ACS.EALL_MESSAGES",
"ACS.FILE_EXPANSION",
"ACS.SHOW_PAYMENTS"
],
"ACS.200": [
"ACS.READ_BULLETINS",
"ACS.OVERRIDE_TIMES",
"ACS.EALL_MESSAGES",
"ACS.DELETE_MESSAGE",
"ACS.MCI_MESSAGE",
"ACS.WHO_IS_ONLINE",
"ACS.ZOOM_MAIL",
"ACS.COMMENT_TO_SYSOP",
"ACS.DOWNLOAD",
"ACS.UPLOAD",
"ACS.ENTER_MESSAGE",
"ACS.FILE_LISTINGS",
"ACS.JOIN_CONFERENCE",
"ACS.NEW_FILES_SINCE",
"ACS.PAGE_SYSOP",
"ACS.READ_MESSAGE",
"ACS.DISPLAY_USER_STATS",
"ACS.VIEW_A_FILE",
"ACS.EDIT_USER_INFO",
"ACS.EDIT_USER_LOCATION",
"ACS.EDIT_PHONE_NUMBER",
"ACS.EDIT_PASSWORD",
"ACS.ZIPPY_TEXT_SEARCH",
"ACS.FREE_RESUMING",
"ACS.QUIET_NODE",
"ACS.RELOGON",
"ACS.XPR_RECEIVE",
"ACS.XPR_SEND",
"ACS.PUB_MSGFILES",
"ACS.PRI_MSGFILES",
"ACS.MAX_PAGES=10",
"ACS.DUPE_FILECHECK",
"ACS.FULL_EDIT",
"ACS.CONFFLAGS",
"ACS.VOTE",
"ACS.OLM",
"ACS.CREDIT_ACCESS",
"ACS.FILE_EXPANSION",
"ACS.BREAK_CHAT",
"ACS.OVERRIDE_CHAT",
"ACS.SHOW_PAYMENTS"
],
"ACS.250": [
"ACS.OVERRIDE_DEFAULTS",
"ACS.ACCOUNT_EDITING",
"ACS.READ_BULLETINS",
"ACS.REMOTE_SHELL",
"ACS.OVERRIDE_CHAT",
"ACS.OVERRIDE_TIMES",
"ACS.SYSOP_READ",
"ACS.SYSOP_VIEW",
"ACS.SYSOP_DOWNLOAD",
"ACS.EALL_MESSAGES",
"ACS.LIST_NODES",
"ACS.DELETE_MESSAGE",
"ACS.ATTACH_FILES",
"ACS.MCI_MESSAGE",
"ACS.EDIT_DIRS",
"ACS.EDIT_FILES",
"ACS.SYSOP_COMMANDS",
"ACS.WHO_IS_ONLINE",
"ACS.ZOOM_MAIL",
"ACS.COMMENT_TO_SYSOP",
"ACS.DOWNLOAD",
"ACS.UPLOAD",
"ACS.ENTER_MESSAGE",
"ACS.FILE_LISTINGS",
"ACS.JOIN_CONFERENCE",
"ACS.NEW_FILES_SINCE",
"ACS.PAGE_SYSOP",
"ACS.READ_MESSAGE",
"ACS.DISPLAY_USER_STATS",
"ACS.VIEW_A_FILE",
"ACS.EDIT_USER_INFO",
"ACS.EDIT_USER_NAME",
"ACS.EDIT_USER_LOCATION",
"ACS.EDIT_PHONE_NUMBER",
"ACS.EDIT_PASSWORD",
"ACS.ZIPPY_TEXT_SEARCH",
"ACS.BREAK_CHAT",
"ACS.FREE_RESUMING",
"ACS.QUIET_NODE",
"ACS.RELOGON",
"ACS.XPR_RECEIVE",
"ACS.XPR_SEND",
"ACS.ULSTATS",
"ACS.PUB_MSGFILES",
"ACS.PRI_MSGFILES",
"ACS.DUPE_FILECHECK",
"ACS.FULL_EDIT",
"ACS.CONFFLAGS",
"ACS.MODIFY_VOTE",
"ACS.VOTE",
"ACS.HIDE_FILES",
"ACS.OLM",
"ACS.CREDIT_ACCESS",
"ACS.FILE_EXPANSION",
"ACS.MCI_MESSAGE",
"ACS.MESSAGE_EDIT"
],
"ACS.255": [
"ACS.OVERRIDE_DEFAULTS",
"ACS.ACCOUNT_EDITING",
"ACS.READ_BULLETINS",
"ACS.REMOTE_SHELL",
"ACS.OVERRIDE_CHAT",
"ACS.OVERRIDE_TIMES",
"ACS.SYSOP_READ",
"ACS.SYSOP_VIEW",
"ACS.SYSOP_DOWNLOAD",
"ACS.EALL_MESSAGES",
"ACS.LIST_NODES",
"ACS.DELETE_MESSAGE",
"ACS.ATTACH_FILES",
"ACS.MCI_MESSAGE",
"ACS.EDIT_DIRS",
"ACS.EDIT_FILES",
"ACS.SYSOP_COMMANDS",
"ACS.WHO_IS_ONLINE",
"ACS.ZOOM_MAIL",
"ACS.COMMENT_TO_SYSOP",
"ACS.DOWNLOAD",
"ACS.UPLOAD",
"ACS.ENTER_MESSAGE",
"ACS.FILE_LISTINGS",
"ACS.JOIN_CONFERENCE",
"ACS.NEW_FILES_SINCE",
"ACS.PAGE_SYSOP",
"ACS.READ_MESSAGE",
"ACS.DISPLAY_USER_STATS",
"ACS.VIEW_A_FILE",
"ACS.EDIT_USER_INFO",
"ACS.EDIT_USER_NAME",
"ACS.EDIT_USER_LOCATION",
"ACS.EDIT_PHONE_NUMBER",
"ACS.EDIT_PASSWORD",
"ACS.ZIPPY_TEXT_SEARCH",
"ACS.BREAK_CHAT",
"ACS.FREE_RESUMING",
"ACS.QUIET_NODE",
"ACS.RELOGON",
"ACS.XPR_RECEIVE",
"ACS.XPR_SEND",
"ACS.ULSTATS",
"ACS.PUB_MSGFILES",
"ACS.PRI_MSGFILES",
"ACS.DUPE_FILECHECK",
"ACS.FULL_EDIT",
"ACS.CONFFLAGS",
"ACS.MODIFY_VOTE",
"ACS.VOTE",
"ACS.HIDE_FILES",
"ACS.OLM",
"ACS.CREDIT_ACCESS",
"ACS.FILE_EXPANSION",
"ACS.MCI_MESSAGE",
"ACS.MESSAGE_EDIT",
"ACS.EDIT_INTERNET_NAME",
"ACS.EDIT_REAL_NAME",
"ACS.TRANSLATION"
],
"Area.NewUser": [
"CONF1"
],
"Area.Normal": [
"CONF2",
"CONF3",
"CONF4"
],
"Area.Elite": [
"CONF2",
"CONF3",
"CONF4"
],
"Area.Sysop": [
"CONF1",
"CONF2",
"CONF3",
"CONF4"
],
"Preset.1": {
"PRESET.AREA": "NewUser",
"PRESET.ACCESS": 10,
"PRESET.RATIO_TYPE": 0,
"PRESET.RATIO": 3,
"PRESET.DAILY_BYTE_LIMIT": 0,
"PRESET.TIME_LIMIT": 3600,
"PRESET.CONFRJOIN": 1
},
"Preset.2": {
"PRESET.AREA": "Normal",
"PRESET.ACCESS": 100,
"PRESET.RATIO_TYPE": 0,
"PRESET.RATIO": 3,
"PRESET.DAILY_BYTE_LIMIT": 5000000,
"PRESET.TIME_LIMIT": 3600,
"PRESET.CONFRJOIN": 2
},
"Preset.3": {
"PRESET.AREA": "Elite",
"PRESET.ACCESS": 200,
"PRESET.RATIO_TYPE": 0,
"PRESET.RATIO": 0,
"PRESET.DAILY_BYTE_LIMIT": 10000000,
"PRESET.TIME_LIMIT": 7200,
"PRESET.CONFRJOIN": 2
},
"Preset.4": {
"PRESET.AREA": "Sysop",
"PRESET.ACCESS": 255,
"PRESET.RATIO_TYPE": 0,
"PRESET.RATIO": 0,
"PRESET.DAILY_BYTE_LIMIT": 50000000,
"PRESET.TIME_LIMIT": 60000,
"PRESET.CONFRJOIN": 2
}
},
"bbs:Commands": {
"BBSCmd": {},
"SysCmd": {}
},
"bbs:Doors": {},
"bbs:FCheck": {
"LHA": {
"CHECKER": "DOORS:LHAStripper/LhaStripper",
"ERROR.1": "Aborting",
"PRIORITY": 1,
"STACK": 65536
},
"LZX": {
"CHECKER": "Doors:DLT_FileCheck/FileCheck",
"PRIORITY": "SAME",
"STACK": 65536,
"ERROR.1": "Archive corrupted --aborting",
"ERROR.2": "Operation not entirely successful",
"ERROR.3": "failed",
"ERROR.4": " WARNING: Skipping corrupt/extraneous data."
},
"DMS": {
"CHECKER": "c:mapus",
"STACK": 65536,
"PRIORITY": 1,
"ERROR.1": "Error",
"ERROR.2": "Error:"
},
"TXT": {
"CHECKER": "DOORS:TXTStyler/TXTStyler_020",
"PRIORITY": 1,
"STACK": 65536
},
"ZIP": {
"CHECKER": "Doors:Zipcheck/Zipcheck",
"ERROR.1": "ZIP file error detected",
"STACK": 65536,
"PRIORITY": 1
}
},
"bbs:Protocols": {
"XprTypes": {
"LIBRARY.1": "INTERNAL",
"LIBRARY.2": "HYDRA",
"LIBRARY.3": "xprzmodem",
"TITLE.1": "/X ZMODEM",
"TITLE.2": "/X HYDRA (BI-DIRECTIONAL)",
"TITLE.3": "xpr zmodem"
},
"Hydra": {
"OPTIONS": "AEHYDRA",
"TXWINDOW": 16384,
"RXWINDOW": 16384,
"STACK": 16384
},
"XprZmodem": {
"OPTIONS": "TN,AY,OR,KY,SN,RN,DN,F0,B64,M16384",
"AE_BATCH": null
}
},
"bbs:SysopStats": {}
}
Original 3.36 Documentation written by Jens Langner (/X DocWriter). Original 4.0 Documentation written by The Outlaw (Andy). Updated in 2018 to include many previously undocumented v4.0 features and also to include the new v5.x configuration options by Darren Coles
-
Ami-Express-BBS-Software
- Introduction
- Copyright Information
- Requirements
- Ami-Express Version 5
- Installation of AmiExpress
- How to install Configs
- How to configurate Startup
- Setting up the /X FTP Server
- All ToolTypes Information
- The Standard Documentation
- Programlogic of AmiExpress
- Main Menu Commands
- SysCmd Documentation
- AmiExpress HOST Addresses
- MCI imbedded Control Sequence
- Connecting to QWK and FTN message networks
- Notable Features
- Note worthy of Mention
- Offline Mail Support
- Icon Script Language Support
- Trouble Shooting
- Future planned Enhancements