diff --git a/.gitignore b/.gitignore index de7694a..d6ac467 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ plugins static data conf +log.txt *.d.ts *.js diff --git a/log.txt b/log.txt deleted file mode 100644 index ae1338b..0000000 --- a/log.txt +++ /dev/null @@ -1,138 +0,0 @@ -[2020-04-12T02:46:02.286] [DEBUG] Admin#makeKnex - Making new knex: { - client: 'sqlite3', - connection: { - filename: '/home/cake/nitowa.xyz/frontcraft/admin/data/frontworkAdmin.sqlite' - }, - migrations: { - directory: '/home/cake/nitowa.xyz/frontcraft/admin/migrations', - extension: 'ts' - }, - useNullAsDefault: true -} -[2020-04-12T02:46:02.426] [DEBUG] Admin#startWebsocket - Websocket up on 20000 -[2020-04-12T02:46:02.427] [DEBUG] UserManager#initialize - setting up permissions -skipping spec insertion -[2020-04-12T02:46:02.613] [DEBUG] Admin#start - 6 components initialized -[2020-04-12T02:46:03.296] [INFO] Admin#startWebserver - Frontend from /home/cake/nitowa.xyz/frontcraft/admin/dist/server.js loaded -[2020-04-12T02:46:03.297] [INFO] Admin#startWebserver - Admin panel listening for HTTP on *8080 -[2020-04-12T02:46:42.194] [DEBUG] UserManager#checkConnection - { - celinda: { - connections: { '45536': [Socket] }, - auth: { token: [Object], user: [Object], port: 20001 }, - user: { - id: 3, - username: 'celinda', - rank: 'Officer', - MC: 1, - BWL: 0, - ZG: 1, - AQ20: 1, - AQ40: 1, - Naxx: 1 - } - } -} [ 'cfa202ff-5f2c-4e4e-9fa5-9a45233ab0e0' ] -[2020-04-12T02:49:29.208] [DEBUG] UserManager#closeHandler - { - celinda: { - connections: {}, - auth: { token: [Object], user: [Object], port: 20001 }, - user: { - id: 3, - username: 'celinda', - rank: 'Officer', - MC: 1, - BWL: 0, - ZG: 1, - AQ20: 1, - AQ40: 1, - Naxx: 1 - } - } -} [ 'cfa202ff-5f2c-4e4e-9fa5-9a45233ab0e0' ] -[2020-04-12T02:49:31.572] [DEBUG] UserManager#checkConnection - { - celinda: { - connections: { '46948': [Socket] }, - auth: { token: [Object], user: [Object], port: 20001 }, - user: { - id: 3, - username: 'celinda', - rank: 'Officer', - MC: 1, - BWL: 0, - ZG: 1, - AQ20: 1, - AQ40: 1, - Naxx: 1 - } - } -} [ 'cfa202ff-5f2c-4e4e-9fa5-9a45233ab0e0' ] -[2020-04-12T02:49:37.031] [DEBUG] UserManager#closeHandler - { - celinda: { - connections: {}, - auth: { token: [Object], user: [Object], port: 20001 }, - user: { - id: 3, - username: 'celinda', - rank: 'Officer', - MC: 1, - BWL: 0, - ZG: 1, - AQ20: 1, - AQ40: 1, - Naxx: 1 - } - } -} [ 'cfa202ff-5f2c-4e4e-9fa5-9a45233ab0e0' ] -[2020-04-12T02:49:38.886] [DEBUG] UserManager#checkConnection - { - celinda: { - connections: { '47044': [Socket] }, - auth: { token: [Object], user: [Object], port: 20001 }, - user: { - id: 3, - username: 'celinda', - rank: 'Officer', - MC: 1, - BWL: 0, - ZG: 1, - AQ20: 1, - AQ40: 1, - Naxx: 1 - } - } -} [ 'cfa202ff-5f2c-4e4e-9fa5-9a45233ab0e0' ] -[2020-04-12T02:49:44.132] [DEBUG] UserManager#closeHandler - {} [] -[2020-04-12T02:52:10.916] [DEBUG] UserManager#checkConnection - { - celinda: { - connections: { '48390': [Socket] }, - auth: { token: [Object], user: [Object], port: 20001 }, - user: { - id: 3, - username: 'celinda', - rank: 'Officer', - MC: 1, - BWL: 0, - ZG: 0, - AQ20: 1, - AQ40: 1, - Naxx: 1 - } - } -} [ '7a8bbb51-412a-4bee-9e0e-9b7cbaef82d8' ] -[2020-04-12T02:52:47.682] [INFO] process#SIGINT - Shutting down from SIGINT (Ctrl-C) -[2020-04-12T02:52:47.684] [DEBUG] UserManager#closeHandler - { - celinda: { - connections: {}, - auth: { token: [Object], user: [Object], port: 20001 }, - user: { - id: 3, - username: 'celinda', - rank: 'Officer', - MC: 1, - BWL: 0, - ZG: 0, - AQ20: 1, - AQ40: 1, - Naxx: 1 - } - } -} [ '7a8bbb51-412a-4bee-9e0e-9b7cbaef82d8' ] diff --git a/package.json b/package.json index 2213b5e..651034a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "scripts": { "tsc": "tsc", "knex": "knex", - "launch": "node lib/src/backend/Launcher.js > log.txt", + "launch": "npm run debug > log.txt", + "debug": "node lib/src/backend/Launcher.js", "start": "npm run build && npm run launch", "start-backend": "npm run build-backend && npm run launch", "test": "rm -rf data && npm run build-backend && mocha lib/test/backendTest.js", diff --git a/src/backend/Admin/Admin.ts b/src/backend/Admin/Admin.ts index 8539faf..d3e0831 100644 --- a/src/backend/Admin/Admin.ts +++ b/src/backend/Admin/Admin.ts @@ -7,6 +7,7 @@ import * as Path from 'path' import * as Knex from 'knex'; import * as http from 'http'; import * as express from 'express'; +import { existsSync } from "fs"; import { GuildManager } from '../Components/Guild/GuildManager'; import { ItemManager } from '../Components/Item/ItemManager'; import { RaidManager } from '../Components/Raid/RaidManager'; @@ -21,8 +22,6 @@ import { IAdmin } from './Interface'; import { Injector } from '../Injector/Injector'; import { PubSub } from '../Components/PubSub/PubSub'; -getLogger().level = 'debug' - @RootComponent({ injectable: IAdmin, injects: [ @@ -137,14 +136,24 @@ export class FrontworkAdmin this.express.get('*.*', (req, res) => { //console.log('*.*', req.path); - res.sendFile(Path.join(__dirname, distFolder, 'browser', decodeURIComponent(req.path))) - res.status(200) + try{ + const filepath = Path.join(__dirname, distFolder, 'browser', decodeURIComponent(req.path)) + if(!existsSync(filepath)){ + throw new Error("Bad file access: "+filepath) + } + res.sendFile(filepath) + res.status(200) + }catch(e){ + getLogger('Admin#startWebserver#serveFile').error(String(e)) + res.send("404 NOT FOUND") + res.status(404) + } }) try { const req = require(distFolder + "/server.js") await req.attachExpress(this.express, './dist', getLogger('angularSSR#')) - getLogger('Admin#startWebserver').info('Frontend from ' + ngExpressServer + " loaded") + getLogger('Admin#startWebserver').debug('Frontend from ' + ngExpressServer + " loaded") } catch (e) { getLogger('Admin#startWebserver').error(e) getLogger('Admin#startWebserver').warn("No angular SSR module was provided in " + ngExpressServer) diff --git a/src/backend/Components/Character/CharacterManager.ts b/src/backend/Components/Character/CharacterManager.ts index bdb3eaf..8e04672 100644 --- a/src/backend/Components/Character/CharacterManager.ts +++ b/src/backend/Components/Character/CharacterManager.ts @@ -7,6 +7,7 @@ import { getSpecTableData, SpecT } from "../../Types/PlayerSpecs"; import { IAdmin } from "../../Admin/Interface"; import { IUserManager } from "../User/Interface"; import { ICharacterManager } from "./Interface"; +import { getLogger } from "log4js"; @Injectable(ICharacterManager) export class CharacterManager @@ -61,7 +62,9 @@ implements FrontworkComponent, ICharacterMana initialize = async () => { if(this.initialized) return this.initialized = true - await this.admin.knex('specs').insert(getSpecTableData()).catch(e => { console.log("skipping spec insertion") }) + await this.admin.knex('specs').insert(getSpecTableData()).catch(e => { + getLogger('CharacterManager#createCharacter').debug("skipping spec insertion") + }) } createCharacter = async (userToken: string, character : Character) : Promise => { @@ -72,7 +75,7 @@ implements FrontworkComponent, ICharacterMana const char : Character = await this.admin.knex.select('*').from('characters').where(character).first() return char }catch(e){ - console.log(e); + getLogger('CharacterManager#createCharacter').error(e); } throw new Error('Unable to create character') } diff --git a/src/backend/Components/User/UserManager.ts b/src/backend/Components/User/UserManager.ts index 062023b..d5008a3 100644 --- a/src/backend/Components/User/UserManager.ts +++ b/src/backend/Components/User/UserManager.ts @@ -17,8 +17,6 @@ import { IRaidManager } from "../Raid/Interface"; import { IItemManager } from "../Item/Interface"; import { IGuildManager } from "../Guild/Interface"; -getLogger().level = "debug" - const uuid = require('uuid/v4') const salt = "6pIbc6yjSN" diff --git a/src/backend/Launcher.ts b/src/backend/Launcher.ts index 0546aa0..01c81e9 100644 --- a/src/backend/Launcher.ts +++ b/src/backend/Launcher.ts @@ -1,6 +1,8 @@ import { Injector } from './Injector/Injector'; import { IAdmin } from './Admin/Interface'; import "./Admin/Admin" -require('events').EventEmitter.defaultMaxListeners = 0; +import {getLogger} from 'log4js'; +getLogger().level = "debug" +require('events').EventEmitter.defaultMaxListeners = 0; Injector.resolve(IAdmin).start() \ No newline at end of file diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index e8cd0d7..e85c970 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -13523,6 +13523,11 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, "node-fetch-npm": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", diff --git a/src/frontend/package.json b/src/frontend/package.json index 8a123a5..c579c3f 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -74,6 +74,7 @@ "ng2-smart-table": "1.3.5", "ngx-cookie-service": "^2.2.0", "ngx-echarts": "^4.0.1", + "node-fetch": "^2.6.0", "node-sass": "^4.13.1", "normalize.css": "6.0.0", "pace-js": "1.0.2", diff --git a/src/frontend/server.ts b/src/frontend/server.ts index a3a7fbb..8f0c891 100644 --- a/src/frontend/server.ts +++ b/src/frontend/server.ts @@ -7,11 +7,15 @@ import { resolve } from 'path'; import { enableProdMode } from '@angular/core'; const domino = require('domino'); const win = domino.createWindow(''); +const fetch = require('node-fetch'); global['window'] = win; global['document'] = win.document; global['alert'] = console.log global['XMLHttpRequest'] = require('xmlhttprequest').XMLHttpRequest; +global['fetch'] = fetch.default; + + export async function attachExpress(app, staticDir = "./dist", logger = console) { const STATIC_FOLDER = resolve(process.cwd(), staticDir); @@ -54,6 +58,10 @@ export async function attachExpress(app, staticDir = "./dist", logger = console) app.get('*', (req, res) => { //console.log('*', req.path); - res.render(resolve(STATIC_FOLDER, 'browser/index'), { req, res }) + try{ + res.render(resolve(STATIC_FOLDER, 'browser/index'), { req, res }) + }catch(e){ + loggerService.error(e) + } }); } diff --git a/src/frontend/src/app/frontcraft/pages/raid/raid.component.html b/src/frontend/src/app/frontcraft/pages/raid/raid.component.html index 3cecaab..11e5b85 100644 --- a/src/frontend/src/app/frontcraft/pages/raid/raid.component.html +++ b/src/frontend/src/app/frontcraft/pages/raid/raid.component.html @@ -15,6 +15,9 @@

{{raid.description}}

+

+ {{raid.start | date : 'EEE MMM d'}} {{raid.start | date : 'HH:mm'}} +

diff --git a/src/frontend/src/app/frontcraft/pages/raids/raids.component.html b/src/frontend/src/app/frontcraft/pages/raids/raids.component.html index bd6a352..b06bfd8 100644 --- a/src/frontend/src/app/frontcraft/pages/raids/raids.component.html +++ b/src/frontend/src/app/frontcraft/pages/raids/raids.component.html @@ -39,7 +39,15 @@ - Previous raids + Previous raids (Limit + Showing only tier + + + {{_tier}} + + + ) + diff --git a/src/frontend/src/app/frontcraft/pages/raids/raids.component.ts b/src/frontend/src/app/frontcraft/pages/raids/raids.component.ts index 16d62a1..af29367 100644 --- a/src/frontend/src/app/frontcraft/pages/raids/raids.component.ts +++ b/src/frontend/src/app/frontcraft/pages/raids/raids.component.ts @@ -6,6 +6,7 @@ import { IApiService } from '../../services/ApiService/ApiService'; import { UpdatingComponent } from '../../UpdatingComponent'; import { LoggerService } from '../../services/LoggerService/logger.service'; import { FlashService } from '../../services/flash-service'; +import { Tiers, _Tiers } from '../../../../../../backend/Types/Items'; @Component({ selector: 'raids', @@ -16,11 +17,14 @@ export class FrontcraftRaidsComponent extends UpdatingComponent implements OnInit { + archiveCount = 50 + tiers:string[] = ["any", ..._Tiers] + tier = "any" manageRaid raids = [] oldraids = [] - pageSize = 10; + pageSize = 25; constructor( injector: Injector, @@ -47,7 +51,11 @@ export class FrontcraftRaidsComponent async refresh() { this.raids = await this.api.get('RaidManager').getRaids() const raidManager = this.api.get('RaidManager') - this.oldraids = await raidManager.getPastRaids(10) + this.oldraids = await raidManager.getPastRaids(this.archiveCount) + + if(this.tier !== "any"){ + this.oldraids = this.oldraids.filter(raid => raid.tier === this.tier) + } } create() {