Archived
1
0
This repository has been archived on 2023-05-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
home-page/api/server.js
2022-12-30 16:42:25 -06:00

130 lines
3.0 KiB
JavaScript

const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const fs = require("fs");
const wol = require("wol");
const mysql = require("mysql");
const sql = "SELECT * FROM "
var con = mysql.createConnection({
host: "localhost",
user: "hpadmin",
password: "changeme",
database: "home_page"
});
function getData(table) {
con.connect();
con.query((sql + table), (error, results, fields) => {
if (error) throw error;
return results;
});
con.end();
}
//Read bookmarks
try {
var links = require('../src/links.json');
} catch(err) {
let body = `{
"bookmarks" : [
{
"category": "Example",
"links": [
{
"name": "Gitea",
"url": "https://sean.bet/gitea"
}
]
}
]
}`;
fs.writeFileSync('../src/links.json',body);
var links = require('../src/links.json');
}
//Read personal data
try {
var personaldata = require('../src/personaldata.json');
} catch(err) {
let body = `{
"fname":"",
"lname":"",
"email":""
}`;
fs.writeFileSync('../src/personaldata.json',body);
var personaldata = require('../src/personaldata.json');
}
//Read app list
if (fs.existsSync('../src/apps.json')) {
console.log("apps.json exists");
}else {
let body = `{
"apps" : [
{"name":"Example","url":"your.site.com/example","icon":"web","urlbase":"/Example","NSFW":"SAFE"}
]
}`;
fs.writeFileSync('../src/apps.json',body);
}
//Read everything else
const providers = require('../src/providers.json');
const themes = require('../src/themes.json');
const messages = getData('messages');
// initializing app
const app = express();
// initializing cors middleware for all routes
app.use(cors());
var jsonParser = bodyParser.json();
// creating route to make request to server for API
app.get("/sui/api/apps", (req, res) => {
fs.readFile('../src/apps.json', (err, data) => {
if (err) throw err;
let apps = JSON.parse(data);
res.status(200).send(apps.apps);
});
});
app.get("/sui/api/links", (req, res) => {
res.status(200).send(links.bookmarks);
});
app.get("/sui/api/providers", (req, res) => {
res.status(200).send(providers.providers);
});
app.get("/sui/api/themes", (req, res) => {
res.status(200).send(themes.themes);
});
app.get("/sui/api/personaldata", (req, res) => {
res.status(200).send(personaldata);
});
app.get("/sui/api/messages", (req, res) => {
res.status(200).send(messages);
});
app.post("/sui/api/appUpdate", jsonParser, (req, res) => {
let data = JSON.stringify(req.body)
fs.writeFileSync('../src/apps.json',data)
var applications = require('../src/apps.json');
res.status(200).send(applications.apps)
});
app.get("/sui/api/wakeDakota", (req, res) => {
wol.wake('18:C0:4D:81:57:68', function(err, res){
console.log(res);
});
});
// app is listening on port 5000
app.listen(5000, () => {
console.log("node server is running on port 5000");
});