audits
Version:
audit registrant
139 lines (129 loc) • 4.54 kB
JavaScript
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
};