on/off add

This commit is contained in:
2024-03-06 01:06:40 +03:00
parent c55b16d259
commit 494675c567
8 changed files with 155 additions and 54 deletions

26
app.js
View File

@@ -5,36 +5,42 @@ const mongoose = require("mongoose");
const configs = require("./configs"); const configs = require("./configs");
const chalk = require("chalk"); const chalk = require("chalk");
const helmet = require("helmet"); const helmet = require("helmet");
const config = require('./configs'); const config = require("./configs");
const morgan = require("morgan"); const morgan = require("morgan");
const fetch = require('node-fetch');
app.use(express.urlencoded({ extended: true })); app.use(express.urlencoded({ extended: true }));
app.use(express.json()); app.use(express.json());
app.use(helmet()); app.use(helmet());
// Logs // Logs
app.use(morgan('dev')); app.use(morgan("dev"));
// Connect Mongoose // Connect Mongoose
mongoose.connect(configs.mongodburl, { mongoose
.connect(configs.mongodburl, {
autoIndex: true autoIndex: true
}).then(() => { })
.then(() => {
console.log(chalk.cyanBright.bold("Mongodb is live!")); console.log(chalk.cyanBright.bold("Mongodb is live!"));
}).catch((error) => { })
.catch((error) => {
console.log("Mongodb error: " + error.message); console.log("Mongodb error: " + error.message);
}); });
// Save Route // Save Route
app.use("/api/save", require("./route/save.route")); app.use("/api/save", require("./route/save.route"));
// Device Set Route
app.use("/api/set", require("./route/device.set.route"));
// Device Log Route // Device Log Route
app.use("/api/device-log", require("./route/device.log.route")); app.use("/api/device-log", require("./route/device.log.route"));
// Wrong Endpoint // 404 Not Found Endpoint
app.use("/api/*", (req, res) => { app.use((req, res) => {
res.status(400).json({error: true, message: "Invalid api end point!"}); res.status(404).json({ error: true, message: "Not found!" });
}); });
// Root public route // Root public route
app.use("*", (req, res) => { // res.sendFile("public/", { root: __dirname }); app.use("*", (req, res) => {
// res.sendFile("public/", { root: __dirname });
res.sendStatus(400); res.sendStatus(400);
}); });
// Server Listening // Server Listening

View File

@@ -1,7 +1,7 @@
const configs = require("../configs"); const configs = require("../configs");
const DeviceModel = require("../models/device.model"); const Library = require("../library");
const set = async ( const logSave = async (
token, token,
device_id, device_id,
remote_name, remote_name,
@@ -10,38 +10,20 @@ const set = async (
) => { ) => {
if (token === configs.verifyToken) { if (token === configs.verifyToken) {
try { try {
// Önce kaydı bulalım const result = await Library.saveDeviceLog(
const filter = { device_id,
_id: device_id
};
const update = {
$push: {
device_log: {
remote_name, remote_name,
remote_type, remote_type,
operating_type, operating_type
log_time: Date.now() );
}
}
};
const result = await DeviceModel.updateOne(filter, update); return result;
if (result.nModified === 0) {
throw new Error("Güncellenmek istenen kayıt bulunamadı");
}
return "Log Kaydedildi!";
} catch (error) { } catch (error) {
// if (error.code === 11000) { throw new Error("Mongodb'ye kaydedilirken hata oluştu (log.controller)");
// throw new Error("Zaten kaydedilmiş");
// }
throw new Error("Mongodb'ye kaydedilirken hata oluştu");
} }
} else { } else {
throw new Error("Hatalı token"); throw new Error("Hatalı token (log.controller)");
} }
}; };
module.exports = { set }; module.exports = { logSave };

View File

