Add NTFY support
This commit is contained in:
parent
6eed27b186
commit
6f17c2f17c
36
index.js
36
index.js
|
@ -7,8 +7,6 @@ const bcrypt = require("bcrypt");
|
||||||
const sqlite3 = require("sqlite3").verbose();
|
const sqlite3 = require("sqlite3").verbose();
|
||||||
const db = new sqlite3.Database("database.db");
|
const db = new sqlite3.Database("database.db");
|
||||||
const SQLiteStore = require('connect-sqlite3')(session);
|
const SQLiteStore = require('connect-sqlite3')(session);
|
||||||
const ntfy = require("ntfy");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,6 +47,17 @@ const genPass = () => {
|
||||||
}).join("");
|
}).join("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NTFY
|
||||||
|
const ntfyPublish = (data) => {
|
||||||
|
const fetch = require('node-fetch');
|
||||||
|
data.topic = config.ntfy.topic;
|
||||||
|
fetch(config.ntfy.server, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(data)
|
||||||
|
})
|
||||||
|
console.log(data)
|
||||||
|
}
|
||||||
|
|
||||||
// Create user
|
// Create user
|
||||||
const createUser = (username, password, authLevel) => {
|
const createUser = (username, password, authLevel) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
@ -164,7 +173,7 @@ const createTicket = (title, description, status, user, priority) => {
|
||||||
reject(err);
|
reject(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (config.ntfy) ntfy.publish({server: config.ntfy.server, authorization: config.ntfy.authorization, topic: config.ntfy.topic, title: `New Ticket`, message: `${title}: ${description}`, priority, tags: [user, new Date(timestamp).toISOString()]});
|
if (config.ntfy) ntfyPublish({title: `New Ticket`, message: `${title}: ${description}`, priority: Number(priority), tags: [user.username, new Date(timestamp).toISOString()]});
|
||||||
resolve(this.lastID);
|
resolve(this.lastID);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -180,7 +189,7 @@ const deleteTicket = (id) => {
|
||||||
reject(err);
|
reject(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (config.ntfy) ntfy.publish({server: config.ntfy.server, authorization: config.ntfy.authorization, topic: config.ntfy.topic, title: `Ticket Deleted`, message: `Ticket ${id} has been deleted`, tags: [new Date().toISOString()]});
|
if (config.ntfy) ntfyPublish({title: `Ticket Deleted`, message: `Ticket ${id} has been deleted`, tags: [new Date().toISOString()]});
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -350,13 +359,14 @@ app.post("/ticket/:id/:action", isAuthenticated, (req, res) => {
|
||||||
switch (req.params.action) {
|
switch (req.params.action) {
|
||||||
case "delete":
|
case "delete":
|
||||||
// Delete ticket
|
// Delete ticket
|
||||||
db.run("DELETE FROM tickets WHERE id = ?", [req.params.id], (err) => {
|
deleteTicket(req.params.id)
|
||||||
if (err) {
|
.then(() => {
|
||||||
|
res.redirect("/dashboard");
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return res.status(500).send("Internal Server Error");
|
res.status(500).send("Internal Server Error");
|
||||||
}
|
});
|
||||||
res.redirect("/dashboard");
|
|
||||||
});
|
|
||||||
break;
|
break;
|
||||||
case "add-message":
|
case "add-message":
|
||||||
// Add message
|
// Add message
|
||||||
|
@ -373,7 +383,7 @@ app.post("/ticket/:id/:action", isAuthenticated, (req, res) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return res.status(500).send("Internal Server Error");
|
return res.status(500).send("Internal Server Error");
|
||||||
}
|
}
|
||||||
if (config.ntfy) ntfy.publish({server: config.ntfy.server, authorization: config.ntfy.authorization, topic: config.ntfy.topic, title: `New Message on ticket ${req.params.id}`, message: `${req.body.message}`, tags: [req.session.userData.username, new Date(timestamp).toISOString()]});
|
if (config.ntfy) ntfyPublish({title: `New Message on ticket ${req.params.id}`, message: `${req.body.message}`, tags: [req.session.userData.username, new Date(timestamp).toISOString()]});
|
||||||
res.redirect(`/ticket/${req.params.id}`);
|
res.redirect(`/ticket/${req.params.id}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -395,7 +405,7 @@ app.post("/ticket/:id/:action", isAuthenticated, (req, res) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return res.status(500).send("Internal Server Error");
|
return res.status(500).send("Internal Server Error");
|
||||||
}
|
}
|
||||||
if(config.ntfy) ntfy.publish({server: config.ntfy.server, authorization: config.ntfy.authorization, topic: config.ntfy.topic, title: `Ticket ${req.params.id} status changed`, message: `Status changed to ${req.body.status}`, tags: [req.session.userData.username, new Date(Date.now()).toISOString()]});
|
if(config.ntfy) ntfyPublish({title: `Ticket ${req.params.id} status changed`, message: `Status changed to ${req.body.status}`, tags: [req.session.userData.username, new Date(Date.now()).toISOString()]});
|
||||||
res.redirect(`/ticket/${req.params.id}`);
|
res.redirect(`/ticket/${req.params.id}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -418,7 +428,7 @@ app.post("/ticket/:id/:action", isAuthenticated, (req, res) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return res.status(500).send("Internal Server Error");
|
return res.status(500).send("Internal Server Error");
|
||||||
}
|
}
|
||||||
if(config.ntfy) ntfy.publish({server: config.ntfy.server, authorization: config.ntfy.authorization, topic: config.ntfy.topic, title: `Ticket ${req.params.id} priority changed`, message: `Priority changed to ${req.body.priority}`, tags: [req.session.userData.username, new Date(Date.now()).toISOString()]});
|
if(config.ntfy) ntfyPublish({title: `Ticket ${req.params.id} priority changed`, message: `Priority changed to ${req.body.priority}`, tags: [req.session.userData.username, new Date(Date.now()).toISOString()]});
|
||||||
res.redirect(`/ticket/${req.params.id}`);
|
res.redirect(`/ticket/${req.params.id}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
4003
package-lock.json
generated
4003
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -16,7 +16,8 @@
|
||||||
"ejs": "^3.1.10",
|
"ejs": "^3.1.10",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
"express-session": "^1.18.0",
|
"express-session": "^1.18.0",
|
||||||
"ntfy": "^1.5.3",
|
"install": "^0.13.0",
|
||||||
|
"npm": "^10.7.0",
|
||||||
"sqlite3": "^5.1.7"
|
"sqlite3": "^5.1.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,8 +54,8 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary">Create Ticket</button>
|
<button type="submit" class="btn btn-primary">Create Ticket</button>
|
||||||
<button onclick="window.location = '/dashboard'" class="btn btn-danger" style="display:inline;">Cancel</button>
|
|
||||||
</form>
|
</form>
|
||||||
|
<!-- <button onclick="window.location = '/dashboard'" class="btn btn-danger" style="display:inline;">Cancel</button> --> <!--Doesnt work rn-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue