Review of "Tailnet" version 0.3 (1)

Details Page Preview

Tailscale in Quick Settings, updated live from tailscaled. - Connect and disconnect, with health and key-expiry warnings - Searchable device list showing direct or relayed connections; copy IPs and MagicDNS names - Exit nodes, including suggested and Mullvad by country - Switch accounts and log in to custom servers such as Headscale - Taildrop: send files to devices, receive into Downloads - Share local services in your tailnet or publicly with Funnel Clicking a device or shared service, or sharing a new one, copies its IP address, MagicDNS name or URL to the clipboard. Nothing is read from the clipboard. Unofficial, not affiliated with Tailscale Inc. Requires your user to be the Tailscale operator: sudo tailscale set --operator=$USER

Extension Homepage
https://github.com/itsmedista/gnome-tailnet

No comments.

FAQ

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental) error 1 warning 3 manual_review 1

Shexli found 5 issues that may need reviewer attention.

EGO-A-005 manual_review

extensions should not access the clipboard directly

Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.

Review Guidelines

  • extension.js:54
    St.Clipboard.get_default()
  • extension.js:205
    St.Clipboard.get_default()

EGO-L-002 warning

objects created by extension should be destroyed in disable()

Objects assigned in `enable()` are missing matching `.destroy()` calls in `disable()` or its helper methods.

Destroy all objects

  • extension.js:141
    this._accountMenu = new PopupMenu.PopupSubMenuMenuItem('Account')
  • extension.js:145
    this._accounts = new PopupMenu.PopupMenuSection()
  • extension.js:109
    this._exitMenu = new PopupMenu.PopupSubMenuMenuItem('Exit node: None')
  • extension.js:174
            this._httpsOffItem = new PopupMenu.PopupMenuItem(
                'HTTPS is off for this tailnet. Turn it on in the admin console to share services.', {reactive: false})
  • extension.js:103
    this._loginItem = new PopupMenu.PopupMenuItem('Log in…')
  • extension.js:121
    this._peers = new PopupMenu.PopupMenuSection()
  • extension.js:114
    this._search = new St.Entry({hint_text: 'Search devices', can_focus: true, x_expand: true})
  • extension.js:149
    this._serverEntry = new St.Entry({hint_text: 'Login server (empty = Tailscale)', can_focus: true, x_expand: true})
  • extension.js:171
    this._services = new PopupMenu.PopupMenuSection()
  • extension.js:180
    this._shareForm = new PopupMenu.PopupMenuSection()
  • extension.js:193
    this._sharePublicItem = new PopupMenu.PopupMenuItem('Share publicly on the internet (Funnel)')
  • extension.js:167
    this._sharingMenu = new PopupMenu.PopupSubMenuMenuItem('Sharing')
  • extension.js:183
    this._targetEntry = new St.Entry({hint_text: 'Local port or URL, e.g. 3000', can_focus: true, x_expand: true})
  • extension.js:100
    this._warnings = new PopupMenu.PopupMenuSection()

EGO-L-005 warning

owned object references should be released in disable()

Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.

Destroy all objects

  • extension.js:141
    this._accountMenu = new PopupMenu.PopupSubMenuMenuItem('Account')
  • extension.js:145
    this._accounts = new PopupMenu.PopupMenuSection()
  • extension.js:109
    this._exitMenu = new PopupMenu.PopupSubMenuMenuItem('Exit node: None')
  • extension.js:174
            this._httpsOffItem = new PopupMenu.PopupMenuItem(
                'HTTPS is off for this tailnet. Turn it on in the admin console to share services.', {reactive: false})
  • extension.js:103
    this._loginItem = new PopupMenu.PopupMenuItem('Log in…')
  • extension.js:121
    this._peers = new PopupMenu.PopupMenuSection()
  • extension.js:114
    this._search = new St.Entry({hint_text: 'Search devices', can_focus: true, x_expand: true})
  • extension.js:149
    this._serverEntry = new St.Entry({hint_text: 'Login server (empty = Tailscale)', can_focus: true, x_expand: true})
  • extension.js:171
    this._services = new PopupMenu.PopupMenuSection()
  • extension.js:180
    this._shareForm = new PopupMenu.PopupMenuSection()
  • extension.js:193
    this._sharePublicItem = new PopupMenu.PopupMenuItem('Share publicly on the internet (Funnel)')
  • extension.js:167
    this._sharingMenu = new PopupMenu.PopupSubMenuMenuItem('Sharing')
  • extension.js:183
    this._targetEntry = new St.Entry({hint_text: 'Local port or URL, e.g. 3000', can_focus: true, x_expand: true})
  • extension.js:100
    this._warnings = new PopupMenu.PopupMenuSection()

EGO-L-003 warning

signals connected by extension should be disconnected in disable()

Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.

Disconnect all signals

  • extension.js:370
            this._toggle.menu.connect('open-state-changed', (_menu, open) => {
                if (open)
                    this._queueRefresh();
            })

EGO-M-004 error

metadata shell-version must only include plausible stable releases and at most one development release

Field `shell-version` contains invalid values, more than one development release, or implausible future releases.

metadata.json must be well-formed

  • metadata.json
    shell-version=['51']

All Versions

Version Status
0.3 (1) Unreviewed