changed navbar a little

This commit is contained in:
Expand-sys 2021-06-27 12:33:03 +10:00
parent 796df3809b
commit 5245d6a735
7 changed files with 615 additions and 740 deletions

View file

@ -3,20 +3,7 @@ require("pino-pretty");
const dotenv = require("dotenv"); const dotenv = require("dotenv");
dotenv.config({ path: ".env" }); dotenv.config({ path: ".env" });
if (process.env.SECURE) { const fastify = require("fastify")();
const fastify = require("fastify")({
http2: true,
https: {
allowHTTP1: true, // fallback support for HTTP1
key: fs.readFileSync(path.join(root, "..", "config", "key.key")),
cert: fs.readFileSync(path.join(root, "..", "config", "cert.cert")),
},
});
} else {
const fastify = require("fastify")({
//logger: { prettyPrint: true },
});
}
const fastifyFlash = require("fastify-flash"); const fastifyFlash = require("fastify-flash");
@ -99,19 +86,11 @@ fastify.get("/", async function (req, res) {
res.view("setup"); res.view("setup");
} else { } else {
const client = new CCashClient(process.env.BANKAPIURL); const client = new CCashClient(process.env.BANKAPIURL);
let checkalive; let checkalive = await client.ping();
try { if (checkalive) {
checkalive = await client.ping(); alive = true;
} catch (err) { } else {
console.log(err); alive = false;
}
let alive = false;
try {
if (checkalive) {
alive = true;
}
} catch (err) {
console.log(err);
} }
res.view("index", { res.view("index", {
@ -222,6 +201,7 @@ fastify.get(
admin: req.session.get("admin"), admin: req.session.get("admin"),
sucesses: successes, sucesses: successes,
errors: errors, errors: errors,
alive: true,
}); });
} }
} }
@ -287,6 +267,7 @@ fastify.post("/register", async function (req, res) {
fastify.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.get("user")) { if (req.session.get("user")) {
res.redirect("/"); res.redirect("/");
} }
@ -334,30 +315,44 @@ fastify.get("/logout", function (req, res) {
}); });
}); });
fastify.get("/login", function (req, res) { fastify.get("/login", async function (req, res) {
let successes = req.session.get("successes"); let successes = req.session.get("successes");
req.session.set("successes", ""); req.session.set("successes", "");
let errors = req.session.get("errors"); let errors = req.session.get("errors");
req.session.set("errors", ""); req.session.set("errors", "");
let checkalive = await client.ping();
if (checkalive) {
alive = true;
} else {
alive = false;
}
res.view("login", { res.view("login", {
successes: successes, successes: successes,
errors: errors, errors: errors,
user: req.session.get("user"), user: req.session.get("user"),
random: papy(), random: papy(),
alive: alive,
}); });
}); });
fastify.get("/register", function (req, res) { fastify.get("/register", async function (req, res) {
let successes = req.session.get("successes"); let successes = req.session.get("successes");
req.session.set("successes", ""); req.session.set("successes", "");
let errors = req.session.get("errors"); let errors = req.session.get("errors");
req.session.set("errors", ""); req.session.set("errors", "");
let checkalive = await client.ping();
if (checkalive) {
alive = true;
} else {
alive = false;
}
res.view("register", { res.view("register", {
successes: successes, successes: successes,
errors: errors, errors: errors,
user: req.session.get("user"), user: req.session.get("user"),
admin: req.session.get("admin"), admin: req.session.get("admin"),
random: papy(), random: papy(),
alive: alive,
}); });
}); });
process.on("SIGINT", function () { process.on("SIGINT", function () {

799
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,82 +1,91 @@
.main { .main {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-around; justify-content: space-around;
height: 100vh; height: 100vh;
} }
body{ body {
background: rgb(182,151,255); background: rgb(182, 151, 255);
background: linear-gradient(180deg, rgba(182,151,255,1) 0%, rgba(113,63,230,1) 100%); background: linear-gradient(
height:100vh; 180deg,
rgba(182, 151, 255, 1) 0%,
rgba(113, 63, 230, 1) 100%
);
height: 100vh;
background-attachment: fixed; background-attachment: fixed;
} }
.navbarrr{ .navbarrr {
background: rgb(38,9,108); background: rgb(38, 9, 108);
background: linear-gradient(180deg, rgba(38,9,108,1) 0%, rgba(14,3,40,1) 100%);; background: linear-gradient(
180deg,
rgba(38, 9, 108, 1) 0%,
rgba(14, 3, 40, 1) 100%
);
} }
.blue{ .blue {
background: #46cff2; background: #46cff2;
} }
.container-large{ .container-large {
padding-left: 10%; padding-left: 10%;
padding-right: 10%; padding-right: 10%;
} }
.col{ .col {
padding: 0px; padding: 0px;
padding-left: 0px; padding-left: 0px;
padding-right: 0px; padding-right: 0px;
} }
.card{ .card {
padding: 10px; padding: 10px;
} }
.row{ .row {
margin-left: 0px; margin-left: 0px;
margin-right: 0px; margin-right: 0px;
} }
.logo{ .logo {
width: 250px; width: 250px;
background-color:white; background-color: white;
} }
.logs{ .logs {
height:350px; height: 350px;
overflow:auto; overflow: auto;
} }
.content{ flex-grow: 1; } .content {
flex-grow: 1;
}
.gallery{ .gallery {
background-color: white; background-color: white;
margin-bottom: 50px; margin-bottom: 50px;
box-shadow: 10px 10px 5px black; box-shadow: 10px 10px 5px black;
} }
.bg-custom{ .bg-custom {
background-color:#130f40; background-color: #130f40;
} }
.button-fixed{ .button-fixed {
bottom: 0; bottom: 0;
position: fixed; position: fixed;
right: 0; right: 0;
border-radius: 4px; border-radius: 4px;
} }
.fas{ .fas {
cursor: pointer; cursor: pointer;
font-size: 24px; font-size: 24px;
} }
p{ p {
font-size: 14px; font-size: 14px;
} }
.text-black{ .text-black {
color:black; color: black;
} }
.text-white{ .text-white {
color:white; color: white;
} }
.form-check-input{ .form-check-input {
margin-left:0; margin-left: 0;
padding:inherit; padding: inherit;
} }
input[type="radio"]:checked ~ .reveal-if-active, input[type="radio"]:checked ~ .reveal-if-active,
@ -86,18 +95,21 @@ input[type="checkbox"]:checked ~ .reveal-if-active {
overflow: visible; overflow: visible;
} }
h1,
h2,
h1, h2, h3, h4, h5, h6, p, label{ h3,
font-family: 'Montserrat', sans-serif; h4,
color h5,
h6,
p,
label {
font-family: "Montserrat", sans-serif;
} }
h1 {
h1{
color: white; color: white;
} }
.shadow{ .shadow {
box-shadow: 5px 10px #888888; box-shadow: 5px 10px #888888;
} }
$w: Min(10em, 100%); $w: Min(10em, 100%);
@ -106,5 +118,23 @@ $w: Min(10em, 100%);
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, $w); grid-template-columns: repeat(auto-fit, $w);
> * { width: $w; } > * {
width: $w;
}
}
.logo {
margin-bottom: -50px;
align-content: center;
width: 115px;
padding: 15px;
border-radius: 65px;
border-color: rgba(113, 63, 230, 1);
border-width: 2px;
border-style: solid;
box-shadow: 5px 5px 18px black;
background: linear-gradient(
180deg,
rgba(14, 3, 40, 1) 0%,
rgba(38, 9, 108, 1) 100%
);
} }

