Guest User

Untitled

a guest
Jan 19th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.22 KB | None | 0 0
  1. fs = require('fs');
  2. sys = require('sys');
  3. log = require('./log');
  4.  
  5. var Database = []
  6. var str = '';
  7. var cache;
  8. var buffer = 0;
  9. var bufferAmount = 0;
  10. var Maps = [];
  11.  
  12. var Badwords = [];
  13.  
  14. exports.Database = function ( callback ) {
  15. if ( callback && typeof callback == 'function' ) {
  16. log.debug( 'Server gestartet' );
  17.  
  18. bufferAmount++;
  19. fs.readFile('./src/badwords.txt', function ( err, data ) {
  20. if ( err ) {
  21. log.error( 'Ein Fehler ist aufgetreten während dem laden des Badwords Filters' );
  22. }
  23. Badwords = data.toString().split('\n');
  24. log.debug( 'Es wurden ' + Badwords.length + ' Badwords Phrases geladen.' );
  25. log.debug( 'Badwords Filter bereit' );
  26. buffer++;
  27. });
  28.  
  29. fs.readdir('./Database', function ( err, files ) {
  30. if ( files.length != 0 ) {
  31. bufferAmount += files.length;
  32. for ( var i = 0; i < files.length; i++ ) {
  33.  
  34. var name = files[ i ].split('.');
  35.  
  36. fs.readFile( './Database/' + files[ i ], function ( err, data ) {
  37. db = JSON.parse( data.toString() );
  38. Database[ name[ 0 ] ] = {}
  39. Database[ name[ 0 ] ].structure = db.table;
  40. Database[ name[ 0 ] ].rows = db.rows;
  41. log.debug( 'Datenbank ' + name[ 0 ] + ' wurde verarbeitet' );
  42. buffer++;
  43. });
  44. }
  45. }
  46. else
  47. {
  48. log.succes( 'Keine Datenbanken zum verarbeiten gefunden.' );
  49. }
  50.  
  51. // lesen der Karten..
  52. fs.readdir('./src/maps', function ( mapErr, mapFiles ) {
  53. bufferAmount += mapFiles.length;
  54. for ( var i = 0; i < mapFiles.length; i++ ) {
  55.  
  56. var name = mapFiles[ i ].split('.');
  57.  
  58. fs.readFile( './src/maps/' + mapFiles[ i ], function ( err, data ) {
  59. str = JSON.parse( data.toString() );
  60. Maps[ name[ 0 ] ] = str;
  61. log.debug( 'Karte ' + name[ 0 ] + ' wurde geladen' );
  62. buffer++;
  63. });
  64. }
  65. });
  66.  
  67. i = setInterval(function () {
  68. if ( buffer == bufferAmount) {
  69. log.debug( 'Server ist bereit.' );
  70. callback.call();
  71. clearInterval( i );
  72. }
  73. }, 20);
  74. });
  75.  
  76. }
  77. else
  78. {
  79. log.error( 'Der Database Parameter muss eine Callback Funktion sein.' );
  80. }
  81. }
  82. exports.createDatabase = function ( name, structure ) {
  83. log.debug( 'Neue Datenbank ' + name + ' wurde angelegt' );
  84. newDB = fs.createWriteStream( './Database/' + name + '.js', {'flags': 'w'} );
  85. newDB.write( JSON.stringify( { table: structure, rows: [] } ) );
  86. }
  87. exports.readDatabase = function ( name ) {
  88. log.debug( 'Datenbank' + name + ' wird gelesen..' );
  89. fs.readFile( './Database/' + name + '.js', function ( err, data ) {
  90. if ( err ) log.error( err );
  91. console.log( "\n" );
  92.  
  93. db = JSON.parse( data.toString() );
  94. for ( i in db.table ) {
  95. str += i + ' ';
  96. }
  97. console.log( str );
  98. str = '';
  99. if ( db.rows.length != 0 ) {
  100. for ( var i = 0; i < db.rows.length; i++ ) {
  101. for ( k in db.rows[ i ] ) {
  102. str += db.rows[ i ][ k ] + ' ';
  103. }
  104. console.log( str );
  105. str = '';
  106. }
  107. }
  108. else
  109. {
  110. log.succes( 'Keine Datenbankzeilen gefunden' );
  111. }
  112. });
  113. }
  114. exports.insert = function ( into, values ) {
  115. structure = Database[ into ].structure;
  116. obj = {}
  117. for ( var i in structure ) {
  118. if ( values[ i ] == undefined ) {
  119. if ( structure[ i ] == '//' ) {
  120. obj[ i ] = Database[ into ].rows.length + 1;
  121. }
  122. else if ( structure[ i ] == 'varchar' ) {
  123. obj[ i ] = '';
  124. }
  125. else {
  126. obj[ i ] = 0;
  127. }
  128. }
  129. else
  130. {
  131. obj[ i ] = values[ i ];
  132. }
  133. }
  134. log.debug( 'Eintrag in Datenbank ' + into + ' einfügen..' );
  135. Database[ into ].rows.push( obj );
  136. this.updateDatabase();
  137. }
  138. exports.select = function ( query ) {
  139. log.debug( ' SELECT Query ausgeführt: ' + query);
  140. segments = query.split(' ');
  141. if ( segments[0] == 'FROM' ) {
  142. if ( Database[ segments[1] ] != undefined ) {
  143. if ( segments[2] == 'WHERE' ) {
  144. ret = [];
  145. for ( var i = 0; i < Database[ segments[1] ].rows.length; i++ ) {
  146. if ( segments[9] != undefined && segments[9] == 'LIMIT' && segments[10] != undefined ) {
  147. if ( i > parseInt( segments[10] ) ) {
  148. return false;
  149. }
  150. }
  151.  
  152. if ( segments[6] == 'AND' ) {
  153. if ( this.logicalOperator( Database[ segments[1] ].rows[ i ][ segments[3] ], segments[9], segments[8] ) == true && this.logicalOperator( Database[ segments[1] ].rows[ i ], segments[5], segments[4] ) == true ) {
  154. ret.push( Database[ segments[1] ].rows[ i ] );
  155. }
  156. }
  157. else
  158. {
  159. if ( this.logicalOperator( Database[ segments[1] ].rows[ i ][ segments[3] ], segments[5], segments[4] ) == true ) {
  160. ret.push( Database[ segments[1] ].rows[ i ] );
  161. }
  162. }
  163. }
  164. return ret;
  165. }
  166. else
  167. {
  168. return Database[ segments[1] ].rows;
  169. }
  170. }
  171. else
  172. {
  173. log.error( 'Datenbank ' + segments[1] + ' existiert nicht' );
  174. }
  175. }
  176. else {
  177. log.error( 'Syntax Fehler bei "' + segments[0] + ' ' + segments[1] + '.." Groß und Kleinschreibung beachten' );
  178. }
  179.  
  180. this.updateDatabase();
  181. }
  182. exports.update = function ( query, query2 ) {
  183. log.debug( 'UPDATE Query ausgeführt: ' + query + ' ' + query2 );
  184. segments = query.split(' ');
  185. segments2 = query2.split(' ');
  186. if ( segments[0] == 'IN' ) {
  187. if ( Database[ segments[1] ] != undefined ) {
  188. if ( segments[2] == 'WHERE' ) {
  189. for ( var i = 0; i < Database[ segments[1] ].rows.length; i++ ) {
  190. if ( segments[6] == 'AND' ) {
  191. if ( this.logicalOperator( Database[ segments[1] ].rows[ i ][ segments[3] ], segments[9], segments[8] ) == true && this.logicalOperator( Database[ segments[1] ].rows[ i ], segments[5], segments[4] ) == true ) {
  192. Database[ segments[1] ].rows[ i ][ segments2[ 1 ] ] = segments2[ 3 ];
  193. }
  194. }
  195. else
  196. {
  197. if ( this.logicalOperator( Database[ segments[1] ].rows[ i ][ segments[3] ], segments[5], segments[4] ) == true ) {
  198. Database[ segments[1] ].rows[ i ][ segments2[ 1 ] ] = segments2[ 3 ];
  199. }
  200. }
  201. }
  202. }
  203. else
  204. {
  205. for ( var i = 0; i < Database[ segments[1] ].rows.length; i++ ) {
  206. Database[ segments[1] ].rows[ i ][ segments2[ 1 ] ] = segments2[ 3 ];
  207. }
  208. return;
  209. }
  210. }
  211. else
  212. {
  213. log.error( 'Datenbank ' + segments[1] + ' existiert nicht' );
  214. }
  215. }
  216. else {
  217. log.error( 'Syntax Fehler bei "' + segments[0] + ' ' + segments[1] + '.." Groß und Kleinschreibung beachten' );
  218. }
  219.  
  220. this.updateDatabase();
  221. }
  222. exports.numRows = function ( array ) {
  223. if ( typeof array == 'object' ) {
  224. return array.length;
  225. }
  226. else
  227. {
  228. log.error( 'Fehler in numRows :: Dies ist kein Array' );
  229. }
  230. }
  231. exports.logicalOperator = function ( a, b, operator ) {
  232. switch ( operator ) {
  233. case '=':
  234. return ( a == b ) ? true : false ;
  235. break;
  236. case '!=':
  237. return ( a != b ) ? true : false ;
  238. break;
  239. case '<=':
  240. return ( a <= b ) ? true : false ;
  241. break;
  242. case '>=':
  243. return ( a >= b ) ? true : false ;
  244. break;
  245. case '===':
  246. return ( a === b ) ? true : false ;
  247. break;
  248. default:
  249. return false;
  250. }
  251. }
  252. exports.updateDatabase = function () {
  253. for ( i in Database ) {
  254. db = fs.createWriteStream( './Database/' + i + '.js', {'flags': 'w'} );
  255.  
  256. obj = {}
  257. obj.table = Database[ i ].structure;
  258. obj.rows = Database[ i ].rows;
  259.  
  260. db.write( JSON.stringify( obj ) );
  261. }
  262. log.succes( ' ### Datenbank gespeichert' );
  263. }
  264. exports.optimizeSingleQuery = function ( array ) {
  265. if (typeof array == 'object') {
  266. return array[0];
  267. }
  268. }
  269.  
  270. exports.game_getMap = function ( key ) {
  271. if ( Maps[ key ] == undefined ) {
  272. return false;
  273. }
  274. return Maps[ key ];
  275. }
  276. exports.getBadwords = function () {
  277. return Badwords;
  278. }
Add Comment
Please, Sign In to add comment