mirror of
https://github.com/1Remote/1Remote.git
synced 2026-04-25 13:36:03 +03:00
[GH-ISSUE #61] Configuration options for external programs (protocols and tools) #2927
Labels
No labels
area-configuration
area-ct-app
area-ct-rdp
area-ct-remoteapp
area-ct-ssh
area-ct-vnc
area-launcher
area-list
area-tags
area-teamwork
bug
chore
dependencies
general-build/ci
general-performance
general-refactor
general-security
general-supportive
general-ux
meta-documentation
meta-enhancement
meta-enhancement
meta-feature
meta-help-wanted
meta-unknown-error
priority-hi
priority-low
pull-request
question
resolution-duplicate
resolution-invalid
resolution-wontfix
stale
task-put-off
task-still-considering
task-working-in-progress
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/1Remote#2927
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @VShawn on GitHub (Jan 15, 2021).
Original GitHub issue: https://github.com/1Remote/1Remote/issues/61
In order to achieve new requirements #59, we need a system that that can config external programs. like mRemoteNG did:

The difference between this system and mRemoteNG is that we need to implement two sets of external program manager.
Protocol Program Manager: It can only specify external programs for specific protocol settings. For example, ssh can only set the KiTTY path, and FTP can only set the WinSCP path.
Third-party external program manager: It has basically the same as mRemoteNG did, you can set all exe as external programs, configure their paths, transfer parameters, etc.
In fact, in my opinion, the above scheme does not look very flexible, and I am still considering other implementations.
@majkinetor commented on GitHub (Jan 15, 2021):
Let me brainstorm about this a little:
Tool configuration
Some CLI tools might even need specifying stdin.
Notes
Cli tools
CLI tools use different Windows subsystem but could probably be treated equally as GUI tools by invoking them via
cmd.exeinternally.Custom providers
Not sure if adding arbitrary providers should be allowed (tool abc.exe handles abc connection type). Multiple tools could theoretically handle the same provider (eg. WinScp or FileZIlla).
So RDP currently has several extra options (mapping of remote resources and display options) and SSH has Advantage and key options. In essence, if tool supports setting those via command line parameters then this is about mapping New remote config on tool CLI parameter . This then calls to defining properties on tools configuration that will be exposed in New remote UI.
Lets see on KITTY example and what we currently have in PRM:
-cmdmaps toAuto command-imaps toPrivate key-1and-2map toSSH versionSo lets imagine we have Protocol Definition UI that could used to define mapping:
NOTE:
stringalways*above specifies that value is default.Having this separated from tools configuration, we can then map tools to protocols in tool configuration which will allow you to map multiple tool options to single interface.
So lets now define kitty tool options once we defined SSH protocol (ofc, this one would come predefined):
Now, I'll just leave this here to incubate, I am not sure if this is ultra flexible or complicates things without great benefit. On the other hand, it looks like implementation is pretty easy (probably day's work).
Not sure at this moment how this could work on RDP as those options are probably library options (didn't look into source code yet, just assuming), but I guess PRM could actually crate tiny exe wrappers (If I remember correctly this is what you do now) and along with that expose everything desired as CLA.
@VShawn commented on GitHub (Feb 1, 2021):
I though of this
I think it would be quite troublesome to allow users to define their own protocols. Few people want to learn this complex definitions. And it does not match the positioning of the product (a simple tiny personal). Why not we pre-define what protocols we can provide, user can select tool they like to connect a protocol, or use a preset tool we offered for a quick use.
E.g. SSH
We offering PuTTY as default terminal. Some users may want to use something named XuTTY.
This is less flexible, but simpler.
@majkinetor commented on GitHub (Feb 1, 2021):
That depends on UX. It could be there as advanced option that can be used internally mostly or by advanced users that know what to do.
You understand that this is basically unlimited feature request potential (there are so many tools) ? With the feature offered, you can always say to users please try to configure it on your own and just provide us config that you are happy with so we can copy/paste it into the project to be supported officially. You don't block such users if they are willing enough, and you can immediately use all their successful work.
Yeah, they can if they have this protocol to cmd line map feature. How would they do it without it ? How do you know what of number options such tools have to expose in PRM config ? Just take putty as an example. You exposed few options only.
@majkinetor commented on GitHub (Jan 15, 2022):
I will close this since most of it is released in v0.6.
@majkinetor commented on GitHub (Jan 15, 2022):
Third-party external program isn't part of 0.6 release, but it could be handled via another ticket if needed. The benefit is IMO very small compared to random launcher in Windows (you could pass details of 'current connection' as parameters of external tools).