var CONTROL_REGISTER ='1'; var EMAIL_REGEX = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; var cValChars='ACDEFHJKLMNPQRTUVWXY23456789!@#$%&*'; log(LOG_DEBUG,'Control REGISTER loaded'); function register() { var code = ''; this.handle=function(read) { log(LOG_DEBUG,'Control REGISTER handle() start. ('+read+')'); log(LOG_DEBUG,'Field '+cf.fname+'('+JSON.stringify(cf)+')'); if ((cf.fname == 'TOKEN') && (read == '#' || read == '\r')) { if (cf.fvalue !== code) { sendBaseline('\1n\1h\1RINVAID CODE, PLEASE TRY AGAIN *00',false); console.write(KEY_ESC+'['+cf.attribute.i+';'+cf.attribute.f+';'+cf.attribute.b+'m'); read = ''; } } log(LOG_DEBUG,'Field Value '+cf.fvalue+'('+JSON.stringify(code)+')'); return read; } // Called before processing for a field this.prefield=function() { log(LOG_DEBUG,'Field '+cf.fname+'('+JSON.stringify(cf)+')'); if (cf.fname == 'TOKEN') { log(LOG_DEBUG,'BASELINE '+cf.fname+'('+JSON.stringify(cf)+')'); sendBaseline('\1n\1h\1RPlease wait, while a token is emailed to you...',false); var email = fo.fieldValue('EMAIL'); var user = fo.fieldValue('UID'); var name = fo.fieldValue('FULLNAME'); log(LOG_DEBUG,'VALIDATE EMAIL TO ('+system.matchuserdata(U_NETMAIL,email)+')'); // Make sure we got an email // Validate Email hasnt been used if ((email.indexOf('@') === -1) || ! EMAIL_REGEX.test(email) || (system.matchuserdata(U_NETMAIL,email) !== 0)) { sendBaseline('\1n\1h\1RINVAID EMAIL, PLEASE TRY AGAIN *00',false); return; } // Validate USER_ID hasnt been used if (! system.check_name(user)) { log(LOG_DEBUG,'Cannot use user_id: ('+user+')'); sendBaseline('\1n\1h\1RINVAID USER ID, PLEASE TRY AGAIN *00',false); } var msgbase = new MsgBase('mail'); for (var i=0;i<6;i++) code+=cValChars.substr(parseInt(Math.random() * cValChars.length), 1); var hdrs = new Object(); hdrs.to=name; hdrs.to_net_type=netaddr_type(email); if (hdrs.to_net_type != NET_NONE) { hdrs.to_net_addr = email; } else { sendBaseline('\1n\1h\1RCANNOT SEND VALIDATION CODE, PLEASE TRY AGAIN *00',false); return; } hdrs.from=system.name; hdrs.from_net_addr='sysop@'+system.inet_addr; hdrs.from_net_type=NET_INTERNET; hdrs.subject='Registration TOKEN for '+system.name; if (msgbase.open != undefined && msgbase.open() == false) { console.print("\r\n\1n\1h\1rERROR: \1y" + msgbase.last_error + "\1n \r\n"); console.pause(); msgbase.close(); bbs.hangup(); return; } var msg="CODE: " + code + "\n\n"; msg += 'Please use the above code to validate your login to '+system.name+'.'; if (! msgbase.save_msg(hdrs,msg)) { console.print("\r\n\1n\1h\1rERROR: \1y" + msgbase.last_error + "\1n \r\n"); console.pause(); msgbase.close(); bbs.hangup(); return; } msgbase.close(); log(LOG_DEBUG,'SEND EMAIL TO ('+x+')'); } } } this;