feat: show udev rules on missing device screen (#842)
* feat: show udev rules on missing device screen * delete MissingDeviceComponent * feat: change privilege and message device screen texts * feat: change message device screen texts * fix: load config from device * fix: load config when hasPermission = true * fix: load app start info after set permission rules * fix: action dispatch * fix: load config from device when UdevRulesInfo.Ok * fix: load config from device when 0 device available * feat: add extra space between the "old udev rule" and permission button
This commit is contained in:
committed by
László Monda
parent
10cd06c70b
commit
1a9bd7de83
@@ -1 +1 @@
|
||||
<uhk-message header="Cannot find your UHK" subtitle="Please plug it in!"></uhk-message>
|
||||
<uhk-message [header]="state.header" [subtitle]="state.subtitle"></uhk-message>
|
||||
|
||||
@@ -1,14 +1,27 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { Component, OnDestroy } from '@angular/core';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import 'rxjs/add/operator/distinctUntilChanged';
|
||||
import 'rxjs/add/operator/ignoreElements';
|
||||
import 'rxjs/add/operator/takeWhile';
|
||||
import { AppState, getMissingDeviceState } from '../../store';
|
||||
import { MissingDeviceState } from '../../models/missing-device-state';
|
||||
|
||||
@Component({
|
||||
selector: 'missing-device',
|
||||
templateUrl: './missing-device.component.html'
|
||||
})
|
||||
export class MissingDeviceComponent {
|
||||
export class MissingDeviceComponent implements OnDestroy {
|
||||
|
||||
constructor() {}
|
||||
state: MissingDeviceState;
|
||||
|
||||
private stateSubscription: Subscription;
|
||||
|
||||
constructor(private store: Store<AppState>) {
|
||||
this.stateSubscription = this.store
|
||||
.select(getMissingDeviceState)
|
||||
.subscribe(state => this.state = state);
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.stateSubscription.unsubscribe();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,14 @@
|
||||
<uhk-message header="Cannot talk to your UHK"
|
||||
subtitle="Your UHK has been detected, but its permissions are not set up yet, so Agent can't talk to it."></uhk-message>
|
||||
|
||||
<button class="btn btn-default btn-lg btn-primary"
|
||||
(click)="setUpPermissions()"> Set up permissions
|
||||
<div *ngIf="state.updateUdevRules">
|
||||
You seem to have an old udev rule file installed. New Agent versions require and updated udev rule file to find your UHK.
|
||||
</div>
|
||||
|
||||
<button class="btn btn-default btn-lg btn-primary mt-10"
|
||||
(click)="setUpPermissions()">
|
||||
<span *ngIf="!state.updateUdevRules">Set up permissions</span>
|
||||
<span *ngIf="state.updateUdevRules">Update udev rule file</span>
|
||||
</button>
|
||||
|
||||
<div class="mt-10">
|
||||
@@ -22,21 +28,7 @@
|
||||
|
||||
<div *ngIf="state.showWhatWillThisDoContent">
|
||||
If you want to set up permissions manually:
|
||||
<ol>
|
||||
<li>Open a terminal.</li>
|
||||
<li>Run <code>su</code> to become root.</li>
|
||||
<li>Paste the following script, and <a class="link-inline" (click)="retry()">retry</a>.</li>
|
||||
</ol>
|
||||
|
||||
<div class="copy-container">
|
||||
<span class="fa fa-2x fa-copy"
|
||||
ngxClipboard
|
||||
[cbContent]="command"
|
||||
title="Copy to clipboard"
|
||||
data-toggle="tooltip"
|
||||
data-placement="top"></span>
|
||||
<pre><code>{{ command }}</code></pre>
|
||||
</div>
|
||||
<udev-rules></udev-rules>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,17 +18,6 @@ export class PrivilegeCheckerComponent implements OnInit, OnDestroy {
|
||||
|
||||
state: PrivilagePageSate;
|
||||
|
||||
command = `cat <<EOF >/etc/udev/rules.d/50-uhk60.rules
|
||||
# Ultimate Hacking Keyboard rules
|
||||
# These are the udev rules for accessing the USB interfaces of the UHK as non-root users.
|
||||
# Copy this file to /etc/udev/rules.d and physically reconnect the UHK afterwards.
|
||||
SUBSYSTEM=="input", GROUP="input", MODE="0666"
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="612[0-7]", MODE:="0666", GROUP="plugdev"
|
||||
KERNEL=="hidraw*", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="612[0-7]", MODE="0666", GROUP="plugdev"
|
||||
EOF
|
||||
udevadm trigger
|
||||
udevadm settle`;
|
||||
|
||||
private stateSubscription: Subscription;
|
||||
|
||||
constructor(private store: Store<AppState>,
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<ol>
|
||||
<li>Open a terminal.</li>
|
||||
<li>Run <code>su</code> to become root.</li>
|
||||
<li>Paste the following script:</li>
|
||||
</ol>
|
||||
|
||||
<div class="copy-container">
|
||||
<span class="fa fa-2x fa-copy"
|
||||
ngxClipboard
|
||||
[cbContent]="command"
|
||||
title="Copy to clipboard"
|
||||
data-toggle="tooltip"
|
||||
data-placement="top"></span>
|
||||
<pre><code>{{ command }}</code></pre>
|
||||
</div>
|
||||
@@ -0,0 +1,19 @@
|
||||
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'udev-rules',
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
templateUrl: './udev-rules.component.html'
|
||||
})
|
||||
export class UdevRulesComponent {
|
||||
command = `cat <<EOF >/etc/udev/rules.d/50-uhk60.rules
|
||||
# Ultimate Hacking Keyboard rules
|
||||
# These are the udev rules for accessing the USB interfaces of the UHK as non-root users.
|
||||
# Copy this file to /etc/udev/rules.d and physically reconnect the UHK afterwards.
|
||||
SUBSYSTEM=="input", GROUP="input", MODE="0666"
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="612[0-7]", MODE:="0666", GROUP="plugdev"
|
||||
KERNEL=="hidraw*", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="612[0-7]", MODE="0666", GROUP="plugdev"
|
||||
EOF
|
||||
udevadm trigger
|
||||
udevadm settle`;
|
||||
}
|
||||
Reference in New Issue
Block a user