View file

@ -15,7 +15,13 @@ module.exports = function (fastify, opts, done) {
{ {
preValidation: [validateAdmin], preValidation: [validateAdmin],
}, },
function (req, res) { async function (req, res) {
let checkalive = await client.ping();
if (checkalive) {
alive = true;
} else {
alive = false;
}
let successes = req.session.get("successes"); let successes = req.session.get("successes");
req.session.set("successes", ""); req.session.set("successes", "");
let errors = req.session.get("errors"); let errors = req.session.get("errors");
@ -26,6 +32,7 @@ module.exports = function (fastify, opts, done) {
errors: errors, errors: errors,
successes: successes, successes: successes,
random: papy(), random: papy(),
alive: alive,
}); });
} }
); );

View file

@ -18,7 +18,13 @@ module.exports = function (fastify, opts, done) {
{ {
preValidation: [validate], preValidation: [validate],
}, },
function (req, res) { async function (req, res) {
let checkalive = await client.ping();
if (checkalive) {
alive = true;
} else {
alive = false;
}
let successes = req.session.get("successes"); let successes = req.session.get("successes");
req.session.set("successes", ""); req.session.set("successes", "");
let errors = req.session.get("errors"); let errors = req.session.get("errors");
@ -28,6 +34,7 @@ module.exports = function (fastify, opts, done) {
successes: successes, successes: successes,
user: req.session.get("user"), user: req.session.get("user"),
admin: req.session.get("admin"), admin: req.session.get("admin"),
alive: true,
}); });
} }
); );

View file

@ -1,352 +0,0 @@
const root = process.env.PWD;
const express = require("express");
const path = require("path");
const https = require("https");
const got = require("got");
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 app = express();
const MemoryStore = require("memorystore")(session);
const url = require("url");
const dotenv = require("dotenv");
const fs = require("fs");
const mongoose = require("mongoose");
const { CCashClient } = require("ccash-client-js");
dotenv.config();
const { postUser } = require(`${root}/helpers/functions.js`);
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "pug");
app.use(flash());
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
const secure = process.env.SECURE;
app.use(
session({
secret: "fuck shit cunt",
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,
};
},
})
);
function papy() {
const rndInt = Math.floor(Math.random() * 1337);
let random = false;
if (rndInt == 420) {
random = true;
}
return random;
}
app.post("/setup", async function (req, res) {
const { url, secure } = req.body;
if (secure) {
process.env.SECURE = true;
}
process.env.BANKAPIURL = url;
console.log(process.env.BANKAPIURL);
fs.writeFileSync(
".env",
"BANKAPIURL=" +
process.env.BANKAPIURL +
"\n" +
"SECURE=" +
process.env.SECURE +
"\nSETUP=true"
);
fs.writeFileSync("tmp/restart.txt", "");
res.redirect("/");
});
app.get("/", async function (req, res) {
if (process.env.SETUP == false || !process.env.SETUP) {
res.render("setup");
} else {
const client = new CCashClient(process.env.BANKAPIURL);
let checkalive;
try {
checkalive = await client.help();
} catch (err) {
console.log(err);
}
let alive = false;
try {
if (checkalive) {
alive = true;
}
} catch (err) {
console.log(err);
}
res.render("index", {
user: req.session.user,
admin: req.session.admin,
alive: alive,
url: process.env.BANKAPIURL,
random: papy(),
});
}
});
app.get("/BankF", ensureAuthenticated, async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL);
let successes = req.session.successes;
let errors = req.session.errors;
req.session.errors = [];
let admin;
try {
admin = req.session.admin;
} catch (err) {
console.log(err);
}
let balance = 0;
try {
balance = await client.balance(req.session.user);
} catch (err) {
console.log(err);
}
let logsent;
console.log("start " + Date.now());
try {
const { user, password } = req.session;
logsent = await client.log(user, password);
} catch (e) {
console.log(e);
}
console.log(logsent);
let logrec = logsent;
let graphlog = logsent;
if (graphlog != null) {
graphlog = graphlog.reverse();
}
let graphdata = "";
let currentbal = balance;
if (graphlog) {
for (i = graphlog.length - 1; i > -1; i--) {
if (graphlog[i].from == req.session.user) {
currentbal = parseInt(currentbal) + parseInt(graphlog[i].amount);
graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]";
} else {
currentbal = parseInt(currentbal) - parseInt(graphlog[i].amount);
graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]";
}
}
} else {
graphlog = undefined;
}
if (graphdata != "") {
graphdata =
", [" + parseInt(graphlog.length) + "," + balance + "]" + graphdata;
graphdata = '["transaction", "balance"]' + graphdata;
}
if (logsent == null) {
logsent = undefined;
} else {
logsent = await logsent.filter(({ from }) => from === req.session.user);
}
if (logrec == null) {
logrec = undefined;
} else {
logrec = await logrec.filter(({ to }) => to === req.session.user);
}
if (logsent) {
for (i in logrec) {
logrec[i].time = new Date(logrec[i].time);
}
}
if (logrec) {
for (i in logsent) {
logsent[i].time = new Date(logsent[i].time);
}
}
if (logrec != null) {
logrec.reverse();
}
if (logsent != null) {
logsent.reverse();
}
let maxgraph = balance + 1000;
console.log("begin render " + Date.now());
res.render("bankf", {
maxgraph: maxgraph,
graphdata: graphdata,
logrec: logrec,
logsent: logsent,
user: req.session.user,
balance: balance,
user: req.session.user,
admin: req.session.admin,
sucesses: successes,
errors: errors,
random: papy(),
});
});
app.post("/sendfunds", async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL);
let { amount, name, senderpass } = req.body;
req.session.errors = [];
req.session.successes = [];
let a_name = req.session.user;
let result;
result = await client.sendFunds(a_name, senderpass, name, amount);
console.log(result);
if (result == 1) {
req.session.successes.push({ msg: "Transfer successful" });
//post details
res.redirect("/BankF");
} else if (result == -1) {
req.session.errors.push({ msg: "Transfer Unsuccessful: User not Found" });
res.redirect("/Bankf");
} else if (result == -2) {
req.session.errors.push({ msg: "Transfer Unsuccessful: Wrong Password" });
res.redirect("/Bankf");
}
});
app.post("/register", async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL);
var { name, password, password2 } = req.body;
req.session.errors = [];
req.session.successes = [];
if (!name || !password || !password2) {
req.session.errors.push({ msg: "please fill in all fields" });
} else if (password != password2) {
req.session.errors.push({ msg: "Passwords don't match" });
} else if (password.length < 6) {
req.session.errors.push({
msg: "Password must be at least 6 characters",
});
} else {
let checkuser = await postUser(name, password);
console.log(checkuser);
if (checkuser == -4) {
req.session.errors.push({ msg: "Error: Name too long" });
res.redirect("/register");
} else if (checkuser == -5) {
req.session.errors.push({ msg: "Error: User Already Exists" });
res.redirect("/register");
} else {
req.session.successes.push({ msg: "Account Created! please Log in" });
res.redirect("/login");
}
}
});
app.post("/login", async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL);
if (req.session.user) {
res.redirect("/");
}
req.session.regenerate(function (err) {});
const { name, password } = req.body;
let adminTest;
try {
adminTest = await client.adminVerifyPassword(password);
} catch (err) {
console.log(err);
}
console.log(adminTest);
if (adminTest != -2) {
req.session.admin = adminTest;
req.session.adminp = password;
req.session.user = name;
req.session.password = password;
res.redirect("/BankF");
} else {
let verified;
verified = await client.verifyPassword(name, password);
console.log(verified);
if (verified == 1) {
req.session.user = name;
req.session.password = password;
res.redirect("/BankF");
} else {
req.session.errors = [];
req.session.errors.push({ msg: "Password wrong" });
res.redirect("/login");
}
}
});
let admin = require("./routes/admin");
app.use("/admin", admin);
let settings = require("./routes/settings");
app.use("/settings", settings);
app.get("/logout", function (req, res) {
req.session.regenerate(function (err) {
res.render("login", {
random: papy(),
});
});
});
app.get("/login", function (req, res) {
let successes = req.session.successes;
let errors = req.session.errors;
req.session.regenerate(function (err) {
res.render("login", {
successes: successes,
errors: errors,
user: req.session.user,
random: papy(),
});
});
});
app.get("/register", function (req, res) {
let successes = req.session.successes;
req.session.successes = [];
let errors = req.session.errors;
req.session.errors = [];
res.render("register", {
errors: errors,
successes: successes,
user: req.session.user,
admin: req.session.admin,
random: papy(),
});
});
process.on("SIGINT", function () {
process.exit();
});
app.listen(process.env.PORT || 3000, function () {
console.log("Server started on port 3000...");
});

View file

@ -13,13 +13,18 @@ html
body body
nav.navbar.navbar-expand-lg.navbar-dark.navbarrr.shadow-lg nav.navbar.navbar-expand-lg.navbar-dark.navbarrr.shadow-lg
.container .container
a.navbar-brand(href='/') .logo
img(src="/CCashLogo3.png" style="width:75px; height:74px") a.navbar-brand(href='/')
img(src="/CCashLogo3.png" style="width:75px; height:74px")
button.navbar-toggler(type='button', data-toggle='collapse', data-target='#navbars', aria-controls='navbars', aria-expanded='false', aria-label='Toggle navigation') button.navbar-toggler(type='button', data-toggle='collapse', data-target='#navbars', aria-controls='navbars', aria-expanded='false', aria-label='Toggle navigation')
span.navbar-toggler-icon span.navbar-toggler-icon
#navbars.collapse.navbar-collapse #navbars.collapse.navbar-collapse
ul.navbar-nav.mr-auto ul.navbar-nav.mr-auto
li.nav-item
if alive
p.text-white Server is Online
if !alive
p(style="color: red;") Server is offline
ul.navbar-nav.mr-right.text-white ul.navbar-nav.mr-right.text-white
if user == undefined if user == undefined
li.nav-item li.nav-item