| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- // Requirments
- const fs = require('fs');
- const path = require('path');
- const db = require("./database");
- const ut = require("./utils");
- const gmquery = require('game-server-query');
- const tsquery = require('./ts-query').query;
- { //CODE BLOCK Type list and modifing
- var rawTypes = JSON.parse(fs.readFileSync("availableTypes.json", "utf-8"));
- var types = {};
- var typesFull = {};
- var x;
- for(x in rawTypes){
- if(!rawTypes.hasOwnProperty(x)){
- continue;
- }
- Object.assign(types, rawTypes[x]);
- for(var y in rawTypes[x]){
- if(rawTypes[x].hasOwnProperty(y)){
- typesFull[rawTypes[x][y]] = y;
- }
- }
- }
- types = ut.sortObj(types);
- typesFull = ut.sortObj(typesFull);
- exports.st = {
- getServerTypes: function () {
- return types;
- },
- getServerType: function (id) {
- return types[id];
- },
- getFullServerTypes: function () {
- return typesFull;
- },
- getFullServerType: function (id) {
- return typesFull[id];
- }
- };
- }
- { //CODE BLOCK Status Handlers
- var statusHandlers = {
- "game-server-query": function (type, address, callback) {
- var port = parseInt(address.split(":")[1]);
- address = address.split(":")[0];
- var options = {type: type, host: address};
- if(port){
- options.port = port;
- }
- gmquery(
- options,
- function(state) {
- if(state.error){
- callback({
- offline: true
- });
- }else {
- callback(state);
- }
- }
- );
- },
- "teamspeak-query": function (type, address, callback) {
- var port = parseInt(address.split(":")[1]);
- address = address.split(":")[0];
- var options = {type: type, host: address};
- if(port){
- options.port = port;
- }
- const query = tsquery(options.host, options.port, function (err, data) {
- if(err){
- callback({
- offline: true,
- error: err
- });
- }else{
- callback(data);
- }
- });
- }
- };
- }
- { //CODE BLOCK Status Grabber
- var searchQueryType = function (type) {
- var x;
- for(x in rawTypes){
- if(!rawTypes.hasOwnProperty(x)){
- continue;
- }
- var y;
- for(y in rawTypes[x]) {
- if(!rawTypes[x].hasOwnProperty(y)) {
- continue;
- }
- if(rawTypes[x][y] == type){
- return x;
- }
- }
- }
- };
- var responseHandlers = require("./responseHandler")(db);
- exports.statusGrabber = {
- getHandler: function (type) {
- var x = statusHandlers[searchQueryType(type)];
- if(x){
- return x;
- }
- throw new Error("No handler for "+type+" type");
- },
- getResponseHandler: function (type) {
- return responseHandlers.getHandler(type, searchQueryType(type));
- },
- getStatus: function (type, address, callback){
- var handler = this.getHandler(type);
- handler(type, address, callback);
- },
- getDetails: function (type, address, callback) {
- var handler = this.getHandler(type);
- var self = this;
- handler(type, address, function (data) {
- var resp = self.getResponseHandler(type);
- var details = resp(data, null, true);
- callback(details);
- });
- },
- getTraffic: function (callback) {
- db.traffic.findAll().then(function(servers) {
- callback(servers);
- });
- },
- getTrafficById: function (callback) {
- db.traffic.findAll().then(function(servers) {
- callback(servers);
- });
- }
- };
- }
- { //CODE BLOCK Server menager
- exports.serverMenager = {
- list: function (callback) {
- // callback(serversList)
- // serversList - Array of servers
- db.server.findAll().then(function(servers) {
- callback(servers);
- });
- },
- getByID: function (id, callback) {
- db.server.findById(id).then(function (server) {
- callback(null, server);
- }).catch(function () {
- callback("No server with this id");
- });
- },
- add: function (type, address, name) {
- db.server.create({
- type: type,
- name: name,
- address: address
- });
- },
- remove: function (id) {
- db.server.destroy({
- where:{
- id: id
- }
- });
- }
- };
- }
- { //CODE BLOCK Config menager
- var configFilePath = path.resolve("./config.json");
- const defaultConfig = {
- lang: "en"
- };
- exports.configMenager = {
- config: {},
- load: function () {
- if(fs.existsSync(configFilePath)){
- this.config = JSON.parse(fs.readFileSync(configFilePath));
- }else{
- this.config = defaultConfig;
- this.save();
- }
- },
- save: function () {
- fs.writeFileSync(configFilePath, JSON.stringify(this.config, null, "\t"));
- }
- };
- exports.configMenager.load();
- }
|