From 5d79474cc66383ecbfcef6366f63a34c3af21cbf Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 11 Apr 2019 10:56:29 +0200 Subject: Add debug component to help admins to fix IP issues --- client/src/app/+admin/admin.component.html | 2 +- client/src/app/+admin/admin.component.ts | 12 ++++++--- client/src/app/+admin/admin.module.ts | 3 +++ .../app/+admin/system/debug/debug.component.html | 19 +++++++++++++ .../app/+admin/system/debug/debug.component.scss | 6 +++++ .../src/app/+admin/system/debug/debug.component.ts | 31 ++++++++++++++++++++++ .../src/app/+admin/system/debug/debug.service.ts | 25 +++++++++++++++++ client/src/app/+admin/system/debug/index.ts | 2 ++ client/src/app/+admin/system/logs/logs.service.ts | 6 ++--- client/src/app/+admin/system/system.component.html | 6 +++-- client/src/app/+admin/system/system.component.ts | 16 +++++++++++ client/src/app/+admin/system/system.routes.ts | 12 +++++++++ 12 files changed, 130 insertions(+), 10 deletions(-) create mode 100644 client/src/app/+admin/system/debug/debug.component.html create mode 100644 client/src/app/+admin/system/debug/debug.component.scss create mode 100644 client/src/app/+admin/system/debug/debug.component.ts create mode 100644 client/src/app/+admin/system/debug/debug.service.ts create mode 100644 client/src/app/+admin/system/debug/index.ts (limited to 'client/src/app/+admin') diff --git a/client/src/app/+admin/admin.component.html b/client/src/app/+admin/admin.component.html index 065d92509..98f45a7d1 100644 --- a/client/src/app/+admin/admin.component.html +++ b/client/src/app/+admin/admin.component.html @@ -16,7 +16,7 @@ Configuration - + System diff --git a/client/src/app/+admin/admin.component.ts b/client/src/app/+admin/admin.component.ts index fc775a5a4..408de4837 100644 --- a/client/src/app/+admin/admin.component.ts +++ b/client/src/app/+admin/admin.component.ts @@ -24,15 +24,19 @@ export class AdminComponent { return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) } - hasJobsRight () { - return this.auth.getUser().hasRight(UserRight.MANAGE_JOBS) + hasConfigRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_CONFIGURATION) } hasLogsRight () { return this.auth.getUser().hasRight(UserRight.MANAGE_LOGS) } - hasConfigRight () { - return this.auth.getUser().hasRight(UserRight.MANAGE_CONFIGURATION) + hasJobsRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_JOBS) + } + + hasDebugRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_DEBUG) } } diff --git a/client/src/app/+admin/admin.module.ts b/client/src/app/+admin/admin.module.ts index ae0af686b..71a4dfc4a 100644 --- a/client/src/app/+admin/admin.module.ts +++ b/client/src/app/+admin/admin.module.ts @@ -20,6 +20,7 @@ import { RedundancyService } from '@app/+admin/follows/shared/redundancy.service import { InstanceAccountBlocklistComponent, InstanceServerBlocklistComponent } from '@app/+admin/moderation/instance-blocklist' import { JobsComponent } from '@app/+admin/system/jobs/jobs.component' import { JobService, LogsComponent, LogsService, SystemComponent } from '@app/+admin/system' +import { DebugComponent, DebugService } from '@app/+admin/system/debug' @NgModule({ imports: [ @@ -54,6 +55,7 @@ import { JobService, LogsComponent, LogsService, SystemComponent } from '@app/+a SystemComponent, JobsComponent, LogsComponent, + DebugComponent, ConfigComponent, EditCustomConfigComponent @@ -68,6 +70,7 @@ import { JobService, LogsComponent, LogsService, SystemComponent } from '@app/+a RedundancyService, JobService, LogsService, + DebugService, ConfigService ] }) diff --git a/client/src/app/+admin/system/debug/debug.component.html b/client/src/app/+admin/system/debug/debug.component.html new file mode 100644 index 000000000..f35414b37 --- /dev/null +++ b/client/src/app/+admin/system/debug/debug.component.html @@ -0,0 +1,19 @@ +
+

IP

+ +

PeerTube thinks your public IP is {{ debug?.ip }}.

+ +

If this is not your correct public IP, please consider fixing it because:

+ + +

To fix it:

+

+
diff --git a/client/src/app/+admin/system/debug/debug.component.scss b/client/src/app/+admin/system/debug/debug.component.scss new file mode 100644 index 000000000..90addd284 --- /dev/null +++ b/client/src/app/+admin/system/debug/debug.component.scss @@ -0,0 +1,6 @@ +@import '_variables'; +@import '_mixins'; + +.root { + font-size: 14px; +} diff --git a/client/src/app/+admin/system/debug/debug.component.ts b/client/src/app/+admin/system/debug/debug.component.ts new file mode 100644 index 000000000..8a77f79f7 --- /dev/null +++ b/client/src/app/+admin/system/debug/debug.component.ts @@ -0,0 +1,31 @@ +import { Component, OnInit } from '@angular/core' +import { Notifier } from '@app/core' +import { Debug } from '@shared/models/server' +import { DebugService } from '@app/+admin/system/debug/debug.service' + +@Component({ + templateUrl: './debug.component.html', + styleUrls: [ './debug.component.scss' ] +}) +export class DebugComponent implements OnInit { + debug: Debug + + constructor ( + private debugService: DebugService, + private notifier: Notifier + ) { + } + + ngOnInit (): void { + this.load() + } + + load () { + this.debugService.getDebug() + .subscribe( + debug => this.debug = debug, + + err => this.notifier.error(err.message) + ) + } +} diff --git a/client/src/app/+admin/system/debug/debug.service.ts b/client/src/app/+admin/system/debug/debug.service.ts new file mode 100644 index 000000000..6c722d177 --- /dev/null +++ b/client/src/app/+admin/system/debug/debug.service.ts @@ -0,0 +1,25 @@ +import { catchError } from 'rxjs/operators' +import { HttpClient } from '@angular/common/http' +import { Injectable } from '@angular/core' +import { Observable } from 'rxjs' +import { environment } from '../../../../environments/environment' +import { RestExtractor, RestService } from '../../../shared' +import { Debug } from '@shared/models/server' + +@Injectable() +export class DebugService { + private static BASE_DEBUG_URL = environment.apiUrl + '/api/v1/server/debug' + + constructor ( + private authHttp: HttpClient, + private restService: RestService, + private restExtractor: RestExtractor + ) {} + + getDebug (): Observable { + return this.authHttp.get(DebugService.BASE_DEBUG_URL) + .pipe( + catchError(err => this.restExtractor.handleError(err)) + ) + } +} diff --git a/client/src/app/+admin/system/debug/index.ts b/client/src/app/+admin/system/debug/index.ts new file mode 100644 index 000000000..7fc7a0721 --- /dev/null +++ b/client/src/app/+admin/system/debug/index.ts @@ -0,0 +1,2 @@ +export * from './debug.component' +export * from './debug.service' diff --git a/client/src/app/+admin/system/logs/logs.service.ts b/client/src/app/+admin/system/logs/logs.service.ts index 4db79a1fa..24b9cb6d1 100644 --- a/client/src/app/+admin/system/logs/logs.service.ts +++ b/client/src/app/+admin/system/logs/logs.service.ts @@ -9,7 +9,7 @@ import { LogLevel } from '@shared/models/server/log-level.type' @Injectable() export class LogsService { - private static BASE_JOB_URL = environment.apiUrl + '/api/v1/server/logs' + private static BASE_LOG_URL = environment.apiUrl + '/api/v1/server/logs' constructor ( private authHttp: HttpClient, @@ -17,14 +17,14 @@ export class LogsService { private restExtractor: RestExtractor ) {} - getLogs (level: LogLevel, startDate: string, endDate?: string): Observable { + getLogs (level: LogLevel, startDate: string, endDate?: string): Observable { let params = new HttpParams() params = params.append('startDate', startDate) params = params.append('level', level) if (endDate) params.append('endDate', endDate) - return this.authHttp.get(LogsService.BASE_JOB_URL, { params }) + return this.authHttp.get(LogsService.BASE_LOG_URL, { params }) .pipe( map(rows => rows.map(r => new LogRow(r))), catchError(err => this.restExtractor.handleError(err)) diff --git a/client/src/app/+admin/system/system.component.html b/client/src/app/+admin/system/system.component.html index 345a101e6..7c4278d35 100644 --- a/client/src/app/+admin/system/system.component.html +++ b/client/src/app/+admin/system/system.component.html @@ -2,9 +2,11 @@
System
- Jobs + Jobs - Logs + Logs + + Debug
diff --git a/client/src/app/+admin/system/system.component.ts b/client/src/app/+admin/system/system.component.ts index 992d9c8af..b544c2a97 100644 --- a/client/src/app/+admin/system/system.component.ts +++ b/client/src/app/+admin/system/system.component.ts @@ -1,8 +1,24 @@ import { Component } from '@angular/core' +import { UserRight } from '@shared/models' +import { AuthService } from '@app/core' @Component({ templateUrl: './system.component.html', styleUrls: [ './system.component.scss' ] }) export class SystemComponent { + + constructor (private auth: AuthService) {} + + hasLogsRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_LOGS) + } + + hasJobsRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_JOBS) + } + + hasDebugRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_DEBUG) + } } diff --git a/client/src/app/+admin/system/system.routes.ts b/client/src/app/+admin/system/system.routes.ts index e6d45b760..2d851794d 100644 --- a/client/src/app/+admin/system/system.routes.ts +++ b/client/src/app/+admin/system/system.routes.ts @@ -4,6 +4,7 @@ import { UserRight } from '../../../../../shared' import { JobsComponent } from '@app/+admin/system/jobs/jobs.component' import { LogsComponent } from '@app/+admin/system/logs' import { SystemComponent } from '@app/+admin/system/system.component' +import { DebugComponent } from '@app/+admin/system/debug' export const SystemRoutes: Routes = [ { @@ -38,6 +39,17 @@ export const SystemRoutes: Routes = [ title: 'Logs' } } + }, + { + path: 'debug', + canActivate: [ UserRightGuard ], + component: DebugComponent, + data: { + meta: { + userRight: UserRight.MANAGE_DEBUG, + title: 'Debug' + } + } } ] } -- cgit v1.2.3