kyc/server.js

92 lines
2.5 KiB
JavaScript
Raw Normal View History

2024-02-10 18:47:13 +05:00
require("dotenv").config()
2024-02-10 22:46:51 +05:00
let registrationOpen, branding;
2024-02-10 18:47:13 +05:00
2024-02-11 11:50:23 +05:00
const { sendInfo } = require("./src/telegram")
2024-02-10 22:46:51 +05:00
function loadEnv() {
registrationOpen = process.env.REGISTRATION_OPEN === "true"
branding = {
title: process.env.BRANDING_TITLE || "SAR Link",
logo: process.env.BRANDING_LOGO || "/public/logo.png",
bankDetails: {
name: process.env.BANK_NAME || "Bank Name",
accountNumber: process.env.ACCOUNT_NUMBER || "1234567890",
accountName: process.env.ACCOUNT_NAME || "Account Name",
},
2024-02-11 11:50:23 +05:00
price: {
normal: process.env.PRICE || "100",
roaming: process.env.ROAMING_PRICE || "200",
currency: process.env.PRICE_CURRENCY || "MVR",
}
2024-02-10 22:46:51 +05:00
}
}
loadEnv()
// watch for changes to .env file
const path = require("path")
const fs = require("fs")
fs.watchFile(path.join(__dirname, ".env"), (curr, prev) => {
delete require.cache[require.resolve("dotenv")]
require("dotenv").config({ override: true })
loadEnv()
console.log(`Registration is now ${registrationOpen ? "open" : "closed"}`)
})
// initialize express
2024-02-10 18:47:13 +05:00
const express = require("express")
const app = express()
2024-02-10 22:46:51 +05:00
app.set("view engine", "ejs")
app.set("views", "./src/views")
app.use("/public", express.static("./src/public"))
2024-02-10 18:47:13 +05:00
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
// add multer
const multer = require("multer")
2024-02-11 11:50:23 +05:00
fs.mkdirSync("uploads", { recursive: true })
const upload = multer({
storage: multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "./uploads")
},
filename: (req, file, cb) => {
2024-02-11 11:50:23 +05:00
cb(null, `${Date.now()}- ${req.body["device_name"]} - ${file.originalname}`)
},
})
})
2024-02-10 22:46:51 +05:00
// app.use(upload.single("receipt"))
2024-02-10 18:47:13 +05:00
2024-02-10 22:46:51 +05:00
// routes
2024-02-10 18:47:13 +05:00
app.get("/", (req, res) => {
2024-02-11 11:50:23 +05:00
res.render(registrationOpen ? "index" : "closed", { branding, message: "" })
2024-02-10 18:47:13 +05:00
});
2024-02-11 11:50:23 +05:00
app.post("/register", upload.single("transfer_receipt"), (req, res) => {
2024-02-10 22:46:51 +05:00
if (!registrationOpen) {
res.render("closed")
2024-02-11 11:50:23 +05:00
return;
2024-02-10 22:46:51 +05:00
}
2024-02-11 11:50:23 +05:00
const { customer_name, mac_address, device_name, is_roaming } = req.body
const receipt = req.file;
if (!customer_name || !mac_address || !device_name || !receipt || !is_roaming) {
res.render("index", { branding, message: "Please fill all fields" })
return;
}
sendInfo(receipt.path, customer_name, mac_address, device_name, is_roaming)
.then(() => {
res.render("success", { branding })
})
.catch((error) => {
console.error(error)
res.render("index", { branding, message: "An internal error occurred" })
})
2024-02-10 22:46:51 +05:00
})
2024-02-10 18:47:13 +05:00
const port = process.env.PORT || 4818;
2024-02-10 22:46:51 +05:00
app.listen(port, '0.0.0.0', () => {
2024-02-10 18:47:13 +05:00
console.log(`Server is running on port ${port}`);
});