kangna 8 лет назад
Родитель
Сommit
e3dfa2fa4c
6 измененных файлов с 150 добавлено и 0 удалено
  1. 45 0
      src/email/emailCaptcha.js
  2. 23 0
      src/image/imageCaptcha.js
  3. 19 0
      src/phone/phoneCaptcha.js
  4. 15 0
      src/session.js
  5. 13 0
      src/session/mysql.js
  6. 35 0
      src/session/sqler.js

+ 45 - 0
src/email/emailCaptcha.js

@@ -0,0 +1,45 @@
+const nodemailer = require('nodemailer')
+
+class emali {
+    constructor () {
+        this._host = 'mail.1473.cn'
+        this._port = 25
+        this._user = 'admin@1473.cn'
+        this._pass = 'ssti-1'
+        this._captcha = Math.floor(Math.random()*9000)+1000
+    }
+    main (_email, callback) {
+        const _captcha = Math.floor(Math.random()*9000)+1000
+        let transporter = nodemailer.createTransport({
+            host: this._host, //邮箱服务器地址
+            port: this._port, // SMTP 端口
+            secureConnection: false, // 使用 SSL
+            auth: {
+                user: this._user,
+                pass: this._pass
+            },
+            tls: {
+                // do not fail on invalid certs
+                rejectUnauthorized: false
+            }
+        })
+
+        let mailOptions = {
+            from: this._user, // 发件地址
+            to: `${_email}`, // 收件列表
+            subject: '雨云科技', // 标题
+            //text和html两者只支持一种
+            html: `验证码:<b>${_captcha}</b>,请不要告诉别人` // html 内容
+        };
+        
+        // send mail with defined transport object
+        transporter.sendMail(mailOptions, function(error, info){
+            if(error){
+                callback(error, false)
+            }
+            callback(_captcha, true)
+        });
+    }
+}
+
+module.exports = emali;

+ 23 - 0
src/image/imageCaptcha.js

@@ -0,0 +1,23 @@
+const imageCaptch = require('svg-captcha')
+
+/**
+*@param extent  验证码长度
+*@param exclude  验证码字符中排除
+*@param line  干扰线条的数量
+*@param iscolor  验证码的字符是否有颜色
+*/
+
+class main {
+    captcha (extent, exclude, line, iscolor) {
+        return (
+            imageCaptch.create({
+                size: extent,
+                ignoreChars: exclude,
+                noise: line,
+                color: iscolor
+            })
+        )
+    }
+}
+
+module.exports = main

+ 19 - 0
src/phone/phoneCaptcha.js

@@ -0,0 +1,19 @@
+const request = require('request')
+
+class phoneclass {
+    set (_phone, _req, _res, callback) {
+        request({
+            headers: {"Connection": "close"},
+            url: 'http://short.1473.cn/?mobile=' + _phone,
+            method: _req.method.toUpperCase(),
+            json: true,
+            body: _req.body
+        }, (error, response, data) => {
+            if (!error && response.statusCode == 200) {
+                callback(data)
+            }
+        })
+    }
+}
+
+module.exports = phoneclass

+ 15 - 0
src/session.js

@@ -0,0 +1,15 @@
+const session = require('express-session')
+
+class set {
+    sessionConfig () {
+        return (
+            session({
+                secret : 'captcha',
+                name : 'verificationcode',
+                cookie: {maxAge: 1000 * 60 * 60 * 24 * 7}
+            })
+        )
+    }
+}
+
+module.exports = set

+ 13 - 0
src/session/mysql.js

@@ -0,0 +1,13 @@
+const mysql=require("mysql");  
+
+class data {
+    server (sql, sqlcon, callback) {
+        let pool  = mysql.createPool(sqlcon);
+        pool.query(sql, function (error, results, fields) {
+            if (error) throw error;
+            callback(error,results,fields);
+        });
+    }
+}
+  
+module.exports = data;

+ 35 - 0
src/session/sqler.js

@@ -0,0 +1,35 @@
+const mysqler = require('./mysql'),
+    sql = new mysqler()
+
+class dataer {
+    constructor (hoster, dbuser, passer, databaseer, porter, table, username, userpassword) {
+        this._host = hoster
+        this._dbuser = dbuser
+        this._pass = passer
+        this._database = databaseer
+        this._port = porter
+        this._table = table
+        this._username = username
+        this._userpassword = userpassword
+    }
+    db (callback) {
+        let usernameer = this._username
+        let sqlconnection = {
+            host            : this._host,
+            user            : this._dbuser,
+            password        : this._pass,
+            database        : this._database,
+            port            : this._port
+        }
+        let sqler = `SELECT 1 FROM ${this._table} where name = '${this._username}' and password = '${this._userpassword}'`
+        sql.server(sqler, sqlconnection, function(err,results,fields){
+            if (results[0]) {
+                callback(results[0],usernameer)
+            }else{
+                return err
+            }
+        })
+    }
+}  
+
+module.exports = dataer;