const express = require('express'); const router = express.Router(); const rt = require('../ResTool'); const config = require('../../config.json'); const fs = require('fs'); const mysql = require('../../libs/mysql_pool'); const tool = require('../../includes/apiTool'); const exec = require('child_process').exec; const so = require('../../includes/storeObject'); const crypt = require('../../libs/crypto'); router .get('/', (req, res, n) => { res.send({ name: 'WebIO IPCam API' }); }) .post('*', async(req,res,n) => { try{ res.db = await mysql.getConn(); }catch(e){ console.log(`Get DB Connection ERROR ${e}`); return n('ERR8100'); } n(); }) .post('/getipcamlist', (req,res,n) => { if(!config.permission.ipcam) return n('ERR9000'); let query = "select * from ??.??"; let param = [config.db.db1, 'ipcam']; res.db.query(query, param, (err, row) => { if(err) return rt.err(res,err,n,'ERR8000'); res.api_res = { record: tool.checkArray(row) } n(); }); }) .post('/addipcam', (req,res,n) => { if(!config.permission.ipcam) return n('ERR9000'); if(!tool.checkPermission(req)) return n('ERR9000'); let arr = req.body; if(!arr.data) return n('ERR0000'); if(!arr.data.ip) return n('ERR0010'); if(!arr.data.name) return n('ERR0026'); if(!/^\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}$/.test(arr.data.ip)) return n('ERR0025'); let query = "select count(*) as c from ??.?? where `ip` = ?"; let param = [config.db.db1, 'ipcam', arr.data.ip]; res.db.query(query, param, (err, row) => { if(err || row.length == 0) return rt.err(res,err,n,'ERR8000'); if(row[0]['c'] > 0) return n('ERR0027'); let query = "insert into ??.?? (`name`, `ip`) values (?,?)"; let param = [config.db.db1, 'ipcam', arr.data.name, arr.data.ip]; res.db.query(query, param, (err, row) => { if(err) return rt.err(res,err,n,'ERR8001'); res.api_res = { record: [] }; n(); }); }); }) .post('/delipcam', (req,res,n) => { if(!config.permission.ipcam) return n('ERR9000'); if(!tool.checkPermission(req)) return n('ERR9000'); let arr = req.body; if(!arr.data) return n('ERR0000'); if(!arr.data.id) return n('ERR0028'); let query = "delete from ??.?? where `uid` = ?"; let param = [config.db.db1, 'ipcam', arr.data.id]; res.db.query(query, param, (err, row) => { if(err) return rt.err(res,err,n,'ERR8003'); res.api_res = { record: [] }; n(); }) }) .post('/editipcam', (req,res,n) => { if(!config.permission.ipcam) return n('ERR9000'); if(!tool.checkPermission(req)) return n('ERR9000'); let arr = req.body; if(!arr.data) return n('ERR0000'); if(!arr.data.id) return n('ERR0028'); if(!arr.data.name) return n('ERR0026'); let query = "update ??.?? set `name` = ? where `uid` = ?"; let param = [config.db.db1, 'ipcam', arr.data.name, arr.data.id]; res.db.query(query, param, (err,row) => { if(err) return rt.err(res,err,n,'ERR8002'); res.api_res = { record: [] } n(); }) }) .all('*', rt.send); module.exports = router;