@@ -0,0 +1,38 @@
const config = require("../configs");
const configs = require("../configs");
const Library = require("../library");
const DeviceModel = require("../models/device.model");
const fetch = require("node-fetch");
const set = async (token, device_id, remote_name, remote_type, operating_type) => {
if (token === configs.verifyToken) {
try {
const deviceExist = await DeviceModel.findOne({
_id: device_id
});
if (deviceExist) {
const hostname = deviceExist.device_ip_address;
const path = "on";
const response = await fetch(
"http://" + hostname + "/" + path + "?token=" + configs.verifyToken
);
const isOpen = await response.text();
if (isOpen) {
Library.saveDeviceLog(device_id, remote_name, remote_type, operating_type);
return "Cihaz açıldı"
}else{
throw new Error("Cihaz açılırken hata oluştu!");
}
} else {
throw new Error("Cihaz bulunamadı!");
}
} catch (error) {
throw new Error("Mongodb: " + error.message + " (set.controller)");
}
} else {
throw new Error("Hatalı token (set.controller)");
}
};
module.exports = { set };

View File

@@ -63,13 +63,10 @@ const save = async (
return "IP Adresi güncellendi"; return "IP Adresi güncellendi";
} }
} catch (error) { } catch (error) {
// if (error.code === 11000) { throw new Error("Mongodb: " + error.message + " (save.controller)");
// throw new Error("Zaten kaydedilmiş");
// }
throw new Error("Mongodb'ye kaydedilirken hata oluştu");
} }
} else { } else {
throw new Error("Hatalı token"); throw new Error("Hatalı token (save.controller)");
} }
}; };

39
library/index.js Normal file
View File

@@ -0,0 +1,39 @@
const configs = require("../configs");
const DeviceModel = require("../models/device.model");
const saveDeviceLog = async (
device_id,
remote_name,
remote_type,
operating_type
) => {
try {
// Önce kaydı bulalım
const filter = {
_id: device_id
};
const update = {
$push: {
device_log: {
remote_name,
remote_type,
operating_type,
log_time: Date.now()
}
}
};
const result = await DeviceModel.updateOne(filter, update);
if (result.nModified === 0) {
throw new Error("Güncellenmek istenen kayıt bulunamadı (library)");
}
return "Log Kaydedildi!";
} catch (error) {
throw new Error("Mongodb'ye kaydedilirken hata oluştu (library)");
}
};
module.exports = { saveDeviceLog };

View File

@@ -1,14 +1,15 @@
{ {
"dependencies": { "dependencies": {
"chalk": "^4.0.0",
"create-react-app": "^5.0.1", "create-react-app": "^5.0.1",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"express": "^4.18.2", "express": "^4.18.2",
"helmet": "^7.1.0", "helmet": "^7.1.0",
"mongoose": "^8.2.0", "mongoose": "^8.2.0",
"morgan": "^1.10.0", "morgan": "^1.10.0",
"node-fetch": "^2.7.0",
"nodemon": "^3.1.0", "nodemon": "^3.1.0",
"socket.io": "^4.7.4", "socket.io": "^4.7.4"
"chalk": "^4.0.0"
}, },
"name": "wisecolt-mancmini", "name": "wisecolt-mancmini",
"version": "1.0.0", "version": "1.0.0",

View File

@@ -9,7 +9,7 @@ router.use(express.json());
router.post("/", async (req, res) => { router.post("/", async (req, res) => {
try { try {
// Token Control Middleware // Token Control Middleware
const result = await DeviceLogController.set( const result = await DeviceLogController.logSave(
req.body.token, req.body.token,
req.body.device_id, req.body.device_id,
req.body.remote_name, req.body.remote_name,

38
route/device.set.route.js Normal file
View File

@@ -0,0 +1,38 @@
const express = require("express");
const router = express.Router();
const DeviceSetController = require("../controller/device.set.controller");
router.use(express.urlencoded({ extended: false }));
router.use(express.json());
// Device Log Save route
router.get(
"/:operating_type/:token/:device_id/:remote_name/:remote_type",
async (req, res) => {
try {
const { token, device_id, remote_name, remote_type, operating_type } =
req.params;
// Token Control Middleware
const result = await DeviceSetController.set(
token,
device_id,
remote_name,
remote_type,
operating_type
);
return res.status(200).json({
error: false,
result
});
} catch (error) {
res.status(400).json({
error: true,
result: error.message
});
}
}
);
module.exports = router;