| const express = require("express"); |
| const fs = require("fs"); |
| const path = require("path"); |
|
|
| const app = express(); |
|
|
| app.use(express.json()); |
|
|
| const htmlContent = ` |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>VPN API</title> |
| </head> |
| <body> |
| <h1>VPN API Server</h1> |
| <p>Running Successfully</p> |
| </body> |
| </html> |
| `; |
|
|
| let vpn = { |
| connected: false, |
| country: null, |
| flag: null, |
| ip: null |
| }; |
|
|
| const countries = [ |
| { country: "United States", flag: "πΊπΈ" }, |
| { country: "United Kingdom", flag: "π¬π§" }, |
| { country: "Germany", flag: "π©πͺ" }, |
| { country: "France", flag: "π«π·" }, |
| { country: "Japan", flag: "π―π΅" }, |
| { country: "Singapore", flag: "πΈπ¬" }, |
| { country: "Canada", flag: "π¨π¦" }, |
| { country: "Australia", flag: "π¦πΊ" } |
| ]; |
|
|
| function generateIP() { |
| return [ |
| Math.floor(Math.random() * 255), |
| Math.floor(Math.random() * 255), |
| Math.floor(Math.random() * 255), |
| Math.floor(Math.random() * 255) |
| ].join("."); |
| } |
|
|
| app.get("/", (req, res) => { |
| res.send(htmlContent); |
| }); |
|
|
| app.get("/api/vpn/list", (req, res) => { |
| res.json({ |
| success: true, |
| countries |
| }); |
| }); |
|
|
| app.get("/api/vpn/generate-ip", (req, res) => { |
| res.json({ |
| success: true, |
| ip: generateIP() |
| }); |
| }); |
|
|
| app.get("/api/vpn/connect", (req, res) => { |
|
|
| const country = req.query.country; |
|
|
| let server; |
|
|
| if (!country) { |
| server = countries[0]; |
| } else { |
| server = countries.find( |
| c => |
| c.country.toLowerCase() === |
| country.toLowerCase() |
| ); |
|
|
| if (!server) { |
| return res.status(404).json({ |
| success: false, |
| error: "Country not found", |
| countries |
| }); |
| } |
| } |
|
|
| vpn.connected = true; |
| vpn.country = server.country; |
| vpn.flag = server.flag; |
| vpn.ip = generateIP(); |
|
|
| res.json({ |
| success: true, |
| message: "VPN Connected", |
| country: vpn.country, |
| flag: vpn.flag, |
| ip: vpn.ip |
| }); |
| }); |
|
|
| app.get("/api/vpn/disconnect", (req, res) => { |
|
|
| vpn.connected = false; |
| vpn.country = null; |
| vpn.flag = null; |
| vpn.ip = null; |
|
|
| res.json({ |
| success: true, |
| message: "VPN Disconnected" |
| }); |
| }); |
|
|
| app.get("/api/vpn/status", (req, res) => { |
| res.json(vpn); |
| }); |
|
|
| app.get("/api/vpn/attachment", (req, res) => { |
|
|
| const file = path.join( |
| __dirname, |
| "vpn.txt" |
| ); |
|
|
| const content = ` |
| VPN CONFIGURATION |
| |
| Connected: ${vpn.connected} |
| Country: ${vpn.country || "None"} |
| Flag: ${vpn.flag || "None"} |
| IP: ${vpn.ip || "None"} |
| |
| Generated By VPN API |
| `; |
|
|
| fs.writeFileSync(file, content); |
|
|
| res.download(file); |
| }); |
|
|
| app.listen(5900, "0.0.0.0", () => { |
| console.log( |
| "Server running on http://127.0.0.1:5900" |
| ); |
| }); |