Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 17 additions & 4 deletions src/uds/transports/SPICE/scripts/macosx/direct.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,29 @@ import { Process, Tasks, Logger, File } from 'runtime';

// We receive data in "data" variable, which is an object from json readonly

const remoteViewer = '/Applications/RemoteViewer.app/Contents/MacOS/RemoteViewer';
const remoteViewerPaths = [
'/Applications/RemoteViewer.app/Contents/MacOS/RemoteViewer',
'/opt/homebrew/bin/remote-viewer',
'/usr/local/bin/remote-viewer',
];

let remoteViewer = null;
for (const path of remoteViewerPaths) {
if (File.exists(path)) {
remoteViewer = path;
break;
}
}

const errorString = `<p>You need to have installed virt-viewer to connect to this UDS service.</p>
<p>Please, install appropriate package for your system.</p>
<p><a href="https://ports.macports.org/port/virt-viewer/">Open download page</a></p>
<p>You can install it via Homebrew:<br/><code>brew install virt-viewer</code></p>
<p>Or download it from <a href="https://ports.macports.org/port/virt-viewer/">MacPorts</a>.</p>
<p>Please, note that in order to UDS Connector to work correctly, you must copy the Remote Viewer app to your Applications Folder.<br/>
Also remember, that in order to allow this app to run on your system, you must open it one time once it is copied to your App folder</p>`;

if (!File.exists(remoteViewer)) {
Logger.error('No SPICE client (remote-viewer) found at: ' + remoteViewer);
if (!remoteViewer) {
Logger.error('No SPICE client (remote-viewer) found');
throw new Error(errorString);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
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
21 changes: 17 additions & 4 deletions src/uds/transports/SPICE/scripts/macosx/tunnel.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
'use strict';
import { Process, Tasks, Logger, File } from 'runtime';

const remoteViewer = '/Applications/RemoteViewer.app/Contents/MacOS/RemoteViewer';
const remoteViewerPaths = [
'/Applications/RemoteViewer.app/Contents/MacOS/RemoteViewer',
'/opt/homebrew/bin/remote-viewer',
'/usr/local/bin/remote-viewer',
];

let remoteViewer = null;
for (const path of remoteViewerPaths) {
if (File.exists(path)) {
remoteViewer = path;
break;
}
}

const errorString = `<p>You need to have installed virt-viewer to connect to this UDS service.</p>
<p>Please, install appropriate package for your system.</p>
<p><a href="https://ports.macports.org/port/virt-viewer/">Open download page</a></p>
<p>You can install it via Homebrew:<br/><code>brew install virt-viewer</code></p>
<p>Or download it from <a href="https://ports.macports.org/port/virt-viewer/">MacPorts</a>.</p>
<p>Please, note that in order to UDS Connector to work correctly, you must copy the Remote Viewer app to your Applications Folder.<br/>
Also remember, that in order to allow this app to run on your system, you must open it one time once it is copied to your App folder</p>`;

if (!File.exists(remoteViewer)) {
Logger.error('No SPICE client (remote-viewer) found at: ' + remoteViewer);
if (!remoteViewer) {
Logger.error('No SPICE client (remote-viewer) found');
throw new Error(errorString);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
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
Loading