mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-02-12 11:01:52 +00:00
Merge branch 'master' of https://github.com/Ylianst/MeshCentral
This commit is contained in:
commit
b635492c34
79 changed files with 6928 additions and 5301 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -308,3 +308,4 @@ __pycache__/
|
|||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
.DS_Store
|
||||
|
|
15
.vscode/launch.json
vendored
Normal file
15
.vscode/launch.json
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
// Verwendet IntelliSense zum Ermitteln möglicher Attribute.
|
||||
// Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
|
||||
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "pwa-chrome",
|
||||
"request": "launch",
|
||||
"name": "Launch Chrome against localhost",
|
||||
"url": "http://localhost:8080",
|
||||
"webRoot": "${workspaceFolder}"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -22,7 +22,6 @@
|
|||
<ItemGroup>
|
||||
<Compile Include="agents\meshcmd.js" />
|
||||
<Compile Include="agents\meshcmd.min.js" />
|
||||
<Compile Include="agents\meshcore-clean.js" />
|
||||
<Compile Include="agents\meshcore.min.js" />
|
||||
<Compile Include="agents\meshinstall-linux.js" />
|
||||
<Compile Include="agents\modules_meshcmd\amt-apfclient.js" />
|
||||
|
@ -58,7 +57,6 @@
|
|||
<Compile Include="agents\modules_meshcore\amt-mei.js" />
|
||||
<Compile Include="agents\modules_meshcore\linux-dhcp.js" />
|
||||
<Compile Include="agents\modules_meshcore\monitor-border.js" />
|
||||
<Compile Include="agents\modules_meshcore\scripttask.js" />
|
||||
<Compile Include="agents\modules_meshcore\smbios.js" />
|
||||
<Compile Include="agents\modules_meshcore\sysinfo.js" />
|
||||
<Compile Include="agents\modules_meshcore\util-agentlog.js" />
|
||||
|
@ -231,6 +229,7 @@
|
|||
<Content Include="agents\MeshService64-signed.exe" />
|
||||
<Content Include="agents\MeshService64.exe" />
|
||||
<Content Include="agents\MeshService64.pdb" />
|
||||
<Content Include="agents\modules_meshcore\coretranslations.json" />
|
||||
<Content Include="CreateSourcePackage.bat" />
|
||||
<Content Include="emails\account-check.html" />
|
||||
<Content Include="emails\account-check.txt" />
|
||||
|
|
Binary file not shown.
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"en": {
|
||||
"agent": "Agent",
|
||||
"agentVersion": "New Agent Version",
|
||||
"agentVersion": "New Version",
|
||||
"group": "Device Group",
|
||||
"url": "Server URL",
|
||||
"meshName": "Mesh Name",
|
||||
"meshId": "Mesh Identifier",
|
||||
"meshId": "Group Identifier",
|
||||
"serverId": "Server Identifier",
|
||||
"setup": "Setup",
|
||||
"update": "Update",
|
||||
|
@ -14,12 +14,13 @@
|
|||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"cancel": "Cancel",
|
||||
"close": "Close",
|
||||
"pressok": "Press OK to disconnect",
|
||||
"elevation": "Elevated permissions is required to install/uninstall the agent.",
|
||||
"elevation": "Elevated permissions are required to install/uninstall this software.",
|
||||
"sudo": "Please try again with sudo.",
|
||||
"ctrlc": "Press Ctrl-C to exit.",
|
||||
"commands": "You can run the text version from the command line with the following command(s)",
|
||||
"graphicalerror": "The graphical version of this installer canot run on this system",
|
||||
"graphicalerror": "The graphical version of this installer cannot run on this system",
|
||||
"zenity": "Try installing/updating Zenity, and run again",
|
||||
"status": [
|
||||
"NOT INSTALLED",
|
||||
|
@ -27,15 +28,14 @@
|
|||
"NOT RUNNING"
|
||||
],
|
||||
"statusDescription": "Current Agent Status",
|
||||
"description": "Click the buttons below to install or uninstall the mesh agent. When installed, this software runs in the background allowing this computer to be managed and controlled by a remote administrator."
|
||||
"description": "Click the buttons below to install or uninstall this remote management software. When installed, this software runs in the background allowing this computer to be managed and controlled by a remote administrator."
|
||||
},
|
||||
"cs": {
|
||||
"agent": "Agent",
|
||||
"agentVersion": "Nová verze agenta",
|
||||
"group": "Skupina zařízení",
|
||||
"url": "URL serveru",
|
||||
"meshName": "Název oka",
|
||||
"meshId": "Identifikátor sítě",
|
||||
"meshId": "Identifikátor skupiny",
|
||||
"serverId": "Identifikátor serveru",
|
||||
"setup": "Založit",
|
||||
"update": "Aktualizace",
|
||||
|
@ -44,12 +44,11 @@
|
|||
"connect": "Připojit",
|
||||
"disconnect": "Odpojit",
|
||||
"cancel": "Storno",
|
||||
"close": "Zavřít",
|
||||
"pressok": "Stisknutím tlačítka OK se odpojíte",
|
||||
"elevation": "K instalaci / odinstalování agenta je vyžadováno zvýšené oprávnění.",
|
||||
"sudo": "Zkuste to prosím znovu s sudo.",
|
||||
"ctrlc": "Ukončete stisknutím Ctrl-C.",
|
||||
"commands": "Textovou verzi můžete spustit z příkazového řádku pomocí následujících příkazů",
|
||||
"graphicalerror": "V tomto systému nelze spustit grafickou verzi tohoto instalačního programu",
|
||||
"zenity": "Zkuste nainstalovat / aktualizovat Zenity a spustit znovu",
|
||||
"status": [
|
||||
"NENÍ INSTALOVÁN",
|
||||
|
@ -57,15 +56,17 @@
|
|||
"NEFUNGUJE"
|
||||
],
|
||||
"statusDescription": "Aktuální stav agenta",
|
||||
"description": "Kliknutím na tlačítka níže nainstalujete nebo odinstalujete agenta sítě. Po instalaci je tento software spuštěn na pozadí, což umožňuje spravovat a ovládat tento počítač vzdáleným správcem."
|
||||
"agentVersion": "Nová verze",
|
||||
"elevation": "K instalaci/odinstalaci tohoto softwaru jsou vyžadována zvýšená oprávnění.",
|
||||
"graphicalerror": "Na tomto systému nelze spustit grafickou verzi tohoto instalačního programu",
|
||||
"description": "Klepnutím na tlačítka níže nainstalujete nebo odinstalujete tento software pro vzdálenou správu. Když je tento software nainstalován, běží na pozadí, což umožňuje spravovat a ovládat tento počítač vzdáleným správcem."
|
||||
},
|
||||
"de": {
|
||||
"agent": "Agent",
|
||||
"agentVersion": "Neue Agentenversion",
|
||||
"group": "Gerätegruppe",
|
||||
"url": "Server-URL",
|
||||
"meshName": "Maschenname",
|
||||
"meshId": "Netzkennung",
|
||||
"meshId": "Gruppen-ID",
|
||||
"serverId": "Server-ID",
|
||||
"setup": "Konfiguration",
|
||||
"update": "Updates",
|
||||
|
@ -74,12 +75,11 @@
|
|||
"connect": "Verbinden",
|
||||
"disconnect": "Trennen",
|
||||
"cancel": "Abbrechen",
|
||||
"close": "Schließen",
|
||||
"pressok": "Drücken Sie OK, um die Verbindung zu trennen",
|
||||
"elevation": "Für die Installation / Deinstallation des Agenten sind erhöhte Berechtigungen erforderlich.",
|
||||
"sudo": "Bitte versuchen Sie es erneut mit sudo.",
|
||||
"ctrlc": "Drücken Sie Strg-C, um den Vorgang zu beenden.",
|
||||
"commands": "Sie können die Textversion über die Befehlszeile mit den folgenden Befehlen ausführen.",
|
||||
"graphicalerror": "Die grafische Version dieses Installationsprogramms kann auf diesem System nicht ausgeführt werden",
|
||||
"zenity": "Versuchen Sie, Zenity zu installieren / zu aktualisieren, und führen Sie es erneut aus",
|
||||
"status": [
|
||||
"NICHT INSTALLIERT",
|
||||
|
@ -87,15 +87,17 @@
|
|||
"NICHT LAUFEN"
|
||||
],
|
||||
"statusDescription": "Aktueller Agentenstatus",
|
||||
"description": "Klicken Sie auf die Schaltflächen unten, um den Mesh Agent zu installieren oder zu deinstallieren. Bei der Installation wird diese Software im Hintergrund ausgeführt, sodass dieser Computer von einem Remote-Administrator verwaltet und gesteuert werden kann."
|
||||
"agentVersion": "Neue Version",
|
||||
"elevation": "Zum Installieren/Deinstallieren dieser Software sind erhöhte Berechtigungen erforderlich.",
|
||||
"graphicalerror": "Die grafische Version dieses Installationsprogramms kann auf diesem System nicht ausgeführt werden",
|
||||
"description": "Klicken Sie auf die Schaltflächen unten, um diese Fernverwaltungssoftware zu installieren oder zu deinstallieren. Nach der Installation wird diese Software im Hintergrund ausgeführt, sodass dieser Computer von einem entfernten Administrator verwaltet und gesteuert werden kann."
|
||||
},
|
||||
"es": {
|
||||
"agent": "Agente",
|
||||
"agentVersion": "Nueva Versión del Agente",
|
||||
"group": "Grupo de Dispositivos",
|
||||
"url": "URL del servidor",
|
||||
"meshName": "Nombre de malla",
|
||||
"meshId": "Identificador de malla",
|
||||
"meshId": "Identificador del Grupo",
|
||||
"serverId": "Identificador de Servidor",
|
||||
"setup": "Preparar",
|
||||
"update": "Actualizar",
|
||||
|
@ -104,12 +106,11 @@
|
|||
"connect": "Conectar",
|
||||
"disconnect": "Desconectar",
|
||||
"cancel": "Cancelar",
|
||||
"close": "Cerrar",
|
||||
"pressok": "Presione OK para desconectar",
|
||||
"elevation": "Se requieren permisos elevados para instalar / desinstalar el agente.",
|
||||
"sudo": "Vuelve a intentarlo con sudo.",
|
||||
"ctrlc": "Presione Ctrl-C para salir.",
|
||||
"commands": "Puedes ejecutar la versión de texto desde la línea de comandos con los siguientes comandos",
|
||||
"graphicalerror": "La versión gráfica de este instalador no se puede ejecutar en este sistema.",
|
||||
"zenity": "Intenta instalar / actualizar Zenity y vuelve a ejecutar",
|
||||
"status": [
|
||||
"NO INSTALADO",
|
||||
|
@ -117,15 +118,17 @@
|
|||
"NO EJECUTANDOSE"
|
||||
],
|
||||
"statusDescription": "Estado Actual del Agente",
|
||||
"description": "Haz clic en los botones a continuación para instalar o desinstalar el agente de malla. Cuando se instala, este software se ejecuta en segundo plano, lo que permite que este equipo sea administrado y controlado por un administrador remoto."
|
||||
"agentVersion": "Nueva versión",
|
||||
"elevation": "Se requieren permisos elevados para instalar/desinstalar este software.",
|
||||
"graphicalerror": "La versión gráfica de este instalador no puede ejecutarse en este sistema",
|
||||
"description": "Haga clic en los botones a continuación para instalar o desinstalar este software de administración remota. Cuando se instala, este software se ejecuta en segundo plano, lo que permite que un administrador remoto administre y controle esta computadora."
|
||||
},
|
||||
"fi": {
|
||||
"agent": "Agentti",
|
||||
"agentVersion": "Uusi agenttiversio",
|
||||
"group": "Laiteryhmä",
|
||||
"url": "Palvelimen URL-osoite",
|
||||
"meshName": "Verkon nimi",
|
||||
"meshId": "Verkon tunniste",
|
||||
"meshId": "Ryhmän tunniste",
|
||||
"serverId": "Palvelimen tunniste",
|
||||
"setup": "Perustaa",
|
||||
"update": "Päivittää",
|
||||
|
@ -134,12 +137,11 @@
|
|||
"connect": "Yhdistä",
|
||||
"disconnect": "Katkaise yhteys",
|
||||
"cancel": "Peruuta",
|
||||
"close": "Sulje",
|
||||
"pressok": "Katkaise yhteys painamalla OK",
|
||||
"elevation": "Agentin asentaminen / poistaminen edellyttää korotettuja käyttöoikeuksia.",
|
||||
"sudo": "Yritä uudelleen sudolla.",
|
||||
"ctrlc": "Poistu painamalla Ctrl-C.",
|
||||
"commands": "Voit suorittaa tekstiversio komentoriviltä seuraavilla komennoilla",
|
||||
"graphicalerror": "Tämän asennusohjelman graafinen versio ei toimi tässä järjestelmässä",
|
||||
"zenity": "Yritä asentaa / päivittää Zenity ja suorita uudelleen",
|
||||
"status": [
|
||||
"EI ASENNETTU",
|
||||
|
@ -147,15 +149,17 @@
|
|||
"EI RUNNING"
|
||||
],
|
||||
"statusDescription": "Agentin nykyinen tila",
|
||||
"description": "Napsauta alla olevia painikkeita asentaaksesi tai poistaaksesi verkkoagentin. Asennettuna tämä ohjelmisto toimii taustalla, jolloin etävalvoja hallitsee ja hallitsee tietokonetta."
|
||||
"agentVersion": "Uusi versio",
|
||||
"elevation": "Tämän ohjelmiston asentaminen/asennuksen poistaminen edellyttää korotettuja käyttöoikeuksia.",
|
||||
"graphicalerror": "Tämän asennusohjelman graafista versiota ei voi käyttää tässä järjestelmässä",
|
||||
"description": "Napsauta alla olevia painikkeita asentaaksesi tai poistaaksesi tämän etähallintaohjelmiston. Kun ohjelmisto on asennettu, se toimii taustalla, jolloin etäjärjestelmänvalvoja voi hallita ja ohjata tätä tietokonetta."
|
||||
},
|
||||
"fr": {
|
||||
"agent": "Agent",
|
||||
"agentVersion": "Nouvelle version de l'agent",
|
||||
"group": "Groupe d'appareils",
|
||||
"url": "URL du serveur",
|
||||
"meshName": "Nom du maillage",
|
||||
"meshId": "Identificateur de maillage",
|
||||
"meshId": "Identifiant de groupe",
|
||||
"serverId": "Identifiant du serveur",
|
||||
"setup": "Configuration",
|
||||
"update": "Mettre à jour",
|
||||
|
@ -164,12 +168,11 @@
|
|||
"connect": "Se connecter",
|
||||
"disconnect": "Déconnecter",
|
||||
"cancel": "Annuler",
|
||||
"close": "Fermer",
|
||||
"pressok": "Appuyez sur OK pour vous déconnecter",
|
||||
"elevation": "Des autorisations élevées sont requises pour installer / désinstaller l'agent.",
|
||||
"sudo": "Veuillez réessayer avec sudo.",
|
||||
"ctrlc": "Appuyez sur Ctrl-C pour quitter.",
|
||||
"commands": "Vous pouvez exécuter la version texte à partir de la ligne de commande avec la ou les commandes suivantes",
|
||||
"graphicalerror": "La version graphique de ce programme d'installation ne peut pas s'exécuter sur ce système",
|
||||
"zenity": "Essayez d'installer / mettre à jour Zenity et réexécutez",
|
||||
"status": [
|
||||
"PAS INSTALLÉ",
|
||||
|
@ -177,15 +180,17 @@
|
|||
"NE PAS COURRIR"
|
||||
],
|
||||
"statusDescription": "Statut actuel de l'agent",
|
||||
"description": "Cliquez sur les boutons ci-dessous pour installer ou désinstaller l'agent de maillage. Une fois installé, ce logiciel s'exécute en arrière-plan permettant à cet ordinateur d'être géré et contrôlé par un administrateur distant."
|
||||
"agentVersion": "Nouvelle version",
|
||||
"elevation": "Des autorisations élevées sont requises pour installer/désinstaller ce logiciel.",
|
||||
"graphicalerror": "La version graphique de ce programme d'installation ne peut pas s'exécuter sur ce système",
|
||||
"description": "Cliquez sur les boutons ci-dessous pour installer ou désinstaller ce logiciel de gestion à distance. Une fois installé, ce logiciel s'exécute en arrière-plan, ce qui permet à cet ordinateur d'être géré et contrôlé par un administrateur distant."
|
||||
},
|
||||
"hi": {
|
||||
"agent": "एजेंट",
|
||||
"agentVersion": "नया एजेंट संस्करण",
|
||||
"group": "डिवाइस समूह",
|
||||
"url": "सर्वर URL",
|
||||
"meshName": "मेष नाम",
|
||||
"meshId": "मेष पहचानकर्ता",
|
||||
"meshId": "समूह पहचानकर्ता",
|
||||
"serverId": "सर्वर पहचानकर्ता",
|
||||
"setup": "सेट अप",
|
||||
"update": "अपडेट करें",
|
||||
|
@ -194,12 +199,11 @@
|
|||
"connect": "जुडिये",
|
||||
"disconnect": "डिस्कनेक्ट",
|
||||
"cancel": "रद्द करना",
|
||||
"close": "बंद करे",
|
||||
"pressok": "डिस्कनेक्ट करने के लिए ओके दबाएं",
|
||||
"elevation": "एजेंट को इंस्टॉल / अनइंस्टॉल करने के लिए एलिवेटेड परमिशन की जरूरत होती है।",
|
||||
"sudo": "कृपया सूडो के साथ फिर से प्रयास करें।",
|
||||
"ctrlc": "बाहर निकलने के लिए Ctrl-C दबाएं।",
|
||||
"commands": "आप निम्न कमांड के साथ कमांड लाइन से टेक्स्ट संस्करण चला सकते हैं",
|
||||
"graphicalerror": "इस इंस्टॉलर का आलेखीय संस्करण इस सिस्टम पर चलता है",
|
||||
"zenity": "ज़ेनिटी को स्थापित / अपडेट करने का प्रयास करें, और फिर से चलाएं",
|
||||
"status": [
|
||||
"स्थापित नहीं है",
|
||||
|
@ -207,15 +211,17 @@
|
|||
"चल नहीं रहा"
|
||||
],
|
||||
"statusDescription": "वर्तमान एजेंट की स्थिति",
|
||||
"description": "मेष एजेंट को स्थापित या अनइंस्टॉल करने के लिए नीचे दिए गए बटन पर क्लिक करें। स्थापित होने पर, यह सॉफ़्टवेयर पृष्ठभूमि में चलता है, जिससे यह कंप्यूटर दूरस्थ व्यवस्थापक द्वारा प्रबंधित और नियंत्रित किया जा सकता है।"
|
||||
"agentVersion": "नया संस्करण",
|
||||
"elevation": "इस सॉफ़्टवेयर को स्थापित/अनइंस्टॉल करने के लिए उन्नत अनुमतियों की आवश्यकता होती है।",
|
||||
"graphicalerror": "इस इंस्टालर का आलेखीय संस्करण इस सिस्टम पर नहीं चल सकता",
|
||||
"description": "इस दूरस्थ प्रबंधन सॉफ़्टवेयर को स्थापित या अनइंस्टॉल करने के लिए नीचे दिए गए बटनों पर क्लिक करें। स्थापित होने पर, यह सॉफ़्टवेयर पृष्ठभूमि में चलता है जिससे इस कंप्यूटर को दूरस्थ व्यवस्थापक द्वारा प्रबंधित और नियंत्रित किया जा सकता है।"
|
||||
},
|
||||
"it": {
|
||||
"agent": "Agente",
|
||||
"agentVersion": "Nuova versione dell'agente ",
|
||||
"group": "Gruppo di dispositivi",
|
||||
"url": "URL del server",
|
||||
"meshName": "Nome mesh",
|
||||
"meshId": "Identificatore di mesh",
|
||||
"meshId": "Identificatore di gruppo",
|
||||
"serverId": "Identificatore del server",
|
||||
"setup": "Impostare",
|
||||
"update": "Aggiornamenti",
|
||||
|
@ -224,12 +230,11 @@
|
|||
"connect": "Connetti",
|
||||
"disconnect": "Disconnetti",
|
||||
"cancel": "Annulla",
|
||||
"close": "Chiudere",
|
||||
"pressok": "Premi OK per disconnetterti",
|
||||
"elevation": "Sono necessarie autorizzazioni elevate per installare / disinstallare l'agente.",
|
||||
"sudo": "Riprova con sudo.",
|
||||
"ctrlc": "Premi Ctrl-C per uscire.",
|
||||
"commands": "Puoi eseguire la versione testuale dalla riga di comando con i seguenti comandi ",
|
||||
"graphicalerror": "La versione grafica di questo programma di installazione non può essere eseguita su questo sistema",
|
||||
"zenity": "Prova a installare/aggiornare Zenity ed esegui di nuovo",
|
||||
"status": [
|
||||
"NON INSTALLATO",
|
||||
|
@ -237,15 +242,17 @@
|
|||
"NON IN ESECUZIONE"
|
||||
],
|
||||
"statusDescription": "Stato attuale dell'agente",
|
||||
"description": "Fare clic sui pulsanti sottostanti per installare o disinstallare l'agente mesh. Una volta installato, questo software viene eseguito in background consentendo a questo computer di essere gestito e controllato da un amministratore remoto."
|
||||
"agentVersion": "Nuova versione",
|
||||
"elevation": "Per installare/disinstallare questo software sono necessarie autorizzazioni elevate.",
|
||||
"graphicalerror": "La versione grafica di questo programma di installazione non può essere eseguita su questo sistema",
|
||||
"description": "Fare clic sui pulsanti seguenti per installare o disinstallare questo software di gestione remota. Una volta installato, questo software viene eseguito in background consentendo a questo computer di essere gestito e controllato da un amministratore remoto."
|
||||
},
|
||||
"ja": {
|
||||
"agent": "エージェント",
|
||||
"agentVersion": "新しいエージェントバージョン",
|
||||
"group": "デバイスグループ",
|
||||
"url": "サーバーのURL",
|
||||
"meshName": "メッシュ名",
|
||||
"meshId": "メッシュ識別子",
|
||||
"meshId": "グループ識別子",
|
||||
"serverId": "サーバー識別子",
|
||||
"setup": "セットアップ",
|
||||
"update": "更新",
|
||||
|
@ -254,12 +261,11 @@
|
|||
"connect": "つなぐ",
|
||||
"disconnect": "切断する",
|
||||
"cancel": "キャンセル",
|
||||
"close": "閉じる",
|
||||
"pressok": "OKを押して切断します",
|
||||
"elevation": "エージェントをインストール/アンインストールするには、昇格された権限が必要です。",
|
||||
"sudo": "sudoでもう一度やり直してください。",
|
||||
"ctrlc": "Ctrl-Cを押して終了します。",
|
||||
"commands": "次のコマンドを使用して、コマンドラインからテキストバージョンを実行できます。",
|
||||
"graphicalerror": "このインストーラーのグラフィカルバージョンは、このシステムでは実行できません",
|
||||
"zenity": "Zenityをインストール/更新して、もう一度実行してください",
|
||||
"status": [
|
||||
"インストールされていない",
|
||||
|
@ -267,15 +273,17 @@
|
|||
"走っていない"
|
||||
],
|
||||
"statusDescription": "現在のエージェントステータス",
|
||||
"description": "下のボタンをクリックして、メッシュエージェントをインストールまたはアンインストールします。インストールすると、このソフトウェアはバックグラウンドで実行され、リモート管理者がこのコンピューターを管理および制御できるようになります。"
|
||||
"agentVersion": "新しいバージョン",
|
||||
"elevation": "このソフトウェアをインストール/アンインストールするには、昇格された権限が必要です。",
|
||||
"graphicalerror": "このインストーラーのグラフィカルバージョンは、このシステムでは実行できません",
|
||||
"description": "このリモート管理ソフトウェアをインストールまたはアンインストールするには、下のボタンをクリックしてください。インストールすると、このソフトウェアはバックグラウンドで実行され、リモート管理者がこのコンピューターを管理および制御できるようになります。"
|
||||
},
|
||||
"ko": {
|
||||
"agent": "에이전트",
|
||||
"agentVersion": "새에이전트 버전",
|
||||
"group": "장치 그룹",
|
||||
"url": "서버의 위치",
|
||||
"meshName": "메시의 이름",
|
||||
"meshId": "메시의 식별자",
|
||||
"meshId": "그룹 식별자",
|
||||
"serverId": "서버의 식별자",
|
||||
"setup": "설정하다",
|
||||
"update": "개조하다",
|
||||
|
@ -284,28 +292,25 @@
|
|||
"connect": "연결",
|
||||
"disconnect": "연결 해제",
|
||||
"cancel": "취소",
|
||||
"close": "닫기",
|
||||
"pressok": "연결을 끊으려면 \"OK\"를 누르십시오",
|
||||
"elevation": "관리자 권한은 에이전트 제거 / 설치하는 데 필요",
|
||||
"sudo": "\"sudo\"로 다시 시도하십시오",
|
||||
"ctrlc": "종료하려면 \"Ctrl-C\"를 누르십시오.",
|
||||
"commands": "다음 명령을 사용하여 콘솔에서 텍스트 버전을 실행할 수 있습니다",
|
||||
"graphicalerror": "이 설치 프로그램의 그래픽 버전은이 시스템에서 실행할 수 없습니다.",
|
||||
"zenity": "\"Zenity\"를 설치 또는 업데이트하고 다시 시도하십시오",
|
||||
"status": [
|
||||
"없다",
|
||||
"운영",
|
||||
"중지됨"
|
||||
],
|
||||
"statusDescription": "에이전트 상태",
|
||||
"description": "메시 에이전트를 설치 또는 제거하려면 아래 버튼을 클릭하십시오. 이 프로그램은 설치하면 백그라운드에서 실행되므로 원격 관리자가이 컴퓨터를 관리하고 제어 할 수 있습니다."
|
||||
"statusDescription": "에이전트 상태"
|
||||
},
|
||||
"nl": {
|
||||
"agent": "Agent",
|
||||
"agentVersion": "Nieuwe agent versie",
|
||||
"group": "Apparaat groep",
|
||||
"url": "Server URL",
|
||||
"meshName": "Mesh naam",
|
||||
"meshId": "Mesh identificatie",
|
||||
"meshId": "Groepsidentificatie",
|
||||
"serverId": "Server identificatie",
|
||||
"setup": "Setup",
|
||||
"update": "Bijwerken",
|
||||
|
@ -314,12 +319,11 @@
|
|||
"connect": "Verbinden",
|
||||
"disconnect": "Verbreken",
|
||||
"cancel": "Annuleren",
|
||||
"close": "Sluiten",
|
||||
"pressok": "Druk op OK om de verbinding te verbreken",
|
||||
"elevation": "Verhoogde machtigingen zijn vereist om de agent te installeren / verwijderen.",
|
||||
"sudo": "Probeer het opnieuw met sudo.",
|
||||
"ctrlc": "Druk op Ctrl-C om af te sluiten.",
|
||||
"commands": "U kunt de tekstversie vanaf de opdrachtregel uitvoeren met de volgende opdracht(en)",
|
||||
"graphicalerror": "De grafische versie van dit installatieprogramma kan niet op dit systeem worden uitgevoerd",
|
||||
"zenity": "Probeer Zenity te installeren / bij te werken en voer het opnieuw uit",
|
||||
"status": [
|
||||
"NIET GEÏNSTALLEERD",
|
||||
|
@ -327,15 +331,17 @@
|
|||
"NIET ACTIEF"
|
||||
],
|
||||
"statusDescription": "Huidige agent status",
|
||||
"description": "Klik op de onderstaande knoppen om de mesh-agent te installeren of te verwijderen. Na installatie wordt deze software op de achtergrond uitgevoerd, zodat deze computer kan worden beheerd en bestuurd door een externe beheerder."
|
||||
"agentVersion": "Nieuwe versie",
|
||||
"elevation": "Verhoogde machtigingen zijn vereist om deze software te installeren/verwijderen.",
|
||||
"graphicalerror": "De grafische versie van dit installatieprogramma kan niet op dit systeem draaien",
|
||||
"description": "Klik op de onderstaande knoppen om deze software voor beheer op afstand te installeren of te verwijderen. Na installatie draait deze software op de achtergrond waardoor deze computer kan worden beheerd en gecontroleerd door een externe beheerder."
|
||||
},
|
||||
"pt": {
|
||||
"agent": "Agente",
|
||||
"agentVersion": "Nova versão do agente",
|
||||
"group": "Grupo de dispositivos",
|
||||
"url": "URL do servidor",
|
||||
"meshName": "Nome da malha",
|
||||
"meshId": "Identificador de malha",
|
||||
"meshId": "Identificador de Grupo",
|
||||
"serverId": "Identificador de Servidor",
|
||||
"setup": "Configuração",
|
||||
"update": "Atualizar",
|
||||
|
@ -344,28 +350,25 @@
|
|||
"connect": "Conectar",
|
||||
"disconnect": "Desconectar",
|
||||
"cancel": "Cancelar",
|
||||
"close": "Fechar",
|
||||
"pressok": "Pressione OK para desconectar",
|
||||
"elevation": "Permissões elevadas são necessárias para instalar / desinstalar o agente.",
|
||||
"sudo": "Por favor, tente novamente com sudo.",
|
||||
"ctrlc": "Pressione Ctrl-C para sair.",
|
||||
"commands": "Você pode executar a versão em texto a partir da linha de comando com o (s) seguinte (s) comando (s)",
|
||||
"graphicalerror": "A versão gráfica deste instalador não pode ser executada neste sistema",
|
||||
"zenity": "Tente instalar / atualizar o Zenity e execute novamente",
|
||||
"status": [
|
||||
"NÃO INSTALADO",
|
||||
"CORRIDA",
|
||||
"NÃO CORRENDO"
|
||||
],
|
||||
"statusDescription": "Status atual do agente",
|
||||
"description": "Clique nos botões abaixo para instalar ou desinstalar o agente mesh. Quando instalado, este software é executado em segundo plano, permitindo que o computador seja gerenciado e controlado por um administrador remoto."
|
||||
"statusDescription": "Status atual do agente"
|
||||
},
|
||||
"ru": {
|
||||
"agent": "Агент",
|
||||
"agentVersion": "Новая версия агента",
|
||||
"group": "Группа устройства",
|
||||
"url": "URL-адрес сервера",
|
||||
"meshName": "Имя сетки",
|
||||
"meshId": "Идентификатор сетки",
|
||||
"meshId": "Идентификатор группы",
|
||||
"serverId": "Идентификатор сервера",
|
||||
"setup": "Настроить",
|
||||
"update": "Обновить",
|
||||
|
@ -374,28 +377,25 @@
|
|||
"connect": "Подключиться",
|
||||
"disconnect": "Разъединить",
|
||||
"cancel": "Отмена",
|
||||
"close": "Закрыть",
|
||||
"pressok": "Нажмите ОК для отключения",
|
||||
"elevation": "Для установки / удаления агента требуются повышенные разрешения.",
|
||||
"sudo": "Пожалуйста, попробуйте еще раз с помощью sudo.",
|
||||
"ctrlc": "Нажмите Ctrl-C для выхода.",
|
||||
"commands": "Вы можете запустить текстовую версию из командной строки с помощью следующих команд",
|
||||
"graphicalerror": "Графическая версия этого установщика не может работать в этой системе.",
|
||||
"zenity": "Попробуйте установить / обновить Zenity и снова запустить",
|
||||
"status": [
|
||||
"НЕ УСТАНОВЛЕНО",
|
||||
"ЗАПУЩЕН",
|
||||
"НЕ ЗАПУЩЕН"
|
||||
],
|
||||
"statusDescription": "Текущий статус агента",
|
||||
"description": "Нажмите кнопки ниже, чтобы установить или удалить агент сетки. После установки это программное обеспечение работает в фоновом режиме, позволяя управлять этим компьютером удаленным администратором."
|
||||
"statusDescription": "Текущий статус агента"
|
||||
},
|
||||
"sv": {
|
||||
"agent": "Agent",
|
||||
"agentVersion": "Ny agentversion",
|
||||
"group": "Enhetsgrupp",
|
||||
"url": "Serverns URL",
|
||||
"meshName": "Masknamn",
|
||||
"meshId": "Mesh Identifier",
|
||||
"meshId": "Gruppidentifierare",
|
||||
"serverId": "Serveridentifierare",
|
||||
"setup": "Uppstart",
|
||||
"update": "Uppdatering",
|
||||
|
@ -404,28 +404,25 @@
|
|||
"connect": "Anslut",
|
||||
"disconnect": "Koppla ifrån",
|
||||
"cancel": "Avbryt",
|
||||
"close": "Stäng",
|
||||
"pressok": "Tryck på OK för att koppla bort",
|
||||
"elevation": "Förhöjda behörigheter krävs för att installera / avinstallera agenten.",
|
||||
"sudo": "Försök igen med sudo.",
|
||||
"ctrlc": "Tryck på Ctrl-C för att avsluta.",
|
||||
"commands": "Du kan köra textversionen från kommandoraden med följande kommando (er)",
|
||||
"graphicalerror": "Den grafiska versionen av detta installationsprogram kan inte köras på detta system",
|
||||
"zenity": "Försök att installera / uppdatera Zenity och kör igen",
|
||||
"status": [
|
||||
"INTE INSTALLERAD",
|
||||
"LÖPNING",
|
||||
"SPRINGER INTE"
|
||||
],
|
||||
"statusDescription": "Aktuell agentstatus",
|
||||
"description": "Klicka på knapparna nedan för att installera eller avinstallera nätagenten. När den installeras körs denna programvara i bakgrunden så att den här datorn kan hanteras och styras av en fjärradministratör."
|
||||
"statusDescription": "Aktuell agentstatus"
|
||||
},
|
||||
"tr": {
|
||||
"agent": "Ajan",
|
||||
"agentVersion": "Yeni Temsilci Sürümü",
|
||||
"group": "Cihaz Grubu",
|
||||
"url": "Sunucu URL'si",
|
||||
"meshName": "Mesh Adı",
|
||||
"meshId": "Mesh Tanımlayıcı",
|
||||
"meshId": "Grup Tanımlayıcı",
|
||||
"serverId": "Sunucu Tanımlayıcı",
|
||||
"setup": "Kurmak",
|
||||
"update": "Güncelleme",
|
||||
|
@ -433,29 +430,30 @@
|
|||
"uninstall": "Kaldır",
|
||||
"connect": "Bağlan",
|
||||
"disconnect": "Bağlantıyı kes",
|
||||
"cancel": "İptal etmek",
|
||||
"cancel": "İptal",
|
||||
"close": "Kapat",
|
||||
"pressok": "Bağlantıyı kesmek için Tamam'a basın",
|
||||
"elevation": "Aracıyı yüklemek / kaldırmak için yükseltilmiş izinler gereklidir.",
|
||||
"sudo": "Lütfen sudo ile tekrar deneyin.",
|
||||
"ctrlc": "Çıkmak için Ctrl-C tuşlarına basın.",
|
||||
"commands": "Metin sürümünü aşağıdaki komutlarla komut satırından çalıştırabilirsiniz.",
|
||||
"graphicalerror": "Bu yükleyicinin grafik versiyonu bu sistemde çalışamaz",
|
||||
"zenity": "Zenity'yi kurmayı / güncellemeyi deneyin ve tekrar çalıştırın",
|
||||
"status": [
|
||||
"YÜKLÜ DEĞİL",
|
||||
"KOŞU",
|
||||
"KOŞMAK YOK"
|
||||
],
|
||||
"statusDescription": "Mevcut Temsilci Durumu",
|
||||
"description": "Mesh aracısını yüklemek veya kaldırmak için aşağıdaki düğmelere tıklayın. Bu yazılım yüklendiğinde arka planda çalışarak bu bilgisayarın bir uzak yönetici tarafından yönetilmesine ve kontrol edilmesine olanak tanır."
|
||||
"statusDescription": "Mevcut Agent Durumu",
|
||||
"agentVersion": "Yeni sürüm",
|
||||
"elevation": "Bu yazılımı yüklemek/kaldırmak için yüksek izinler gerekir.",
|
||||
"graphicalerror": "Bu yükleyicinin grafik sürümü bu sistemde çalışamaz",
|
||||
"description": "Bu uzaktan yönetim yazılımını yüklemek veya kaldırmak için aşağıdaki düğmelere tıklayın. Yüklendiğinde, bu yazılım arka planda çalışır ve bu bilgisayarın uzak bir yönetici tarafından yönetilmesine ve kontrol edilmesine olanak tanır."
|
||||
},
|
||||
"zh-chs": {
|
||||
"agent": "代理",
|
||||
"agentVersion": "新代理版本",
|
||||
"group": "设备组",
|
||||
"url": "服务器网址",
|
||||
"meshName": "网格名称",
|
||||
"meshId": "网格标识符",
|
||||
"meshId": "组标识符",
|
||||
"serverId": "服务器标识符",
|
||||
"setup": "设定",
|
||||
"update": "更新资料",
|
||||
|
@ -464,28 +462,25 @@
|
|||
"connect": "连接",
|
||||
"disconnect": "断线",
|
||||
"cancel": "取消",
|
||||
"close": "关",
|
||||
"pressok": "按确定断开连接",
|
||||
"elevation": "安装/卸载代理需要提升的权限。",
|
||||
"sudo": "请使用sudo再试一次。",
|
||||
"ctrlc": "按Ctrl-C退出。",
|
||||
"commands": "您可以使用以下命令从命令行运行文本版本",
|
||||
"graphicalerror": "此安装程序Canot的图形版本在此系统上运行",
|
||||
"zenity": "尝试安装/更新Zenity,然后再次运行",
|
||||
"status": [
|
||||
"未安装",
|
||||
"正在运行",
|
||||
"不在运行"
|
||||
],
|
||||
"statusDescription": "当前代理状态",
|
||||
"description": "单击下面的按钮以安装或卸载网状代理。安装后,该软件将在后台运行,从而允许该计算机由远程管理员进行管理和控制。"
|
||||
"statusDescription": "当前代理状态"
|
||||
},
|
||||
"zh-cht": {
|
||||
"agent": "代理",
|
||||
"agentVersion": "新代理版本",
|
||||
"group": "裝置群",
|
||||
"url": "服務器網址",
|
||||
"meshName": "網格名稱",
|
||||
"meshId": "網格標識符",
|
||||
"meshId": "群標識符",
|
||||
"serverId": "服務器標識符",
|
||||
"setup": "設定",
|
||||
"update": "更新資料",
|
||||
|
@ -494,28 +489,25 @@
|
|||
"connect": "連接",
|
||||
"disconnect": "斷線",
|
||||
"cancel": "取消",
|
||||
"close": "關",
|
||||
"pressok": "按確定斷開連接",
|
||||
"elevation": "安裝/卸載代理需要提升的權限。",
|
||||
"sudo": "請使用sudo再試一次。",
|
||||
"ctrlc": "按Ctrl-C退出。",
|
||||
"commands": "您可以使用以下命令從命令行運行文本版本",
|
||||
"graphicalerror": "此安裝程序Canot的圖形版本在此系統上運行",
|
||||
"zenity": "嘗試安裝/更新Zenity,然後再次運行",
|
||||
"status": [
|
||||
"未安裝",
|
||||
"正在運行",
|
||||
"不在運行"
|
||||
],
|
||||
"statusDescription": "當前代理狀態",
|
||||
"description": "單擊下面的按鈕以安裝或卸載網狀代理。安裝後,該軟件將在後台運行,從而允許該計算機由遠程管理員進行管理和控制。"
|
||||
"statusDescription": "當前代理狀態"
|
||||
},
|
||||
"da": {
|
||||
"agent": "Agent",
|
||||
"agentVersion": "Ny agentversion",
|
||||
"group": "Enhedsgruppe",
|
||||
"url": "Server URL",
|
||||
"meshName": "Mesh Navn",
|
||||
"meshId": "Mesh Identifier",
|
||||
"meshId": "Gruppe-id",
|
||||
"serverId": "Serveridentifikator",
|
||||
"setup": "Opsætning",
|
||||
"update": "Opdatering",
|
||||
|
@ -524,12 +516,11 @@
|
|||
"connect": "Forbind",
|
||||
"disconnect": "Afbryd",
|
||||
"cancel": "Annuller",
|
||||
"close": "Luk",
|
||||
"pressok": "Tryk på OK for at afbryde",
|
||||
"elevation": "Elleverede tilladelser er påkrævet for at installere/afinstallere agenten.",
|
||||
"sudo": "Prøv venligst igen med sudo.",
|
||||
"ctrlc": "Tryk på Ctrl-C for at afslutte.",
|
||||
"commands": "Du kan køre tekstversionen fra kommandolinjen med følgende kommando(er)",
|
||||
"graphicalerror": "Den grafiske version af dette installationsprogram kan ikke køre på dette system",
|
||||
"zenity": "Prøv at installere/opdatere Zenity, og kør igen",
|
||||
"status": [
|
||||
"IKKE INSTALLERET",
|
||||
|
@ -537,15 +528,17 @@
|
|||
"KØRER IKKE"
|
||||
],
|
||||
"statusDescription": "Aktuel agentstatus",
|
||||
"description": "Klik på knapperne nedenfor for at installere eller afinstallere mesh-agenten. Når den er installeret, kører denne software i baggrunden, og tillader at denne computer kan administreres og kontrolleres af en fjernadministrator."
|
||||
"agentVersion": "Ny version",
|
||||
"elevation": "Forhøjede tilladelser er nødvendige for at installere/afinstallere denne software.",
|
||||
"graphicalerror": "Den grafiske version af dette installationsprogram kan ikke køre på dette system",
|
||||
"description": "Klik på knapperne nedenfor for at installere eller afinstallere denne fjernstyringssoftware. Når den er installeret, kører denne software i baggrunden, så denne computer kan administreres og kontrolleres af en fjernadministrator."
|
||||
},
|
||||
"pl": {
|
||||
"agent": "Agent",
|
||||
"agentVersion": "Nowa Wersja Agenta",
|
||||
"group": "Grupa Urządzeń",
|
||||
"url": "URL Serwera",
|
||||
"meshName": "Nazwa Sieci",
|
||||
"meshId": "Identyfikator sieci",
|
||||
"meshId": "Identyfikator Grupy",
|
||||
"serverId": "Identyfikator Serwera",
|
||||
"setup": "Konfiguracja",
|
||||
"update": "Aktualizacja",
|
||||
|
@ -554,12 +547,11 @@
|
|||
"connect": "Połącz",
|
||||
"disconnect": "Rozłącz",
|
||||
"cancel": "Anuluj",
|
||||
"close": "Zamknij",
|
||||
"pressok": "Naciśnij OK by się rozłączyć",
|
||||
"elevation": "Do zainstalowania/odinstalowania agenta wymagane są podwyższone uprawnienia.",
|
||||
"sudo": "Proszę spróbować ponownie z sudo.",
|
||||
"ctrlc": "Naciśnij Ctrl-C by wyjść.",
|
||||
"commands": "Możesz uruchomić wersję tekstową z linii poleceń za pomocą następujących komend",
|
||||
"graphicalerror": "Graficzna wersja tego instalatora nie może być uruchomiona w tym systemie.",
|
||||
"zenity": "Spróbuj zainstalować/zaktualizować Zenity i uruchom ponownie",
|
||||
"status": [
|
||||
"NIE ZAINSTALOWANY",
|
||||
|
@ -567,15 +559,17 @@
|
|||
"NIE DZIAŁA"
|
||||
],
|
||||
"statusDescription": "Obecny Status Agenta",
|
||||
"description": "Kliknij poniższe przyciski, aby zainstalować lub odinstalować agenta. Po zainstalowaniu, to oprogramowanie działa w tle, umożliwiając zarządzanie i kontrolowanie tego komputera przez zdalnego administratora."
|
||||
"agentVersion": "Nowa Wersja",
|
||||
"elevation": "Do zainstalowania/odinstalowania tego oprogramowania wymagane są podwyższone uprawnienia.",
|
||||
"graphicalerror": "Graficzna wersja tego instalatora nie może być uruchomiona w tym systemie",
|
||||
"description": "Kliknij poniższe przyciski, aby zainstalować lub odinstalować oprogramowanie zdalnego dostępu. Po zainstalowaniu, to oprogramowanie działa w tle, umożliwiając zarządzanie i kontrolowanie tego komputera przez zdalnego administratora."
|
||||
},
|
||||
"pt-br": {
|
||||
"agent": "Agente",
|
||||
"agentVersion": "Nova versão do agente",
|
||||
"group": "Grupo de Dispositivos",
|
||||
"url": "URL do servidor",
|
||||
"meshName": "Nome Mesh",
|
||||
"meshId": "Identificador Mesh",
|
||||
"meshId": "Identificador de Grupo",
|
||||
"serverId": "Identificador de Servidor",
|
||||
"setup": "Configurar",
|
||||
"update": "Atualizar",
|
||||
|
@ -584,19 +578,17 @@
|
|||
"connect": "Conectar",
|
||||
"disconnect": "Desconectar",
|
||||
"cancel": "Cancelar",
|
||||
"close": "Fechar",
|
||||
"pressok": "Pressione OK para desconectar",
|
||||
"elevation": "Permissões elevadas são necessárias para instalar / desinstalar o agente.",
|
||||
"sudo": "Por favor, tente novamente com sudo.",
|
||||
"ctrlc": "Pressione Ctrl-C para sair.",
|
||||
"commands": "Você pode executar a versão em texto a partir da linha de comando com o (s) seguinte (s) comando (s)",
|
||||
"graphicalerror": "A versão gráfica deste instalador não pode ser executada neste sistema",
|
||||
"zenity": "Tente instalar / atualizar o Zenity e execute novamente",
|
||||
"status": [
|
||||
"NÃO INSTALADO",
|
||||
"Executando",
|
||||
"NÃO EXECUTANDO"
|
||||
],
|
||||
"statusDescription": "Status atual do agente",
|
||||
"description": "Clique nos botões abaixo para instalar ou desinstalar o agente mesh. Quando instalado, este software é executado em segundo plano, permitindo que o computador seja gerenciado e controlado por um administrador remoto."
|
||||
"statusDescription": "Status atual do agente"
|
||||
}
|
||||
}
|
|
@ -13,39 +13,99 @@
|
|||
},
|
||||
"cs": {
|
||||
"allow": "Dovolit",
|
||||
"deny": "Odmítnout"
|
||||
"deny": "Odmítnout",
|
||||
"autoAllowForFive": "Automaticky přijímat všechna připojení na dalších 5 minut",
|
||||
"terminalConsent": "{0} žádá o vzdálený terminálový přístup. Přístup povolen?",
|
||||
"desktopConsent": "{0} žádá o přístup ke vzdálené ploše. Přístup povolen?",
|
||||
"fileConsent": "{0} požaduje vzdálený přístup k souboru. Přístup povolen?",
|
||||
"terminalNotify": "{0} zahájil relaci vzdáleného terminálu.",
|
||||
"desktopNotify": "{0} zahájil relaci vzdálené plochy.",
|
||||
"fileNotify": "{0} zahájil relaci vzdáleného souboru.",
|
||||
"privacyBar": "Sdílení plochy s: {0}"
|
||||
},
|
||||
"de": {
|
||||
"allow": "Erlauben",
|
||||
"deny": "Verweigern"
|
||||
"deny": "Verweigern",
|
||||
"autoAllowForFive": "Alle Verbindungen für die nächsten 5 Minuten erlauben",
|
||||
"terminalConsent": "{0} erbittet Fern-Terminalzugriff. Zugang erlauben?",
|
||||
"desktopConsent": "{0} erbittet Fern-Desktopzugriff. Zugang erlauben?",
|
||||
"fileConsent": "{0} erbittet Fern-Dateizugriff. Zugang erlauben?",
|
||||
"terminalNotify": "{0} hat eine Fern-Terminalzugriff-Sitzung gestartet.",
|
||||
"desktopNotify": "{0} hat eine Fern-Desktopzugriff-Sitzung gestartet.",
|
||||
"fileNotify": "{0} hat eine Fern-Dateizugriff-Sitzung gestartet.",
|
||||
"privacyBar": "Teile desktop mit: {0}"
|
||||
},
|
||||
"es": {
|
||||
"allow": "Permitir",
|
||||
"deny": "Negar"
|
||||
"deny": "Negar",
|
||||
"autoAllowForFive": "Aceptar automáticamente todas las conexiones durante los próximos 5 minutos",
|
||||
"terminalConsent": "{0} solicitando acceso a terminal remoto. ¿Autorizará el acceso?",
|
||||
"desktopConsent": "{0} solicita acceso a escritorio remoto. ¿Autorizará el acceso?",
|
||||
"fileConsent": "{0} solicita acceso remoto al archivo. ¿Autorizará el acceso?",
|
||||
"terminalNotify": "{0} inició una sesión de terminal remota.",
|
||||
"desktopNotify": "{0} inició una sesión de escritorio remoto.",
|
||||
"fileNotify": "{0} inició una sesión de archivo remoto.",
|
||||
"privacyBar": "Compartir escritorio con: {0}"
|
||||
},
|
||||
"fi": {
|
||||
"allow": "Sallia",
|
||||
"deny": "Kieltää"
|
||||
"deny": "Kieltää",
|
||||
"autoAllowForFive": "Hyväksy automaattisesti kaikki yhteydet seuraavan 5 minuutin ajan",
|
||||
"terminalConsent": "{0} pyytää etäpäätteen käyttöoikeutta. Myönnetäänkö käyttöoikeus?",
|
||||
"desktopConsent": "{0} pyytää etätyöpöytäkäyttöä. Myönnetäänkö käyttöoikeus?",
|
||||
"fileConsent": "{0} pyytää etäkäyttöoikeutta tiedostoon. Myönnetäänkö käyttöoikeus?",
|
||||
"terminalNotify": "{0} aloitti etäpääteistunnon.",
|
||||
"desktopNotify": "{0} aloitti etätyöpöytäistunnon.",
|
||||
"fileNotify": "{0} aloitti etätiedostoistunnon.",
|
||||
"privacyBar": "Työpöytä jaetaan seuraavien kanssa: {0}"
|
||||
},
|
||||
"fr": {
|
||||
"allow": "Permettre",
|
||||
"deny": "Refuser",
|
||||
"autoAllowForFive": "Accepter automatiquement les connexions pendant les 5 prochaines minutes",
|
||||
"terminalConsent": "{0} demande(s) d'utilisation du terminal distant. Autoriser l'accès ?",
|
||||
"desktopConsent": "{0} demande(s) d'utilisation du bureau distant. Autoriser l'accès ?",
|
||||
"fileConsent": "{0} demande(s) d'accès à un fichier distant. Autoriser l'accès ?"
|
||||
"terminalConsent": "{0} demande(nt) d'utilisation du terminal à distance. Autoriser l'accès ?",
|
||||
"desktopConsent": "{0} demande(nt) l'utilisation du bureau à distance. Autoriser l'accès ?",
|
||||
"fileConsent": "{0} demande(nt) d'accès à un fichier à distance. Autoriser l'accès ?",
|
||||
"terminalNotify": "{0} a démarré une session de terminal distant.",
|
||||
"desktopNotify": "{0} a démarré une session de bureau à distance.",
|
||||
"fileNotify": "{0} a démarré une session de fichiers à distance.",
|
||||
"privacyBar": "Partage du bureau avec : {0}"
|
||||
},
|
||||
"hi": {
|
||||
"allow": "अनुमति",
|
||||
"deny": "मना"
|
||||
"deny": "मना",
|
||||
"autoAllowForFive": "अगले 5 मिनट के लिए सभी कनेक्शन स्वतः स्वीकार करें",
|
||||
"terminalConsent": "{0} दूरस्थ टर्मिनल पहुंच का अनुरोध कर रहा है। अनुदान पहुँच?",
|
||||
"desktopConsent": "{0} दूरस्थ डेस्कटॉप पहुंच का अनुरोध कर रहा है। अनुदान पहुँच?",
|
||||
"fileConsent": "{0} दूरस्थ फ़ाइल एक्सेस का अनुरोध करना। अनुदान पहुँच?",
|
||||
"terminalNotify": "{0} ने दूरस्थ टर्मिनल सत्र प्रारंभ किया।",
|
||||
"desktopNotify": "{0} ने दूरस्थ डेस्कटॉप सत्र प्रारंभ किया।",
|
||||
"fileNotify": "{0} ने दूरस्थ फ़ाइल सत्र प्रारंभ किया।",
|
||||
"privacyBar": "इसके साथ डेस्कटॉप साझा करना: {0}"
|
||||
},
|
||||
"it": {
|
||||
"allow": "Permettere",
|
||||
"deny": "Negare"
|
||||
"deny": "Negare",
|
||||
"autoAllowForFive": "Accetta automaticamente tutte le connessioni per i prossimi 5 minuti",
|
||||
"terminalConsent": "{0} che richiede l'accesso al terminale remoto. Concedere l'accesso?",
|
||||
"desktopConsent": "{0} che richiede l'accesso al desktop remoto. Concedere l'accesso?",
|
||||
"fileConsent": "{0} che richiede l'accesso al file remoto. Concedere l'accesso?",
|
||||
"terminalNotify": "{0} ha avviato una sessione di terminale remoto.",
|
||||
"desktopNotify": "{0} ha avviato una sessione desktop remoto.",
|
||||
"fileNotify": "{0} ha avviato una sessione di file remota.",
|
||||
"privacyBar": "Condivisione del desktop con: {0}"
|
||||
},
|
||||
"ja": {
|
||||
"allow": "許可する",
|
||||
"deny": "拒否"
|
||||
"deny": "拒否",
|
||||
"autoAllowForFive": "次の5分間はすべての接続を自動受け入れます",
|
||||
"terminalConsent": "{0}リモート端末アクセスを要求しています。アクセス許可?",
|
||||
"desktopConsent": "{0}リモートデスクトップアクセスを要求しています。アクセス許可?",
|
||||
"fileConsent": "{0}リモートファイルアクセスを要求しています。アクセス許可?",
|
||||
"terminalNotify": "{0}がリモートターミナルセッションを開始しました。",
|
||||
"desktopNotify": "{0}はリモートデスクトップセッションを開始しました。",
|
||||
"fileNotify": "{0}がリモートファイルセッションを開始しました。",
|
||||
"privacyBar": "デスクトップの共有:{0}"
|
||||
},
|
||||
"ko": {
|
||||
"allow": "허용하다",
|
||||
|
@ -57,7 +117,15 @@
|
|||
},
|
||||
"nl": {
|
||||
"allow": "Toestaan",
|
||||
"deny": "Weigeren"
|
||||
"deny": "Weigeren",
|
||||
"autoAllowForFive": "Alle verbindingen automatisch accepteren voor de komende 5 minuten",
|
||||
"terminalConsent": "{0} verzoekt om toegang tot externe terminal.Toegang verlenen?",
|
||||
"desktopConsent": "{0} verzoekt om toegang tot extern bureaublad.Toegang verlenen?",
|
||||
"fileConsent": "{0} verzoekt om externe bestandstoegang.Toegang verlenen?",
|
||||
"terminalNotify": "{0} heeft een externe terminalsessie gestart.",
|
||||
"desktopNotify": "{0} heeft een extern bureaubladsessie gestart.",
|
||||
"fileNotify": "{0} heeft een externe bestandssessie gestart.",
|
||||
"privacyBar": "Bureaublad delen met: {0}"
|
||||
},
|
||||
"pt": {
|
||||
"allow": "Permitir",
|
||||
|
@ -73,7 +141,15 @@
|
|||
},
|
||||
"tr": {
|
||||
"allow": "İzin vermek",
|
||||
"deny": "İnkar etmek"
|
||||
"deny": "İnkar etmek",
|
||||
"autoAllowForFive": "Sonraki 5 dakika boyunca tüm bağlantıları otomatik olarak kabul et",
|
||||
"terminalConsent": "{0} uzak terminal erişimi istiyor. Erişim izni veriyor musunuz?",
|
||||
"desktopConsent": "{0} uzak masaüstü erişimi istiyor. Erişim izni veriyor musunuz?",
|
||||
"fileConsent": "{0} uzak dosya Erişimi istiyor. Erişim izni veriyor musunuz?",
|
||||
"terminalNotify": "{0} bir uzak terminal oturumu başlattı.",
|
||||
"desktopNotify": "{0} bir uzak masaüstü oturumu başlattı.",
|
||||
"fileNotify": "{0} bir uzak dosya oturumu başlattı.",
|
||||
"privacyBar": "Masaüstünü şu kişilerle paylaşma: {0}"
|
||||
},
|
||||
"zh-chs": {
|
||||
"allow": "允许",
|
||||
|
@ -81,11 +157,27 @@
|
|||
},
|
||||
"da": {
|
||||
"allow": "Tillad",
|
||||
"deny": "Afslå"
|
||||
"deny": "Afslå",
|
||||
"autoAllowForFive": "Accepter automatisk alle forbindelser i de næste 5 minutter",
|
||||
"terminalConsent": "{0} anmoder om ekstern terminaladgang. Give adgang?",
|
||||
"desktopConsent": "{0} anmoder om fjernskrivebordsadgang. Give adgang?",
|
||||
"fileConsent": "{0} anmoder om fjernadgang til fil. Give adgang?",
|
||||
"terminalNotify": "{0} startede en fjernterminalsession.",
|
||||
"desktopNotify": "{0} startede en fjernskrivebordssession.",
|
||||
"fileNotify": "{0} startede en ekstern filsession.",
|
||||
"privacyBar": "Deler skrivebordet med: {0}"
|
||||
},
|
||||
"pl": {
|
||||
"allow": "Zezwól",
|
||||
"deny": "Odrzucono"
|
||||
"deny": "Odrzucono",
|
||||
"autoAllowForFive": "Automatycznie akceptuj wszystkie połączenia przez następne 5 minut",
|
||||
"terminalConsent": "{0} prosi o zdalny dostęp do terminala. Przyznać dostęp?",
|
||||
"desktopConsent": "{0} prosi o zdalny dostęp do pulpitu. Przyznać dostęp?",
|
||||
"fileConsent": "{0} prosi o zdalny dostęp do plików. Przyznać dostęp?",
|
||||
"terminalNotify": "{0} rozpoczął sesję dostępu do terminala.",
|
||||
"desktopNotify": "{0} rozpoczął sesję dostępu do pulpitu.",
|
||||
"fileNotify": "{0} rozpoczął sesję dostępu do plików.",
|
||||
"privacyBar": "Współdzielenie pulpitu z: {0}"
|
||||
},
|
||||
"pt-br": {
|
||||
"allow": "Permitir",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Server IDER handler
|
||||
* @author Ylian Saint-Hilaire & Bryan Roe
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Intel(R) AMT Event Parser
|
||||
* @author Ylian Saint-Hilaire & Bryan Roe
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Intel AMT manager
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Intel AMT Hello server
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Intel(R) AMT Local Scanner
|
||||
* @author Ylian Saint-Hilaire & Joko Sastriawan
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @fileoverview Script Compiler / Decompiler / Runner
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.1.0e
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral MSTSC & SSH relay
|
||||
* @author Ylian Saint-Hilaire & Bryan Roe
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description Certificate generator
|
||||
* @author Joko Sastriawan / Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Common Library
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
85
db.js
85
db.js
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral database module
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.2
|
||||
*/
|
||||
|
@ -423,7 +423,16 @@ module.exports.CreateDB = function (parent, func) {
|
|||
// Get the number of records in the database for various types, this is the slow NeDB way.
|
||||
// WARNING: This is a terrible query for database performance. Only do this when needed. This query will look at almost every document in the database.
|
||||
obj.getStats = function (func) {
|
||||
if (obj.databaseType == 3) {
|
||||
if (obj.databaseType == 6) {
|
||||
// PostgreSQL
|
||||
// TODO
|
||||
} else if (obj.databaseType == 5) {
|
||||
// MySQL
|
||||
// TODO
|
||||
} else if (obj.databaseType == 4) {
|
||||
// MariaDB
|
||||
// TODO
|
||||
} else if (obj.databaseType == 3) {
|
||||
// MongoDB
|
||||
obj.file.aggregate([{ "$group": { _id: "$type", count: { $sum: 1 } } }]).toArray(function (err, docs) {
|
||||
var counters = {}, totalCount = 0;
|
||||
|
@ -656,13 +665,13 @@ module.exports.CreateDB = function (parent, func) {
|
|||
} else if (parent.args.mysql) {
|
||||
// Use MySQL
|
||||
obj.databaseType = 5;
|
||||
var tempDatastore = require('mysql').createConnection(connectionObject);
|
||||
var tempDatastore = require('mysql').createPool(connectionObject);
|
||||
tempDatastore.query('CREATE DATABASE IF NOT EXISTS ' + dbname, function (error) {
|
||||
if (error != null) {
|
||||
console.log('Auto-create database failed: ' + error);
|
||||
}
|
||||
connectionObject.database = dbname;
|
||||
Datastore = require('mysql').createConnection(connectionObject);
|
||||
Datastore = require('mysql').createPool(connectionObject);
|
||||
createTablesIfNotExist(dbname);
|
||||
});
|
||||
setTimeout(function () { tempDatastore.end(); }, 2000);
|
||||
|
@ -677,32 +686,38 @@ module.exports.CreateDB = function (parent, func) {
|
|||
const { Pool, Client } = require('pg');
|
||||
connectinArgs.database = dbname;
|
||||
Datastore = new Client(connectinArgs);
|
||||
Datastore.connect()
|
||||
parent.debug('db', 'Checking tables...');
|
||||
sqlDbBatchExec([
|
||||
'CREATE TABLE IF NOT EXISTS main (id VARCHAR(256) PRIMARY KEY NOT NULL, type CHAR(32), domain CHAR(64), extra CHAR(255), extraex CHAR(255), doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS events(id SERIAL PRIMARY KEY, time TIMESTAMP, domain CHAR(64), action CHAR(255), nodeid CHAR(255), userid CHAR(255), doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS eventids(fkid INT NOT NULL, target CHAR(255), CONSTRAINT fk_eventid FOREIGN KEY (fkid) REFERENCES events (id) ON DELETE CASCADE ON UPDATE RESTRICT)',
|
||||
'CREATE TABLE IF NOT EXISTS serverstats (time TIMESTAMP PRIMARY KEY, expire TIMESTAMP, doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS power (id SERIAL PRIMARY KEY, time TIMESTAMP, nodeid CHAR(255), doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS smbios (id CHAR(255) PRIMARY KEY, time TIMESTAMP, expire TIMESTAMP, doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS plugin (id SERIAL PRIMARY KEY, doc JSON)'
|
||||
], function (results) {
|
||||
parent.debug('db', 'Checking indexes...');
|
||||
sqlDbExec('CREATE INDEX ndxtypedomainextra ON main (type, domain, extra)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxextra ON main (extra)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxextraex ON main (extraex)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxeventstime ON events(time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxeventsusername ON events(domain, userid, time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxeventsdomainnodeidtime ON events(domain, nodeid, time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxeventids ON eventids(target)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxserverstattime ON serverstats (time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxserverstatexpire ON serverstats (expire)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxpowernodeidtime ON power (nodeid, time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxsmbiostime ON smbios (time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxsmbiosexpire ON smbios (expire)', null, function (err, response) { });
|
||||
Datastore.connect();
|
||||
if (err == null) {
|
||||
// Database was created, create the tables
|
||||
parent.debug('db', 'Creating tables...');
|
||||
sqlDbBatchExec([
|
||||
'CREATE TABLE IF NOT EXISTS main (id VARCHAR(256) PRIMARY KEY NOT NULL, type CHAR(32), domain CHAR(64), extra CHAR(255), extraex CHAR(255), doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS events(id SERIAL PRIMARY KEY, time TIMESTAMP, domain CHAR(64), action CHAR(255), nodeid CHAR(255), userid CHAR(255), doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS eventids(fkid INT NOT NULL, target CHAR(255), CONSTRAINT fk_eventid FOREIGN KEY (fkid) REFERENCES events (id) ON DELETE CASCADE ON UPDATE RESTRICT)',
|
||||
'CREATE TABLE IF NOT EXISTS serverstats (time TIMESTAMP PRIMARY KEY, expire TIMESTAMP, doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS power (id SERIAL PRIMARY KEY, time TIMESTAMP, nodeid CHAR(255), doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS smbios (id CHAR(255) PRIMARY KEY, time TIMESTAMP, expire TIMESTAMP, doc JSON)',
|
||||
'CREATE TABLE IF NOT EXISTS plugin (id SERIAL PRIMARY KEY, doc JSON)'
|
||||
], function (results) {
|
||||
parent.debug('db', 'Creating indexes...');
|
||||
sqlDbExec('CREATE INDEX ndxtypedomainextra ON main (type, domain, extra)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxextra ON main (extra)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxextraex ON main (extraex)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxeventstime ON events(time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxeventsusername ON events(domain, userid, time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxeventsdomainnodeidtime ON events(domain, nodeid, time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxeventids ON eventids(target)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxserverstattime ON serverstats (time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxserverstatexpire ON serverstats (expire)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxpowernodeidtime ON power (nodeid, time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxsmbiostime ON smbios (time)', null, function (err, response) { });
|
||||
sqlDbExec('CREATE INDEX ndxsmbiosexpire ON smbios (expire)', null, function (err, response) { });
|
||||
setupFunctions(func);
|
||||
});
|
||||
} else {
|
||||
// Database already existed, skip table and index creation
|
||||
setupFunctions(func);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (parent.args.mongodb) {
|
||||
// Use MongoDB
|
||||
|
@ -1103,7 +1118,7 @@ module.exports.CreateDB = function (parent, func) {
|
|||
else if (results.command == 'SELECT') {
|
||||
for (var i in results.rows) { if (results.rows[i].doc) { if (typeof results.rows[i].doc == 'string') { docs.push(JSON.parse(results.rows[i].doc)); } else { docs.push(results.rows[i].doc); } } }
|
||||
}
|
||||
if (func) { try { func(null, docs); } catch (ex) { console.log('SQLERR5', ex); } }
|
||||
if (func) { try { func(null, docs, results); } catch (ex) { console.log('SQLERR5', ex); } }
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1260,7 +1275,7 @@ module.exports.CreateDB = function (parent, func) {
|
|||
obj.RemoveAllEvents = function (domain) { sqlDbQuery('DELETE FROM events', null, function (err, docs) { }); };
|
||||
obj.RemoveAllNodeEvents = function (domain, nodeid) { if ((domain == null) || (nodeid == null)) return; sqlDbQuery('DELETE FROM events WHERE domain = $1 AND nodeid = $2', [domain, nodeid], function (err, docs) { }); };
|
||||
obj.RemoveAllUserEvents = function (domain, userid) { if ((domain == null) || (userid == null)) return; sqlDbQuery('DELETE FROM events WHERE domain = $1 AND userid = $2', [domain, userid], function (err, docs) { }); };
|
||||
obj.GetFailedLoginCount = function (userid, domainid, lastlogin, func) { sqlDbExec('SELECT COUNT(id) FROM events WHERE action = "authfail" AND domain = $1 AND userid = $2 AND time > $3', [domainid, userid, lastlogin], function (err, response) { func(err == null ? response['COUNT(id)'] : 0); }); }
|
||||
obj.GetFailedLoginCount = function (userid, domainid, lastlogin, func) { sqlDbQuery('SELECT COUNT(*) FROM events WHERE action = \'authfail\' AND domain = $1 AND userid = $2 AND time > $3', [domainid, userid, lastlogin], function (err, response, raw) { func(err == null ? parseInt(raw.rows[0].count) : 0); }); }
|
||||
|
||||
// Database actions on the power collection
|
||||
obj.getAllPower = function (func) { sqlDbQuery('SELECT doc FROM power', null, func); };
|
||||
|
@ -1305,10 +1320,10 @@ module.exports.CreateDB = function (parent, func) {
|
|||
// Get database information (TODO: Complete this)
|
||||
obj.getDbStats = function (func) {
|
||||
obj.stats = { c: 4 };
|
||||
sqlDbExec('SELECT COUNT(id) FROM main', null, function (err, response) { obj.stats.meshcentral = response['COUNT(id)']; if (--obj.stats.c == 0) { delete obj.stats.c; func(obj.stats); } });
|
||||
sqlDbExec('SELECT COUNT(time) FROM serverstats', null, function (err, response) { obj.stats.serverstats = response['COUNT(time)']; if (--obj.stats.c == 0) { delete obj.stats.c; func(obj.stats); } });
|
||||
sqlDbExec('SELECT COUNT(id) FROM power', null, function (err, response) { obj.stats.power = response['COUNT(id)']; if (--obj.stats.c == 0) { delete obj.stats.c; func(obj.stats); } });
|
||||
sqlDbExec('SELECT COUNT(id) FROM smbios', null, function (err, response) { obj.stats.smbios = response['COUNT(id)']; if (--obj.stats.c == 0) { delete obj.stats.c; func(obj.stats); } });
|
||||
sqlDbQuery('SELECT COUNT(*) FROM main', null, function (err, response, raw) { obj.stats.meshcentral = (err == null ? parseInt(raw.rows[0].count) : 0); if (--obj.stats.c == 0) { delete obj.stats.c; func(obj.stats); } });
|
||||
sqlDbQuery('SELECT COUNT(*) FROM serverstats', null, function (err, response, raw) { obj.stats.serverstats = (err == null ? parseInt(raw.rows[0].count) : 0); if (--obj.stats.c == 0) { delete obj.stats.c; func(obj.stats); } });
|
||||
sqlDbQuery('SELECT COUNT(*) FROM power', null, function (err, response, raw) { obj.stats.power = (err == null ? parseInt(raw.rows[0].count) : 0); if (--obj.stats.c == 0) { delete obj.stats.c; func(obj.stats); } });
|
||||
sqlDbQuery('SELECT COUNT(*) FROM smbios', null, function (err, response, raw) { obj.stats.smbios = (err == null ? parseInt(raw.rows[0].count) : 0); if (--obj.stats.c == 0) { delete obj.stats.c; func(obj.stats); } });
|
||||
}
|
||||
|
||||
// Plugin operations
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p>Hej [[[USERNAME]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVER NAMN]]]</a> anmoder om e-mailbekræftelse, klik på følgende link for at fuldføre processen.</p>
|
||||
<p>Hej [[[USERNAME]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> anmoder om e-mailbekræftelse, klik på følgende link for at fuldføre processen.</p>
|
||||
<p style="margin-left:30px">
|
||||
<a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]][[[URLARGS2]]]">Klik her for at bekræfte din e-mailadresse.</a>
|
||||
</p>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p>Olá [[[NOME DE USUÁRIO]]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[NOME DO SERVIDOR]]]</a> está solicitando verificação de e-mail, clique no link a seguir para concluir o processo.</p>
|
||||
<p>Olá [[[NOME DE USUÁRIO]]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> está solicitando verificação de e-mail, clique no link a seguir para concluir o processo.</p>
|
||||
<p style="margin-left:30px">
|
||||
<a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]][[[URLARGS2]]]">Clique aqui para verificar seu endereço de e-mail.</a>
|
||||
</p>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p>Hej [[[USERNAME]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVER NAMN]]]</a> begär e-postverifiering, klicka på följande länk för att slutföra processen.</p>
|
||||
<p>Hej [[[USERNAME]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> begär e-postverifiering, klicka på följande länk för att slutföra processen.</p>
|
||||
<p style="margin-left:30px">
|
||||
<a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]][[[URLARGS2]]]">Klicka här för att verifiera din e-postadress.</a>
|
||||
</p>
|
||||
|
|
|
@ -14,6 +14,6 @@
|
|||
</p>
|
||||
Venlig hilsen,
|
||||
<br>
|
||||
[[[BRUGERNAVN]]]
|
||||
[[[USERNAME]]]
|
||||
<br>
|
||||
</div></body></html>
|
|
@ -14,6 +14,6 @@
|
|||
</p>
|
||||
Atenciosamente,
|
||||
<br>
|
||||
[[[NOME DO USUÁRIO]]]
|
||||
[[[USERNAME]]]
|
||||
<br>
|
||||
</div></body></html>
|
|
@ -14,6 +14,6 @@
|
|||
</p>
|
||||
Cumprimentos,
|
||||
<br>
|
||||
[[[NOME DO USUÁRIO]]]
|
||||
[[[USERNAME]]]
|
||||
<br>
|
||||
</div></body></html>
|
|
@ -14,6 +14,6 @@
|
|||
</p>
|
||||
Vänliga hälsningar,
|
||||
<br>
|
||||
[[[ANVÄNDARNAMN]]]
|
||||
[[[USERNAME]]]
|
||||
<br>
|
||||
</div></body></html>
|
|
@ -7,6 +7,6 @@
|
|||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p>Giriş jetonunuz: [[[TOKEN]]]</p>
|
||||
<p>Giriş anahtarınız: [[[TOKEN]]]</p>
|
||||
<p>Bu simge yalnızca bir kez kullanılabilir ve 5 dakika geçerlidir.</p>
|
||||
</div></body></html>
|
|
@ -1,4 +1,4 @@
|
|||
[[[SERVERNAME]]] - Hesap Girişi
|
||||
Giriş jetonunuz: [[[TOKEN]]]
|
||||
Giriş anahtarınız: [[[TOKEN]]]
|
||||
~
|
||||
Bu simge yalnızca bir kez kullanılabilir ve 5 dakika geçerlidir.
|
|
@ -7,7 +7,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p>Hej [[[USERNAME]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVER NAMN]]]</a> anmoder om en nulstilling af kontoadgangskode, klik på følgende link for at fuldføre processen.</p>
|
||||
<p>Hej [[[USERNAME]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> anmoder om en nulstilling af kontoadgangskode, klik på følgende link for at fuldføre processen.</p>
|
||||
<p style="margin-left:30px">
|
||||
<a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]][[[URLARGS2]]]">Klik her for at nulstille adgangskoden til din konto.</a>
|
||||
</p>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p>Olá [[[NOME DE USUÁRIO]]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[NOME DO SERVIDOR]]]</a> está solicitando a redefinição da senha da conta, clique no link a seguir para concluir o processo.</p>
|
||||
<p>Olá [[[NOME DE USUÁRIO]]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> está solicitando a redefinição da senha da conta, clique no link a seguir para concluir o processo.</p>
|
||||
<p style="margin-left:30px">
|
||||
<a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]][[[URLARGS2]]]">Clique aqui para redefinir a senha da sua conta.</a>
|
||||
</p>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p>Hej [[[USERNAME]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVER NAMN]]]</a> begär återställning av kontolösenord, klicka på följande länk för att slutföra processen.</p>
|
||||
<p>Hej [[[USERNAME]], <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> begär återställning av kontolösenord, klicka på följande länk för att slutföra processen.</p>
|
||||
<p style="margin-left:30px">
|
||||
<a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]][[[URLARGS2]]]">Klicka här för att återställa ditt kontolösenord.</a>
|
||||
</p>
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
<html><head></head><body><div>[[[SERVERNAME]]] - Device Notification</div>
|
||||
<html><head></head><body><div>[[[SERVERNAME]]] – Oznámení zařízení</div>
|
||||
<div style="font-family:Arial,Helvetica,sans-serif">
|
||||
<table style="background-color:#003366;color:lightgray;width:100%" cellpadding="8">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Device Notification</b>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] – Oznámení zařízení</b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<area-header>
|
||||
<p>
|
||||
The following devices have changed their connection state.
|
||||
Následující zařízení změnila svůj stav připojení.
|
||||
</p>
|
||||
</area-header>
|
||||
<area-connections>
|
||||
<p>
|
||||
Connected devices:
|
||||
Připojená zařízení:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[CONNECTIONS]]]
|
||||
|
@ -22,7 +22,7 @@
|
|||
</area-connections>
|
||||
<area-disconnections>
|
||||
<p>
|
||||
Disconnected devices:
|
||||
Odpojená zařízení:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[DISCONNECTIONS]]]
|
||||
|
@ -30,7 +30,7 @@
|
|||
</area-disconnections>
|
||||
<area-footer>
|
||||
<p>
|
||||
To unsubscribe, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">klikněte zde</a> within 1 hour of getting this message.
|
||||
Chcete-li se odhlásit, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">klikněte zde</a> do 1 hodiny od obdržení této zprávy.
|
||||
</p>
|
||||
</area-footer>
|
||||
</div></body></html>
|
|
@ -1,22 +1,22 @@
|
|||
[[[SERVERNAME]]] - Device Notification
|
||||
[[[SERVERNAME]]] – Oznámení zařízení
|
||||
~<area-header>
|
||||
The following devices have changed their connection state.
|
||||
Následující zařízení změnila svůj stav připojení.
|
||||
~</area-header>
|
||||
~<area-connections>
|
||||
~
|
||||
Connected devices:
|
||||
Připojená zařízení:
|
||||
~
|
||||
~[[[CONNECTIONS]]]
|
||||
~
|
||||
~</area-connections>
|
||||
~<area-disconnections>
|
||||
~
|
||||
Disconnected devices:
|
||||
Odpojená zařízení:
|
||||
~
|
||||
~[[[DISCONNECTIONS]]]
|
||||
~
|
||||
~</area-disconnections>
|
||||
~<area-footer>
|
||||
|
||||
To unsubscribe, load this link within 1 hour of getting this message: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
Chcete-li se odhlásit, načtěte tento odkaz do 1 hodiny od obdržení této zprávy: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
~</area-footer>
|
|
@ -1,20 +1,20 @@
|
|||
<html><head></head><body><div>[[[SERVERNAME]]] - Device Notification</div>
|
||||
<html><head></head><body><div>[[[SERVERNAME]]] – Gerätebenachrichtigung</div>
|
||||
<div style="font-family:Arial,Helvetica,sans-serif">
|
||||
<table style="background-color:#003366;color:lightgray;width:100%" cellpadding="8">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Device Notification</b>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] – Gerätebenachrichtigung</b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<area-header>
|
||||
<p>
|
||||
The following devices have changed their connection state.
|
||||
Die folgenden Geräte haben ihren Verbindungsstatus geändert.
|
||||
</p>
|
||||
</area-header>
|
||||
<area-connections>
|
||||
<p>
|
||||
Connected devices:
|
||||
Verbundene Geräte:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[CONNECTIONS]]]
|
||||
|
@ -22,7 +22,7 @@
|
|||
</area-connections>
|
||||
<area-disconnections>
|
||||
<p>
|
||||
Disconnected devices:
|
||||
Getrennte Geräte:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[DISCONNECTIONS]]]
|
||||
|
@ -30,7 +30,7 @@
|
|||
</area-disconnections>
|
||||
<area-footer>
|
||||
<p>
|
||||
To unsubscribe, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">hier klicken</a> within 1 hour of getting this message.
|
||||
Deabonnieren, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">hier klicken</a> innerhalb 1 Stunde nach erhalt dieser Nachricht.
|
||||
</p>
|
||||
</area-footer>
|
||||
</div></body></html>
|
|
@ -1,22 +1,22 @@
|
|||
[[[SERVERNAME]]] - Device Notification
|
||||
[[[SERVERNAME]]] – Gerätebenachrichtigung
|
||||
~<area-header>
|
||||
The following devices have changed their connection state.
|
||||
Die folgenden Geräte haben ihren Verbindungsstatus geändert.
|
||||
~</area-header>
|
||||
~<area-connections>
|
||||
~
|
||||
Connected devices:
|
||||
Verbundene Geräte:
|
||||
~
|
||||
~[[[CONNECTIONS]]]
|
||||
~
|
||||
~</area-connections>
|
||||
~<area-disconnections>
|
||||
~
|
||||
Disconnected devices:
|
||||
Getrennte Geräte:
|
||||
~
|
||||
~[[[DISCONNECTIONS]]]
|
||||
~
|
||||
~</area-disconnections>
|
||||
~<area-footer>
|
||||
|
||||
To unsubscribe, load this link within 1 hour of getting this message: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
Um sich abzumelden, laden Sie diesen Link innerhalb von 1 Stunde nach Erhalt dieser Nachricht: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
~</area-footer>
|
|
@ -1,20 +1,20 @@
|
|||
<html><head></head><body><div>[[[SERVERNAME]]] - Device Notification</div>
|
||||
<html><head></head><body><div>[[[SERVERNAME]]] - Laitteen ilmoitus</div>
|
||||
<div style="font-family:Arial,Helvetica,sans-serif">
|
||||
<table style="background-color:#003366;color:lightgray;width:100%" cellpadding="8">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Device Notification</b>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Laitteen ilmoitus</b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<area-header>
|
||||
<p>
|
||||
The following devices have changed their connection state.
|
||||
Seuraavat laitteet ovat muuttaneet yhteystilaa.
|
||||
</p>
|
||||
</area-header>
|
||||
<area-connections>
|
||||
<p>
|
||||
Connected devices:
|
||||
Kytketyt laitteet:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[CONNECTIONS]]]
|
||||
|
@ -22,7 +22,7 @@
|
|||
</area-connections>
|
||||
<area-disconnections>
|
||||
<p>
|
||||
Disconnected devices:
|
||||
Irrotetut laitteet:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[DISCONNECTIONS]]]
|
||||
|
@ -30,7 +30,7 @@
|
|||
</area-disconnections>
|
||||
<area-footer>
|
||||
<p>
|
||||
To unsubscribe, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">klikkaa tästä</a> within 1 hour of getting this message.
|
||||
Lopettaa tilauksen, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">klikkaa tästä</a> tunnin sisällä tämän viestin vastaanottamisesta.
|
||||
</p>
|
||||
</area-footer>
|
||||
</div></body></html>
|
|
@ -1,22 +1,22 @@
|
|||
[[[SERVERNAME]]] - Device Notification
|
||||
[[[SERVERNAME]]] - Laitteen ilmoitus
|
||||
~<area-header>
|
||||
The following devices have changed their connection state.
|
||||
Seuraavat laitteet ovat muuttaneet yhteystilaa.
|
||||
~</area-header>
|
||||
~<area-connections>
|
||||
~
|
||||
Connected devices:
|
||||
Kytketyt laitteet:
|
||||
~
|
||||
~[[[CONNECTIONS]]]
|
||||
~
|
||||
~</area-connections>
|
||||
~<area-disconnections>
|
||||
~
|
||||
Disconnected devices:
|
||||
Irrotetut laitteet:
|
||||
~
|
||||
~[[[DISCONNECTIONS]]]
|
||||
~
|
||||
~</area-disconnections>
|
||||
~<area-footer>
|
||||
|
||||
To unsubscribe, load this link within 1 hour of getting this message: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
Peruuta tilaus lataamalla tämä linkki tunnin sisällä tämän viestin vastaanottamisesta: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
~</area-footer>
|
|
@ -1,20 +1,20 @@
|
|||
<html><head></head><body><div>[[[SERVERNAME]]] - Device Notification</div>
|
||||
<html><head></head><body><div>[[[SERVERNAME]]] - डिवाइस नोटिफिकेशन</div>
|
||||
<div style="font-family:Arial,Helvetica,sans-serif">
|
||||
<table style="background-color:#003366;color:lightgray;width:100%" cellpadding="8">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Device Notification</b>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - डिवाइस नोटिफिकेशन</b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<area-header>
|
||||
<p>
|
||||
The following devices have changed their connection state.
|
||||
निम्न उपकरणों ने अपनी कनेक्शन स्थिति बदल दी है।
|
||||
</p>
|
||||
</area-header>
|
||||
<area-connections>
|
||||
<p>
|
||||
Connected devices:
|
||||
जुड़ी हुई डिवाइसेज:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[CONNECTIONS]]]
|
||||
|
@ -22,7 +22,7 @@
|
|||
</area-connections>
|
||||
<area-disconnections>
|
||||
<p>
|
||||
Disconnected devices:
|
||||
डिस्कनेक्ट किए गए डिवाइस:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[DISCONNECTIONS]]]
|
||||
|
@ -30,7 +30,7 @@
|
|||
</area-disconnections>
|
||||
<area-footer>
|
||||
<p>
|
||||
To unsubscribe, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">यहाँ क्लिक करें</a> within 1 hour of getting this message.
|
||||
सदस्यता रद्द करने के लिए, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">यहाँ क्लिक करें</a> यह संदेश मिलने के 1 घंटे के भीतर।
|
||||
</p>
|
||||
</area-footer>
|
||||
</div></body></html>
|
|
@ -1,22 +1,22 @@
|
|||
[[[SERVERNAME]]] - Device Notification
|
||||
[[[SERVERNAME]]] - डिवाइस नोटिफिकेशन
|
||||
~<area-header>
|
||||
The following devices have changed their connection state.
|
||||
निम्न उपकरणों ने अपनी कनेक्शन स्थिति बदल दी है।
|
||||
~</area-header>
|
||||
~<area-connections>
|
||||
~
|
||||
Connected devices:
|
||||
जुड़ी हुई डिवाइसेज:
|
||||
~
|
||||
~[[[CONNECTIONS]]]
|
||||
~
|
||||
~</area-connections>
|
||||
~<area-disconnections>
|
||||
~
|
||||
Disconnected devices:
|
||||
डिस्कनेक्ट किए गए डिवाइस:
|
||||
~
|
||||
~[[[DISCONNECTIONS]]]
|
||||
~
|
||||
~</area-disconnections>
|
||||
~<area-footer>
|
||||
|
||||
To unsubscribe, load this link within 1 hour of getting this message: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
सदस्यता समाप्त करने के लिए, यह संदेश मिलने के 1 घंटे के भीतर इस लिंक को लोड करें: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
~</area-footer>
|
|
@ -1,20 +1,20 @@
|
|||
<html><head></head><body><div>[[[SERVERNAME]]] - Device Notification</div>
|
||||
<html><head></head><body><div>[[[SERVERNAME]]] - Notifica dispositivo</div>
|
||||
<div style="font-family:Arial,Helvetica,sans-serif">
|
||||
<table style="background-color:#003366;color:lightgray;width:100%" cellpadding="8">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Device Notification</b>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Notifica dispositivo</b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<area-header>
|
||||
<p>
|
||||
The following devices have changed their connection state.
|
||||
I seguenti dispositivi hanno cambiato il loro stato di connessione.
|
||||
</p>
|
||||
</area-header>
|
||||
<area-connections>
|
||||
<p>
|
||||
Connected devices:
|
||||
Dispositivi collegati:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[CONNECTIONS]]]
|
||||
|
@ -22,15 +22,15 @@
|
|||
</area-connections>
|
||||
<area-disconnections>
|
||||
<p>
|
||||
Disconnected devices:
|
||||
Dispositivi disconnessi:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[DISCONNECTIONS]]]
|
||||
[[[DISCONNESSIONI]]]
|
||||
</b></p>
|
||||
</area-disconnections>
|
||||
<area-footer>
|
||||
<p>
|
||||
To unsubscribe, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">clicca qui</a> within 1 hour of getting this message.
|
||||
Per annullare l'iscrizione, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">clicca qui</a> entro 1 ora dalla ricezione di questo messaggio.
|
||||
</p>
|
||||
</area-footer>
|
||||
</div></body></html>
|
|
@ -1,22 +1,22 @@
|
|||
[[[SERVERNAME]]] - Device Notification
|
||||
[[[SERVERNAME]]] - Notifica dispositivo
|
||||
~<area-header>
|
||||
The following devices have changed their connection state.
|
||||
I seguenti dispositivi hanno cambiato il loro stato di connessione.
|
||||
~</area-header>
|
||||
~<area-connections>
|
||||
~
|
||||
Connected devices:
|
||||
Dispositivi collegati:
|
||||
~
|
||||
~[[[CONNECTIONS]]]
|
||||
~
|
||||
~</area-connections>
|
||||
~<area-disconnections>
|
||||
~
|
||||
Disconnected devices:
|
||||
Dispositivi disconnessi:
|
||||
~
|
||||
~[[[DISCONNECTIONS]]]
|
||||
~
|
||||
~</area-disconnections>
|
||||
~<area-footer>
|
||||
|
||||
To unsubscribe, load this link within 1 hour of getting this message: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
Per annullare l'iscrizione, carica questo link entro 1 ora dalla ricezione di questo messaggio: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
~</area-footer>
|
|
@ -1,20 +1,20 @@
|
|||
<html><head></head><body><div>[[[SERVERNAME]]] - Device Notification</div>
|
||||
<html><head></head><body><div>[[[SERVERNAME]]]-デバイス通知</div>
|
||||
<div style="font-family:Arial,Helvetica,sans-serif">
|
||||
<table style="background-color:#003366;color:lightgray;width:100%" cellpadding="8">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Device Notification</b>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]]-デバイス通知</b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<area-header>
|
||||
<p>
|
||||
The following devices have changed their connection state.
|
||||
次のデバイスは接続状態を変更しました。
|
||||
</p>
|
||||
</area-header>
|
||||
<area-connections>
|
||||
<p>
|
||||
Connected devices:
|
||||
接続されているデバイス:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[CONNECTIONS]]]
|
||||
|
@ -22,7 +22,7 @@
|
|||
</area-connections>
|
||||
<area-disconnections>
|
||||
<p>
|
||||
Disconnected devices:
|
||||
切断されたデバイス:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[DISCONNECTIONS]]]
|
||||
|
@ -30,7 +30,7 @@
|
|||
</area-disconnections>
|
||||
<area-footer>
|
||||
<p>
|
||||
To unsubscribe, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">ここをクリック</a> within 1 hour of getting this message.
|
||||
退会するには、 <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">ここをクリック</a> このメッセージを受け取ってから1時間以内。
|
||||
</p>
|
||||
</area-footer>
|
||||
</div></body></html>
|
|
@ -1,22 +1,22 @@
|
|||
[[[SERVERNAME]]] - Device Notification
|
||||
[[[SERVERNAME]]]-デバイス通知
|
||||
~<area-header>
|
||||
The following devices have changed their connection state.
|
||||
次のデバイスは接続状態を変更しました。
|
||||
~</area-header>
|
||||
~<area-connections>
|
||||
~
|
||||
Connected devices:
|
||||
接続されているデバイス:
|
||||
~
|
||||
~[[[CONNECTIONS]]]
|
||||
~
|
||||
~</area-connections>
|
||||
~<area-disconnections>
|
||||
~
|
||||
Disconnected devices:
|
||||
切断されたデバイス:
|
||||
~
|
||||
~[[[DISCONNECTIONS]]]
|
||||
~
|
||||
~</area-disconnections>
|
||||
~<area-footer>
|
||||
|
||||
To unsubscribe, load this link within 1 hour of getting this message: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
登録を解除するには、次のメッセージが表示されてから1時間以内に次のリンクを読み込みます:[[[SERVERURL]]] [[[[UNSUBSCRIBELINK]]]
|
||||
~</area-footer>
|
|
@ -1,20 +1,20 @@
|
|||
<html><head></head><body><div>[[[SERVERNAME]]] - Device Notification</div>
|
||||
<html><head></head><body><div>[[[SERVERNAME]]] - Cihaz Bildirimi</div>
|
||||
<div style="font-family:Arial,Helvetica,sans-serif">
|
||||
<table style="background-color:#003366;color:lightgray;width:100%" cellpadding="8">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Device Notification</b>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Cihaz Bildirimi</b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<area-header>
|
||||
<p>
|
||||
The following devices have changed their connection state.
|
||||
Aşağıdaki cihazlar bağlantı durumlarını değiştirdi.
|
||||
</p>
|
||||
</area-header>
|
||||
<area-connections>
|
||||
<p>
|
||||
Connected devices:
|
||||
Bağlı cihazlar:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[CONNECTIONS]]]
|
||||
|
@ -22,7 +22,7 @@
|
|||
</area-connections>
|
||||
<area-disconnections>
|
||||
<p>
|
||||
Disconnected devices:
|
||||
Bağlantısı kesilen cihazlar:
|
||||
</p>
|
||||
<p><b>
|
||||
[[[DISCONNECTIONS]]]
|
||||
|
@ -30,7 +30,7 @@
|
|||
</area-disconnections>
|
||||
<area-footer>
|
||||
<p>
|
||||
To unsubscribe, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">buraya Tıkla</a> within 1 hour of getting this message.
|
||||
Abonelikten çıkmak, <a href="[[[SERVERURL]]][[[UNSUBSCRIBELINK]]]">buraya Tıkla</a> Bu mesajı aldıktan sonra 1 saat içinde.
|
||||
</p>
|
||||
</area-footer>
|
||||
</div></body></html>
|
|
@ -1,22 +1,22 @@
|
|||
[[[SERVERNAME]]] - Device Notification
|
||||
[[[SERVERNAME]]] - Cihaz Bildirimi
|
||||
~<area-header>
|
||||
The following devices have changed their connection state.
|
||||
Aşağıdaki cihazlar bağlantı durumlarını değiştirdi.
|
||||
~</area-header>
|
||||
~<area-connections>
|
||||
~
|
||||
Connected devices:
|
||||
Bağlı cihazlar:
|
||||
~
|
||||
~[[[CONNECTIONS]]]
|
||||
~
|
||||
~</area-connections>
|
||||
~<area-disconnections>
|
||||
~
|
||||
Disconnected devices:
|
||||
Bağlantısı kesilen cihazlar:
|
||||
~
|
||||
~[[[DISCONNECTIONS]]]
|
||||
~
|
||||
~</area-disconnections>
|
||||
~<area-footer>
|
||||
|
||||
To unsubscribe, load this link within 1 hour of getting this message: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
Aboneliğinizi iptal etmek için, bu mesajı aldıktan sonraki 1 saat içinde bu bağlantıyı yükleyin: [[[SERVERURL]]][[[UNSUBSCRIBELINK]]]
|
||||
~</area-footer>
|
|
@ -12,7 +12,7 @@
|
|||
Hej [[[NAME]]]
|
||||
</p>
|
||||
</area-name>
|
||||
<p>Bruger [[[USERNAME]]] på serveren <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVER NAMN]]]</a> anmoder dig om at installere software for at starte en fjernbetjeningssession.</p>
|
||||
<p>Bruger [[[USERNAME]]] på serveren <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> anmoder dig om at installere software for at starte en fjernbetjeningssession.</p>
|
||||
<area-msg>
|
||||
<p>
|
||||
Meddelelse: <b notrans="1">[[[MSG]]]</b>
|
||||
|
@ -38,5 +38,5 @@
|
|||
</p>
|
||||
</area-link>
|
||||
<p>Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.</p>
|
||||
Venlig hilsen,<br>[[[BRUGERNAVN]]]<br>
|
||||
Venlig hilsen,<br>[[[USERNAME]]]<br>
|
||||
</div></body></html>
|
|
@ -12,7 +12,7 @@
|
|||
Olá [[[NAME]]],
|
||||
</p>
|
||||
</area-name>
|
||||
<p>Usuário [[[USERNAME]]] no servidor <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[NOME DO SERVIDOR]]]</a> está solicitando a instalação de um software para iniciar uma sessão de controle remoto.</p>
|
||||
<p>Usuário [[[USERNAME]]] no servidor <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> está solicitando a instalação de um software para iniciar uma sessão de controle remoto.</p>
|
||||
<area-msg>
|
||||
<p>
|
||||
Mensagem: <b notrans="1">[[[MSG]]]</b>
|
||||
|
@ -38,5 +38,5 @@
|
|||
</p>
|
||||
</area-link>
|
||||
<p>Se você não iniciou esta solicitação, ignore este e-mail.</p>
|
||||
Atenciosamente,<br>[[[NOME DO USUÁRIO]]]<br>
|
||||
Atenciosamente,<br>[[[USERNAME]]]<br>
|
||||
</div></body></html>
|
|
@ -38,5 +38,5 @@
|
|||
</p>
|
||||
</area-link>
|
||||
<p>Se você não iniciou esta solicitação, ignore este e-mail.</p>
|
||||
Cumprimentos,<br>[[[NOME DO USUÁRIO]]]<br>
|
||||
Cumprimentos,<br>[[[USERNAME]]]<br>
|
||||
</div></body></html>
|
|
@ -12,7 +12,7 @@
|
|||
Hej [[[NAME]]]
|
||||
</p>
|
||||
</area-name>
|
||||
<p>Användare [[[USERNAME]]] på servern <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVER NAMN]]]</a> ber dig att installera programvara för att starta en fjärrkontrollsession.</p>
|
||||
<p>Användare [[[USERNAME]]] på servern <a href="[[[SERVERURL]]][[[URLARGS1]]]">[[[SERVERNAME]]]</a> ber dig att installera programvara för att starta en fjärrkontrollsession.</p>
|
||||
<area-msg>
|
||||
<p>
|
||||
Meddelande: <b notrans="1">[[[MSG]]]</b>
|
||||
|
@ -38,5 +38,5 @@
|
|||
</p>
|
||||
</area-link>
|
||||
<p>Om du inte initierade denna begäran, ignorerar du det här meddelandet.</p>
|
||||
Vänliga hälsningar,<br>[[[ANVÄNDARNAMN]]]<br>
|
||||
Vänliga hälsningar,<br>[[[USERNAME]]]<br>
|
||||
</div></body></html>
|
|
@ -3,7 +3,7 @@
|
|||
<table style="background-color:#003366;color:lightgray;width:100%" cellpadding="8">
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Aracı Kurulumu</b>
|
||||
<b style="font-size:20px;font-family:Arial,Helvetica,sans-serif">[[[SERVERNAME]]] - Agent Kurulumu</b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[[0]] doğrulama kodu: [[1]]
|
||||
[[0]] erişim jetonu: [[1]]
|
||||
[[0]] erişim anahtarı: [[1]]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2018-2021 Intel Corporation
|
||||
Copyright 2018-2022 Intel Corporation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Firebase communication module
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Intel(R) AMT Interceptor
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.3
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral letsEncrypt module, uses ACME-Client to do all the work.
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.2
|
||||
*/
|
||||
|
|
2
mcrec.js
2
mcrec.js
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral MeshAgent
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2019-2021
|
||||
* @copyright Intel Corporation 2019-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral accelerator
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral MeshAgent communication module
|
||||
* @author Ylian Saint-Hilaire & Bryan Roe
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
/**
|
||||
* @description MeshCentral bot sample code
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -508,6 +508,7 @@
|
|||
"description": { "type": "string", "default": "Mesh Agent background service", "description": "The description of the agent as displayed to the user." },
|
||||
"companyName": { "type": "string", "default": "Mesh Agent", "description": "This will be used as the path to install the agent, by default this is 'Mesh Agent' in Windows and 'meshagent' in other OS's." },
|
||||
"serviceName": { "type": "string", "default": "Mesh Agent", "description": "The name of the background service, by default this is 'Mesh Agent' in Windows and 'meshagent' in other OS's but should be set to an all lower case, no space string." },
|
||||
"image": { "type": "string", "default": null, "description": "The filename of a image file in .png format located in meshcentral-data to display in the MeshCentral Agent installation dialog, image should be square and from 64x64 to 200x200." },
|
||||
"fileName": { "type": "string", "default": "meshagent", "description": "The agent filename." }
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral main module
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
@ -1285,6 +1285,7 @@ function CreateMeshCentralServer(config, args) {
|
|||
if (typeof obj.config.domains[i].agentcustomization.description != 'string') { delete obj.config.domains[i].agentcustomization.description; } else { obj.config.domains[i].agentcustomization.description = obj.config.domains[i].agentcustomization.description.split('\r').join('').split('\n').join(''); }
|
||||
if (typeof obj.config.domains[i].agentcustomization.companyname != 'string') { delete obj.config.domains[i].agentcustomization.companyname; } else { obj.config.domains[i].agentcustomization.companyname = obj.config.domains[i].agentcustomization.companyname.split('\r').join('').split('\n').join(''); }
|
||||
if (typeof obj.config.domains[i].agentcustomization.servicename != 'string') { delete obj.config.domains[i].agentcustomization.servicename; } else { obj.config.domains[i].agentcustomization.servicename = obj.config.domains[i].agentcustomization.servicename.split('\r').join('').split('\n').join('').split(' ').join('').split('"').join('').split('\'').join('').split('>').join('').split('<').join('').split('/').join('').split('\\').join(''); }
|
||||
if (typeof obj.config.domains[i].agentcustomization.image != 'string') { delete obj.config.domains[i].agentcustomization.image; } else { try { obj.config.domains[i].agentcustomization.image = 'data:image/png;base64,' + Buffer.from(obj.fs.readFileSync(obj.getConfigFilePath(obj.config.domains[i].agentcustomization.image)), 'binary').toString('base64'); } catch (ex) { console.log(ex); delete obj.config.domains[i].agentcustomization.image; } }
|
||||
} else {
|
||||
delete obj.config.domains[i].agentcustomization;
|
||||
}
|
||||
|
@ -1549,7 +1550,10 @@ function CreateMeshCentralServer(config, args) {
|
|||
|
||||
// Load MeshAgent translation strings
|
||||
try {
|
||||
var translations = JSON.parse(obj.fs.readFileSync(obj.path.join(__dirname, 'agents', 'agent-translations.json')).toString());
|
||||
var translationpath = obj.path.join(__dirname, 'agents', 'agent-translations.json');
|
||||
var translationpath2 = obj.path.join(obj.datapath, 'agents', 'agent-translations.json');
|
||||
if (obj.fs.existsSync(translationpath2)) { translationpath = translationpath2; } // If the agent is present in "meshcentral-data/agents", use that one instead.
|
||||
var translations = JSON.parse(obj.fs.readFileSync(translationpath).toString());
|
||||
if (translations['zh-chs']) { translations['zh-hans'] = translations['zh-chs']; delete translations['zh-chs']; }
|
||||
if (translations['zh-cht']) { translations['zh-hant'] = translations['zh-cht']; delete translations['zh-cht']; }
|
||||
obj.agentTranslations = JSON.stringify(translations);
|
||||
|
@ -2627,6 +2631,9 @@ function CreateMeshCentralServer(config, args) {
|
|||
for (var toolname in meshToolsList) {
|
||||
if (meshToolsList[toolname].winhash === true) {
|
||||
var toolpath = obj.path.join(__dirname, 'agents', meshToolsList[toolname].localname);
|
||||
var toolpath2 = obj.path.join(obj.datapath, 'agents', meshToolsList[toolname].localname);
|
||||
if (obj.fs.existsSync(toolpath2)) { toolpath = toolpath2; } // If the tool is present in "meshcentral-data/agents", use that one instead.
|
||||
|
||||
var hashStream = obj.crypto.createHash('sha384');
|
||||
hashStream.toolname = toolname;
|
||||
hashStream.toolpath = toolpath;
|
||||
|
@ -2643,6 +2650,9 @@ function CreateMeshCentralServer(config, args) {
|
|||
obj.exeHandler.hashExecutableFile(options);
|
||||
} else {
|
||||
var toolpath = obj.path.join(__dirname, 'agents', meshToolsList[toolname].localname);
|
||||
var toolpath2 = obj.path.join(obj.datapath, 'agents', meshToolsList[toolname].localname);
|
||||
if (obj.fs.existsSync(toolpath2)) { toolpath = toolpath2; } // If the tool is present in "meshcentral-data/agents", use that one instead.
|
||||
|
||||
var stream = null;
|
||||
try {
|
||||
stream = obj.fs.createReadStream(toolpath);
|
||||
|
@ -2771,6 +2781,8 @@ function CreateMeshCentralServer(config, args) {
|
|||
var archcount = 0;
|
||||
for (var archid in obj.meshAgentsArchitectureNumbers) {
|
||||
var agentpath = obj.path.join(__dirname, 'agents', obj.meshAgentsArchitectureNumbers[archid].localname);
|
||||
var agentpath2 = obj.path.join(obj.datapath, 'agents', obj.meshAgentsArchitectureNumbers[archid].localname);
|
||||
if (obj.fs.existsSync(agentpath2)) { agentpath = agentpath2; } // If the agent is present in "meshcentral-data/agents", use that one instead.
|
||||
|
||||
// Fetch all the agent binary information
|
||||
var stats = null;
|
||||
|
|
15
meshctrl.js
15
meshctrl.js
|
@ -1,5 +1,13 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* @description MeshCentral command line tool
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
||||
// Make sure we have the dependency modules
|
||||
try { require('minimist'); } catch (ex) { console.log('Missing module "minimist", type "npm install minimist" to install it.'); return; }
|
||||
try { require('ws'); } catch (ex) { console.log('Missing module "ws", type "npm install ws" to install it.'); return; }
|
||||
|
@ -2048,7 +2056,11 @@ function serverConnect() {
|
|||
for (var j in devicesInMesh) {
|
||||
var n = devicesInMesh[j];
|
||||
nodecount++;
|
||||
console.log('\"' + settings.xmeshes[i]._id.split('/')[2] + '\",\"' + settings.xmeshes[i].name.split('\"').join('') + '\",\"' + n._id.split('/')[2] + '\",\"' + n.name.split('\"').join('') + '\",' + (n.icon ? n.icon : 0) + ',' + (n.conn ? n.conn : 0) + ',' + (n.pwr ? n.pwr : 0));
|
||||
if (settings.xmeshes) {
|
||||
console.log('\"' + settings.xmeshes[i]._id.split('/')[2] + '\",\"' + settings.xmeshes[i].name.split('\"').join('') + '\",\"' + n._id.split('/')[2] + '\",\"' + n.name.split('\"').join('') + '\",' + (n.icon ? n.icon : 0) + ',' + (n.conn ? n.conn : 0) + ',' + (n.pwr ? n.pwr : 0));
|
||||
} else {
|
||||
console.log('\"' + n._id.split('/')[2] + '\",\"' + n.name.split('\"').join('') + '\",' + (n.icon ? n.icon : 0) + ',' + (n.conn ? n.conn : 0) + ',' + (n.pwr ? n.pwr : 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (nodecount == 0) { console.log('None'); }
|
||||
|
@ -2069,7 +2081,6 @@ function serverConnect() {
|
|||
nodes.push(devicesInMesh[j]);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(nodes, ' ', 2));
|
||||
} else {
|
||||
// Display the list of nodes in text format
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral remote desktop multiplexor
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral device file download relay module
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral IP KVM Management Module
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2021
|
||||
* @copyright Intel Corporation 2021-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral e-mail server communication modules
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
@ -679,7 +679,7 @@ module.exports.CreateMeshMail = function (parent, domain) {
|
|||
if (domain == null) return;
|
||||
|
||||
// Send the email
|
||||
obj.sendDeviceNotifyMail(domain, user.name, user.email, connections, disconnections, 'us-en', null);
|
||||
obj.sendDeviceNotifyMail(domain, user.name, user.email, connections, disconnections, user.llang, null);
|
||||
|
||||
// Clean up
|
||||
delete obj.deviceNotifications[userid];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral connection relay module
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Mesh Agent Local Scanner
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral SMS gateway communication module
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
40
meshuser.js
40
meshuser.js
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral MeshAgent
|
||||
* @author Ylian Saint-Hilaire & Bryan Roe
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
@ -1474,8 +1474,11 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
}
|
||||
|
||||
// Get the domain
|
||||
var delGroupDomain = parent.parent.config.domains[ugroupidsplit[1]];
|
||||
if (delGroupDomain == null) { err = "Invalid domain id"; }
|
||||
var delGroupDomain;
|
||||
if (ugroupidsplit != null) {
|
||||
delGroupDomain = parent.parent.config.domains[ugroupidsplit[1]];
|
||||
if (delGroupDomain == null) { err = "Invalid domain id"; }
|
||||
}
|
||||
|
||||
// Handle any errors
|
||||
if (err != null) {
|
||||
|
@ -1592,7 +1595,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
if (err != null) { if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'changemeshnotify', responseid: command.responseid, result: err })); } catch (ex) { } } break; }
|
||||
|
||||
// Change the device group notification
|
||||
if (user.links == null) { user.links = {}; }
|
||||
if (user.links[command.meshid]) {
|
||||
// The user has direct rights for this device group
|
||||
if (command.notify == 0) {
|
||||
delete user.links[command.meshid].notify;
|
||||
} else {
|
||||
|
@ -2095,18 +2100,20 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
if ((parent.GetMeshRights(user, mesh) & MESHRIGHT_EDITMESH) == 0) return;
|
||||
if ((command.meshid.split('/').length != 3) || (command.meshid.split('/')[1] != domain.id)) return; // Invalid domain, operation only valid for current domain
|
||||
|
||||
if ((common.validateString(command.meshname, 1, 128) == true) && (command.meshname != mesh.name)) { change = 'Group name changed from "' + mesh.name + '" to "' + command.meshname + '"'; mesh.name = command.meshname; }
|
||||
if ((common.validateString(command.desc, 0, 1024) == true) && (command.desc != mesh.desc)) { if (change != '') change += ' and description changed'; else change += 'Group "' + mesh.name + '" description changed'; mesh.desc = command.desc; }
|
||||
if ((common.validateInt(command.flags) == true) && (command.flags != mesh.flags)) { if (change != '') change += ' and flags changed'; else change += 'Group "' + mesh.name + '" flags changed'; mesh.flags = command.flags; }
|
||||
if ((common.validateInt(command.consent) == true) && (command.consent != mesh.consent)) { if (change != '') change += ' and consent changed'; else change += 'Group "' + mesh.name + '" consent changed'; mesh.consent = command.consent; }
|
||||
if ((common.validateInt(command.expireDevs, 0, 2000) == true) && (command.expireDevs != mesh.expireDevs)) { if (change != '') change += ' and auto-remove changed'; else change += 'Group "' + mesh.name + '" auto-remove changed'; if (command.expireDevs == 0) { delete mesh.expireDevs; } else { mesh.expireDevs = command.expireDevs; } }
|
||||
var changesids = [];
|
||||
if ((common.validateString(command.meshname, 1, 128) == true) && (command.meshname != mesh.name)) { change = 'Device group name changed from "' + mesh.name + '" to "' + command.meshname + '"'; changesids.push(1); mesh.name = command.meshname; }
|
||||
if ((common.validateString(command.desc, 0, 1024) == true) && (command.desc != mesh.desc)) { if (change != '') change += ' and description changed'; else change += 'Device group "' + mesh.name + '" description changed'; changesids.push(2); mesh.desc = command.desc; }
|
||||
if ((common.validateInt(command.flags) == true) && (command.flags != mesh.flags)) { if (change != '') change += ' and flags changed'; else change += 'Device group "' + mesh.name + '" flags changed'; changesids.push(3); mesh.flags = command.flags; }
|
||||
if ((common.validateInt(command.consent) == true) && (command.consent != mesh.consent)) { if (change != '') change += ' and consent changed'; else change += 'Device group "' + mesh.name + '" consent changed'; changesids.push(4); mesh.consent = command.consent; }
|
||||
if ((common.validateInt(command.expireDevs, 0, 2000) == true) && (command.expireDevs != mesh.expireDevs)) { if (change != '') change += ' and auto-remove changed'; else change += 'Device group "' + mesh.name + '" auto-remove changed'; changesids.push(5); if (command.expireDevs == 0) { delete mesh.expireDevs; } else { mesh.expireDevs = command.expireDevs; } }
|
||||
|
||||
// See if we need to change device group invitation codes
|
||||
if (mesh.mtype == 2) {
|
||||
if (command.invite === '*') {
|
||||
// Clear invite codes
|
||||
if (mesh.invite != null) { delete mesh.invite; }
|
||||
if (change != '') { change += ' and invite code changed'; } else { change += 'Group "' + mesh.name + '" invite code changed'; }
|
||||
if (change != '') { change += ' and invite code changed'; } else { change += 'Device group "' + mesh.name + '" invite code changed'; }
|
||||
changesids.push(6);
|
||||
} else if ((typeof command.invite == 'object') && (Array.isArray(command.invite.codes)) && (typeof command.invite.flags == 'number')) {
|
||||
// Set invite codes
|
||||
if ((mesh.invite == null) || (mesh.invite.codes != command.invite.codes) || (mesh.invite.flags != command.invite.flags)) {
|
||||
|
@ -2123,14 +2130,15 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
return;
|
||||
}
|
||||
mesh.invite = { codes: command.invite.codes, flags: command.invite.flags };
|
||||
if (change != '') { change += ' and invite code changed'; } else { change += 'Group "' + mesh.name + '" invite code changed'; }
|
||||
if (change != '') { change += ' and invite code changed'; } else { change += 'Device group "' + mesh.name + '" invite code changed'; }
|
||||
changesids.push(6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (change != '') {
|
||||
db.Set(mesh);
|
||||
var event = { etype: 'mesh', userid: user._id, username: user.name, meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, flags: mesh.flags, consent: mesh.consent, action: 'meshchange', links: mesh.links, msg: change, domain: domain.id, invite: mesh.invite, expireDevs: command.expireDevs };
|
||||
var event = { etype: 'mesh', userid: user._id, username: user.name, meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, flags: mesh.flags, consent: mesh.consent, action: 'meshchange', links: mesh.links, msgid: 142, msgArgs: [ mesh.name, changesids ], msg: change, domain: domain.id, invite: mesh.invite, expireDevs: command.expireDevs };
|
||||
if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the mesh. Another event will come.
|
||||
parent.parent.DispatchEvent(parent.CreateMeshDispatchTargets(mesh, [user._id]), obj, event);
|
||||
}
|
||||
|
@ -2254,7 +2262,6 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
}
|
||||
|
||||
mesh = parent.meshes[command.meshid];
|
||||
change = '';
|
||||
if (mesh) {
|
||||
// Check if this user has rights to do this
|
||||
if ((parent.GetMeshRights(user, mesh) & MESHRIGHT_EDITMESH) == 0) return;
|
||||
|
@ -2263,7 +2270,6 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
// TODO: Check if this is a change from the existing policy
|
||||
|
||||
// Perform the Intel AMT policy change
|
||||
change = 'Intel AMT policy change';
|
||||
var amtpolicy = { type: command.amtpolicy.type };
|
||||
if ((command.amtpolicy.type === 2) || (command.amtpolicy.type === 3)) {
|
||||
amtpolicy = { type: command.amtpolicy.type, badpass: command.amtpolicy.badpass, cirasetup: command.amtpolicy.cirasetup };
|
||||
|
@ -2275,7 +2281,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
db.Set(mesh);
|
||||
var amtpolicy2 = Object.assign({}, amtpolicy); // Shallow clone
|
||||
if (amtpolicy2.password != null) { amtpolicy2.password = 1; }
|
||||
var event = { etype: 'mesh', userid: user._id, username: user.name, meshid: mesh._id, amt: amtpolicy2, action: 'meshchange', links: mesh.links, msg: change, domain: domain.id, invite: mesh.invite };
|
||||
var event = { etype: 'mesh', userid: user._id, username: user.name, meshid: mesh._id, amt: amtpolicy2, action: 'meshchange', links: mesh.links, msgid: 141, msg: "Intel(r) AMT policy change", domain: domain.id, invite: mesh.invite };
|
||||
if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the mesh. Another event will come.
|
||||
parent.parent.DispatchEvent(parent.CreateMeshDispatchTargets(mesh, [user._id]), obj, event);
|
||||
|
||||
|
@ -2961,6 +2967,8 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
// Event the node change. Only do this if the database will not do it.
|
||||
event.msg = 'Changed device ' + node.name + ' from group ' + mesh.name + ': ' + changes.join(', ');
|
||||
event.node = parent.CloneSafeNode(node);
|
||||
event.msgid = 140;
|
||||
event.msgArgs = [ node.name, mesh.name, changes.join(', ') ];
|
||||
if (amtchange == 1) { event.amtchange = 1; } // This will give a hint to the AMT Manager to reconnect using new AMT credentials
|
||||
if (command.rdpport == 3389) { event.node.rdpport = 3389; }
|
||||
if (command.rfbport == 5900) { event.node.rfbport = 5900; }
|
||||
|
@ -4360,7 +4368,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
}
|
||||
} else {
|
||||
// Get previous logins for specific userid
|
||||
if (user.siteadmin === SITERIGHT_ADMIN) {
|
||||
if ((user.siteadmin & SITERIGHT_MANAGEUSERS) != 0) {
|
||||
var splitUser = command.userid.split('/');
|
||||
if ((obj.crossDomain === true) || (splitUser[1] === domain.id)) {
|
||||
if (db.GetUserLoginEvents) {
|
||||
|
@ -5100,7 +5108,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
// Add a new user account
|
||||
var err = null, errid = 0, newusername, newuserid, newuserdomain;
|
||||
try {
|
||||
if ((user.siteadmin & 2) == 0) { err = "Permission denied"; errid = 1; }
|
||||
if ((user.siteadmin & MESHRIGHT_MANAGEUSERS) == 0) { err = "Permission denied"; errid = 1; }
|
||||
else if (common.validateUsername(command.username, 1, 256) == false) { err = "Invalid username"; errid = 2; } // Username is between 1 and 64 characters, no spaces
|
||||
else if ((command.username[0] == '~') || (command.username.indexOf('/') >= 0)) { err = "Invalid username"; errid = 2; } // Usernames cant' start with ~ and can't have '/'
|
||||
else if (common.validateString(command.pass, 1, 256) == false) { err = "Invalid password"; errid = 3; } // Password is between 1 and 256 characters
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Intel(R) AMT MPS server
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MQTT broker reference implementation based on AEDES
|
||||
* @author Joko Banu Sastriawan, Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral Multi-Server Support
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "meshcentral",
|
||||
"version": "0.9.71",
|
||||
"version": "0.9.73",
|
||||
"keywords": [
|
||||
"Remote Device Management",
|
||||
"Remote Device Monitoring",
|
||||
|
|
|
@ -226,6 +226,10 @@ body {
|
|||
-ms-grid-row: 2;
|
||||
}
|
||||
|
||||
.logoncontrolspan, .logoncontrolspan2 {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.topbar_td {
|
||||
width: 100px;
|
||||
height: 24px;
|
||||
|
@ -1112,6 +1116,7 @@ NoMeshesPanel img {
|
|||
height: calc(100vh - 295px);
|
||||
overflow: auto;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
@ -1120,6 +1125,7 @@ NoMeshesPanel img {
|
|||
width: 100%;
|
||||
overflow: auto;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
background-color: lightsteelblue;
|
||||
}
|
||||
|
||||
|
@ -1900,6 +1906,7 @@ a {
|
|||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-o-user-select: none;
|
||||
user-select: none;
|
||||
cursor: default;
|
||||
-khtml-user-drag: element;
|
||||
clear: both;
|
||||
|
@ -2509,6 +2516,7 @@ a {
|
|||
overflow: hidden;
|
||||
width: 100%;
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
|
@ -2726,6 +2734,7 @@ a {
|
|||
height: calc(100vh - 323px);
|
||||
overflow: auto;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.room4submenu #p13filetable {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description Meshcentral web server
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.2
|
||||
*/
|
||||
|
|
|
@ -249,6 +249,7 @@
|
|||
"description": "Compagny® Product™ agent for remote monitoring, management and assistance.",
|
||||
"companyName": "Compagny",
|
||||
"serviceName": "compagnyagent",
|
||||
"image": "agent-logo.png",
|
||||
"fileName": "compagnyagent"
|
||||
},
|
||||
"_assistantCustomization": {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral v1 legacy Swarm Server, used to update agents and get them on MeshCentral2
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
11325
translate/translate.json
11325
translate/translate.json
File diff suppressed because it is too large
Load diff
|
@ -132,7 +132,7 @@
|
|||
<div style="float:right">
|
||||
<div id=notificationCount onclick="clickNotificationIcon()" class="unselectable" style="display: none;" title="Click to view current notifications">0</div>
|
||||
</div>
|
||||
<p id="logoutControl"><span id=logoutControlSpan style="color:white"></span><span id=idleTimeoutNotify style="color:yellow"></span></p>
|
||||
<p id="logoutControl"><span id=logoutControlSpan class="logoncontrolspan" style="color:white"></span><span id=idleTimeoutNotify style="color:yellow"></span></p>
|
||||
</div>
|
||||
<div id="page_leftbar">
|
||||
<div style="height:16px"></div>
|
||||
|
@ -284,7 +284,7 @@
|
|||
<img style="cursor:pointer;margin-top:4px;display:none" title="Expand All" id="ExpandAllButton" src="images/icon-expand.png" loading=lazy width=9 height=11 onclick="cmexpandaction(1)" />
|
||||
<input type="button" id="SelectAllButton" onclick="selectallButtonFunction();" value="Select All" />
|
||||
<input type=button id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />
|
||||
<input id=SearchInput type=search autocomplete=off placeholder=Filter onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) />
|
||||
<input id=SearchInput type=search autocomplete=off placeholder=Filter onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any"/>
|
||||
<span id=SearchInputClearButton style="display:none;position:relative"><img src="images/x16.png" type="button" onclick="clearDeviceSearch()" style="position:absolute;cursor:pointer;left:-18px;top:-8px" srcset="images/x32.png 2x"/></span>
|
||||
<select id=DevFilterSelect onchange=onOnlineCheckBox(event) title="Device Filter">
|
||||
<option value=0>All</option>
|
||||
|
@ -1121,7 +1121,7 @@
|
|||
<td class="style14">
|
||||
<div style="float:right">
|
||||
</div>
|
||||
<div>
|
||||
<div id="p50userGroupOps">
|
||||
<input type=button id=UsersGroupsSelectAllButton onclick="p50usersSelectallButtonFunction()" value="Select All" />
|
||||
<input type=button id=UsersGroupsGroupActionButton disabled="disabled" value="Group Action" onclick=p50usersGroupActionFunction() />
|
||||
<input id=NewUserGroupButton type=button onclick=showCreateUserGroupDialog(1) value="New Group..." />
|
||||
|
@ -1247,6 +1247,7 @@
|
|||
<div id=dialog4 style="">
|
||||
<input id="d4WrapButton" type="button" value="Wrap On" onclick="d4ToggleWrap()" />
|
||||
<input id="d4SizeButton" type="button" value="Small" onclick="d4ToggleSize()" />
|
||||
<input id="d4EncodingButton" type="button" value="Raw" onclick="d4ToggleEncoding()" />
|
||||
<textarea id=d4editorarea autocomplete="off" style="height:calc(100vh - 286px);width:100%;overflow:scroll;resize:none;white-space:pre"></textarea>
|
||||
</div>
|
||||
<div id=dialog7 style="">
|
||||
|
@ -1581,8 +1582,10 @@
|
|||
// Set the file editor
|
||||
d4EditWrapVal = getstore('editorWrap', 0);
|
||||
d4EditSizeVal = getstore('editorSize', 0);
|
||||
d4EditEncodingVal = getstore('editorEncoding', 0);
|
||||
d4ToggleWrap(true);
|
||||
d4ToggleSize(true);
|
||||
d4ToggleEncoding(true);
|
||||
if (pluginHandler != null) pluginHandler.callHook('onWebUIStartupEnd');
|
||||
|
||||
// Deleted non-english style and fix all topbar titles
|
||||
|
@ -2050,6 +2053,7 @@
|
|||
// We are user administrator
|
||||
if (users == null) { meshserver.send({ action: 'users' }); }
|
||||
if (wssessions == null) { meshserver.send({ action: 'wssessioncount' }); }
|
||||
mainUpdate(8192 + 16384);
|
||||
} else {
|
||||
// We are not user administrator
|
||||
users = null;
|
||||
|
@ -5232,35 +5236,39 @@
|
|||
}
|
||||
|
||||
function groupActionFunction() {
|
||||
var addedOptions = '', nodeids = getCheckedDevices(), added = 0;
|
||||
var addedOptions = [], nodeids = getCheckedDevices(), added = 0;
|
||||
|
||||
// Check if any of the selected devices have a MQTT connection active
|
||||
if (features & 0x00400000) {
|
||||
for (var i in nodeids) { if ((getNodeFromId(nodeids[i]).conn & 16) != 0) { addedOptions += '<option value=103>' + "Send MQTT Message" + '</option>'; break; } }
|
||||
for (var i in nodeids) { if ((getNodeFromId(nodeids[i]).conn & 16) != 0) { addedOptions.push({ v:103, name: "Send MQTT Message" });; break; } }
|
||||
}
|
||||
|
||||
// Display the "Uninstall Agent" option if allowed and we selected connected devices.
|
||||
// Display the options that are allowed depending on what devices are selected.
|
||||
addedOptions.push({ v: 105, name: "Export device information", s:true });
|
||||
for (var i in nodeids) {
|
||||
var node = getNodeFromId(nodeids[i]), rights = GetNodeRights(node);
|
||||
if ((rights & 1) && ((added & 2) == 0)) { added |= 2; addedOptions += '<option value=102>' + "Move to device group" + '</option>'; }
|
||||
if (((node.conn & 1) != 0) && ((rights & 0x8000) != 0) && ((added & 1) == 0)) { added |= 1; addedOptions += '<option value=104>' + "Uninstall Agent" + '</option>'; }
|
||||
if ((rights & 64) && ((added & 8) == 0)) { added |= 8; addedOptions += '<option value=100>' + "Wake-up devices" + '</option>'; }
|
||||
if ((rights & 262144) && ((added & 4) == 0)) { added |= 4; addedOptions += '<option value=4>' + "Sleep devices" + '</option><option value=3>' + "Reset devices" + '</option><option value=2>' + "Power off devices" + '</option>'; }
|
||||
if ((rights & 131072) && ((added & 16) == 0)) { added |= 16; addedOptions += '<option value=106>' + "Run commands" + '</option>'; }
|
||||
if ((rights & 16384) && ((added & 32) == 0)) { added |= 32; addedOptions += '<option value=108>' + "Device notification" + '</option>'; }
|
||||
if ((rights & 4) && ((added & 64) == 0)) { added |= 64; addedOptions += '<option value=107>' + "Edit tags" + '</option>'; }
|
||||
if ((rights & 8) && ((added & 256) == 0)) { added |= 256; addedOptions += '<option value=109>' + "Upload files" + '</option>'; }
|
||||
if ((rights & 32768) && ((added & 128) == 0)) { added |= 128; addedOptions += '<option value=101>' + "Delete devices" + '</option>'; }
|
||||
if ((rights & 1) && ((added & 2) == 0)) { added |= 2; addedOptions.push({ v: 102, name: "Move to device group" }); }
|
||||
if (((node.conn & 1) != 0) && ((rights & 0x8000) != 0) && ((added & 1) == 0)) { added |= 1; addedOptions.push({ v: 104, name: "Uninstall Agent" }); }
|
||||
if ((rights & 64) && ((added & 8) == 0)) { added |= 8; addedOptions.push({ v: 100, name: "Wake-up devices" }); }
|
||||
if ((rights & 262144) && ((added & 4) == 0)) { added |= 4; addedOptions.push({ v: 4, name: "Sleep devices" }); addedOptions.push({ v: 3, name: "Reset devices" }); addedOptions.push({ v: 2, name: "Power off devices" }); }
|
||||
if ((rights & 131072) && ((added & 16) == 0)) { added |= 16; addedOptions.push({ v: 106, name: "Run commands" }); }
|
||||
if ((rights & 16384) && ((added & 32) == 0)) { added |= 32; addedOptions.push({ v: 108, name: "Device notification" }); }
|
||||
if ((rights & 4) && ((added & 64) == 0)) { added |= 64; addedOptions.push({ v: 107, name: "Edit tags" }); }
|
||||
if ((rights & 8) && ((added & 256) == 0)) { added |= 256; addedOptions.push({ v: 109, name: "Upload files" }); }
|
||||
if ((rights & 32768) && ((added & 128) == 0)) { added |= 128; addedOptions.push({ v: 101, name: "Delete devices" }); }
|
||||
if ((node.agent != null) && (features2 & 0x00000010) && (rights == 0xFFFFFFFF) && ((added & 512) == 0)) {
|
||||
added |= 512;
|
||||
addedOptions += '<option value=110>' + "Force agent update" + '</option>';
|
||||
addedOptions += '<option value=111>' + "Clear agent core" + '</option>';
|
||||
addedOptions += '<option value=112>' + "Upload default server core" + '</option>';
|
||||
addedOptions.push({ v: 110, name: "Force agent update" });
|
||||
addedOptions.push({ v: 111, name: "Clear agent core" });
|
||||
addedOptions.push({ v: 112, name: "Upload default server core" });
|
||||
}
|
||||
}
|
||||
|
||||
var addedOptionsStr = '';
|
||||
addedOptions.sort(nameSort);
|
||||
for (var i in addedOptions) { addedOptionsStr += '<option value=' + addedOptions[i].v + (addedOptions[i].s?' selected':'') + '>' + addedOptions[i].name + '</option>'; }
|
||||
var x = "Select an operation to perform on all selected devices. Actions will be performed only with proper rights." + '<br /><br />';
|
||||
x += addHtmlValue("Operation", '<select id=d2groupop><option value=105>' + "Export device information" + '</option>' + '</option>' + addedOptions + '</select>');
|
||||
x += addHtmlValue("Operation", '<select id=d2groupop>' + addedOptionsStr + '</select>');
|
||||
setDialogMode(2, "Group Action", 3, groupActionFunctionEx, x);
|
||||
}
|
||||
|
||||
|
@ -10209,7 +10217,13 @@
|
|||
QS('dialog').width = 'auto';
|
||||
QS('dialog').bottom = '80px';
|
||||
QS('dialog').top = QS('dialog').left = QS('dialog').right = '100px';
|
||||
Q('d4editorarea').value = decode_utf8(gdownloadFile.data);
|
||||
if (d4EditEncodingVal == 1) {
|
||||
// UTF8 Encoding
|
||||
Q('d4editorarea').value = decode_utf8(gdownloadFile.data);
|
||||
} else {
|
||||
// RAW Encoding
|
||||
Q('d4editorarea').value = gdownloadFile.data;
|
||||
}
|
||||
gdownloadFile = null;
|
||||
} else {
|
||||
// Save the file to disk
|
||||
|
@ -10222,6 +10236,7 @@
|
|||
|
||||
var d4EditWrapVal = 0;
|
||||
var d4EditSizeVal = 0;
|
||||
var d4EditEncodingVal = 0;
|
||||
function d4ToggleWrap(update) {
|
||||
if (!update) { d4EditWrapVal = ++d4EditWrapVal % 2; }
|
||||
Q('d4WrapButton').value = ["Wrap: ON","Wrap: OFF"][d4EditWrapVal];
|
||||
|
@ -10237,8 +10252,28 @@
|
|||
putstore('editorSize', d4EditSizeVal);
|
||||
}
|
||||
|
||||
function d4ToggleEncoding(update) {
|
||||
if (!update) {
|
||||
d4EditEncodingVal = ++d4EditEncodingVal % 2;
|
||||
if (d4EditEncodingVal == 1) {
|
||||
Q('d4editorarea').value = decode_utf8(Q('d4editorarea').value);
|
||||
} else {
|
||||
Q('d4editorarea').value = encode_utf8(Q('d4editorarea').value);
|
||||
}
|
||||
}
|
||||
Q('d4EncodingButton').value = ["Encoding: RAW","Encoding: UTF8"][d4EditEncodingVal];
|
||||
putstore('editorEncoding', d4EditEncodingVal);
|
||||
}
|
||||
|
||||
function p13editSaveBack(b, tag) {
|
||||
var data = new TextEncoder().encode(Q('d4editorarea').value);
|
||||
var data;
|
||||
if (d4EditEncodingVal == 1) {
|
||||
// UTF8 encoding
|
||||
data = new TextEncoder().encode(Q('d4editorarea').value);
|
||||
} else {
|
||||
// RAW encoding
|
||||
data = new TextEncoder().encode(decode_utf8(Q('d4editorarea').value));
|
||||
}
|
||||
p13uploadFileContinue(1, [{ name: tag, size: data.byteLength, type: 'text/plain', xdata: data }]);
|
||||
}
|
||||
|
||||
|
@ -13416,9 +13451,21 @@
|
|||
136: "Forcibly disconnected files session of user {0}",
|
||||
137: "Forcibly disconnected routing session of user {0}",
|
||||
138: "Added device share {0} recurring daily.",
|
||||
139: "Added device share {0} recurring weekly."
|
||||
139: "Added device share {0} recurring weekly.",
|
||||
140: "Changed device {0} from group {1}: {2}",
|
||||
141: "Intel(r) AMT policy change",
|
||||
142: "Device group {0} was changed: {1}"
|
||||
};
|
||||
|
||||
var eventsShortMessageId = {
|
||||
1: "Group name",
|
||||
2: "Description",
|
||||
3: "Flags",
|
||||
4: "Consent",
|
||||
5: "Auto-Remove",
|
||||
6: "Invite code"
|
||||
}
|
||||
|
||||
// Highlights the device being hovered
|
||||
function eventMouseHover(e, over) {
|
||||
e.children[1].classList.remove('g1s');
|
||||
|
@ -13452,7 +13499,14 @@
|
|||
if (event.msgArgs != null) {
|
||||
for (var i in event.msgArgs) {
|
||||
var xx = event.msgArgs[i];
|
||||
if ((typeof xx == 'string') && (xx.indexOf('DATETIME:') == 0)) { xx = printFlexDateTime(new Date(parseInt(xx.substring(9)))); }
|
||||
if (Array.isArray(xx)) {
|
||||
var x2 = [];
|
||||
for (var j in xx) { if ((typeof xx[j] == 'number') && (eventsShortMessageId[xx[j]])) { x2.push(eventsShortMessageId[xx[j]]); } else { x2.push(xx[j]); } }
|
||||
xx = x2.join(", ");
|
||||
} else {
|
||||
if ((typeof xx == 'string') && (xx.indexOf('DATETIME:') == 0)) { xx = printFlexDateTime(new Date(parseInt(xx.substring(9)))); }
|
||||
|
||||
}
|
||||
msg = msg.split('{' + i + '}').join(xx);
|
||||
}
|
||||
}
|
||||
|
@ -14186,6 +14240,9 @@
|
|||
//
|
||||
|
||||
function updateUserGroups() {
|
||||
// Display user group operations only if allowed for us
|
||||
QV('p50userGroupOps', (userinfo.siteadmin & 256) != 0); // SITERIGHT_USERGROUPS = 256
|
||||
|
||||
// Sort the list of group names
|
||||
var sortedGroups = [], x = '';
|
||||
if (usergroups) { for (var i in usergroups) { sortedGroups.push(usergroups[i]); } }
|
||||
|
@ -14210,7 +14267,7 @@
|
|||
|
||||
// Re-check userid's
|
||||
elements = document.getElementsByClassName('UserGroupCheckbox');
|
||||
for (var i=0;i<elements.length;i++) { elements[i].checked = ((checkedUserGroupids.indexOf(elements[i].value) >= 0)); }
|
||||
for (var i = 0; i < elements.length; i++) { elements[i].checked = ((checkedUserGroupids.indexOf(elements[i].value) >= 0)); }
|
||||
p50updateInfo();
|
||||
|
||||
// Update current user panel if needed
|
||||
|
|
21
webserver.js
21
webserver.js
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description MeshCentral web server
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
@ -2777,7 +2777,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
webstate: encodeURIComponent(webstate).replace(/'/g, '%27'),
|
||||
amtscanoptions: amtscanoptions,
|
||||
pluginHandler: (parent.pluginHandler == null) ? 'null' : parent.pluginHandler.prepExports()
|
||||
}, dbGetFunc.req, domain));
|
||||
}, dbGetFunc.req, domain), user);
|
||||
}
|
||||
xdbGetFunc.req = req;
|
||||
xdbGetFunc.res = res;
|
||||
|
@ -4944,6 +4944,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
if (domain.agentcustomization.companyname != null) { meshsettings += 'companyName=' + domain.agentcustomization.companyname + '\r\n'; }
|
||||
if (domain.agentcustomization.servicename != null) { meshsettings += 'meshServiceName=' + domain.agentcustomization.servicename + '\r\n'; }
|
||||
if (domain.agentcustomization.filename != null) { meshsettings += 'fileName=' + domain.agentcustomization.filename + '\r\n'; }
|
||||
if (domain.agentcustomization.image != null) { meshsettings += 'image=' + domain.agentcustomization.image + '\r\n'; }
|
||||
}
|
||||
if (parent.agentTranslations != null) { meshsettings += 'translation=' + parent.agentTranslations + '\r\n'; } // Translation strings, not for MeshCentral Assistant
|
||||
}
|
||||
|
@ -5315,6 +5316,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
if (domain.agentcustomization.companyname != null) { meshsettings += 'companyName=' + domain.agentcustomization.companyname + '\r\n'; }
|
||||
if (domain.agentcustomization.servicename != null) { meshsettings += 'meshServiceName=' + domain.agentcustomization.servicename + '\r\n'; }
|
||||
if (domain.agentcustomization.filename != null) { meshsettings += 'fileName=' + domain.agentcustomization.filename + '\r\n'; }
|
||||
if (domain.agentcustomization.image != null) { meshsettings += 'image=' + domain.agentcustomization.image + '\r\n'; }
|
||||
}
|
||||
if (parent.agentTranslations != null) { meshsettings += 'translation=' + parent.agentTranslations + '\r\n'; }
|
||||
|
||||
|
@ -5415,6 +5417,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
if (domain.agentcustomization.companyname != null) { meshsettings += 'companyName=' + domain.agentcustomization.companyname + '\r\n'; }
|
||||
if (domain.agentcustomization.servicename != null) { meshsettings += 'meshServiceName=' + domain.agentcustomization.servicename + '\r\n'; }
|
||||
if (domain.agentcustomization.filename != null) { meshsettings += 'fileName=' + domain.agentcustomization.filename + '\r\n'; }
|
||||
if (domain.agentcustomization.image != null) { meshsettings += 'image=' + domain.agentcustomization.image + '\r\n'; }
|
||||
}
|
||||
if (parent.agentTranslations != null) { meshsettings += 'translation=' + parent.agentTranslations + '\r\n'; }
|
||||
return meshsettings;
|
||||
|
@ -6339,7 +6342,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
obj.agentapp.ws(url + 'agent.ashx', function (ws, req) {
|
||||
var domain = checkAgentIpAddress(ws, req);
|
||||
if (domain == null) { parent.debug('web', 'Got agent connection with bad domain or blocked IP address ' + req.clientIp + ', holding.'); return; }
|
||||
//console.log('Agent connect: ' + req.clientIp);
|
||||
if (domain.agentkey && ((req.query.key == null) || (domain.agentkey.indexOf(req.query.key) == -1))) { return; } // If agent key is required and not provided or not valid, just hold the websocket and do nothing.
|
||||
try { obj.meshAgentHandler.CreateMeshAgent(obj, obj.db, ws, req, obj.args, domain); } catch (e) { console.log(e); }
|
||||
});
|
||||
|
||||
|
@ -7613,7 +7616,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
}
|
||||
|
||||
// Render a page using the proper language
|
||||
function render(req, res, filename, args) {
|
||||
function render(req, res, filename, args, user) {
|
||||
if (obj.renderPages != null) {
|
||||
// Get the list of acceptable languages in order
|
||||
var acceptLanguages = obj.getLanguageCodes(req);
|
||||
|
@ -7622,19 +7625,25 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
var fileOptions = obj.renderPages[obj.path.basename(filename)];
|
||||
if (fileOptions != null) {
|
||||
for (var i in acceptLanguages) {
|
||||
if ((acceptLanguages[i] == 'en') || (acceptLanguages[i].startsWith('en-'))) { args.lang = 'en'; break; } // English requested, break out.
|
||||
if ((acceptLanguages[i] == 'en') || (acceptLanguages[i].startsWith('en-'))) {
|
||||
// English requested
|
||||
args.lang = 'en';
|
||||
if (user && user.llang) { delete user.llang; obj.db.SetUser(user); } // Clear user 'last language' used if needed. Since English is the default, remove "last language".
|
||||
break;
|
||||
}
|
||||
if (fileOptions[acceptLanguages[i]] != null) {
|
||||
// Found a match. If the file no longer exists, default to English.
|
||||
obj.fs.exists(fileOptions[acceptLanguages[i]] + '.handlebars', function (exists) {
|
||||
if (exists) { args.lang = acceptLanguages[i]; res.render(fileOptions[acceptLanguages[i]], args); } else { args.lang = 'en'; res.render(filename, args); }
|
||||
});
|
||||
if (user && (user.llang != acceptLanguages[i])) { user.llang = acceptLanguages[i]; obj.db.SetUser(user); } // Set user 'last language' used if needed.
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// No matches found, render the default english page.
|
||||
// No matches found, render the default English page.
|
||||
res.render(filename, args);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* @description Windows Service Launcher
|
||||
* @author Ylian Saint-Hilaire
|
||||
* @copyright Intel Corporation 2018-2021
|
||||
* @copyright Intel Corporation 2018-2022
|
||||
* @license Apache-2.0
|
||||
* @version v0.0.1
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue