270 lines
8.1 KiB
JavaScript
270 lines
8.1 KiB
JavaScript
const express = require("express")
|
|
const router = express.Router()
|
|
const bodyParser = require('body-parser')
|
|
const rcc = require('./../../model/rcc.js')
|
|
const rcc2018 = require('./../../model/rcc2018.js')
|
|
const rcc2020 = require('./../../model/rcc2020.js')
|
|
const games = require('./../../model/games.js')
|
|
const rcctalk = require('./../../rcctalk')
|
|
const rcctalk2018 = require('./../../rcctalk2018')
|
|
const User = require('../../model/user.js')
|
|
router.use(bodyParser.json())
|
|
require('dotenv').config()
|
|
const RCC_HOST = process.env.RCC_HOST
|
|
|
|
router.post("/api/updategameinfo", async (req, res) => {
|
|
var ip = req.headers['cf-connecting-ip'] || req.socket.remoteAddress
|
|
if (ip == RCC_HOST || ip == "::ffff:"+RCC_HOST) {
|
|
const {game,players} = req.body
|
|
//const instance = await rcc.findOne({PlaceId: game}).lean()
|
|
|
|
games.updateOne({idofgame: game}, {
|
|
$set: {
|
|
numberofplayers: parseInt(players).toString()
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
|
|
res.send("good")
|
|
}
|
|
})
|
|
|
|
router.all(["/api/updategameinfo/updatevisits","/game/placevisit.ashx"], async (req, res) => {
|
|
var ip = req.headers['cf-connecting-ip'] || req.socket.remoteAddress
|
|
if (ip == RCC_HOST || ip == "::ffff:"+RCC_HOST) {
|
|
let {game} = req.body
|
|
if (req.query.AssociatedPlaceID){
|
|
game = req.query.AssociatedPlaceID
|
|
}
|
|
//const instance = await rcc.findOne({PlaceId: game}).lean()
|
|
|
|
games.updateOne({idofgame: game}, {
|
|
$inc: {
|
|
visits: 1
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
|
|
res.send("good")
|
|
}
|
|
})
|
|
|
|
router.all("/api/updategameinfo/gameloaded", async (req, res) => {
|
|
var ip = req.headers['cf-connecting-ip'] || req.socket.remoteAddress
|
|
if (ip == RCC_HOST || ip == "::ffff:"+RCC_HOST) {
|
|
let {game} = req.body
|
|
const gamedoc = await games.findOne({idofgame: game}).lean()
|
|
if (gamedoc.version === "2020"){
|
|
|
|
rcc2020.updateOne({PlaceId: game}, {
|
|
$set: {
|
|
Status: 2
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
|
|
}
|
|
if (gamedoc.version === "2018"){
|
|
|
|
rcc2018.updateOne({PlaceId: game}, {
|
|
$set: {
|
|
Status: 2
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
|
|
}
|
|
if (gamedoc.version === "2016"){
|
|
|
|
rcc.updateOne({PlaceId: game}, {
|
|
$set: {
|
|
Status: 2
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
|
|
}
|
|
|
|
|
|
res.send("good")
|
|
}
|
|
})
|
|
|
|
|
|
router.post("/api/updategameinfo/closejob", async (req, res) => {
|
|
var ip = req.headers['cf-connecting-ip'] || req.socket.remoteAddress
|
|
if (ip == RCC_HOST || ip == "::ffff:"+RCC_HOST) {
|
|
console.log("closed")
|
|
let {game} = req.body
|
|
if(typeof game === 'string'){
|
|
game = game.replace('game','')
|
|
}
|
|
//const instance = await rcc.findOne({PlaceId: game}).lean()
|
|
games.updateOne({idofgame: game}, {
|
|
$set: {
|
|
numberofplayers: "0"
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
games.updateOne({idofgame: game}, {
|
|
$set: {
|
|
players: []
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
const gamedoc = await games.findOne({idofgame: game}).lean()
|
|
try{
|
|
if (gamedoc.version === "2018"){
|
|
await rcc2018.deleteOne({PlaceId: game})
|
|
rcctalk2018.CloseJob("game"+game)
|
|
}
|
|
}catch{}
|
|
try{
|
|
if (gamedoc.version === "2020"){
|
|
await rcc2020.deleteOne({PlaceId: game})
|
|
rcctalk2018.CloseJob("game"+game)
|
|
}
|
|
}catch{}
|
|
try{
|
|
if (gamedoc.version === "2016"){
|
|
await rcc.deleteOne({PlaceId: game})
|
|
|
|
rcctalk.CloseJob("game"+game)
|
|
}
|
|
}catch{}
|
|
|
|
res.send("good")
|
|
}
|
|
})
|
|
|
|
router.get("/api/updategameinfo/closealljobs", async (req, res) => {
|
|
var ip = req.headers['cf-connecting-ip'] || req.socket.remoteAddress
|
|
if (ip == RCC_HOST || ip == "::ffff:"+RCC_HOST) {
|
|
console.log("closed all")
|
|
//const instance = await rcc.findOne({PlaceId: game}).lean()
|
|
|
|
await rcc.deleteMany({})
|
|
games.updateMany({version: "2016"}, {
|
|
$set: {
|
|
numberofplayers: "0"
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
games.updateMany({version: "2016"}, {
|
|
$set: {
|
|
players: []
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
rcctalk.CloseAllJobs()
|
|
res.send("good")
|
|
}
|
|
})
|
|
|
|
router.all(["/api/updategameinfo/updatepresence"], async (req, res) => {
|
|
var ip = req.headers['cf-connecting-ip'] || req.socket.remoteAddress
|
|
if (ip == RCC_HOST || ip == "::ffff:"+RCC_HOST) {
|
|
let {game,player,name,action} = req.body
|
|
game = await games.findOne({idofgame: game})
|
|
if (action === "joining" || action === "connect"){
|
|
const updatedcount = parseFloat(game.numberofplayers)+1
|
|
games.updateOne({idofgame: game.idofgame}, {
|
|
$push: {
|
|
players: {userid: player, name: name}
|
|
},
|
|
$set: {
|
|
numberofplayers: updatedcount.toString()
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
User.updateOne({userid: player}, {
|
|
$set: {
|
|
status: JSON.stringify({status: "Playing "+game.nameofgame,id: game.idofgame})
|
|
},
|
|
$addToSet: {
|
|
recentlyplayed: {id: game.idofgame}
|
|
},
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
User.updateOne({userid: player}, {
|
|
$set: {
|
|
status: JSON.stringify({status: "Playing "+game.nameofgame,id: game.idofgame})
|
|
},
|
|
$push: {
|
|
recentlyplayed: {$each: [], $slice: -10}// limit for recently played is 10 so slice anything older than that
|
|
},
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
if (game.version === "2018" || game.version === "2020"){
|
|
rcctalk2018.RenewLease("game"+game.idofgame,"69530318916789546987353800") // if someone joins we want to renew the lease so it doesn't expire
|
|
// mostly just for stopping people from spamming urls and keeping games loaded
|
|
}
|
|
if (game.version === "2020"){ // 2020 doesn't do visits for some reason
|
|
games.updateOne({idofgame: game.idofgame}, {
|
|
$inc: {
|
|
visits: 1
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (action === "leaving"|| action === "disconnect"){
|
|
const updatedcount = parseFloat(game.numberofplayers)-1
|
|
games.updateOne({idofgame: game.idofgame}, {
|
|
$pull: {
|
|
players: {userid: player, name: name}
|
|
},
|
|
$set: {
|
|
numberofplayers: updatedcount.toString()
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
|
|
|
|
User.updateOne({userid: player}, {
|
|
$set: {
|
|
status: JSON.stringify({status: "Offline"})
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
}
|
|
|
|
|
|
res.send("good")
|
|
}
|
|
})
|
|
|
|
module.exports = router |