Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/proxy_server/ drwxr-xr-x | |
| Viewing file: Select action/file-type: // index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
const { google } = require("googleapis");
var multer = require('multer');
var upload = multer();
const sequelize = require("./util/database");
const axios = require('axios');
const GP = require("./models/gp");
const Service = require("./models/service");
const User = require("./models/user");
const fs = require('fs');
const cluster=require('cluster');
const basicAuth = require("./middleware/basicAuth");
var compression = require('compression');
app.use(require('express-status-monitor')());
const isEmpty = require('lodash.isempty');
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(upload.array());
app.use(express.static('public'));
app.disable('etag');
app.use(compression({level:6}));
User.hasMany(Service,{foreignKey: 'vendor'});
Service.belongsTo(User,{foreignKey: 'vendor'});
// const Queue = require('bull');
// require('events').EventEmitter.prototype._maxListeners = 0;
// var proxyPost = new Queue("proxy", {
// limiter: {
// max: 100,
// duration: 1000
// }
// });
// proxyPost.process(async (job) => {
// // var return_data= await getReturn.get_result(job.data.header,job.data.api_name,job.data.request_method,job.data.request_ip,job.data.query);
// //return Promise.resolve(return_data);
// // axios
// // .get('http://127.0.0.1:1337/services?serviceId='+servcieIdentifier+'&keyWord='+servicekey+'/'+endUserId+'/'+shortcode+'/'+msgTransactionId, {
// // headers: {
// // Authorization: `Bearer ${info.token}`,
// // },
// // })
// // .then(response => {})
// // .catch(error => {
// // // Handle error.
// // axios.post('https://ddm.wahidnj100.workers.dev/status',workerData)
// // .then(response => {
// // console.log("CLoudFlare worker");
// // });
// // });
// console.log(job.data.workerData);
// });
// const os= require('os');
const numCpu=2;
app.get("/", (req, res) => res.send(`Welcome to the API!${process.pid}`));
app.get('/bl', function (req, res) {
// console.log(req);
console.log("Received succ");
res.send(`Recieved Successfully: ${process.pid}`);
})
app.post('/bl', function (req, res) {
console.log(req.body);
const str = new Date().toLocaleString('en-US', { timeZone: 'Asia/Dhaka' });
var from=req.body.from.replace(/^\d{3,9}/, x => x.replace(/./g, '*'))
fs.writeFileSync('../flow/live_log.csv','{"from":'+from+',"to":'+req.body.to+', "message":'+req.body.message+',"Date":'+str+' }'+'\n',{encoding: "utf8"});
fs.appendFileSync('../flow/logs.csv','{ "from":'+req.body.from+',"to":'+req.body.to+',"message":'+req.body.message+',"Date":'+str+' }'+'\n',{encoding: "utf8"});
res.send("Recieved Successfully: ");
})
app.get('/info',async function (req, res) {
// /:client_id/:shortcode/:msisdn/:key_word/:transid/:operator/:serviceid/:type/:status
// console.log(req.query);
if(req.query.client_id=="" || req.query.shortcode=="" || req.query.msisdn==""|| req.query.key_word=="" || req.query.transid=="" || req.query.operator=="" || req.query.serviceid=="" || req.query.type=="" || req.query.status==""){
res.status(403).json({
"statusInfo": {
"message": "Input parameters have empty values",
"statusCode": 403
}
});
}else{
const auth = new google.auth.GoogleAuth({
keyFile: "credential.json",
scopes: "https://www.googleapis.com/auth/spreadsheets",
});
// Create client instance for auth
const client = await auth.getClient();
// Instance of Google Sheets API
const googleSheets = google.sheets({ version: "v4", auth: client });
const spreadsheetId = "1Wg2PIDGuKA4icbaWeuhrQj5fRcaYvMNBAjKPKYe3R28";
// Get metadata about spreadsheet
const metaData = await googleSheets.spreadsheets.get({
auth,
spreadsheetId,
});
// Read rows from spreadsheet
const getRows = await googleSheets.spreadsheets.values.get({
auth,
spreadsheetId,
range: "Sheet1!A:A",
});
const str = new Date().toLocaleString('en-US', { timeZone: 'Asia/Dhaka' });
// Write row(s) to spreadsheet
await googleSheets.spreadsheets.values.append({
auth,
spreadsheetId,
range: "Sheet1!A:J",
valueInputOption: "USER_ENTERED",
resource: {
values: [[req.query.client_id, req.query.shortcode,req.query.msisdn,req.query.key_word,req.query.transid,req.query.operator,req.query.serviceid,req.query.type,req.query.status,str]],
},
});
res.json({
"statusInfo": {
"message": "Recieved Successfully",
"statusCode": 200
}
});
}
})
app.get('/pass_info.aspx',async function (req, res) {
// /:client_id/:shortcode/:msisdn/:key_word/:transid/:operator/:serviceid/:type/:status
// console.log(req.query);
if(req.query.client_id=="" || req.query.shortcode=="" || req.query.msisdn==""|| req.query.key_word=="" || req.query.transid=="" || req.query.operator=="" || req.query.serviceid=="" || req.query.type=="" || req.query.status==""){
res.status(403).json({
"statusInfo": {
"message": "Input parameters have empty values",
"statusCode": 403
}
});
}else{
if(req.query.client_id=="multisource"){
const auth = new google.auth.GoogleAuth({
keyFile: "credential.json",
scopes: "https://www.googleapis.com/auth/spreadsheets",
});
// Create client instance for auth
const client = await auth.getClient();
// Instance of Google Sheets API
const googleSheets = google.sheets({ version: "v4", auth: client });
const spreadsheetId = "1Wg2PIDGuKA4icbaWeuhrQj5fRcaYvMNBAjKPKYe3R28";
// Get metadata about spreadsheet
const metaData = await googleSheets.spreadsheets.get({
auth,
spreadsheetId,
});
// Read rows from spreadsheet
const getRows = await googleSheets.spreadsheets.values.get({
auth,
spreadsheetId,
range: "Sheet1!A:A",
});
const str = new Date().toLocaleString('en-US', { timeZone: 'Asia/Dhaka' });
// Write row(s) to spreadsheet
await googleSheets.spreadsheets.values.append({
auth,
spreadsheetId,
range: "Sheet1!A:J",
valueInputOption: "USER_ENTERED",
resource: {
values: [[req.query.client_id, req.query.shortcode,req.query.msisdn,req.query.key_word,req.query.transid,req.query.operator,req.query.serviceid,req.query.type,req.query.status,str]],
},
});
res.removeHeader("x-powered-by");
res.removeHeader("set-cookie");
res.removeHeader("Date");
res.removeHeader("Connection");
res.json({
"statusInfo": {
"message": "Recieved Successfully",
"statusCode": 200
}
});
}else{
res.status(403).json({
"statusInfo": {
"message": "Client ID is not valid",
"statusCode": 403
}
});
}
}
})
// app.use(basicAuth);
app.post('/digital5/messaging/v5.0/sendsms',basicAuth,async function (req, res) {
res.removeHeader("x-powered-by");
res.removeHeader("set-cookie");
res.removeHeader("Connection");
// console.log(req.ame);
if(!isEmpty(req.body)){
var data=req.body.notify;
// var index = data.smsInfo.message.indexOf( ' ', data.smsInfo.message.indexOf( ' ' ) + 1 );
// var servicekey = data.smsInfo.message.substr( index + 1 );
// var senderId=data.smsInfo.message.substr( 0, index );
// console.log(servicekey);
var endUserId=data.accesInfo.endUserId;
var referenceCode=data.accesInfo.serverReferenceCode;
var msgTransactionId=data.smsInfo.msgTransactionId;
var shortcode=data.smsInfo.shortcode;
var servcieIdentifier=data.smsInfo.servcieIdentifier;
var totalAmountCharged=parseFloat(data.smsInfo.totalAmountCharged);
const myArr = data.smsInfo.message.split(' ');
console.log(endUserId);
var servicekey=(myArr[2] == null && myArr[1] == null) ? myArr[0] : (myArr[2] == null) ? myArr[0]+' '+myArr[1] : myArr[0]+' '+myArr[1];
var senderId=(myArr[2] == null) ? null: myArr[2];
// console.log(data.smsInfo.message);
if(totalAmountCharged>0){
let info=await User.findOne({
include: [{
model: Service,
where: {
serviceId: servcieIdentifier,
keyWord: servicekey
}
}]
});
// console.log(info);
if(info){
GP.create({servicekey: servicekey,partner:res.locals.userName, endUserId: endUserId,accesschannel: data.accesInfo.accesschannel,referenceCode: referenceCode,code: shortcode,amount: totalAmountCharged,
msgTransactionId: msgTransactionId,language: data.accesInfo.language,senderId: senderId,productIdentifier: data.smsInfo.productIdentifier,message: servicekey,msgType: data.smsInfo.msgType
})
.catch((err) => {
console.log(err);
});
if(data.accesInfo.apiType=='pre'){
// console.log(info.token);
axios
.get('http://127.0.0.1:1337/services?serviceId='+servcieIdentifier+'&keyWord='+servicekey+'/'+endUserId+'/'+shortcode+'/'+msgTransactionId, {
headers: {
Authorization: `Bearer ${info.token}`,
},
})
.then(response => {
// Handle success.
// console.log(response.data);
if(response.data=="Successfully Returned..."){
res.json({
"statusInfo": {
"message": `successfully sent`,
"statusCode": 200,
"referenceCode": referenceCode,
"serverReferenceCode": referenceCode
}
});
}
if(response.data=="you don`t have sufficient balance....."){
res.status(403).json({
"statusInfo": {
"message": "you don`t have sufficient balance.....",
"statusCode": 403
}
});
}
if(response.data=="Too many attempts, please try again in a minute."){
res.status(403).json({
"statusInfo": {
"message": "Too many attempts, please try again in a minute.",
"statusCode": 403
}
});
}
if(response.data=='Your ip address is not valid for make request'){
res.status(403).json({
"statusInfo": {
"message": 'Your ip address is not valid for make request',
"statusCode": 403
}
});
}
})
.catch(error => {
// Handle error.
const workerData = {
header: info.token,
serviceId: servcieIdentifier,
keyWord:servicekey,
endUserId:endUserId,
shortcode:shortcode,
msgTransactionId:msgTransactionId
};
axios.post('https://ddm.wahidnj100.workers.dev/status',workerData)
.then(response => {
console.log("done");
});
console.log('An error occurred:');
res.status(403).json({
"statusInfo": {
"statusCode": 403,
"referenceCode": referenceCode,
"serverReferenceCode": referenceCode,
"errorInfo": {
"errorCode": 403,
"errorDescription": "String"
}
}
});
});
}else if(data.accesInfo.apiType=='post'){
console.log('post');
const workerData = {
header: info.token,
serviceId: servcieIdentifier,
keyWord:servicekey,
endUserId:endUserId,
shortcode:shortcode,
msgTransactionId:msgTransactionId
};
// proxyPost.add({workerData},{
// removeOnFail: true,
// removeOnComplete: true,
// });
res.json({
"statusInfo": {
"message": `successfully sent`,
"statusCode": 200,
"referenceCode": referenceCode,
"serverReferenceCode": referenceCode
}
});
// const result = await queue.finished();
// return result;
// console.log(result);
}
}else{
// console.log("null value");
res.status(403).json({
"statusInfo": {
"statusCode": 403,
"message": "Incorrect Keyword or ServiceId value"
}
});
}
}else{
res.json({
"statusInfo": {
"message": `successfully sent but not charged`,
"statusCode": 200,
"referenceCode": referenceCode,
"serverReferenceCode": referenceCode
}
});
}
}else{
res.status(403).json({
"statusInfo": {
"statusCode": 403,
"message": "Request Body is empty"
}
});
}
});
app.all("*", (req, res) =>res.send("You've tried reaching a route that doesn't exist."));
sequelize
.sync()
// .sync()
.then((result) => {
if(cluster.isMaster){
for(let i=0; i<numCpu; i++){
cluster.fork();
}
}else{
app.listen(port, ()=> {
console.log(`RESTful API server ${process.pid} running on http://localhost:${port}`);
});
}
});
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0051 ]-- |