mirror of
https://github.com/Expand-sys/ccashfrontend
synced 2026-03-22 12:37:13 +11:00
waldawjadwfji
This commit is contained in:
parent
facc87b683
commit
b1cefcce86
6 changed files with 1634 additions and 439 deletions
153
index.js
153
index.js
|
|
@ -1,15 +1,16 @@
|
||||||
const root = process.env.PWD;
|
const root = process.env.PWD;
|
||||||
const express = require("express");
|
const express = require("express");
|
||||||
|
const fastify = require("fastify")({
|
||||||
|
logger: true,
|
||||||
|
});
|
||||||
|
const fastifyFlash = require("fastify-flash");
|
||||||
|
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const https = require("https");
|
|
||||||
const got = require("got");
|
const got = require("got");
|
||||||
const bodyParser = require("body-parser");
|
const bodyParser = require("body-parser");
|
||||||
const expressValidator = require("express-validator");
|
|
||||||
const flash = require("connect-flash");
|
|
||||||
const session = require("express-session");
|
|
||||||
const { ensureAuthenticated } = require(`${root}/config/auth.js`);
|
const { ensureAuthenticated } = require(`${root}/config/auth.js`);
|
||||||
const app = express();
|
const app = express();
|
||||||
const MemoryStore = require("memorystore")(session);
|
|
||||||
const url = require("url");
|
const url = require("url");
|
||||||
const dotenv = require("dotenv");
|
const dotenv = require("dotenv");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
|
|
@ -18,55 +19,29 @@ const { CCashClient } = require("ccash-client-js");
|
||||||
dotenv.config({ path: ".env" });
|
dotenv.config({ path: ".env" });
|
||||||
const { postUser } = require(`${root}/helpers/functions.js`);
|
const { postUser } = require(`${root}/helpers/functions.js`);
|
||||||
|
|
||||||
app.set("views", path.join(__dirname, "views"));
|
fastify.register(require("fastify-static"), {
|
||||||
app.set("view engine", "pug");
|
root: path.join(__dirname, "public"),
|
||||||
app.use(flash());
|
prefix: "/", // optional: default '/'
|
||||||
app.use(require("connect-flash")());
|
|
||||||
app.use(express.static(path.join(__dirname, "public")));
|
|
||||||
app.use(express.json());
|
|
||||||
app.use(
|
|
||||||
bodyParser.urlencoded({
|
|
||||||
extended: true,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
app.use(function (req, res, next) {
|
|
||||||
res.locals.messages = require("express-messages")(req, res);
|
|
||||||
next();
|
|
||||||
});
|
});
|
||||||
app.set("trust proxy", 1); // trust first proxy
|
fastify.register(require("fastify-secure-session"), {
|
||||||
const secure = false;
|
// the name of the session cookie, defaults to 'session'
|
||||||
if (process.env.SECURE == true) {
|
cookieName: "fuckineedalongasscookieandthiswilldo",
|
||||||
secure = true;
|
// adapt this to point to the directory where secret-key is located
|
||||||
}
|
key: fs.readFileSync(path.join(__dirname, "secret-key")),
|
||||||
app.use(
|
cookie: {
|
||||||
session({
|
path: "/",
|
||||||
secret: "fuck shit cunt",
|
// options for setCookie, see https://github.com/fastify/fastify-cookie
|
||||||
resave: true,
|
|
||||||
store: new MemoryStore({
|
|
||||||
checkPeriod: 86400000, // prune expired entries every 24h
|
|
||||||
}),
|
|
||||||
saveUninitialized: true,
|
|
||||||
cookie: { secure: secure, maxAge: 86400000 },
|
|
||||||
})
|
|
||||||
);
|
|
||||||
app.use(
|
|
||||||
expressValidator({
|
|
||||||
errorFormatter: function (param, msg, value) {
|
|
||||||
var namespace = param.split("."),
|
|
||||||
root = namespace.shift(),
|
|
||||||
formParam = root;
|
|
||||||
|
|
||||||
while (namespace.length) {
|
|
||||||
formParam += "[" + namespace.shift() + "]";
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
param: formParam,
|
|
||||||
msg: msg,
|
|
||||||
value: value,
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
})
|
});
|
||||||
);
|
fastify.register(require("point-of-view"), {
|
||||||
|
engine: {
|
||||||
|
pug: require("pug"),
|
||||||
|
},
|
||||||
|
defaultContext: {
|
||||||
|
random: papy(),
|
||||||
|
},
|
||||||
|
root: path.join(__dirname, "views"),
|
||||||
|
});
|
||||||
|
|
||||||
function papy() {
|
function papy() {
|
||||||
const rndInt = Math.floor(Math.random() * 1337);
|
const rndInt = Math.floor(Math.random() * 1337);
|
||||||
|
|
@ -99,9 +74,9 @@ app.post("/setup", async function (req, res) {
|
||||||
res.redirect("/");
|
res.redirect("/");
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get("/", async function (req, res) {
|
fastify.get("/", async function (req, reply) {
|
||||||
if (process.env.SETUP == false || !process.env.SETUP) {
|
if (process.env.SETUP == false || !process.env.SETUP) {
|
||||||
res.render("setup");
|
reply.view("setup");
|
||||||
} else {
|
} else {
|
||||||
const client = new CCashClient(process.env.BANKAPIURL);
|
const client = new CCashClient(process.env.BANKAPIURL);
|
||||||
let checkalive;
|
let checkalive;
|
||||||
|
|
@ -119,16 +94,27 @@ app.get("/", async function (req, res) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.render("index", {
|
reply.view("index", {
|
||||||
user: req.session.user,
|
user: req.session.get("user"),
|
||||||
admin: req.session.admin,
|
admin: req.session.get("admin"),
|
||||||
alive: alive,
|
alive: alive,
|
||||||
url: process.env.BANKAPIURL,
|
url: process.env.BANKAPIURL,
|
||||||
random: papy(),
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
app.get("/BankF", ensureAuthenticated, async function (req, res) {
|
fastify.get(
|
||||||
|
"/BankF",
|
||||||
|
{
|
||||||
|
preValidation: function (req, res, done) {
|
||||||
|
if (req.session.user != undefined) {
|
||||||
|
return done();
|
||||||
|
}
|
||||||
|
req.session.errors = [];
|
||||||
|
req.session.errors.push({ msg: "please login to view this resource" });
|
||||||
|
reply.redirect("/login");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async function (req, res) {
|
||||||
const client = new CCashClient(process.env.BANKAPIURL);
|
const client = new CCashClient(process.env.BANKAPIURL);
|
||||||
let successes = req.session.successes;
|
let successes = req.session.successes;
|
||||||
let errors = req.session.errors;
|
let errors = req.session.errors;
|
||||||
|
|
@ -141,6 +127,7 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) {
|
||||||
}
|
}
|
||||||
let balance = 0;
|
let balance = 0;
|
||||||
balance = await client.balance(req.session.user);
|
balance = await client.balance(req.session.user);
|
||||||
|
console.log(balance);
|
||||||
let logsent;
|
let logsent;
|
||||||
console.log("start " + Date.now());
|
console.log("start " + Date.now());
|
||||||
try {
|
try {
|
||||||
|
|
@ -203,22 +190,21 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) {
|
||||||
}
|
}
|
||||||
let maxgraph = balance + 1000;
|
let maxgraph = balance + 1000;
|
||||||
console.log("begin render " + Date.now());
|
console.log("begin render " + Date.now());
|
||||||
res.render("bankf", {
|
res.view("bankf", {
|
||||||
maxgraph: maxgraph,
|
maxgraph: maxgraph,
|
||||||
graphdata: graphdata,
|
graphdata: graphdata,
|
||||||
logrec: logrec,
|
logrec: logrec,
|
||||||
logsent: logsent,
|
logsent: logsent,
|
||||||
user: req.session.user,
|
user: req.session.get("user"),
|
||||||
balance: balance,
|
balance: balance,
|
||||||
user: req.session.user,
|
admin: req.session.get("admin"),
|
||||||
admin: req.session.admin,
|
|
||||||
sucesses: successes,
|
sucesses: successes,
|
||||||
errors: errors,
|
errors: errors,
|
||||||
random: papy(),
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
app.post("/sendfunds", async function (req, res) {
|
fastify.post("/sendfunds", async function (req, res) {
|
||||||
const client = new CCashClient(process.env.BANKAPIURL);
|
const client = new CCashClient(process.env.BANKAPIURL);
|
||||||
let { amount, name, senderpass } = req.body;
|
let { amount, name, senderpass } = req.body;
|
||||||
req.session.errors = [];
|
req.session.errors = [];
|
||||||
|
|
@ -240,7 +226,7 @@ app.post("/sendfunds", async function (req, res) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post("/register", async function (req, res) {
|
fastify.post("/register", async function (req, res) {
|
||||||
const client = new CCashClient(process.env.BANKAPIURL);
|
const client = new CCashClient(process.env.BANKAPIURL);
|
||||||
var { name, password, password2 } = req.body;
|
var { name, password, password2 } = req.body;
|
||||||
req.session.errors = [];
|
req.session.errors = [];
|
||||||
|
|
@ -269,12 +255,12 @@ app.post("/register", async function (req, res) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post("/login", async function (req, res) {
|
fastify.post("/login", async function (req, res) {
|
||||||
const client = new CCashClient(process.env.BANKAPIURL);
|
const client = new CCashClient(process.env.BANKAPIURL);
|
||||||
if (req.session.user) {
|
if (req.session.user) {
|
||||||
res.redirect("/");
|
res.redirect("/");
|
||||||
}
|
}
|
||||||
req.session.regenerate(function (err) {});
|
req.session.destroySession(function (err) {});
|
||||||
const { name, password } = req.body;
|
const { name, password } = req.body;
|
||||||
let adminTest;
|
let adminTest;
|
||||||
try {
|
try {
|
||||||
|
|
@ -306,24 +292,24 @@ app.post("/login", async function (req, res) {
|
||||||
});
|
});
|
||||||
|
|
||||||
let admin = require("./routes/admin");
|
let admin = require("./routes/admin");
|
||||||
app.use("/admin", admin);
|
fastify.all("/admin", admin);
|
||||||
|
|
||||||
let settings = require("./routes/settings");
|
let settings = require("./routes/settings");
|
||||||
app.use("/settings", settings);
|
fastify.all("/settings", settings);
|
||||||
|
|
||||||
app.get("/logout", function (req, res) {
|
fastify.get("/logout", function (req, res) {
|
||||||
req.session.regenerate(function (err) {
|
req.destroySession(function (err) {
|
||||||
res.render("login", {
|
res.view("login", {
|
||||||
random: papy(),
|
random: papy(),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get("/login", function (req, res) {
|
fastify.get("/login", function (req, res) {
|
||||||
let successes = req.session.successes;
|
let successes = req.session.successes;
|
||||||
let errors = req.session.errors;
|
let errors = req.session.errors;
|
||||||
req.session.regenerate(function (err) {
|
req.session.destroySession(function (err) {
|
||||||
res.render("login", {
|
res.view("login", {
|
||||||
successes: successes,
|
successes: successes,
|
||||||
errors: errors,
|
errors: errors,
|
||||||
user: req.session.user,
|
user: req.session.user,
|
||||||
|
|
@ -332,12 +318,12 @@ app.get("/login", function (req, res) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get("/register", function (req, res) {
|
fastify.get("/register", function (req, res) {
|
||||||
let successes = req.session.successes;
|
let successes = req.session.successes;
|
||||||
req.session.successes = [];
|
req.session.successes = [];
|
||||||
let errors = req.session.errors;
|
let errors = req.session.errors;
|
||||||
req.session.errors = [];
|
req.session.errors = [];
|
||||||
res.render("register", {
|
res.view("register", {
|
||||||
errors: errors,
|
errors: errors,
|
||||||
successes: successes,
|
successes: successes,
|
||||||
user: req.session.user,
|
user: req.session.user,
|
||||||
|
|
@ -348,6 +334,11 @@ app.get("/register", function (req, res) {
|
||||||
process.on("SIGINT", function () {
|
process.on("SIGINT", function () {
|
||||||
process.exit();
|
process.exit();
|
||||||
});
|
});
|
||||||
app.listen(process.env.PORT || 3000, function () {
|
|
||||||
console.log("Server started on port 3000...");
|
fastify.listen(process.env.PORT || 3000, function (err, address) {
|
||||||
|
if (err) {
|
||||||
|
fastify.log.error(err);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
fastify.log.info(`server listening on ${address}`);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
1745
package-lock.json
generated
1745
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,17 +1,24 @@
|
||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ccash-client-js": "^1.6.3",
|
"ccash-client-js": "^1.8.1",
|
||||||
"connect-flash": "^0.1.1",
|
"connect-flash": "^0.1.1",
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"express-messages": "^1.0.1",
|
"express-messages": "^1.0.1",
|
||||||
"express-session": "^1.17.1",
|
"express-session": "^1.17.1",
|
||||||
"express-validator": "5.3.1",
|
"express-validator": "5.3.1",
|
||||||
|
"fastify": "^3.18.0",
|
||||||
|
"fastify-cookie": "^5.3.1",
|
||||||
|
"fastify-flash": "^2.0.2",
|
||||||
|
"fastify-secure-session": "^2.3.1",
|
||||||
|
"fastify-session": "^5.2.1",
|
||||||
|
"fastify-static": "^4.2.2",
|
||||||
"got": "^11.8.2",
|
"got": "^11.8.2",
|
||||||
"https": "^1.0.0",
|
"https": "^1.0.0",
|
||||||
"memorystore": "*",
|
"memorystore": "*",
|
||||||
"mongoose": "^5.12.5",
|
"mongoose": "^5.12.5",
|
||||||
"path": "^0.12.7",
|
"path": "^0.12.7",
|
||||||
|
"point-of-view": "^4.15.0",
|
||||||
"pug": "^3.0.2",
|
"pug": "^3.0.2",
|
||||||
"url": "^0.11.0",
|
"url": "^0.11.0",
|
||||||
"validator": "^13.5.2"
|
"validator": "^13.5.2"
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ router.post("/pass", ensureAuthenticated, async function (req, res) {
|
||||||
});
|
});
|
||||||
res.redirect("/settings");
|
res.redirect("/settings");
|
||||||
} else {
|
} else {
|
||||||
req.session.regenerate(function (err) {
|
req.destroySession(function (err) {
|
||||||
req.session.successes = [];
|
req.session.successes = [];
|
||||||
req.session.successes.push({
|
req.session.successes.push({
|
||||||
msg: "Change Password Successful, Please Login Again",
|
msg: "Change Password Successful, Please Login Again",
|
||||||
|
|
|
||||||
1
secret-key
Normal file
1
secret-key
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Öƒ”Qþ;¶àLÛ±iÚÇôâgoÙþ¦Y;vØ)ßû2”
|
||||||
|
|
@ -5,9 +5,9 @@ html
|
||||||
link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css", integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z", crossorigin="anonymous")
|
link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css", integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z", crossorigin="anonymous")
|
||||||
link(rel="preconnect" href="https://fonts.gstatic.com")
|
link(rel="preconnect" href="https://fonts.gstatic.com")
|
||||||
link(href="https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&display=swap" rel="stylesheet")
|
link(href="https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&display=swap" rel="stylesheet")
|
||||||
if random == true
|
if random
|
||||||
link(rel='stylesheet' href='/css/papy.css')
|
link(rel='stylesheet' href='/css/papy.css')
|
||||||
if random == false || random == null
|
if !random
|
||||||
link(rel='stylesheet' href='/css/style.css')
|
link(rel='stylesheet' href='/css/style.css')
|
||||||
meta(name='viewport', content='width=device-width, initial-scale=1.0')
|
meta(name='viewport', content='width=device-width, initial-scale=1.0')
|
||||||
body
|
body
|
||||||
|
|
@ -38,7 +38,6 @@ html
|
||||||
li.nav-item
|
li.nav-item
|
||||||
a.nav-link(href='/admin').text-white Admin
|
a.nav-link(href='/admin').text-white Admin
|
||||||
.container
|
.container
|
||||||
!= messages('message', locals)
|
|
||||||
if errors
|
if errors
|
||||||
each error, i in errors
|
each error, i in errors
|
||||||
div(class="alert alert-danger") #{error.msg}
|
div(class="alert alert-danger") #{error.msg}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue