UNPKG

audits

Version:

audit registrant

139 lines (129 loc) 4.54 kB
var mysql = require('mysql'); var mailer= require('nodemailer'); var crypto= require('crypto'); var config, dbh; function connect_mysql() { dbh = mysql.createConnection(config); dbh.on('error', connect_mysql); } function end_mysql(code) { dbh.end(); console.log('Exit code:', code); } function mailto(email, verifyCode, cb) { var transporter = mailer.createTransport({ host: 'smtp.qiye.163.com', port: 25, auth: { user: 'do_not_reply@nic.wang', pass: 'do_not@333' }, authMethod: 'PLAIN' }); var mailOptions = { from: 'do_not_reply@nic.wang', to: email, subject: '邮箱验证码', text: '尊敬的客户,您好:\n\n' + '感谢您选择卓越盛名来注册域名。\n\n' + '您正在进行邮箱验证的环节,请您或通过您的代理\n' + '商登录域名管理平台,录入以下验证码,完成邮箱\n' + '的验证。\n\n' + verifyCode + '\n\n' + '如有任何疑问,可联系您的代理商寻求帮助!\n\n' + '卓越盛名\n', html: "尊敬的客户,您好:<br/><br/>" + "感谢您选择卓越盛名来注册域名。<br/><br/>" + "您正在进行邮箱验证的环节,请您或通过您的代理<br/><br/>" + "商登录域名管理平台,录入以下验证码,完成邮箱<br/><br/>" + "的验证。<br/><br/>" + verifyCode + "<br/><br/>" + "如有任何疑问,可联系您的代理商寻求帮助!<br/><br/>" + "卓越盛名<br/>" }; transporter.sendMail(mailOptions, cb); } function sendVerifyCode(email, cb) { dbh.query("SELECT * FROM auditEmail WHERE email=?", [email], function(err, rows) { if(err || rows.length && rows[0].isOk) cb(err || new Error("已经认证过了")); else { var verifyCode = 'xxxxxx'.replace(/x/g, function(c) { var r = Math.random()*16|0; return r.toString(16); }); if(rows.length) dbh.query("UPDATE auditEmail SET verifyCode=? WHERE email=?", [verifyCode, email]); else dbh.query("INSERT INTO auditEmail VALUES(0,?,?,0)", [email, verifyCode]); mailto(email, verifyCode, cb); } }); } function compVerifyCode(email, verifyCode, cb) { dbh.query( "SELECT * FROM auditEmail WHERE email=?", [email], function(err, rows) { if(err || !rows.length || rows[0].verifyCode!==verifyCode) cb(err || new Error("验证码不正确")); else { dbh.query("UPDATE auditEmail SET isOk=1 WHERE email=?", [email]); dbh.query("update payment.audits set emailOk=1 where email=?", [email]); cb(null, email+' verified'); } } ); } function MD5(json) { var hash = crypto.createHash('md5'); hash.update(json.name || ''); hash.update(json.org || ''); hash.update(json.email || ''); return hash.digest('hex'); } function resultRegistrant(uniId, cb) { if(typeof(uniId)==='object') uniId = MD5(uniId); dbh.query("select status,description from auditRegistrant where uniId=?", [uniId], function(err, rows) { if(err || !rows.length) cb(err || new Error("没有认证数据")); else cb(null, rows[0]); }); } function uploadRegistrant(uniId, json, cb) { if(typeof(json)==='undefined') { cb(new Error("json undefined")); return; } if(typeof(uniId)==='object') uniId = MD5(uniId); dbh.query( "update auditRegistrant set json=?,status='data',description=''" + " where uniId=? and status!='pass'", [JSON.stringify(json), uniId], function(err) { if(err) cb(err); else { dbh.query("update payment.audits set dirty=2 where uniId=?", [uniId]); cb(null, 'upload finished'); } } ); } module.exports = { init: function(option) { config = option; connect_mysql(); process.on('exit', end_mysql); }, sendVerifyCode: sendVerifyCode, compVerifyCode: compVerifyCode, resultRegistrant: resultRegistrant, uploadRegistrant: uploadRegistrant };