First commit
This commit is contained in:
parent
338362b2ed
commit
af6b70cb3a
57
README.md
57
README.md
@ -1,2 +1,57 @@
|
|||||||
# mL-nodeapp
|
# mL-nodeapp
|
||||||
My own version of the node application door for Mystic.
|
My own version of the node application door for Mystic, inspired by Carlos Roldan aka Necromaster's original version.
|
||||||
|
|
||||||
|
## Installation:
|
||||||
|
To install this door, you will need to;
|
||||||
|
- Copy `scripts/mL-nodeapp.mpy` into your Mystic scripts directory for the theme you are using
|
||||||
|
- Copy `text/mL-nodeapp` directory and all subdirs/files into your Mystic text directory for the theme you are using
|
||||||
|
|
||||||
|
## Mystic menu item;
|
||||||
|
Create a menu item like this;
|
||||||
|
|
||||||
|
```
|
||||||
|
║ Display Text │ ]n[ tqwnEt aPPLy ]n[ ║
|
||||||
|
║ LightBar OFF │ ║
|
||||||
|
║ LightBar ON │ ║
|
||||||
|
║ LightBar X Y │ 0 0 ║
|
||||||
|
║ Hot Key │ N ┌ GRID MENU JUMPS ─────── ║
|
||||||
|
║ Access String │ s20 │ Up 00 Escape 00 ║
|
||||||
|
║ Display When │ User has access │ Down 00 Tab 00 ║
|
||||||
|
║ Redraw After │ Yes │ Left 00 PageUp 00 ║
|
||||||
|
║ Execute Timer │ 0 │ Right 00 PageDn 00 ║
|
||||||
|
║ Timer Type │ Every <timer> interval │ Home 00 End 00 ║
|
||||||
|
║ ║
|
||||||
|
║ Action List ────────────── Access ───── Data ───────────────────────────── ║
|
||||||
|
║ (GY) Execute Python 2 Scri mL-nodeapp netname █
|
||||||
|
```
|
||||||
|
|
||||||
|
There is one argument being passed, and that is the network name you wish to get node applications for. You can have multiple networks, you can just add a menu entry for each network and configure each network like this;
|
||||||
|
|
||||||
|
## Network configuration file
|
||||||
|
In your theme's text directory, where you copied the `mL-nodeapp` directory into, you will see some example configs;
|
||||||
|
|
||||||
|
mL-nodeapp
|
||||||
|
└── nets
|
||||||
|
├── retronet
|
||||||
|
│ ├── header.ans
|
||||||
|
│ └── net.ini
|
||||||
|
└── tqwnet
|
||||||
|
├── header.ans
|
||||||
|
└── net.ini
|
||||||
|
|
||||||
|
You will see there is a config file called `net.ini`, in here are various options for things like colour schemes and infopack location etc. Here's the tqwnet net.ini config;
|
||||||
|
|
||||||
|
[network]
|
||||||
|
netName = tqwnet
|
||||||
|
netSysop = MeaTLoTioN
|
||||||
|
netAddress = 1337:1/101
|
||||||
|
header = header.ans
|
||||||
|
infoPack = /mystic/files/tqw/tqw_info/tqwinfo.zip
|
||||||
|
brightColour = 11
|
||||||
|
normColour = 03
|
||||||
|
fieldBG = 17
|
||||||
|
fieldFG = 15
|
||||||
|
normBG = 16
|
||||||
|
menuOption = 14
|
||||||
|
|
||||||
|
|
||||||
|
351
scripts/mL-nodeapp.mpy
Normal file
351
scripts/mL-nodeapp.mpy
Normal file
@ -0,0 +1,351 @@
|
|||||||
|
# :: Filename: mL-nodeapp.mpy
|
||||||
|
# :: Author: MeaTLoTioN
|
||||||
|
# :: Date: 2022-03-20
|
||||||
|
|
||||||
|
# imports
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
import ConfigParser
|
||||||
|
import pickle
|
||||||
|
from mystic_bbs import *
|
||||||
|
|
||||||
|
# global args
|
||||||
|
ARG=str(param_str(1))
|
||||||
|
CFG=getcfg()
|
||||||
|
TEXTPATH = CFG["text"]
|
||||||
|
NETSPATH = TEXTPATH+"mL-nodeapp/nets"
|
||||||
|
NETSD = {}
|
||||||
|
thisuser = getuser(0)
|
||||||
|
handle = thisuser['handle']
|
||||||
|
handleSL = int(mci2str('SL'))
|
||||||
|
global application
|
||||||
|
application = {}
|
||||||
|
application[handle] = {}
|
||||||
|
SYSOP = 'MeaTLoTioN'
|
||||||
|
|
||||||
|
# functions
|
||||||
|
def getNets() :
|
||||||
|
for root, dirs, files in os.walk(NETSPATH) :
|
||||||
|
TMP = str(os.path.basename(root))
|
||||||
|
if TMP != '' :
|
||||||
|
NETSD[TMP] = root
|
||||||
|
|
||||||
|
def checkNets(X) :
|
||||||
|
for NET in NETSD :
|
||||||
|
if X in NET :
|
||||||
|
#writeln("Found something. You said "+X+" and we have "+NET)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def getNetCfg(NET) :
|
||||||
|
global netName,netSysop,netAddress,headerFile,introFile,infoPack
|
||||||
|
global brightColour,normColour,menuOption,fieldBG,fieldFG,normBG
|
||||||
|
config = ConfigParser.ConfigParser()
|
||||||
|
config.read(NETINI)
|
||||||
|
for section in config.sections() :
|
||||||
|
if section == 'network' :
|
||||||
|
netName = config.get('network','netName')
|
||||||
|
netSysop = config.get('network','netSysop')
|
||||||
|
netAddress = config.get('network','netAddress')
|
||||||
|
headerFile = NETSPATH+"/"+ARG+"/"+config.get('network','header')
|
||||||
|
introFile = NETSPATH+"/"+ARG+"/"+config.get('network','intro')
|
||||||
|
infoPack = config.get('network','infoPack')
|
||||||
|
brightColour = config.get('network','brightColour')
|
||||||
|
normColour = config.get('network','normColour')
|
||||||
|
fieldBG = config.get('network','fieldBG')
|
||||||
|
fieldFG = config.get('network','fieldFG')
|
||||||
|
normBG = config.get('network','normBG')
|
||||||
|
menuOption = config.get('network','menuOption')
|
||||||
|
|
||||||
|
# strip mci codes
|
||||||
|
def stripmci(str) :
|
||||||
|
pos = str.find("|")
|
||||||
|
while pos != -1 :
|
||||||
|
str = str[:pos] + str[pos+3:]
|
||||||
|
pos = str.find("|")
|
||||||
|
return str
|
||||||
|
|
||||||
|
# get length of a string with mci codes
|
||||||
|
def mcilen(str) :
|
||||||
|
return len(stripmci(str))
|
||||||
|
|
||||||
|
# main
|
||||||
|
getNets()
|
||||||
|
if checkNets(ARG) :
|
||||||
|
NETINI = NETSPATH+"/"+ARG+"/net.ini"
|
||||||
|
#writeln(NETINI)
|
||||||
|
|
||||||
|
# define header
|
||||||
|
def headerScreen() :
|
||||||
|
showfile(headerFile,0,False,False,False)
|
||||||
|
title = "|16|11N|03ode |11R|03equest |11A|03pplication|05, |11b|03y |14M|15e|07aTLoTioN |05v|130|05.|131|05a"
|
||||||
|
titleLen = len(stripmci(title))
|
||||||
|
gotoxy((80-titleLen)/2,10); writeln(title)
|
||||||
|
|
||||||
|
# init main screen
|
||||||
|
def initMainScreen() :
|
||||||
|
write("|CL")
|
||||||
|
headerScreen()
|
||||||
|
|
||||||
|
# main menu
|
||||||
|
def mainMenu() :
|
||||||
|
gotoxy(20,12); writeln("|08[|"+menuOption+"A|08]|"+normColour+"dd or edit an application")
|
||||||
|
gotoxy(20,13); writeln("|08[|"+menuOption+"V|08]|"+normColour+"iew an existing application")
|
||||||
|
gotoxy(20,14); writeln("|08[|"+menuOption+"D|08]|"+normColour+"ownload the infopack")
|
||||||
|
if handleSL == 255 :
|
||||||
|
gotoxy(20,15); writeln("|08[|"+menuOption+"P|08]|"+normColour+"rocess existing application (sysop only)")
|
||||||
|
gotoxy(20,16); writeln("|08[|"+menuOption+"Q|08]|"+normColour+"uit the application")
|
||||||
|
gotoxy(20,18); write("|"+brightColour+"C|"+normColour+"hoose: ")
|
||||||
|
else :
|
||||||
|
gotoxy(20,15); writeln("|08[|"+menuOption+"Q|08]|"+normColour+"uit the application")
|
||||||
|
gotoxy(20,17); write("|"+brightColour+"C|"+normColour+"hoose: ")
|
||||||
|
|
||||||
|
def saveFile() :
|
||||||
|
applicationDir = NETSPATH+"/"+ARG+"/applications"
|
||||||
|
applicationFile = applicationDir+"/"+handle+".dat"
|
||||||
|
if not os.path.exists(applicationDir) :
|
||||||
|
os.makedirs(applicationDir)
|
||||||
|
file = open(applicationFile, 'wb')
|
||||||
|
pickle.dump(application, file)
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
def loadFile() :
|
||||||
|
global application
|
||||||
|
applicationDir = NETSPATH+"/"+ARG+"/applications"
|
||||||
|
applicationFile = applicationDir+"/"+handle+".dat"
|
||||||
|
file = open(applicationFile, 'rb')
|
||||||
|
application = pickle.load(file)
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
def sendEmail() :
|
||||||
|
applicationDir = NETSPATH+"/"+ARG+"/applications"
|
||||||
|
applicationFile = applicationDir+"/"+handle+".dat"
|
||||||
|
|
||||||
|
apDict = application[handle]
|
||||||
|
realName = apDict["realName"]
|
||||||
|
bbsName = apDict["bbsName"]
|
||||||
|
telnetAddress = apDict["telnetAddress"]
|
||||||
|
cityState = apDict["cityState"]
|
||||||
|
sysopName = apDict["sysopName"]
|
||||||
|
emailAddress = apDict["emailAddress"]
|
||||||
|
binkpAddress = apDict["binkpAddress"]
|
||||||
|
binkpPort = apDict["binkpPort"]
|
||||||
|
sessionPassword = apDict["sessionPassword"]
|
||||||
|
allfixPassword = apDict["allfixPassword"]
|
||||||
|
pktPassword = apDict["pktPassword"]
|
||||||
|
ticPassword = apDict["ticPassword"]
|
||||||
|
numNodes = apDict["numNodes"]
|
||||||
|
if apDict["cramMD5"] :
|
||||||
|
cramMD5 = "Yes"
|
||||||
|
else :
|
||||||
|
cramMD5 = "No"
|
||||||
|
bbsSoftware = apDict["bbsSoftware"]
|
||||||
|
|
||||||
|
tmpFile = "/tmp/"+handle+".tmp"
|
||||||
|
with open(tmpFile, 'w') as f :
|
||||||
|
f.writelines("You have a new node application waiting for approval!\n")
|
||||||
|
f.writelines("Here are the details;\n")
|
||||||
|
f.writelines("\n")
|
||||||
|
f.writelines(" Real Name: "+realName+"\n")
|
||||||
|
f.writelines(" BBS Name: "+bbsName+"\n")
|
||||||
|
f.writelines(" Telnet Address: "+telnetAddress+"\n")
|
||||||
|
f.writelines(" City/State: "+cityState+"\n")
|
||||||
|
f.writelines(" Sysop Name: "+sysopName+"\n")
|
||||||
|
f.writelines(" Email Address: "+emailAddress+"\n")
|
||||||
|
f.writelines(" BinkP Address: "+binkpAddress+"\n")
|
||||||
|
f.writelines(" BinkP Port: "+str(binkpPort)+"\n")
|
||||||
|
f.writelines("Session Password: "+sessionPassword+"\n")
|
||||||
|
f.writelines(" Allfix Password: "+allfixPassword+"\n")
|
||||||
|
f.writelines(" PKT Password: "+pktPassword+"\n")
|
||||||
|
f.writelines(" TIC Password: "+ticPassword+"\n")
|
||||||
|
f.writelines(" Number of nodes: "+str(numNodes)+"\n")
|
||||||
|
f.writelines(" Cram-MD5: "+cramMD5+"\n")
|
||||||
|
f.writelines(" BBS Software: "+bbsSoftware+"\n")
|
||||||
|
f.writelines("\n")
|
||||||
|
f.writelines("Please assign a node as soon as possible and let the user know when completed.\n")
|
||||||
|
f.writelines("\n")
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
subject = "New Node Application"
|
||||||
|
baseID = 1
|
||||||
|
|
||||||
|
menucmd('MX', tmpFile+';'+str(baseID)+';'+handle+';'+SYSOP+';'+subject)
|
||||||
|
os.remove(tmpFile)
|
||||||
|
|
||||||
|
# add/edit application
|
||||||
|
def addEditApplication() :
|
||||||
|
initMainScreen()
|
||||||
|
applicationDir = NETSPATH+"/"+ARG+"/applications"
|
||||||
|
applicationFile = applicationDir+"/"+handle+".dat"
|
||||||
|
|
||||||
|
if os.path.exists(applicationFile) :
|
||||||
|
loadFile()
|
||||||
|
apDict = application[handle]
|
||||||
|
realName = apDict["realName"]
|
||||||
|
bbsName = apDict["bbsName"]
|
||||||
|
telnetAddress = apDict["telnetAddress"]
|
||||||
|
cityState = apDict["cityState"]
|
||||||
|
sysopName = apDict["sysopName"]
|
||||||
|
emailAddress = apDict["emailAddress"]
|
||||||
|
binkpAddress = apDict["binkpAddress"]
|
||||||
|
binkpPort = apDict["binkpPort"]
|
||||||
|
sessionPassword = apDict["sessionPassword"]
|
||||||
|
allfixPassword = apDict["allfixPassword"]
|
||||||
|
pktPassword = apDict["pktPassword"]
|
||||||
|
ticPassword = apDict["ticPassword"]
|
||||||
|
numNodes = apDict["numNodes"]
|
||||||
|
if apDict["cramMD5"] :
|
||||||
|
cramMD5 = "Yes"
|
||||||
|
else :
|
||||||
|
cramMD5 = "No"
|
||||||
|
bbsSoftware = apDict["bbsSoftware"]
|
||||||
|
else :
|
||||||
|
realName = ""
|
||||||
|
bbsName = ""
|
||||||
|
telnetAddress = ""
|
||||||
|
cityState = ""
|
||||||
|
sysopName = handle
|
||||||
|
emailAddress = ""
|
||||||
|
binkpAddress = ""
|
||||||
|
binkpPort = "24554"
|
||||||
|
sessionPassword = ""
|
||||||
|
allfixPassword = ""
|
||||||
|
pktPassword = ""
|
||||||
|
ticPassword = ""
|
||||||
|
numNodes = ""
|
||||||
|
bbsSoftware = ""
|
||||||
|
|
||||||
|
# left side
|
||||||
|
gotoxy(18,12); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(7,12); write("|"+normBG+"|"+normColour+"Real Name: "+"|"+fieldBG+realName+"|"+normBG)
|
||||||
|
gotoxy(18,13); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(8,13); write("|"+normBG+"|"+normColour+"BBS Name: "+"|"+fieldBG+bbsName+"|"+normBG)
|
||||||
|
gotoxy(18,14); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(2,14); write("|"+normBG+"|"+normColour+"Telnet Address: "+"|"+fieldBG+telnetAddress+"|"+normBG)
|
||||||
|
gotoxy(18,15); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(6,15); write("|"+normBG+"|"+normColour+"City/State: "+"|"+fieldBG+cityState+"|"+normBG)
|
||||||
|
gotoxy(18,16); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(6,16); write("|"+normBG+"|"+normColour+"Sysop Name: "+"|"+fieldBG+sysopName+"|"+normBG)
|
||||||
|
gotoxy(18,17); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(3,17); write("|"+normBG+"|"+normColour+"Email Address: "+"|"+fieldBG+emailAddress+"|"+normBG)
|
||||||
|
gotoxy(18,18); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(3,18); write("|"+normBG+"|"+normColour+"BinkP Address: "+"|"+fieldBG+binkpAddress+"|"+normBG)
|
||||||
|
gotoxy(18,19); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(4,19); write("|"+normBG+"|"+normColour+"BinkP Port #: "+"|"+fieldBG+binkpPort+"|"+normBG)
|
||||||
|
|
||||||
|
# right side
|
||||||
|
gotoxy(59,12); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(41,12); write("|"+normBG+"|"+normColour+"Session Password: "+"|"+fieldBG+sessionPassword+"|"+normBG)
|
||||||
|
gotoxy(59,13); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(42,13); write("|"+normBG+"|"+normColour+"Allfix Password: "+"|"+fieldBG+allfixPassword+"|"+normBG)
|
||||||
|
gotoxy(59,14); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(45,14); write("|"+normBG+"|"+normColour+"PKT Password: "+"|"+fieldBG+pktPassword+"|"+normBG)
|
||||||
|
gotoxy(59,15); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(45,15); write("|"+normBG+"|"+normColour+"TIC Password: "+"|"+fieldBG+ticPassword+"|"+normBG)
|
||||||
|
gotoxy(59,16); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(47,16); write("|"+normBG+"|"+normColour+"# of Nodes: "+"|"+fieldBG+numNodes+"|"+normBG)
|
||||||
|
gotoxy(59,17); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(49,17); write("|"+normBG+"|"+normColour+"Cram-MD5: "+"|"+fieldBG+cramMD5+"|"+normBG)
|
||||||
|
gotoxy(59,18); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(45,18); write("|"+normBG+"|"+normColour+"BBS Software: "+"|"+fieldBG+bbsSoftware+"|"+normBG)
|
||||||
|
|
||||||
|
# first arg = style; 0=n/a / 1=norm / 2=CAPS / 3=Capitalised / 4=US Phone / 5=Date MM/DD/YYYY / 6=password hidden / 7=lowercase
|
||||||
|
|
||||||
|
# left side
|
||||||
|
gotoxy(17,12); write("|14>"); gotoxy(18,12); write("|"+fieldBG+"|"+fieldFG); realName = getstr(1, 20, 50, realName); gotoxy(17,12); write(" ");
|
||||||
|
gotoxy(17,13); write("|14>"); gotoxy(18,13); write("|"+fieldBG+"|"+fieldFG); bbsName = getstr(1, 20, 50, bbsName); gotoxy(17,13); write(" ");
|
||||||
|
gotoxy(17,14); write("|14>"); gotoxy(18,14); write("|"+fieldBG+"|"+fieldFG); telnetAddress = getstr(1, 20, 50, telnetAddress); gotoxy(17,14); write(" ");
|
||||||
|
gotoxy(17,15); write("|14>"); gotoxy(18,15); write("|"+fieldBG+"|"+fieldFG); cityState = getstr(1, 20, 50, cityState); gotoxy(17,15); write(" ");
|
||||||
|
gotoxy(17,16); write("|14>"); gotoxy(18,16); write("|"+fieldBG+"|"+fieldFG); sysopName = getstr(1, 20, 50, sysopName); gotoxy(17,16); write(" ");
|
||||||
|
gotoxy(17,17); write("|14>"); gotoxy(18,17); write("|"+fieldBG+"|"+fieldFG); emailAddress = getstr(1, 20, 50, emailAddress); gotoxy(17,17); write(" ");
|
||||||
|
gotoxy(17,18); write("|14>"); gotoxy(18,18); write("|"+fieldBG+"|"+fieldFG); binkpAddress = getstr(1, 20, 50, binkpAddress); gotoxy(17,18); write(" ");
|
||||||
|
gotoxy(17,19); write("|14>"); gotoxy(18,19); write("|"+fieldBG+"|"+fieldFG); binkpPort = getstr(1, 20, 50, binkpPort); gotoxy(17,19); write(" ");
|
||||||
|
|
||||||
|
# right side
|
||||||
|
gotoxy(58,12); write("|14>"); gotoxy(59,12); write("|"+fieldBG+"|"+fieldFG); sessionPassword = getstr(1, 20, 50, sessionPassword); gotoxy(58,12); write(" ");
|
||||||
|
gotoxy(58,13); write("|14>"); gotoxy(59,13); write("|"+fieldBG+"|"+fieldFG); allfixPassword = getstr(1, 8, 8, allfixPassword); gotoxy(58,13); write(" ");
|
||||||
|
gotoxy(58,14); write("|14>"); gotoxy(59,14); write("|"+fieldBG+"|"+fieldFG); pktPassword = getstr(1, 8, 8, pktPassword); gotoxy(58,14); write(" ");
|
||||||
|
gotoxy(58,15); write("|14>"); gotoxy(59,15); write("|"+fieldBG+"|"+fieldFG); ticPassword = getstr(1, 8, 8, ticPassword); gotoxy(58,15); write(" ");
|
||||||
|
gotoxy(58,16); write("|14>"); gotoxy(59,16); write("|"+fieldBG+"|"+fieldFG); numNodes = getstr(1, 20, 50, numNodes); gotoxy(58,16); write(" ");
|
||||||
|
gotoxy(58,17); write("|14>"); gotoxy(59,17); write("|"+fieldBG+"|"+fieldFG); cramMD5 = getyn("", True); gotoxy(58,17); write(" ");
|
||||||
|
gotoxy(58,18); write("|14>"); gotoxy(59,18); write("|"+fieldBG+"|"+fieldFG); bbsSoftware = getstr(1, 20, 50, bbsSoftware); gotoxy(58,18); write(" ");
|
||||||
|
|
||||||
|
apDict = application[handle]
|
||||||
|
apDict["realName"] = realName
|
||||||
|
apDict["bbsName"] = bbsName
|
||||||
|
apDict["telnetAddress"] = telnetAddress
|
||||||
|
apDict["cityState"] = cityState
|
||||||
|
apDict["sysopName"] = sysopName
|
||||||
|
apDict["emailAddress"] = emailAddress
|
||||||
|
apDict["binkpAddress"] = binkpAddress
|
||||||
|
apDict["binkpPort"] = binkpPort
|
||||||
|
apDict["sessionPassword"] = sessionPassword
|
||||||
|
apDict["allfixPassword"] = allfixPassword
|
||||||
|
apDict["pktPassword"] = pktPassword
|
||||||
|
apDict["ticPassword"] = ticPassword
|
||||||
|
apDict["numNodes"] = numNodes
|
||||||
|
apDict["cramMD5"] = cramMD5
|
||||||
|
apDict["bbsSoftware"] = bbsSoftware
|
||||||
|
|
||||||
|
gotoxy(12,23); saveApplication = getyn("Save this application? ", True)
|
||||||
|
if saveApplication :
|
||||||
|
saveFile()
|
||||||
|
sendEmail()
|
||||||
|
else :
|
||||||
|
pass
|
||||||
|
|
||||||
|
# view existing application
|
||||||
|
def viewApplication() :
|
||||||
|
initMainScreen()
|
||||||
|
loadFile()
|
||||||
|
apDict = application[handle]
|
||||||
|
realName = apDict["realName"]
|
||||||
|
bbsName = apDict["bbsName"]
|
||||||
|
telnetAddress = apDict["telnetAddress"]
|
||||||
|
cityState = apDict["cityState"]
|
||||||
|
sysopName = apDict["sysopName"]
|
||||||
|
emailAddress = apDict["emailAddress"]
|
||||||
|
binkpAddress = apDict["binkpAddress"]
|
||||||
|
binkpPort = apDict["binkpPort"]
|
||||||
|
sessionPassword = apDict["sessionPassword"]
|
||||||
|
allfixPassword = apDict["allfixPassword"]
|
||||||
|
pktPassword = apDict["pktPassword"]
|
||||||
|
ticPassword = apDict["ticPassword"]
|
||||||
|
numNodes = apDict["numNodes"]
|
||||||
|
if apDict["cramMD5"] :
|
||||||
|
cramMD5 = "Yes"
|
||||||
|
else :
|
||||||
|
cramMD5 = "No"
|
||||||
|
bbsSoftware = apDict["bbsSoftware"]
|
||||||
|
|
||||||
|
# left side
|
||||||
|
gotoxy(18,12); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(7,12); write("|"+normBG+"|"+normColour+"Real Name: "+"|"+fieldBG+"|"+fieldFG+realName+"|"+normBG)
|
||||||
|
gotoxy(18,13); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(8,13); write("|"+normBG+"|"+normColour+"BBS Name: "+"|"+fieldBG+"|"+fieldFG+bbsName+"|"+normBG)
|
||||||
|
gotoxy(18,14); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(2,14); write("|"+normBG+"|"+normColour+"Telnet Address: "+"|"+fieldBG+"|"+fieldFG+telnetAddress+"|"+normBG)
|
||||||
|
gotoxy(18,15); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(6,15); write("|"+normBG+"|"+normColour+"City/State: "+"|"+fieldBG+"|"+fieldFG+cityState+"|"+normBG)
|
||||||
|
gotoxy(18,16); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(6,16); write("|"+normBG+"|"+normColour+"Sysop Name: "+"|"+fieldBG+"|"+fieldFG+sysopName+"|"+normBG)
|
||||||
|
gotoxy(18,17); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(3,17); write("|"+normBG+"|"+normColour+"Email Address: "+"|"+fieldBG+"|"+fieldFG+emailAddress+"|"+normBG)
|
||||||
|
gotoxy(18,18); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(3,18); write("|"+normBG+"|"+normColour+"BinkP Address: "+"|"+fieldBG+"|"+fieldFG+binkpAddress+"|"+normBG)
|
||||||
|
gotoxy(18,19); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(4,19); write("|"+normBG+"|"+normColour+"BinkP Port #: "+"|"+fieldBG+"|"+fieldFG+binkpPort+"|"+normBG)
|
||||||
|
|
||||||
|
# right side
|
||||||
|
gotoxy(59,12); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(41,12); write("|"+normBG+"|"+normColour+"Session Password: "+"|"+fieldBG+"|"+fieldFG+sessionPassword+"|"+normBG)
|
||||||
|
gotoxy(59,13); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(42,13); write("|"+normBG+"|"+normColour+"Allfix Password: "+"|"+fieldBG+"|"+fieldFG+allfixPassword+"|"+normBG)
|
||||||
|
gotoxy(59,14); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(45,14); write("|"+normBG+"|"+normColour+"PKT Password: "+"|"+fieldBG+"|"+fieldFG+pktPassword+"|"+normBG)
|
||||||
|
gotoxy(59,15); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(45,15); write("|"+normBG+"|"+normColour+"TIC Password: "+"|"+fieldBG+"|"+fieldFG+ticPassword+"|"+normBG)
|
||||||
|
gotoxy(59,16); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(47,16); write("|"+normBG+"|"+normColour+"# of Nodes: "+"|"+fieldBG+"|"+fieldFG+numNodes+"|"+normBG)
|
||||||
|
gotoxy(59,17); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(49,17); write("|"+normBG+"|"+normColour+"Cram-MD5: |"+fieldBG+"|"+fieldFG+cramMD5+"|"+normBG)
|
||||||
|
gotoxy(59,18); write("|"+fieldBG+" "*20+"|"+normBG); gotoxy(45,18); write("|"+normBG+"|"+normColour+"BBS Software: "+"|"+fieldBG+"|"+fieldFG+bbsSoftware+"|"+normBG)
|
||||||
|
gotoxy(1,23); write("|PA")
|
||||||
|
|
||||||
|
# pull network config first ready for main program to start
|
||||||
|
getNetCfg(ARG)
|
||||||
|
initMainScreen()
|
||||||
|
mainMenu()
|
||||||
|
finished = False
|
||||||
|
while not finished :
|
||||||
|
initMainScreen()
|
||||||
|
mainMenu()
|
||||||
|
if handleSL == 255 :
|
||||||
|
ch = onekey(chr(13) + 'AVDPQ', False)
|
||||||
|
else :
|
||||||
|
ch = onekey(chr(13) + 'AVDQ', False)
|
||||||
|
if ch == 'Q' :
|
||||||
|
finished = True
|
||||||
|
break
|
||||||
|
elif ch == 'A' :
|
||||||
|
addEditApplication()
|
||||||
|
elif ch == 'V' :
|
||||||
|
viewApplication()
|
||||||
|
elif ch == 'D' :
|
||||||
|
menucmd('F3',infoPack)
|
||||||
|
elif ch == 'P' :
|
||||||
|
pass
|
||||||
|
|
||||||
|
gotoxy(1,24); writeln("|PA")
|
1
text/mL-nodeapp/nets/.gitignore
vendored
Normal file
1
text/mL-nodeapp/nets/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
applications
|
3
text/mL-nodeapp/nets/retronet/header.ans
Executable file
3
text/mL-nodeapp/nets/retronet/header.ans
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
[0m[1;1H[1;30;41m²²[40mÜ[0;31mßß[1;30mß[41m²°[0;31mß[1;41mß[30m²±[31mß²[40m [0;31mÝ [1;30m°Û²²±[0;31mß[1;41m°[30m±[0;31mß [1;30mß ß [0;31mß²[1;41m°[30;40mß ß ß [0;31m° ß±[1;30m²²Û[31;41m°[0m°[31mß [1;30mß° ß [0;31mÜ[1;30mÜ[31mÜÜ[30;41mß[0;31mß ß [1;30mß ßþþÜ[41m²²[40mþßܲ ß [33;41mÛÛÛÛÛÛ[30;40m¿ [33;41mÛÛ[40mÛÛÛÛÛ[30m¿[33;41mÛÛÛÛÛÛÛ[30;40m¿[33;41mÛÛÛÛÛÛ[30;40m¿ [33mÛÛÛÛ[41mÛ[30;40m¿ [33;41mÛÛÛ[30;40m¿ [33;41mÛÛ[30;40m¿[33;41mÛÛ[40mÛÛÛÛÛ[30m¿[33;41mÛÛÛÛÛÛÛ[30;40m¿ß²ÜÜ ° ßþÜÛÜÛß [33;41m²²[30;40mÚÄÄ[33;41m²²[30;40m¿[33;41m²²[30;40mÚÄÄÄÄÙÀÄ[33;41m²²[30;40mÚÄÄÙ[33;41m²²[30;40mÚÄÄ[33;41m²²[30;40m¿[33;41m²²[30;40mÚÄÄ[33;41m²²[30;40m¿[33;41m²²²²[30;40m¿[33;41m²²[30;40m³[33;41m²²[30;40mÚÄÄÄÄÙÀÄ[33;41m²²[30;40mÚÄÄÙ° ß²ß ßÛÜ[1C²ßÜÛ² [33;41m±±±±±±[30;40mÚÙ[33;41m±±±±±[30;40m¿ [33;41m±±[30;40m³ [33;41m±±±±±±[30;40mÚÙ[33;41m±±[30;40m³ [33;41m±±[30;40m³[33;41m±±[30;40mÚ[33;41m±±±±[30;40m³[33;41m±±±±±[30;40m¿ [33;41m±±[30;40m³ ßþ ßþ²
|
||||||
|
Ü ÞÛÛÝ [33;41m°°[30;40mÚ[33;41m°°[30;40mÚÙ [33;41m°°[30;40mÚÄÄÙ [33;41m°°[30;40m³ [33;41m°°[30;40mÚ[33;41m°°[30;40mÚÙ [33;41m°°[30;40m³ [33;41m°°[30;40m³[33;41m°°[30;40m³À[33;41m°°°[30;40m³[33;41m°°[30;40mÚÄÄÙ [33;41m°°[30;40m³ Ü²Ü ÛÜ Ü² Û[47m²[40mÛß [41m [40m³À[41m [40m¿ [41m [40m¿ [41m [40m³ [41m [40m³À[41m [40m¿ À[41m [40mÚÙ[41m [40m³ À[41m [40m³[41m [40m¿ [41m [40m³ ÜÛÛß ²ß ²[1Cþ þ ÀÄÙþ ÄÙ ÀÄÄÄÄÄÄÙþ ÀÄÙ þ ÀÄÙ ÀÄÙþ ÀÄÄÄÄÙþ ÄÙ ÀÄÙÀÄÄÄÄÄÄÙþ ÀÄÙþ þ ß þ
|
||||||
|
[41m²²[40mÜ[0;31mßß[1;30mß[41m²°[0;31mß[1;41mß[30m²±[31mß²[40m [0;31mÝ [1;30m°Û²²±[0;31mß[1;41m°[30m±[0;31mß [1;30mß ß [0;31mß²[1;41m°[30;40mß ß ß [0;31m° ß±[1;30m²²Û[31;41m°[0m°[31mß [1;30mß° ß [0;31mÜ[1;30mÜ[31mÜÜ[30;41mß[0;31mß ß [1;30mß ßþþÜ[41m²²
|
12
text/mL-nodeapp/nets/retronet/net.ini
Normal file
12
text/mL-nodeapp/nets/retronet/net.ini
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[network]
|
||||||
|
netName = retronet
|
||||||
|
netSysop = MeaTLoTioN
|
||||||
|
netAddress = 80:774/81
|
||||||
|
header = header.ans
|
||||||
|
infoPack = /mystic/files/rtn/rtn_info/rtninfop.zip
|
||||||
|
brightColour = 12
|
||||||
|
normColour = 04
|
||||||
|
fieldBG = 17
|
||||||
|
fieldFG = 14
|
||||||
|
normBG = 16
|
||||||
|
menuOption = 14
|
2
text/mL-nodeapp/nets/tqwnet/header.ans
Normal file
2
text/mL-nodeapp/nets/tqwnet/header.ans
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[0m[1;1H[36m<36><6D>[1;30m<30>[0;36m<36><6D>[1;30m<30>[0;36m<36><6D><EFBFBD>߲<EFBFBD><DFB2>[1m<31> [0;36m<36> [1;30m<30>۲<EFBFBD><DBB2>[0;36m<36>[1m<31>[0;36m<36><6D> [1;30m<30> <20> [0;36m߲[1m<31>[30m<30> <20> <20> [0;36m<36> ߱[1;30m<30><6D><EFBFBD>[36m<36>[0m<30>[36m<36> [1;30m߰ <20> [0;36m<36>[1;30m<30>[36m<36><6D>[0;36m<36><6D> <20> [1;30m<30> <20><><EFBFBD><EFBFBD>[0;36m<36><6D>[1;30m<30><6D>ܲ <20> [36m<36><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[0;36m<36> [1m<31><6D><EFBFBD><EFBFBD> <20><>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[0;36m<36> [1m<31><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[0;36m<36> [1;30m߲<6D><DFB2> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [36m<36><6D>[0;36m<36><6D><EFBFBD><EFBFBD> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D><EFBFBD><EFBFBD>[0;36m<36>[1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>[1m<31><6D>[0;36m<36><6D><EFBFBD><EFBFBD> [1;30m<30> ߲<> <20><><EFBFBD>[1C<31><43><EFBFBD>۲ [36m<36><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36>[1m<31><6D><EFBFBD><EFBFBD>[0;36m<36> [1m<31><6D><EFBFBD><EFBFBD>[0;36m<36> [1m<31><6D>[0;36m<36> [1;30m<30><6D> <20><><EFBFBD>
|
||||||
|
<EFBFBD> <20><><EFBFBD><EFBFBD> [36m<36><6D>[0;36m<36> [1m<31><6D>[0;36m<36> [1;37m<37><6D>[36m<36><6D>[0;36m<36> [1m<31><6D>[0;36m<36>[1m<31><6D><EFBFBD>[0;36m<36>[1m<31><6D>[0;36m<36> [1m<31><6D>[0;36m<36><6D>[1m<31><6D><EFBFBD>[0;36m<36> [1m<31><6D>[0;36m<36><6D><EFBFBD> [1m<31><6D>[0;36m<36> [1;30mܲ<6D> <20><> ܲ <20>[47m<37>[40m<30><6D> [0;36m<36>۳ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[1;37m<37><6D>[0;36m<36> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>۳ <20><>۳ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ <20>۳ [1;30m<30><6D><EFBFBD><EFBFBD> <20><> <20>[1C<31> <20> [0;36m<36><6D><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> [1;37m<37><6D> [0;36m<36><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> [1;30m<30> <20> <20>[0;36m<36><6D><EFBFBD>[1;30m<30>[0;36m<36><6D>[1;30m<30>[0;36m<36><6D><EFBFBD>߲<EFBFBD><DFB2>[1m<31> [0;36m<36> [1;30m<30>۲<EFBFBD><DBB2>[0;36m<36>[1m<31>[0;36m<36><6D> [1;30m<30> <20> [0;36m߲[1m<31>[30m<30> <20> <20> [0;36m<36> ߱[1;30m<30><6D><EFBFBD>[36m<36>[0m<30>[36m<36> [1;30m߰ <20> [0;36m<36>[1;30m<30>[36m<36><6D>[0;36m<36><6D> <20> [1;30m<30> <20><><EFBFBD><EFBFBD>[0;36m<36><6D>
|
12
text/mL-nodeapp/nets/tqwnet/net.ini
Normal file
12
text/mL-nodeapp/nets/tqwnet/net.ini
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[network]
|
||||||
|
netName = tqwnet
|
||||||
|
netSysop = MeaTLoTioN
|
||||||
|
netAddress = 1337:1/101
|
||||||
|
header = header.ans
|
||||||
|
infoPack = /mystic/files/tqw/tqw_info/tqwinfo.zip
|
||||||
|
brightColour = 11
|
||||||
|
normColour = 03
|
||||||
|
fieldBG = 17
|
||||||
|
fieldFG = 15
|
||||||
|
normBG = 16
|
||||||
|
menuOption = 14
|
Loading…
x
Reference in New Issue
Block a user