Advertisement
Guest User

Database Handler

a guest
May 21st, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var Airtable = require('airtable');
  2. var Base = new Airtable({apiKey: 'keyrYtsUCwQBo48Pz'}).base('appwbA5iy1LHLUaKr');
  3. var Express = require('express');
  4. var Cors = require('cors');
  5. var path = require('path');
  6. var bodyParser = require('body-parser');
  7. var socket = require('socket.io');
  8. var App = Express();
  9. var rblxJs = require('rblx-js');
  10. var rbx = new rblxJs();
  11. var server = App.listen(8000);
  12.  
  13. //Parsers
  14. App.use(bodyParser.urlencoded({extended: false}));
  15.  
  16. App.use(bodyParser.json());
  17.  
  18. //Handle Database
  19. let GetRecords = function() {
  20.     return new Promise(function(Resolve, Reject){
  21.         const RecordsList = [];
  22.         var index = 0
  23.  
  24.         Base('Database').select({
  25.             maxRecords: 99999,
  26.             view: "Grid view"
  27.         }).eachPage(function page(records, fetchNextPage) {
  28.  
  29.         records.forEach(function(record) {
  30.             var FieldsTable = [];
  31.                 console.log(record);
  32.             FieldsTable[Object.entries(record.fields)[0][0]] = Object.entries(record.fields)[0][1];
  33.             FieldsTable[Object.entries(record.fields)[1][0]] = Object.entries(record.fields)[1][1];
  34.             FieldsTable[Object.entries(record.fields)[2][0]] = Object.entries(record.fields)[2][1];
  35.             FieldsTable[Object.entries(record.fields)[3][0]] = Object.entries(record.fields)[3][1];
  36.             FieldsTable[Object.entries(record.fields)[4][0]] = Object.entries(record.fields)[4][1];
  37.             FieldsTable[Object.entries(record.fields)[5][0]] = Object.entries(record.fields)[5][1];
  38.             FieldsTable[Object.entries(record.fields)[6][0]] = Object.entries(record.fields)[6][1];
  39.  
  40.           RecordsList[index] = [FieldsTable, record.getId()];
  41.             index++;
  42.         });
  43.  
  44.             fetchNextPage();
  45.         });
  46.  
  47.         setTimeout(function() {Resolve(RecordsList)}, 2500);
  48.     });
  49. };
  50.  
  51. let GetPlayerRecord = function(IdArray){
  52.     return new Promise(function(Resolve, Reject) {
  53.         let Id
  54.         let ResolveData = false
  55.  
  56.         if (IdArray[1] == null){
  57.             rbx.getUserByUsername(IdArray[0]).then(user=>{
  58.                 Id = user.userId + 0;
  59.             });
  60.  
  61.         } else {
  62.             Id = IdArray[1] + 0;
  63.         };
  64.  
  65.         setTimeout(function() {
  66.             GetRecords().then(function(RecordsList){
  67.                 for (var i in RecordsList) {
  68.                     if (RecordsList[i][0]['UserId'] == Id) {
  69.                         ResolveData = RecordsList[i];
  70.                         break;
  71.                     };
  72.                 };
  73.              });
  74.         }, 1500);
  75.  
  76.         setTimeout(function() {
  77.             Resolve(ResolveData);
  78.         }, 4750);
  79.     });
  80. };
  81.  
  82.  
  83. function UpdateRecord(IdArray, Data){
  84.     GetPlayerRecord(IdArray).then(function(PlayerRecord){
  85.         let Id
  86.  
  87.         if (IdArray[1] == null){
  88.             rbx.getUserByUsername(IdArray[0]).then(user=>{
  89.                 Id = user.userId;
  90.             });
  91.  
  92.         } else {
  93.             Id = IdArray[1];
  94.         };
  95.  
  96.         setTimeout(function() {
  97.             if (PlayerRecord == false) {
  98.                 Base('Database').create({
  99.                     "UserId": Id,
  100.                     "Time": Data['Time'],
  101.                     "Reason": Data['Reason'],
  102.                     "Status": Data['Status'],
  103.                     "Offenses": Data['Offenses'],
  104.                     "Whitelisted": Data['Whitelisted'],
  105.                     "Blacklisted": Data['Blacklisted']
  106.                 });
  107.             } else {
  108.                 Base('Database').update(PlayerRecord[1], {
  109.                     "UserId": Id,
  110.                     "Time": Data['Time'],
  111.                     "Reason": Data['Reason'],
  112.                     "Status": Data['Status'],
  113.                     "Offenses": Data['Offenses'],
  114.                     "Whitelisted": Data['Whitelisted'],
  115.                     "Blacklisted": Data['Blacklisted']
  116.                 });
  117.             };
  118.         }, 1500);
  119.     });
  120. };
  121.  
  122. function Ban(Request, Response) {
  123.     var Data = [];
  124.     var JsonData = Request.body;
  125.     console.log(JsonData);
  126.  
  127.     GetPlayerRecord([JsonData.Username, null]).then(function(PlayerRecord){
  128.         if (JsonData.Time == "Perma") {
  129.             Data['Time'] = 0.0;
  130.  
  131.         } else {
  132.             Data['Time'] = (JsonData.Time * 86400) + (new Date().getTime()/1000);
  133.         };
  134.  
  135.         Data['Reason'] = JsonData.Reason;
  136.         Data['Status'] = "Banned";
  137.  
  138.         if (PlayerRecord != false) {
  139.             Data['Offenses'] = PlayerRecord[0]['Offenses'] + 1;
  140.             Data['Whitelisted'] = PlayerRecord[0]['Whitelisted'];
  141.             Data['Blacklisted'] = PlayerRecord[0]['Blacklisted'];
  142.         } else {
  143.             Data['Offenses'] = 1;
  144.             Data['Whitelisted'] = "False";
  145.             Data['Blacklisted'] = "False";
  146.         };
  147.  
  148.         setTimeout(function() {
  149.             UpdateRecord([JsonData.Username, null], Data);
  150.         }, 2000);
  151.     });
  152. };
  153.  
  154.  
  155.  
  156. function Unban(Username, Reason) {
  157.     var Data = [];
  158.  
  159.     GetPlayerRecord([Username, null]).then(function(PlayerRecord){
  160.  
  161.         Data['Reason'] = Reason;
  162.         Data['Status'] = "Unbanned";
  163.         Data['Time'] = 1.0
  164.         if (PlayerRecord != false) {
  165.             Data['Offenses'] = PlayerRecord[0][4];
  166.             Data['Whitelisted'] = PlayerRecord[0]['Whitelisted'];
  167.             Data['Blacklisted'] = PlayerRecord[0]['Blacklisted'];
  168.         } else {
  169.             Data['Offenses'] = 0;
  170.             Data['Whitelisted'] = "False";
  171.             Data['Blacklisted'] = "False";
  172.         };
  173.  
  174.         setTimeout(function() {
  175.             UpdateRecord(Username, Data);
  176.         }, 2000);
  177.     });
  178. };
  179.  
  180. function Whitelist(Username, Reason) {
  181.     var Data = [];
  182.  
  183.     GetPlayerRecord([Username, null]).then(function(PlayerRecord){
  184.  
  185.         Data['Reason'] = Reason;
  186.         Data['Status'] = "Unbanned";
  187.         Data['Whitelisted'] = "True";
  188.         Data['Blacklisted'] = "False";
  189.  
  190.         if (PlayerRecord != false) {
  191.             Data['Offenses'] = PlayerRecord[0]['Offenses'];
  192.  
  193.         } else {
  194.             Data['Offenses'] = 0;
  195.             Data['Whitelisted'] = "True";
  196.             Data['Blacklisted'] = "False";
  197.         };
  198.  
  199.         setTimeout(function() {
  200.             UpdateRecord(Username, Data);
  201.         }, 2000);
  202.     });
  203. };
  204.  
  205. function Blacklist(Username, Reason) {
  206.     var Data = [];
  207.  
  208.     GetPlayerRecord([Username, null]).then(function(PlayerRecord){
  209.  
  210.         Data['Reason'] = Reason;
  211.         Data['Status'] = "Banned";
  212.         Data['Whitelisted'] = "False";
  213.         Data['Blacklisted'] = "True";
  214.  
  215.         if (PlayerRecord != false) {
  216.             Data['Offenses'] = PlayerRecord[0]['Offenses'];
  217.  
  218.         } else {
  219.             Data['Offenses'] = 0;
  220.             Data['Whitelisted'] = "False";
  221.             Data['Blacklisted'] = "True";
  222.         };
  223.  
  224.         setTimeout(function() {
  225.             UpdateRecord(Username, Data);
  226.         }, 2000);
  227.     });
  228. };
  229.  
  230. let GetAdmins = function() {
  231.     return new Promise(function(Resolve, Reject){
  232.         let Admins = [];
  233.         var index = 0
  234.  
  235.         Base('Admins').select({
  236.             maxRecords: 99999,
  237.             view: "Grid view"
  238.         }).eachPage(function page(records, fetchNextPage) {
  239.  
  240.         records.forEach(function(record) {
  241.             var FieldsTable = [];
  242.  
  243.             FieldsTable[Object.entries(record.fields)[0][0]] = Object.entries(record.fields)[0][1];
  244.             FieldsTable[Object.entries(record.fields)[1][0]] = Object.entries(record.fields)[1][1];
  245.  
  246.           Admins[index] = FieldsTable;
  247.             index++;
  248.         });
  249.  
  250.             fetchNextPage();
  251.         });
  252.  
  253.         setTimeout(function() {Resolve(Admins)}, 2500);
  254.     });
  255. };
  256.  
  257.  
  258. function UnbanUsers() {
  259.     var Seconds = new Date().getTime()/1000
  260.     var Data = [];
  261.  
  262.     GetRecords().then(function(RecordsList){
  263.         for (var i in RecordsList) {
  264.             if (RecordsList[i][0][0] <= Seconds && (RecordsList[i][0][0] != 1.0 || RecordsList[i][0][0] != 0.0)) {
  265.                 Data['Reason'] = Reason;
  266.                 Data['Status'] = "Unbanned";
  267.                 Data['Time'] = 1.0;
  268.                 Data['Offenses'] = RecordsList[i][0][4];
  269.                 Data['Whitelisted'] = RecordsList[i][0][5];
  270.                 Data['Blacklisted'] = RecordsList[i][0][6];
  271.                 UpdateRecord([null, RecordsList[i][0][1]], Data)
  272.             };
  273.         };
  274.     });
  275. };
  276.  
  277. setInterval(UnbanUsers, 60000);
  278.  
  279. //Handle Requests
  280. App.get('/', function(Request, Response) {
  281.     Response.sendFile('Login.html',{root: path.join(__dirname, './Website')});
  282. });
  283.  
  284.  
  285. App.post('/', function(Request, Response) {
  286.         var IsAdmin = false
  287.         var Data = Request.body;
  288.  
  289.         GetAdmins().then(function(AdminList){
  290.             for (var i in AdminList) {
  291.                 if (AdminList[i]['Username'] == Data.Username) {
  292.                     if (AdminList[i]['Password'] == Data.Password) {
  293.                         IsAdmin = true;
  294.                     };
  295.                 };
  296.             };
  297.  
  298.             setTimeout(function() {
  299.                 if (IsAdmin == true) {
  300.                     Response.sendFile('Main.html',{root: path.join(__dirname, './Website')});
  301.                 } else {
  302.                     Response.sendFile('Login.html',{root: path.join(__dirname, './Website')});
  303.                 };
  304.             }, 2500);
  305.         });
  306. });
  307.  
  308. App.post('/ban', Ban)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement