UNPKG

itmsg_automation

Version:

This is RESTful API web server with Ansible. You can execute Ansible ADHOC, Playbook using this API server. If you want to give me a feedback, Please leave a comment on 'Github Repository > Discussions'!

144 lines (116 loc) 3.75 kB
const express = require('express'); const router = express.Router(); const rsa = require('node-rsa'); const db = require('../db/db.js'); const addslashes = require('../db/addslashes.js'); const credBuilder = require('../dto/credBuilder'); const sql = require('../db/sql/credentialSql.js'); const conf = require('../config.js'); const key = new rsa(conf.rsa); const encodeType = 'base64'; // Post credential (Insert) router.post('/', (req, res, next) => { let encryptedPw = ''; let encryptePK = ''; const body = req.body; const dto = new credBuilder().setName(body.name) .setContent(body.content) .setMid(body.mid) .setMpw(body.mpw) .setType(body.type) .setPrivate_key(body.private_key) .build(); encryptedPw = key.encrypt(dto.mpw, encodeType); encryptePK = key.encrypt(dto.private_key, encodeType); db.query(sql.post(), [dto.name, dto.content, dto.mid , encryptedPw, encryptePK, dto.type], (err, rows) => { if (err) { return next(err); } delete body.mpw; res.json(db.resultMsg('a001', body)); }); }); /* PUT credential (Update) */ router.put('/:name', (req, res, next) => { let encryptedPw = ''; let encryptePK = ''; const body = req.body; const dto = new credBuilder().setName(req.params.name) .setContent(body.content) .setMid(body.mid) .setMpw(body.mpw) .setType(body.type) .setPrivate_key(body.private_key) .build(); if(dto.mpw) encryptedPw = key.encrypt(dto.mpw, encodeType); if(dto.private_key) encryptePK = key.encrypt(dto.private_key, encodeType); db.query(sql.update(encryptedPw, encryptePK), [dto.content, dto.mid , dto.type, dto.name], (err) => { if (err) return next(err); res.json(db.resultMsg('a001', req.body)); }); }); /* DELETE credential (delete) */ router.delete('/:name', (req, res, next) => { let name = req.params.name ? addslashes(req.params.name) : ''; db.query(sql.delete(), [name], (err, rows) => { if (err) { return next(err); } res.json(db.resultMsg('a001', req.body)); }); }); /* GET Credential (SELECT ONE) */ router.get('/:name', (req, res, next) => { let code = 'a001'; const name = req.params.name ? addslashes(req.params.name) : ''; db.query(sql.getOneRow(), [name], (err, rows) => { if (err) return next(err); if (rows.rowCount === 0 ) code = 'a003' res.json(db.resultMsg(code, rows.rows)); }); }); /* GET Credential listing. */ router.get('/', (req, res, next) => { let data = {}; const page = req.query.page ? addslashes(req.query.page) : ""; const pageSize = req.query.pageSize ? addslashes(req.query.pageSize) : ""; const name = req.query.name ? addslashes(req.query.name) : ""; if (page == "" || page < 1) { page = 1; } if (pageSize == "" || pageSize < 1) { pageSize = 15; } const start = (page - 1) * pageSize db.query(sql.getList(name), [pageSize, start], (err, rows) => { if (err) return next(err); totalCount(req).then((result) => { data['rowCount'] = rows.rowCount; data['totalCount'] = result; data['page'] = page; data['pageSize'] = pageSize; data['list'] = rows.rows; res.json(db.resultMsg('a001', data)); }).catch((err) => { if (err) { console.error(err); } }); }); }); function totalCount(req) { let data = {}; let vname = req.query.name ? addslashes(req.query.name) : ""; let stringQuery = sql.totalCount(vname) return new Promise((resolve, reject) => { db.query(stringQuery, [], (err, rows) => { if (err) { return reject(err); } resolve(rows.rows[0].total); }); }); } module.exports = router;