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

36
app.js
View File

@@ -5,43 +5,49 @@ const mongoose = require("mongoose");
const configs = require("./configs");
const chalk = require("chalk");
const helmet = require("helmet");
const config = require('./configs');
const config = require("./configs");
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(helmet());
// Logs
app.use(morgan('dev'));
app.use(morgan("dev"));
// Connect Mongoose
mongoose.connect(configs.mongodburl, {
mongoose
.connect(configs.mongodburl, {
autoIndex: true
}).then(() => {
})
.then(() => {
console.log(chalk.cyanBright.bold("Mongodb is live!"));
}).catch((error) => {
})
.catch((error) => {
console.log("Mongodb error: " + error.message);
});
});
// 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
app.use("/api/device-log", require("./route/device.log.route"));
// Wrong Endpoint
app.use("/api/*", (req, res) => {
res.status(400).json({error: true, message: "Invalid api end point!"});
// 404 Not Found Endpoint
app.use((req, res) => {
res.status(404).json({ error: true, message: "Not found!" });
});
// Root public route
app.use("*", (req, res) => { // res.sendFile("public/", { root: __dirname });
res.sendStatus(400);
app.use("*", (req, res) => {
// res.sendFile("public/", { root: __dirname });
res.sendStatus(400);
});
// Server Listening
server.listen(configs.port, () => {
console.log(chalk.yellowBright.bold.red("Listening: " + configs.port));
console.log(chalk.yellowBright.bold.red("Listening: " + configs.port));
});
// Error Handling
app.on("eror", (error) => {
console.log(error);
console.log(error);
});

View File

@@ -1,7 +1,7 @@
const configs = require("../configs");
const DeviceModel = require("../models/device.model");
const Library = require("../library");
const set = async (
const logSave = async (
token,
device_id,
remote_name,
@@ -10,38 +10,20 @@ const set = async (
) => {
if (token === configs.verifyToken) {
try {
// Önce kaydı bulalım
const filter = {
_id: device_id
};
const result = await Library.saveDeviceLog(
device_id,
remote_name,
remote_type,
operating_type
);
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ı");
}
return "Log Kaydedildi!";
return result;
} catch (error) {
// if (error.code === 11000) {
// throw new Error("Zaten kaydedilmiş");
// }
throw new Error("Mongodb'ye kaydedilirken hata oluştu");
throw new Error("Mongodb'ye kaydedilirken hata oluştu (log.controller)");
}
} 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";
}
} catch (error) {
// if (error.code === 11000) {
// throw new Error("Zaten kaydedilmiş");
// }
throw new Error("Mongodb'ye kaydedilirken hata oluştu");
throw new Error("Mongodb: " + error.message + " (save.controller)");
}
} 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": {
"chalk": "^4.0.0",
"create-react-app": "^5.0.1",
"dotenv": "^16.4.5",
"express": "^4.18.2",
"helmet": "^7.1.0",
"mongoose": "^8.2.0",
"morgan": "^1.10.0",
"node-fetch": "^2.7.0",
"nodemon": "^3.1.0",
"socket.io": "^4.7.4",
"chalk": "^4.0.0"
"socket.io": "^4.7.4"
},
"name": "wisecolt-mancmini",
"version": "1.0.0",

View File

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