-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
100 lines (83 loc) · 2.68 KB
/
Copy pathserver.js
File metadata and controls
100 lines (83 loc) · 2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import express from 'express'
import cors from 'cors'
import { connectToMongo, disconnectFromMongo } from './database/mongodb.js';
import authRoutes from './routes/authRoutes.js'
import oauthRoutes from './routes/oauthRoutes.js'
import userRoutes from './routes/userRoutes.js'
import resetRoutes from './routes/resetRoutes.js'
import web3Routes from './routes/web3Routes.js'
import "dotenv/config";
import { requireAuth } from "./middlewares/auth.js";
import { closeRedis, initRedis } from "./database/redis.js";
import { startSecurityCron } from './security-check.js';
const app = express();
const port = process.env.PORT || 4000;
app.use((req, res, next) => {
console.log("Incoming request:", req.method, req.url);
next();
});
app.use(cors({
origin: ['http://localhost:3000', 'https://auth-backend-fawn.vercel.app','https://auth-backend-lily.vercel.app'],
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type','Cookie','x-chronicle-ua', 'x-chronicle-client-ip']
}
))
app.use(express.json());
await connectToMongo();
await initRedis();
// Run silently in background.
startSecurityCron();
app.get('/', async(req, res) => {
res.send('Hello World!')
})
app.use('/api/auth',authRoutes);
app.use('/api/auth/user', requireAuth ,userRoutes);
app.use('/api/auth/password', resetRoutes);
app.use('/api/web3', requireAuth ,web3Routes);
app.use('/api/oauth',oauthRoutes);
app.listen(port, () => {
console.log(`App running at port ${port}`)
})
app.get('/health',(req,res)=>{
console.log("Server is up and running");
res.status(200).send('Server Awake');
})
app.get('/test',(req,res)=>{
console.log('Req headers:',req.headers);
const cfIP=req.headers['cf-connecting-ip'];
const obj={
cfIp:'',
realIp:'',
farwardedFor:''
}
console.log("CfIp:",cfIP);
if(cfIP) obj.cfIp=cfIP;
const farwardedFor=req.headers['x-forwarded-for'];
console.log("X-Farwared-for:",farwardedFor);
if(farwardedFor)
{
const ips=farwardedFor.split(',').map(ip=>ip.trim());
obj.farwardedFor=ips[0];
}
const realIp=req.headers['x-real-ip'];
console.log("Real Ip:",realIp);
if(realIp) obj.realIp=realIp;
const clientIp=req.headers['x-chronicle-client-ip'];
console.log("Client Ip:",clientIp);
console.log("Req Ip:",req.ip);
console.log("Req remote Ip:",req.connection.remoteAddress);
res.json("Testing Ips");
})
// Graceful shutdown
process.on("SIGINT", async () => {
await closeRedis();
await disconnectFromMongo();
console.log("Shutting down gracefully...");
process.exit(0);
});
process.on("SIGTERM", async () => {
await closeRedis();
await disconnectFromMongo();
console.log("Shutting down gracefully...");
process.exit(0);
});