An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
314 matches across 13 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | res/audits.py | 153 | print(f"Error: HTTP {response.status_code} - {response.text}") |
| MEDIUM | res/audits.py | 159 | print(f"Error: {response_json['error']}") |
| MEDIUM | res/ab.py | 570 | print("Error: --ab-name is required for add-ab command") |
| MEDIUM | res/ab.py | 579 | print("Error: --ab-name or --ab-guid is required for this command") |
| MEDIUM | res/ab.py | 583 | print("Error: Cannot specify both --ab-name and --ab-guid") |
| MEDIUM | res/ab.py | 593 | print(f"Error: Address book '{args.ab_name}' not found") |
| MEDIUM | res/ab.py | 608 | print("Error: --ab-name or --ab-guid is required for this command") |
| MEDIUM | res/ab.py | 612 | print("Error: Cannot specify both --ab-name and --ab-guid") |
| MEDIUM | res/ab.py | 622 | print(f"Error: Address book '{args.ab_name}' not found") |
| MEDIUM | res/ab.py | 704 | print("Error: --tag-name is required for add-tag command") |
| MEDIUM | res/ab.py | 712 | print("Error: --tag-name is required for update-tag command") |
| MEDIUM | res/ab.py | 720 | print("Error: --tag-name is required for delete-tag command") |
| MEDIUM | res/ab.py | 732 | print("Error: --rule-permission is required for add-rule command") |
| MEDIUM | res/ab.py | 738 | print("Error: Cannot specify both --rule-user and --rule-group") |
| MEDIUM | res/ab.py | 745 | print("Error: Must specify --rule-type=everyone, --rule-user, or --rule-group") |
| MEDIUM | res/ab.py | 752 | print("Error: --rule-user is required when rule-type=user") |
| MEDIUM | res/ab.py | 755 | print("Error: --rule-group is required when rule-type=group") |
| MEDIUM | res/ab.py | 758 | print("Error: Cannot specify --rule-group when rule-type=user") |
| MEDIUM | res/ab.py | 761 | print("Error: Cannot specify --rule-user when rule-type=group") |
| MEDIUM | res/ab.py | 764 | print("Error: Cannot specify --rule-user or --rule-group when rule-type=everyone") |
| MEDIUM | res/ab.py | 772 | print("Error: --rule-guid is required for update-rule command") |
| MEDIUM | res/ab.py | 775 | print("Error: --rule-permission is required for update-rule command") |
| MEDIUM | res/ab.py | 783 | print("Error: --rule-guid is required for delete-rule command") |
| MEDIUM | res/ab.py | 44 | print(f"Error: HTTP {response.status_code} - {response.text}") |
| MEDIUM | res/ab.py | 49 | print(f"Error: {response_json['error']}") |
| MEDIUM | res/ab.py | 96 | print(f"Error: HTTP {response.status_code} - {response.text}") |
| MEDIUM | res/ab.py | 101 | print(f"Error: {response_json['error']}") |
| MEDIUM | res/ab.py | 135 | print(f"Error: HTTP {response.status_code} - {response.text}") |
| MEDIUM | res/ab.py | 141 | print(f"Error: {response_json['error']}") |
| MEDIUM | res/ab.py | 413 | print(f"Error: HTTP {response.status_code} - {response.text}") |
| MEDIUM | res/ab.py | 418 | print(f"Error: {response_json['error']}") |
| MEDIUM | res/ab.py | 634 | print("Error: --peer-id is required for add-peer command") |
| MEDIUM | res/ab.py | 663 | print("Error: --peer-id is required for update-peer command") |
| MEDIUM | res/ab.py | 692 | print("Error: --peer-id is required for delete-peer command") |
| MEDIUM | res/device-groups.py | 17 | print(f"Error: HTTP {response.status_code}: {response.text}") |
| MEDIUM | res/device-groups.py | 25 | print(f"Error: {json_data['error']}") |
| MEDIUM | res/device-groups.py | 51 | print(f"Error: HTTP {r.status_code} - {r.text}") |
| MEDIUM | res/device-groups.py | 55 | print(f"Error: {res['error']}") |
| MEDIUM | res/device-groups.py | 88 | print(f"Error: Group '{name}' not found") |
| MEDIUM | res/device-groups.py | 110 | print(f"Error: Group '{n}' not found") |
| LOW | res/device-groups.py | 191 | except Exception: |
| MEDIUM | res/device-groups.py | 231 | print("Error: --name is required") |
| MEDIUM | res/device-groups.py | 239 | print("Error: --name is required") |
| MEDIUM | res/device-groups.py | 247 | print("Error: --name is required (supports comma separated)") |
| MEDIUM | res/device-groups.py | 264 | print("Error: --name and --ids are required for add/remove devices") |
| MEDIUM | res/strategies.py | 156 | print(f"Error: Strategy '{strategy_name}' not found") |
| MEDIUM | res/strategies.py | 171 | print(f"Error: Device '{peer}' not found") |
| MEDIUM | res/strategies.py | 186 | print(f"Error: User '{user}' not found") |
| MEDIUM | res/strategies.py | 201 | print(f"Error: Device group '{dg}' not found") |
| MEDIUM | res/strategies.py | 248 | print(f"Error: Strategy '{args.name}' not found") |
| MEDIUM | res/strategies.py | 255 | print("Error: --name or --guid is required for view command") |
| MEDIUM | res/strategies.py | 260 | print("Error: --name is required") |
| MEDIUM | res/strategies.py | 266 | print("Error: --name is required") |
| MEDIUM | res/strategies.py | 272 | print("Error: --name is required") |
| MEDIUM | res/strategies.py | 275 | print("Error: at least one of --peers, --users, or --device-groups is required") |
| MEDIUM | res/strategies.py | 17 | print(f"Error: HTTP {response.status_code}: {response.text}") |
| MEDIUM | res/strategies.py | 25 | print(f"Error: {json_data['error']}") |
| MEDIUM | res/strategies.py | 70 | print(f"Error: Strategy '{name}' not found") |
| MEDIUM | res/strategies.py | 83 | print(f"Error: Strategy '{name}' not found") |
| MEDIUM | res/strategies.py | 288 | print("Error: at least one of --peers, --users, or --device-groups is required") |
| 30 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | res/startwm.sh | 1 | #!/usr/bin/env bash |
| LOW | res/msi/CustomActions/CustomActions.cpp | 1 | // CustomAction.cpp : Defines the entry point for the custom action. |
| LOW | res/msi/CustomActions/CustomActions.cpp | 161 | WcaLog(LOGMSG_STANDARD, "Runtime cleanup deleting '%ls'.", fullPath); |
| LOW | res/msi/CustomActions/RemotePrinter.cpp | 1 | #include "pch.h" |
| LOW | res/msi/CustomActions/pch.h | 1 | // pch.h: This is a precompiled header file. |
| LOW | res/msi/CustomActions/framework.h | 1 | #pragma once |
| LOW | libs/enigo/appveyor.yml | 1 | # AppVeyor configuration template for Rust using rustup for Rust installation |
| LOW | libs/enigo/appveyor.yml | 21 | # ARCH-pc-windows-TOOLCHAIN |
| LOW | libs/enigo/appveyor.yml | 81 | target: i686-pc-windows-gnu |
| LOW | libs/enigo/src/lib.rs | 1 | //! Enigo lets you simulate mouse and keyboard input-events as if they were |
| LOW | libs/enigo/src/lib.rs | 21 | //! Possible use cases could be for testing user interfaces on different |
| LOW | libs/enigo/src/lib.rs | 41 | //! enigo.key_click(Key::Layout('v')); |
| LOW | libs/enigo/src/lib.rs | 81 | /// DSL parser module |
| LOW | libs/enigo/src/lib.rs | 121 | ScrollRight, |
| LOW | libs/enigo/src/lib.rs | 141 | /// |
| LOW | libs/enigo/src/lib.rs | 161 | /// |
| LOW | libs/enigo/src/lib.rs | 181 | /// # Example |
| LOW | libs/enigo/src/lib.rs | 201 | /// |
| LOW | libs/enigo/src/lib.rs | 221 | /// let mut enigo = Enigo::new(); |
| LOW | libs/enigo/src/lib.rs | 241 | fn mouse_scroll_x(&mut self, length: i32); |
| LOW | libs/enigo/src/lib.rs | 261 | /// A key on the keyboard. |
| LOW | libs/enigo/src/lib.rs | 321 | PageUp, |
| LOW | libs/enigo/src/lib.rs | 461 | fn key_sequence_parse_try(&mut self, sequence: &str) -> Result<(), dsl::ParseError> |
| LOW | libs/enigo/src/lib.rs | 501 | #[cfg(any(target_os = "android", target_os = "ios"))] |
| LOW | libs/enigo/src/dsl.rs | 1 | use crate::{Key, KeyboardControllable}; |
| LOW | libs/enigo/src/macos/macos_impl.rs | 141 | self.flags |= flag; |
| LOW | libs/scrap/src/common/hwcodec.rs | 501 | #[cfg(feature = "vram")] |
| LOW | libs/scrap/src/bindings/yuv_ffi.h | 1 | #include <libyuv/convert.h> |
| LOW | libs/scrap/src/bindings/vpx_ffi.h | 1 | #include <vpx/vp8.h> |
| LOW | libs/scrap/src/bindings/aom_ffi.h | 1 | #include <aom/aom.h> |
| LOW | libs/clipboard/src/platform/unix/local_file.rs | 141 | buf.put(&[0u8; 32][..]); |
| LOW | libs/clipboard/src/platform/unix/fuse/cs.rs | 1 | //! fuse server implement |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 21 | * See the License for the specific language governing permissions and |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 41 | |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 61 | #define CB_FILECONTENTS_REQUEST 0x0008 |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 121 | #define CHANNEL_RC_TOO_MANY_CHANNELS 5 |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 2861 | rc = ERROR_INTERNAL_ERROR; |
| LOW | flutter/build_fdroid.sh | 1 | #!/bin/bash |
| LOW | flutter/pubspec.yaml | 1 | name: flutter_hbb |
| LOW | flutter/pubspec.yaml | 181 | |
| LOW | flutter/linux/wayland_shortcuts_inhibit.h | 1 | // Wayland keyboard shortcuts inhibit support |
| LOW | …n/kotlin/com/carriez/flutter_hbb/RdClipboardManager.kt | 21 | private val supportedMimeTypes = arrayOf( |
| LOW | flutter/lib/consts.dart | 281 | /// Minimum server version required for relative mouse mode (MOUSE_TYPE_MOVE_RELATIVE). |
| LOW | flutter/lib/common.dart | 2821 | await windowManager.close(); |
| LOW | flutter/lib/desktop/pages/remote_page.dart | 161 | // customCursorController.registerNeedUpdateCursorCallback( |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 1 | // Copyright 2014 The Flutter Authors. All rights reserved. |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 41 | |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 61 | /// several icons, or a single entry, for example a menu item with an icon (see |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 81 | /// entry when aligning the selected entry over the given `position`. It is |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 101 | /// |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 181 | childParentData.offset = Offset.zero; |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 201 | /// |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 261 | |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 281 | /// |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 301 | @override |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 321 | /// This class takes two type arguments. The second, `W`, is the exact type of |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 401 | /// To show a popup menu, use the [showMenu] function. To create a button that |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 421 | /// onSelected: (Commands result) { |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 441 | /// child: ListTile(leading: Icon(null), title: Text('Bring hurricane')), |
| LOW | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 481 | height: height, |
| 87 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | res/job.py | 229 | # Create a parser for the "sign_one_file" command |
| MEDIUM | res/job.py | 235 | # Create a parser for the "sign_files" command |
| MEDIUM | res/job.py | 246 | # Create a parser for the "fetch" command |
| MEDIUM | res/job.py | 249 | # Create a parser for the "update_status" command |
| MEDIUM | res/job.py | 256 | # Create a parser for the "delete_task" command |
| MEDIUM | res/job.py | 260 | # Create a parser for the "create" command |
| MEDIUM | res/job.py | 270 | # Create a parser for the "upload_file" command |
| MEDIUM | res/job.py | 279 | # Create a parser for the "get_status" command |
| MEDIUM | res/job.py | 287 | # Create a parser for the "download_files" command |
| MEDIUM | flutter/pubspec.yaml | 145 | # The following section is specific to Flutter. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | build.py | 174 | pushd /tmp && git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1 && po |
| HIGH | build.py | 175 | pushd /tmp/flutter_rust_bridge/frb_codegen && cargo install --path . --locked && popd |
| HIGH | build.py | 176 | pushd flutter && flutter pub get && popd |
| HIGH | build.py | 333 | system2('rm tmpdeb/usr/bin/rustdesk || true') |
| HIGH | build.py | 376 | system2('rm tmpdeb/usr/bin/rustdesk || true') |
| HIGH | build.py | 525 | system2('ln -s res/pacman_install && ln -s res/PKGBUILD') |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | build.py | 56 | |
| LOW | build.py | 195 | |
| LOW | build.py | 465 | |
| LOW | res/lang.py | 40 | |
| LOW | res/audits.py | 108 | |
| LOW | res/audits.py | 289 | |
| LOW | res/ab.py | 114 | |
| LOW | res/ab.py | 483 | |
| LOW | res/device-groups.py | 196 | |
| LOW | res/strategies.py | 139 | |
| LOW | res/strategies.py | 218 | |
| LOW | res/users.py | 186 | |
| LOW | res/job.py | 66 | |
| LOW | res/job.py | 86 | |
| LOW | res/job.py | 201 | |
| LOW | res/job.py | 223 | |
| LOW | res/devices.py | 129 | |
| LOW | res/user-groups.py | 230 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | res/ab.py | 189 | # Check if at least one parameter is provided for update |
| LOW | res/ab.py | 239 | # Check if tag name matches a predefined color |
| LOW | res/ab.py | 341 | # Check if at least one parameter is provided for update |
| LOW | res/strategies.py | 164 | # Check if it's already a GUID format |
| LOW | res/strategies.py | 179 | # Check if it's already a GUID format |
| LOW | res/strategies.py | 194 | # Check if it's already a GUID format |
| LOW | res/users.py | 245 | # Check if we need user confirmation for multiple users |
| LOW | res/job.py | 74 | # Check if the request was successful |
| LOW | res/job.py | 94 | # Check if the request was successful |
| LOW | res/devices.py | 172 | # Check if we need user confirmation for multiple devices |
| LOW | flutter/build_android_deps.sh | 30 | # Check if vcpkg.json is one level up - in root directory of RD |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | res/device-groups.py | 0 | check api response and handle errors. two error cases: 1. status code is not 200 -> exit with error 2. response contains |
| HIGH | res/strategies.py | 0 | check api response and handle errors. two error cases: 1. status code is not 200 -> exit with error 2. response contains |
| HIGH | res/user-groups.py | 0 | check api response and handle errors. two error cases: 1. status code is not 200 -> exit with error 2. response contains |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | build.py | 160 | def generate_build_script_for_docker(): |
| LOW | build.py | 195 | def download_extract_features(features, res_dir): |
| LOW | build.py | 312 | def ffi_bindgen_function_refactor(): |
| LOW | build.py | 423 | def build_flutter_arch_manjaro(version, features): |
| LOW | res/audits.py | 21 | def parse_local_time_to_utc_string(time_str): |
| LOW | res/audits.py | 65 | def get_console_operation_name(operation_code): |
| LOW | res/strategies.py | 123 | def get_device_group_guid_by_name(url, token, name): |
| LOW | res/users.py | 154 | def disable_email_verification(url, token, user_guids): |
| LOW | res/msi/preprocess.py | 94 | def read_lines_and_start_index(file_path, tag_start, tag_end): |
| LOW | res/msi/preprocess.py | 114 | def insert_components_between_tags(lines, index_start, app_name, dist_dir): |
| LOW | res/msi/preprocess.py | 182 | def replace_app_name_in_langs(app_name): |
| LOW | res/msi/preprocess.py | 192 | def replace_app_name_in_custom_actions(app_name): |
| LOW | res/msi/preprocess.py | 229 | def gen_custom_dialog_bitmaps(): |
| LOW | res/msi/preprocess.py | 507 | def replace_component_guids_in_wxs(): |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | flutter/lib/desktop/widgets/tabbar_widget.dart | 749 | widget.tabController.state.value.tabs.any((tab) => tab.key == key)) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | libs/scrap/src/quartz/config.rs | 22 | /// Don't forget to CFRelease this! |
| MEDIUM | flutter/pubspec.yaml | 148 | # included with your application, so that you can use the icons in |
| MEDIUM | appimage/AppImageBuilder-x86_64.yml | 42 | # We modify APPDIR_LIBRARY_PATH to use system lib first because gst crashed if not doing so, but you can try to chan |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | res/ab.py | 6 | |
| LOW | res/ab.py | 6 | |
| LOW | res/users.py | 5 | |
| LOW | res/users.py | 5 | |
| LOW | res/job.py | 8 | |
| LOW | res/job.py | 9 | |
| LOW | res/devices.py | 5 | |
| LOW | res/msi/preprocess.py | 11 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | libs/enigo/appveyor.yml | 102 | # For simple configurations, instead of using the build matrix, you can simply set the |
| MEDIUM | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 1210 | /// and the button will utilize an [InkWell] for taps. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | src/platform/windows.rs | 3419 | // We need to check if is_root here because if `update_me()` is called from |