Hi.
I made a very little tray icon for this, in an attempt to make this work as an assisted remote assistance software like Teamviewer and others.
My problem here is the lack of a simple but unique "ID" so my client could identify himself.
I know there is a "nodeID" but that is more an "internal" use since is base64 encoded (i think)
That being said:
How difficult would be to asign a "teamviewer-like" ID to the Agents? You know, short, 10-12 digit ID..
I tried to archieve this myself by using the meshagent.tag file, but i have two problems with this:
1- I have to do it myself for each client. That even could mean creating an own installer
2- Even with that, i couldn't find an Agent filtering by that tag on my server. The "filter" field just don't find anything.
On top of that, i realized there is a option for ask user permission before accessing to the remote control.
Could a random password be added to that?
In short: Is it feasible to add a random short ID and password to the Agents?
I mean, I KNOW this could not have a lot of sense on how MeshCentral works right know, because there is no GUI interface on the Agent client. But using this + the tray icon i mentioned at the beginning (or even a full window in the temporary mode), would make this software (in my opinion, of course) a perfect and no questionable Teamviwer (and others) replacement for remote assistance.
What do you think? Could this be possible?
While this is a good request, this should be an optional function like most MeshCentral features that can be enabled/disabled.
MeshCentral is already superior to Teamviewer and other RMM like tools, IMO ;)
While this is a good request, this should be an optional function like most MeshCentral features that can be enabled/disabled.
MeshCentral is already superior to Teamviewer and other RMM like tools, IMO ;)
I completely agree with that. Hands down MeshCentral.
My intention is just to make it more user friendly for certain end users
@yomono I started making a tray / messaging agent a while ago as a proof of concept. I didn't finish it as I had other projects to work on since, but it is possible, and can be done with a plugin. A quick overview of what I had / was testing depending on how interested you are in continuing (as I see you've got some dev experience):
But this is definitely possible. Where it may sit on the roadmap is another question, but thought I'd throw this out there as you've got some dev skills.
EDIT:
I definitely read the top post and thought you were going for like a "one time connection password" when I read "short ID". Not just the alternate ID for the endpoint in the portal. My bad
Lots of responses already, I am not sure where to start. Nicely done on the tray icon app, I can't wait to see the code as I will take a look at it for security. For reference, the tray icon app was posted on Reddit here.
As a side note, you can filter using the following in the device view:
user: or u: to filter devices with a given user logged on the remote device.
ip: devices at a given IP address.
group: or g: for devices within a device group.
tag: or t: filter devices with a tag.
atag: or a: filter on agent tag (meshagent.tag file).
So if you are looking for an agent tag, use "a:
Certainly the requests are possible, I have never used TeamViewer, so I have no idea what the specific usage for the short code is. The current NodeID is a modified Base64 SHA384 hash of the agent certificate. It's a good identifier because it's provable, you can't create another agent that will fake the same NodeID unless you have the private key for that identifier. In any case, what is the short ID for? Someone would read it on the screen and allows the technician to find the device on the web site?
@yomono I started making a tray / messaging agent a while ago as a proof of concept. I didn't finish it as I had other projects to work on since, but it is possible, and can be done with a plugin. A quick overview of what I had / was testing depending on how interested you are in continuing (as I see you've got some dev experience):
* The plugin would install the tray agent for all (or selected) groups * I was going to use named pipes between the "gui agent" and the Mesh Central agent via a MeshCentral plugin within the agent * Once you have the above connection, it is basically just overriding MC's "steps" to connect with the "validation number" prior to connecting * An added thought here was to have the tray agent initiate a support / messenger window with an online tech.But this is definitely possible. Where it may sit on the roadmap is another question, but thought I'd throw this out there as you've got some dev skills.
Well, thanks for the confidence vote but unfortunately i'm not really what you may call a experienced developer.. i just like to "stick my nose" on everything i find useful or entertaining.. I find MeshCentral both of them :)
I will definitely will take a look to the plugins development. Is there any documentation on that approach? I couldn't find any..
Lots of responses already, I am not sure where to start. Nicely done on the tray icon app, I can't wait to see the code as I will take a look at it for security. For reference, the tray icon app was posted on Reddit here.
As a side note, you can filter using the following in the device view:
user:oru:to filter devices with a given user logged on the remote device.
ip:devices at a given IP address.
group:org:for devices within a device group.
tag:ort:filter devices with a tag.
atag:ora:filter on agent tag (meshagent.tag file).So if you are looking for an agent tag, use "a:" and you should find it.
Certainly the requests are possible, I have never used TeamViewer, so I have no idea what the specific usage for the short code is. The current NodeID is a modified Base64 SHA384 hash of the agent certificate. It's a good identifier because it's provable, you can't create another agent that will fake the same NodeID unless you have the private key for that identifier. In any case, what is the short ID for? Someone would read it on the screen and allows the technician to find the device on the web site?
ohh so "a:" is what i was looking for!
About the code: As I said before, I'm not really a professional developer, so I truly have no idea how to, for example, use git. I could however just upload the code as today to github I suppose. But really: Is a mess and there is probably a lot of things not quite "correct" strictly speaking, as i just learned just by.. trying.
About the security concerns, I really don't think it could be any security issue (at least, at this state of the program) since it runs 100% on the local machine, just reading the regedit values (or the .msh file), and stopping/starting the meshagent service. Except for the last part, is a pretty harmless program.
And lastly: yes, exactly as you say. I could ask to a costumer "hey, right click to that little icon i tell me that 10 digit numer you see there please". I search by that number, and i find my client in MeshCentral. Just an easy way for the client to tell me "who" he is. Not that much, but could be really useful IMO
I will definitely will take a look to the plugins development. Is there any documentation on that approach? I couldn't find any..
There's https://github.com/Ylianst/MeshCentral/blob/master/plugin_development.md for an overview, and if you're more of a tinkerer, there's examples and prior works to take a look at:
As for finding the ID (since I misread your first post and thought you were looking for a single-use connection password like TeamViewer; my bad), I think the simplest approach would be to pull the system name, since that is the default mesh agent name it will check into the MC server with.
I will definitely will take a look to the plugins development. Is there any documentation on that approach? I couldn't find any..
There's https://github.com/Ylianst/MeshCentral/blob/master/plugin_development.md for an overview, and if you're more of a tinkerer, there's examples and prior works to take a look at:* https://github.com/ryanblenis/MeshCentral-Sample - Sample Plugin - about as simple as you can get * https://github.com/search?q=meshcentral-plugin - To find all other plugins with that tagAs for finding the ID (since I misread your first post and thought you were looking for a single-use connection password like TeamViewer; my bad), I think the simplest approach would be to pull the system name, since that is the default mesh agent name it will check into the MC server with.
Actually, that's exactly what my tray icon does right know. But what if i got two computers with the same name? System names as "Server" or just "PC-1" are very common. The tray also shows your public IP. Because the combination of System Name + Public IP should not repeat.. at least, in theory.
But an ID would be a lot more reliable and simple.
Actually you are not totally wrong, I'm looking for both: ID and Password.
Thanks again! Now let's read that documentation..
Actually, that's exactly what my tray icon does right know. But what if i got two computers with the same name? System names as "Server" or just "PC-1" are very common. The tray also shows your public IP. Because the combination of System Name + Public IP should not repeat.. at least, in theory.
But an ID would be a lot more reliable and simple.
Actually you are not totally wrong, I'm looking for both: ID and Password.Thanks again! Now let's read that documentation..
Realistically you shouldn't have 2 computers with the same name, or they should be easily identifiable because:
Let me know if you run into any issues if you dive into the plugin world, and good luck!
Actually, that's exactly what my tray icon does right know. But what if i got two computers with the same name? System names as "Server" or just "PC-1" are very common. The tray also shows your public IP. Because the combination of System Name + Public IP should not repeat.. at least, in theory.
But an ID would be a lot more reliable and simple.
Actually you are not totally wrong, I'm looking for both: ID and Password.
Thanks again! Now let's read that documentation..Realistically you shouldn't have 2 computers with the same name, or they should be easily identifiable because:
1. if you have more than one computer with a name, they aren't going to play nicely on a domain- so you're forced into uniqueness 2. Even if you're an MSP and use the same workstation names (e.g. Workstation1, 2, 3, etc.) for every client, you'd be limited to only looking in a single group because when they're calling for support you're going to want to know what company they're with, which should already be separated into groups in MCLet me know if you run into any issues if you dive into the plugin world, and good luck!
you know what.. I totally forgot about the groups. I feel like an idiot.
Never mind, I will dig into the plugin world anyway. Once an idea stick into my head, there is no coming back.
Thanks, one more time
Posted here: https://github.com/yomono/Meshcentral-TrayMesh/
And any update will be there, so I will close this issue.
Thanks both
Nice! I am going to have to look at this, it's both Windows and Linux! I am impressed.
Not sure how far along your tray thing went, but a while ago I had implemented the ability to add try icons to windows... It's implemented completely in JS... It uses Powershell under the covers... (It's implemented in MeshAgent/modules/win-systray.js if you wanted to see how I did it)...
I previously had a native implementation, but it was annoying that the systray would frequently zombie if it wasn't cleaned up correctly, so I made one in Javascript, so that even if the agent exits, the tray will clean itself up.
Here's a sample for how it can be created... You can pass an array for the menuItems, so that it will create a menu when you click on the systray, and it will marshal the mouse click back and call the JS function that you pass in:
tray = require('win-systray').createTrayIcon({
title: 'Mesh Central Agent', menuItems:
[{
text: 'Requst Help', func: function ()
{
require('message-box').create('Mesh Central', 'Help has been requested', 20, 1);
}
}]
});
Not sure how far along your tray thing went, but a while ago I had implemented the ability to add try icons to windows... It's implemented completely in JS... It uses Powershell under the covers... (It's implemented in MeshAgent/modules/win-systray.js if you wanted to see how I did it)...
I previously had a native implementation, but it was annoying that the systray would frequently zombie if it wasn't cleaned up correctly, so I made one in Javascript, so that even if the agent exits, the tray will clean itself up.
Here's a sample for how it can be created... You can pass an array for the menuItems, so that it will create a menu when you click on the systray, and it will marshal the mouse click back and call the JS function that you pass in:
tray = require('win-systray').createTrayIcon({ title: 'Mesh Central Agent', menuItems: [{ text: 'Requst Help', func: function () { require('message-box').create('Mesh Central', 'Help has been requested', 20, 1); } }] });
This is fantastic. The only problem I can see right now is that it will only works for windows (because of Powershell), and, in the other hand, it would require start from scratch since my current code is made on Delphi/free Pascal. Looking back, it could have been a mistake not doing it on js from the start, being mesh Central almost entirely coded on that language. But the thing is... I don't know JavaScript. I will learn it for this project. It was about time, to be honest
Most helpful comment
Posted here: https://github.com/yomono/Meshcentral-TrayMesh/
And any update will be there, so I will close this issue.
Thanks both