Improved server permissions.

Ylian Saint-Hilaire committed Jun 18, 2020 at 20:51 UTC 5bdcb14c46e258e48910436d682f701bf28ad6da
58 files changed +34 -69
emails/translations/account-check-min_cs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Ověření e-mailem</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Ověření</b></table><p>Ahoj [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> požaduje ověření e-mailem a dokončete proces kliknutím na následující odkaz.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Kliknutím sem ověřte svou e-mailovou adresu.</a></p>Pokud jste tento požadavek nezačali, ignorujte tento e-mail.</div>
\ No newline at end of file
emails/translations/account-check-min_de.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - E-Mail-Überprüfung</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Überprüfung</b></table><p>Hallo [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> Wenn Sie eine E-Mail-Bestätigung anfordern, klicken Sie auf den folgenden Link, um den Vorgang abzuschließen.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Klicken Sie hier, um Ihre E-Mail-Adresse zu bestätigen.</a></p>Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.</div>
\ No newline at end of file
emails/translations/account-check-min_es.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Verificación de Email</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Invitación</b></table><p>Hola [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> solicita la verificación por correo electrónico, haga clic en el siguiente enlace para completar el proceso.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Haga click aquí para verificar su dirección de e-mail</a></p>Si Ud. no inicio este proceso, por favor ignore este email</div>
\ No newline at end of file
emails/translations/account-check-min_fr.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Vérification E-mail</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Vérification</b></table><p>Bonjour [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> demande une vérification par e-mail, cliquez sur le lien suivant pour terminer le processus.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Cliquez ici pour vérifier votre adresse e-mail.</a></p>Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.</div>
\ No newline at end of file
emails/translations/account-check-min_hi.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - ईमेल सत्यापन</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]] - सत्यापन</b></table><p>हाय [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[सर्वर का नाम]]]</a> ईमेल सत्यापन का अनुरोध कर रहा है, प्रक्रिया को पूरा करने के लिए निम्न लिंक पर क्लिक करें।<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">अपना ई-मेल पता सत्यापित करने के लिए यहां क्लिक करें।</a></p>यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।</div>
\ No newline at end of file
emails/translations/account-check-min_ja.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-メールの確認</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-確認</b></table><p>[[[USERNAME]]]様 <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> がメールの確認をリクエストしている場合は、次のリンクをクリックしてプロセスを完了してください。<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">ここをクリックして、電子メールアドレスを確認してください。</a></p>このリクエストを開始していない場合は、このメールを無視してください。</div>
\ No newline at end of file
emails/translations/account-check-min_ko.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Email 인증</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - 인증</b></table><p>안녕하세요, [[[USERNAME]]]님. <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> 이메일 검증을 요구하는 경우, 다음 링크를 클릭하여 과정을 완료하십시오.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">이메일 주소를 검증하려면 여기를 클릭하십시오.</a></p>이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.</div>
\ No newline at end of file
emails/translations/account-check-min_nl.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - E-mail Verificatie</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Verificatie</b></table><p>Hallo [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> vraagt om e-mailverificatie, klik op de volgende link om het proces te voltooien.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Klik hier om uw e-mailadres te verifiëren.</a></p>Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.</div>
\ No newline at end of file
emails/translations/account-check-min_pt.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Email Verification</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Verification</b></table><p>Hi [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> is requesting email verification, click on the following link to complete the process.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Click here to verify your e-mail address.</a></p>If you did not initiate this request, please ignore this mail.</div>
\ No newline at end of file
emails/translations/account-check-min_ru.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - подтверждение по электронной почте</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Подтверждение</b></table><p>Привет [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> запрашивает подтверждение по электронной почте, нажмите на следующую ссылку, чтобы завершить процесс.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Нажмите здесь, чтобы подтвердить свой адрес электронной почты.</a></p>Если вы не инициировали этот запрос, игнорируйте это письмо.</div>
\ No newline at end of file
emails/translations/account-check-min_zh-chs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-电子邮件验证</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-验证</b></table><p>[[[USERNAME]],你好, <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> 正在请求电子邮件验证,请单击以下链接以完成该过程。<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">单击此处以验证您的电子邮件地址。</a></p>如果您没有发起此请求,请忽略此邮件。</div>
\ No newline at end of file
emails/translations/account-invite-min_cs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Pozvánka na účet</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Pozvánka na účet</b></table><p>Účet byl pro vás vytvořen na serveru <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>, nyní k němu máte přístup:<p>&nbsp;&nbsp;&nbsp;Uživatelské jméno: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;Heslo: <b notrans=1>[[[PASSWORD]]]</b></p>S pozdravem,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_de.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Kontoeinladung</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Kontoeinladung</b></table><p>Auf dem Server wurde ein Konto für Sie erstellt <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>können Sie jetzt darauf zugreifen mit:<p>&nbsp;&nbsp;&nbsp;Benutzername: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;Passwort: <b notrans=1>[[[PASSWORD]]]</b></p>Freundliche Grüße,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_es.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Invitación de Cuenta</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Invitación de Cuenta</b></table><p>Una cuenta ha sido creada en su servidor <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>, ahora puede acceder con:<p>&nbsp;&nbsp;&nbsp;Usuario: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;Contraseña: <b notrans=1>[[[PASSWORD]]]</b></p>Atentamente,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_fr.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Invitation au compte</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Invitation au compte</b></table><p>Un compte a été créé pour vous sur le serveur <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>, vous pouvez y accéder maintenant avec:<p>&nbsp;&nbsp;&nbsp;Nom d'utilisateur: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;Mot de passe: <b notrans=1>[[[PASSWORD]]]</b></p>Meilleures salutations,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_hi.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - खाता निमंत्रण</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - खाता निमंत्रण</b></table><p>सर्वर पर आपके लिए एक खाता बनाया गया था <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>, आप इसे अभी एक्सेस कर सकते हैं:<p>&nbsp;&nbsp;&nbsp;उपयोगकर्ता नाम: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;कुंजिका: <b notrans=1>[[[PASSWORD]]]</b></p>सादर,<br>[[[उपयोगकर्ता नाम]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_ja.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-アカウントの招待</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-アカウントの招待</b></table><p>サーバー上にアカウントが作成されました <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>、あなたは今それを使ってそれにアクセスできます:<p>&nbsp;&nbsp;&nbsp;ユーザー名: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;パスワード: <b notrans=1>[[[PASSWORD]]]</b></p>宜しくお願いします、<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_ko.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - 계정 초대</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - 계정 초대</b></table><p>당신을 위해 서버에서 한 계정이 생성되었습니다. <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>이제 당신은 다음으로 접근 가능합니다:<p>&nbsp;&nbsp;&nbsp;사용자 이름: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;암호: <b notrans=1>[[[PASSWORD]]]</b></p>최고의 안부를 전합니다,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_nl.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Account uitnodiging</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Account uitnodiging</b></table><p>Er is een account voor je aangemaakt op de server <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>, je hebt er nu toegang toe met:<p>&nbsp;&nbsp;&nbsp;Gebruikersnaam: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;Wachtwoord: <b notrans=1>[[[PASSWORD]]]</b></p>Vriendelijke groeten,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_pt.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Account Invitation</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Account Invitation</b></table><p>An account was created for you on server <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>, you can access it now with:<p>&nbsp;&nbsp;&nbsp;Nome de usuário: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;Senha: <b notrans=1>[[[PASSWORD]]]</b></p>Best regards,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_ru.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - приглашение в аккаунт</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - приглашение в аккаунт</b></table><p>Учетная запись была создана для вас на сервере <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>Вы можете получить к нему доступ сейчас:<p>&nbsp;&nbsp;&nbsp;Имя пользователя: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;Пароль: <b notrans=1>[[[PASSWORD]]]</b></p>С уважением,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-invite-min_zh-chs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-帐户邀请</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-帐户邀请</b></table><p>在服务器上为您创建了一个帐户 <a href=[[[SERVERURL]]] notrans=1>[[[SERVERNAME]]]</a>,您现在可以通过以下方式访问它:<p>&nbsp;&nbsp;&nbsp;用戶名: <b notrans=1>[[[ACCOUNTNAME]]]</b><br>&nbsp;&nbsp;&nbsp;密碼: <b notrans=1>[[[PASSWORD]]]</b></p>最好的祝福,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/account-login-min_cs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Přihlášení k účtu</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Přihlášení k účtu</b></table><p>Váš přihlašovací token je: [[[TOKEN]]]<p>Tento token lze použít pouze jednou a je platný po dobu 5 minut.</div>
\ No newline at end of file
emails/translations/account-login-min_de.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Konto-Login</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Konto-Login</b></table><p>Ihr Login-Token lautet: [[[TOKEN]]]<p>Dieser Token kann nur einmal verwendet werden und ist 5 Minuten gültig.</div>
\ No newline at end of file
emails/translations/account-login-min_es.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Nombre de Usuario</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Nombre de Usuario</b></table><p>Su token de inicio de sesión es: [[[TOKEN]]]<p>Este token solo se puede usar una vez y es válido durante 5 minutos.</div>
\ No newline at end of file
emails/translations/account-login-min_fr.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Connexion au compte</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Connexion au compte</b></table><p>Votre jeton de connexion est: [[[TOKEN]]]<p>Ce jeton ne peut être utilisé qu'une seule fois et est valide pendant 5 minutes.</div>
\ No newline at end of file
emails/translations/account-login-min_hi.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - खाता लॉगिन</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - खाता लॉगिन</b></table><p>आपका लॉगिन टोकन है: [[[टोकन]]]<p>यह टोकन केवल एक बार उपयोग किया जा सकता है और 5 मिनट के लिए वैध है।</div>
\ No newline at end of file
emails/translations/account-login-min_ja.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-アカウントログイン</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-アカウントログイン</b></table><p>ログイントークンは次のとおりです:[[[TOKEN]]]<p>このトークンは1回だけ使用でき、5分間有効です。</div>
\ No newline at end of file
emails/translations/account-login-min_ko.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - 계정 로그인</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - 계정 로그인</b></table><p>당신이 로그인한 토큰은 다음과 같습니다 : [[[TOKEN]]]<p>이 토큰은 오직 한 번만 사용될 수 있으며, 5분 동안만 유효합니다.</div>
\ No newline at end of file
emails/translations/account-login-min_nl.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Inloggen account</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Inloggen account</b></table><p>Uw login token is: [[[TOKEN]]]<p>Dit token kan maar één keer worden gebruikt en is 5 minuten geldig.</div>
\ No newline at end of file
emails/translations/account-login-min_pt.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Account Login</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Account Login</b></table><p>Your login token is: [[[TOKEN]]]<p>This token can only be used once and is valid for 5 minutes.</div>
\ No newline at end of file
emails/translations/account-login-min_ru.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Вход в аккаунт</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Вход в аккаунт</b></table><p>Ваш токен для входа: [[[TOKEN]]]<p>Этот токен может быть использован только один раз и действителен в течение 5 минут.</div>
\ No newline at end of file
emails/translations/account-login-min_zh-chs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-帐户登录</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-帐户登录</b></table><p>您的登录令牌为:[[[TOKEN]]]<p>该令牌只能使用一次,有效期为5分钟。</div>
\ No newline at end of file
emails/translations/account-reset-min_cs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Reset účtu</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Ověření</b></table><p>Ahoj [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> požaduje obnovení hesla k účtu, dokončete proces kliknutím na následující odkaz.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Kliknutím sem obnovíte heslo svého účtu.</a></p>Pokud jste tento požadavek nezačali, ignorujte tento e-mail.</div>
\ No newline at end of file
emails/translations/account-reset-min_de.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Zurücksetzen des Kontos</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Überprüfung</b></table><p>Hallo [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> Wenn Sie ein Zurücksetzen des Kontokennworts anfordern, klicken Sie auf den folgenden Link, um den Vorgang abzuschließen.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Klicken Sie hier, um Ihr Kontopasswort zurückzusetzen.</a></p>Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.</div>
\ No newline at end of file
emails/translations/account-reset-min_es.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Resetear Cuenta</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Invitación</b></table><p>Hola [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> solicita restablecer la contraseña de la cuenta, haga clic en el siguiente enlace para completar el proceso.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Haga click aquí para resetear la contraseña de su cuenta.</a></p>Si Ud. no inicio este proceso, por favor ignore este email</div>
\ No newline at end of file
emails/translations/account-reset-min_fr.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Réinitialisation du compte</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Vérification</b></table><p>Bonjour [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> demande une réinitialisation du mot de passe du compte, cliquez sur le lien suivant pour terminer le processus.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Cliquez ici pour réinitialiser le mot de passe de votre compte.</a></p>Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.</div>
\ No newline at end of file
emails/translations/account-reset-min_hi.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - खाता रीसेट</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]] - सत्यापन</b></table><p>हाय [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[सर्वर का नाम]]]</a> खाता पासवर्ड रीसेट का अनुरोध कर रहा है, प्रक्रिया पूरी करने के लिए निम्न लिंक पर क्लिक करें।<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">अपना खाता पासवर्ड रीसेट करने के लिए यहां क्लिक करें।</a></p>यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।</div>
\ No newline at end of file
emails/translations/account-reset-min_ja.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-アカウントのリセット</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-確認</b></table><p>[[[USERNAME]]]様 <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> がアカウントパスワードのリセットを要求している場合は、次のリンクをクリックしてプロセスを完了します。<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">ここをクリックしてアカウントのパスワードをリセットしてください。</a></p>このリクエストを開始していない場合は、このメールを無視してください。</div>
\ No newline at end of file
emails/translations/account-reset-min_ko.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - 계정 재설정</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - 인증</b></table><p>안녕하세요, [[[USERNAME]]]님. <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> 계정 비밀번호 재설정을 요청하는 경우, 다음 링크를 클릭하여 과정을 완료하십시오.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">당신의 계정 암호를 초기화하려면 여기를 클릭하십시오.</a></p>이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.</div>
\ No newline at end of file
emails/translations/account-reset-min_nl.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Account Reset</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Verificatie</b></table><p>Hallo [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> vraagt om het opnieuw instellen van het wachtwoord van een account, klik op de volgende link om het proces te voltooien.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Klik hier om je wachtwoord opnieuw in te stellen.</a></p>Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.</div>
\ No newline at end of file
emails/translations/account-reset-min_pt.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Account Reset</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Verification</b></table><p>Hi [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> is requesting an account password reset, click on the following link to complete the process.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Click here to reset your account password.</a></p>If you did not initiate this request, please ignore this mail.</div>
\ No newline at end of file
emails/translations/account-reset-min_ru.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Сброс учетной записи</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Подтверждение</b></table><p>Привет [[[USERNAME]]], <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> запрашивает сброс пароля учетной записи, нажмите на следующую ссылку, чтобы завершить процесс.<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">Нажмите здесь, чтобы сбросить пароль учетной записи.</a></p>Если вы не инициировали этот запрос, игнорируйте это письмо.</div>
\ No newline at end of file
emails/translations/account-reset-min_zh-chs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-帐户重置</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-验证</b></table><p>[[[USERNAME]],你好, <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> 正在要求重置帐户密码,请单击以下链接以完成该过程。<p style=margin-left:30px><a href="[[[SERVERURL]]]/checkmail?c=[[[COOKIE]]]">单击此处重置您的帐户密码。</a></p>如果您没有发起此请求,请忽略此邮件。</div>
\ No newline at end of file
emails/translations/mesh-invite-min_cs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Pozvánka</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Instalace agenta</b></table><area-name><p>Dobrý den, [[[NAME]]],</p></area-name><p>Uživatel [[[USERNAME]]] na serveru <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> vás žádá o instalaci softwaru pro spuštění relace dálkového ovládání.</p><area-msg><p>Zpráva: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Kliknutím sem stáhnete MeshAgent pro Windows.</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Kliknutím sem stáhnete MeshAgent pro Apple OSX.</a></p></area-osx><area-linux><p>V případě systému Linux vyjměte a vložte do terminálu a nainstalujte agenta:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>Chcete-li nainstalovat software, <a href=[[[SERVERURL]]][[[LINKURL]]]>klikněte zde</a> a postupujte podle pokynů.</p></area-link><p>Pokud jste tento požadavek nezačali, ignorujte tento e-mail.</p>S pozdravem,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_de.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Einladung</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Agenteninstallation</b></table><area-name><p>Hallo [[[NAME]]],</p></area-name><p>Benutzer [[[USERNAME]]] auf dem Server <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> fordert Sie auf, Software zu installieren, um eine Fernsteuerungssitzung zu starten.</p><area-msg><p>Botschaft: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Klicken Sie hier, um den MeshAgent für Windows herunterzuladen.</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Klicken Sie hier, um den MeshAgent für Apple OSX herunterzuladen.</a></p></area-osx><area-linux><p>Schneiden Sie unter Linux Folgendes aus und fügen Sie es in ein Terminal ein, um den Agenten zu installieren:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>Um die Software zu installieren, <a href=[[[SERVERURL]]][[[LINKURL]]]>hier klicken</a> und folgen Sie den Anweisungen.</p></area-link><p>Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.</p>Freundliche Grüße,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_es.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Invitación</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Instalación de Agente</b></table><area-name><p>Hola [[[NAME]]],</p></area-name><p>Usuario [[[USERNAME]]] en servidor <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> le solicita que instale software para iniciar una sesión de control remoto.</p><area-msg><p>Mensaje: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Haga click aquí para descargar el agente de MeshCentral para Windows.</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Haga click aquí para descargar el Agente de MeshCentral para Apple OSX.</a></p></area-osx><area-linux><p>Para Linux, copie y pegue lo siguiente en la terminal para instalar el agente:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>Para instalar este software, <a href=[[[SERVERURL]]][[[LINKURL]]]>haga click aquí</a> y siga las instrucciones</p></area-link><p>Si Ud. no inicio este proceso, por favor ignore este email</p>Atentamente,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_fr.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Invitation</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Installation de l'agent</b></table><area-name><p>Bonjour [[[NAME]]],</p></area-name><p>Utilisateur [[[USERNAME]]] sur le serveur <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> vous demande d'installer un logiciel pour démarrer une session de contrôle à distance.</p><area-msg><p>Message: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Cliquez ici pour télécharger le MeshAgent pour Windows.</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Cliquez ici pour télécharger le MeshAgent pour Apple OSX.</a></p></area-osx><area-linux><p>Pour Linux, copiez et collez les éléments suivants dans un terminal pour installer l'agent:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>Pour installer le logiciel, <a href=[[[SERVERURL]]][[[LINKURL]]]>cliquez ici</a> et suivez les instructions.</p></area-link><p>Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.</p>Meilleures salutations,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_hi.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - निमंत्रण</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - एजेंट स्थापना</b></table><area-name><p>नमस्कार [[[NAME]]],</p></area-name><p>उपयोगकर्ता [[[USERNAME]]] सर्वर पर <a href=[[[SERVERURL]]]>[[[सर्वर का नाम]]]</a> रिमोट कंट्रोल सेशन शुरू करने के लिए आपको सॉफ्टवेयर इंस्टॉल करने का अनुरोध कर रहा है।</p><area-msg><p>संदेश: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">विंडोज के लिए मेशजेंट को डाउनलोड करने के लिए यहां क्लिक करें।</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Apple OSX के लिए मेशजेंट को डाउनलोड करने के लिए यहां क्लिक करें।</a></p></area-osx><area-linux><p>लिनक्स में, एजेंट को स्थापित करने के लिए टर्मिनल में निम्नलिखित को काटें और चिपकाएँ:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>सॉफ़्टवेयर स्थापित करने के लिए, <a href=[[[SERVERURL]]][[[LINKURL]]]>यहाँ क्लिक करें</a> और निर्देशों का पालन करें।</p></area-link><p>यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।</p>सादर,<br>[[[उपयोगकर्ता नाम]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_ja.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-招待</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-エージェントのインストール</b></table><area-name><p>[[[NAME]]]様</p></area-name><p>サーバー上のユーザー[[[USERNAME]]] <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> リモートコントロールセッションを開始するソフトウェアをインストールするように要求しています。</p><area-msg><p>メッセージ: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Windows用のMeshAgentをダウンロードするには、ここをクリックしてください。</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">ここをクリックして、Apple OSX用のMeshAgentをダウンロードしてください。</a></p></area-osx><area-linux><p>Linuxの場合は、ターミナルで以下をカットアンドペーストしてエージェントをインストールします。<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>ソフトウェアをインストールするには、 <a href=[[[SERVERURL]]][[[LINKURL]]]>ここをクリック</a> 指示に従ってください。</p></area-link><p>このリクエストを開始していない場合は、このメールを無視してください。</p>宜しくお願いします、<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_ko.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - 초대</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - 에이전트 설치</b></table><area-name><p>안녕하세요, [[[NAME]]]님.</p></area-name><p>서버의 [[[USERNAME]]] 사용자 <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> 원격 제어 세션을 시작하기 위해 소프트웨어 설치를 요청하고 있습니다.</p><area-msg><p>메시지: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Windows를 위한 MeshAgent를 다운로드 하려면 여기를 클릭하십시오.</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Apple OSX를 위한 MeshAgent를 다운로드 하려면 여기를 클릭하십시오.</a></p></area-osx><area-linux><p>Linux의 경우, 다음을 잘라내어 터미널에 붙여 넣어 에이전트를 설치하십시오.<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>소프트웨어를 설치하려면, <a href=[[[SERVERURL]]][[[LINKURL]]]>여기를 클릭하십시오.</a> 그리고 다음 지시들을 따르십시오.</p></area-link><p>이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.</p>최고의 안부를 전합니다,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_nl.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Uitnodiging</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Agent installatie</b></table><area-name><p>Hallo [[[NAME]]],</p></area-name><p>Gebruiker [[[USERNAME]]] op server <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> vraagt u om de software te installeren om een ondersteunings sessie te starten.</p><area-msg><p>Bericht: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Klik hier om de MeshAgent te downloaden voor Windows.</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Klik hier om de MeshAgent te downloaden voor Apple OSX.</a></p></area-osx><area-linux><p>Voor Linux, knip het volgende en plak dit in een terminal om de agent te installeren:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>Om de software te installeren, <a href=[[[SERVERURL]]][[[LINKURL]]]>Klik hier</a> en volg de instructies.</p></area-link><p>Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.</p>Vriendelijke groeten,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_pt.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Invitation</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Agent Installation</b></table><area-name><p>Hello [[[NAME]]],</p></area-name><p>User [[[USERNAME]]] on server <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> is requesting you to install software to start a remote control session.</p><area-msg><p>Message: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Click here to download the MeshAgent for Windows.</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Click here to download the MeshAgent for Apple OSX.</a></p></area-osx><area-linux><p>For Linux, cut &amp; paste the following in a terminal to install the agent:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>To install the software, <a href=[[[SERVERURL]]][[[LINKURL]]]>click here</a> and follow the instructions.</p></area-link><p>If you did not initiate this request, please ignore this mail.</p>Best regards,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_ru.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]] - Приглашение</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]] - Установка агента</b></table><area-name><p>Здравствуйте, [[[NAME]]],</p></area-name><p>Пользователь [[[USERNAME]]] на сервере <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> просит вас установить программное обеспечение, чтобы начать сеанс удаленного управления.</p><area-msg><p>Сообщение: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Нажмите здесь, чтобы загрузить MeshAgent для Windows.</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">Нажмите здесь, чтобы загрузить MeshAgent для Apple OSX.</a></p></area-osx><area-linux><p>Для Linux вырезайте и вставляйте в терминал следующее, чтобы установить агент:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>Чтобы установить программное обеспечение, <a href=[[[SERVERURL]]][[[LINKURL]]]>кликните сюда</a> и следуйте инструкциям.</p></area-link><p>Если вы не инициировали этот запрос, игнорируйте это письмо.</p>С уважением,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
emails/translations/mesh-invite-min_zh-chs.html deleted
-1
@@ -1 +0,0 @@
1 -<div>[[[SERVERNAME]]]-邀请</div><div style=font-family:Arial,Helvetica,sans-serif><table style=background-color:#036;color:#d3d3d3;width:100% cellpadding=8><tr><td><b style=font-size:20px;font-family:Arial,Helvetica,sans-serif>[[[SERVERNAME]]]-代理程序安装</b></table><area-name><p>您好[[[NAME]]],</p></area-name><p>伺服器上的使用者[[[USERNAME]]] <a href=[[[SERVERURL]]]>[[[SERVERNAME]]]</a> 正在要求您安装软件以启动远程控制会话。</p><area-msg><p>信息: <b notrans=1>[[[MSG]]]</b></p></area-msg><area-windows><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=3&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">单击此处下载适用于Windows的MeshAgent。</a></p></area-windows><area-osx><p style=margin-left:30px><a href="[[[SERVERURL]]]/meshagents?id=16&amp;meshid=[[[MESHIDHEX]]]&amp;tag=mailto:[[[EMAIL]]]&amp;installflags=[[[INSTALLFLAGS]]]">单击此处下载适用于Apple OSX的MeshAgent。</a></p></area-osx><area-linux><p>对于Linux,将以下内容剪切并粘贴到终端中以安装代理程序:<br><pre style=margin-left:30px notrans=1>wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh &amp;&amp; chmod 755 ./meshinstall.sh &amp;&amp; sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'</pre><p></p></area-linux><area-link><p>要安装软件, <a href=[[[SERVERURL]]][[[LINKURL]]]>点击这里</a> 并按照说明进行操作。</p></area-link><p>如果您没有发起此请求,请忽略此邮件。</p>最好的祝福,<br>[[[USERNAME]]]<br></div>
\ No newline at end of file
meshuser.js
+8 -2
@@ -1826,9 +1826,15 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1826 if ((command.phone != null) && (typeof command.phone == 'string') && ((command.phone == '') || isPhoneNumber(command.phone))) { if (command.phone == '') { delete chguser.phone; } else { chguser.phone = command.phone; } change = 1; }
1827
1828 // Site admins can change any server rights, user managers can only change AccountLock, NoMeshCmd and NoNewGroups
1829 - if (chguser._id !== user._id) { // We can't change our own siteadmin permissions.
1829 + if (common.validateInt(command.siteadmin) && (chguser._id !== user._id) && (chguser.siteadmin != command.siteadmin)) { // We can't change our own siteadmin permissions.
1830 var chgusersiteadmin = chguser.siteadmin ? chguser.siteadmin : 0;
1831 - if (((user.siteadmin == 0xFFFFFFFF) || ((user.siteadmin & 2) && (((chgusersiteadmin ^ command.siteadmin) & 0xFFFFFF1F) == 0))) && common.validateInt(command.siteadmin) && (chguser.siteadmin != command.siteadmin)) { chguser.siteadmin = command.siteadmin; change = 1; }
1831 + if (user.siteadmin == 0xFFFFFFFF) { chguser.siteadmin = command.siteadmin; change = 1; }
1832 + else if (user.siteadmin & 2) {
1833 + var mask = 0xFFFFFF1D; // Mask: 2 (User Mangement) + 32 (Account locked) + 64 (No New Groups) + 128 (No Tools)
1834 + if ((user.siteadmin & 256) != 0) { mask -= 256; } // Mask: Manage User Groups
1835 + if ((user.siteadmin & 512) != 0) { mask -= 512; } // Mask: Manage Recordings
1836 + if (((chgusersiteadmin ^ command.siteadmin) & mask) == 0) { chguser.siteadmin = command.siteadmin; change = 1; }
1837 + }
1838 }
1839
1840 // When sending a notification about a group change, we need to send to all the previous and new groups.
public/scripts/agent-desktop-0.0.2-min.js
+1 -1
@@ -1 +1 @@
1 -Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(e,n){return new Uint8Array(Array.prototype.slice.call(this,e,n))}});var CreateAgentRemoteDesktop=function(e,n){var h={};"string"==typeof(h.CanvasId=e)&&(h.CanvasId=Q(e)),h.Canvas=h.CanvasId.getContext("2d"),h.scrolldiv=n,h.State=0,h.PendingOperations=[],h.tilesReceived=0,h.TilesDrawn=0,h.KillDraw=0,h.ipad=!1,h.tabletKeyboardVisible=!1,h.LastX=0,h.LastY=0,h.touchenabled=0,h.submenuoffset=0,h.touchtimer=null,h.TouchArray={},h.connectmode=0,h.connectioncount=0,h.rotation=0,h.protocol=2,h.debugmode=0,h.firstUpKeys=[],h.stopInput=!1,h.localKeyMap=!0,h.pressedKeys=[],h.sessionid=0,h.username,h.oldie=!1,h.CompressionLevel=50,h.ScalingLevel=1024,h.FrameRateTimer=100,h.FirstDraw=!1,h.ScreenWidth=960,h.ScreenHeight=700,h.width=960,h.height=960,h.displays=null,h.selectedDisplay=null,h.onScreenSizeChange=null,h.onMessage=null,h.onConnectCountChanged=null,h.onDebugMessage=null,h.onTouchEnabledChanged=null,h.onDisplayinfo=null;var g=!(h.accumulator=null),p="default";h.mouseCursorActive=function(e){g!=e&&(g=e,h.CanvasId.style.cursor=1==e?p:"default")};var v=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];h.Start=function(){h.State=0,h.accumulator=null},h.Stop=function(){h.setRotation(0),h.UnGrabKeyInput(),h.UnGrabMouseInput(),h.touchenabled=0,null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId),h.Canvas.clearRect(0,0,h.CanvasId.width,h.CanvasId.height)},h.xxStateChange=function(e){if(h.State!=e)switch(h.State=e,h.CanvasId.style.cursor="default",e){case 0:h.Stop()}},h.send=function(e){1<h.debugmode&&console.log("KSend("+e.length+"): "+rstr2hex(e)),null!=h.parent&&h.parent.send(e)},h.ProcessPictureMsg=function(e,n,t){var o=new Image;o.xcount=h.tilesReceived++;for(var a=h.tilesReceived,r=e.slice(4),i=0,s=[];5e4<r.byteLength-i;)s.push(String.fromCharCode.apply(null,r.slice(i,i+5e4))),i+=5e4;0<i?s.push(String.fromCharCode.apply(null,r.slice(i))):s.push(String.fromCharCode.apply(null,r)),o.src="data:image/jpeg;base64,"+btoa(s.join("")),o.onload=function(){if(null!=h.Canvas&&h.KillDraw<a&&0!=h.State)for(h.PendingOperations.push([a,2,o,n,t]);h.DoPendingOperations(););else h.PendingOperations.push([a,0])},o.error=function(){console.log("DecodeTileError")}},h.DoPendingOperations=function(){if(0==h.PendingOperations.length)return!1;for(var e=0;e<h.PendingOperations.length;e++){var n=h.PendingOperations[e];if(n[0]==h.TilesDrawn+1)return 1==n[1]?h.ProcessCopyRectMsg(n[2]):2==n[1]&&(h.Canvas.drawImage(n[2],h.rotX(n[3],n[4]),h.rotY(n[3],n[4])),delete n[2]),h.PendingOperations.splice(e,1),delete n,h.TilesDrawn++,h.TilesDrawn==h.tilesReceived&&h.KillDraw<h.TilesDrawn&&(h.KillDraw=h.TilesDrawn=h.tilesReceived=0),!0}return h.oldie&&0<h.PendingOperations.length&&h.TilesDrawn++,!1},h.ProcessCopyRectMsg=function(e){var n=((255&e.charCodeAt(0))<<8)+(255&e.charCodeAt(1)),t=((255&e.charCodeAt(2))<<8)+(255&e.charCodeAt(3)),o=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5)),a=((255&e.charCodeAt(6))<<8)+(255&e.charCodeAt(7)),r=((255&e.charCodeAt(8))<<8)+(255&e.charCodeAt(9)),i=((255&e.charCodeAt(10))<<8)+(255&e.charCodeAt(11));h.Canvas.drawImage(Canvas.canvas,n,t,r,i,o,a,r,i)},h.SendUnPause=function(){h.send(String.fromCharCode(0,8,0,5,0))},h.SendPause=function(){h.send(String.fromCharCode(0,8,0,5,1))},h.SendCompressionLevel=function(e,n,t,o){n&&(h.CompressionLevel=n),t&&(h.ScalingLevel=t),o&&(h.FrameRateTimer=o),h.send(String.fromCharCode(0,5,0,10,e,h.CompressionLevel)+h.shortToStr(h.ScalingLevel)+h.shortToStr(h.FrameRateTimer))},h.SendRefresh=function(){h.send(String.fromCharCode(0,6,0,4))},h.ProcessScreenMsg=function(e,n){for(0<h.debugmode&&console.log("ScreenSize: "+e+" x "+n),h.Canvas.setTransform(1,0,0,1,0,0),h.rotation=0,h.FirstDraw=!0,h.ScreenWidth=h.width=e,h.ScreenHeight=h.height=n,h.KillDraw=h.tilesReceived;0<h.PendingOperations.length;)h.PendingOperations.shift();h.SendCompressionLevel(1),h.SendUnPause(),null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId)},h.ProcessBinaryCommand=function(e,n,t){var o,a;switch(3!=e&&4!=e&&7!=e||(o=(t[4]<<8)+t[5],a=(t[6]<<8)+t[7]),e){case 3:h.FirstDraw&&h.onResize(),h.ProcessPictureMsg(t.slice(4),o,a);break;case 7:h.ProcessScreenMsg(o,a),h.SendKeyMsgKC(h.KeyAction.UP,16),h.SendKeyMsgKC(h.KeyAction.UP,17),h.SendKeyMsgKC(h.KeyAction.UP,18),h.SendKeyMsgKC(h.KeyAction.UP,91),h.SendKeyMsgKC(h.KeyAction.UP,92),h.SendKeyMsgKC(h.KeyAction.UP,16),h.send(String.fromCharCode(0,14,0,4));break;case 11:var r=0,i={},s=(t[4]<<8)+t[5];if(0<s){r=(t[6+2*s]<<8)+t[7+2*s];for(var c=0;c<s;c++){var u=(t[6+2*c]<<8)+t[7+2*c];i[u]=65535==u?"All Displays":"Display "+u}}h.displays=i,h.selectedDisplay=r,null!=h.onDisplayinfo&&h.onDisplayinfo(h,i,r);break;case 12:break;case 14:h.touchenabled=1,h.TouchArray={},null!=h.onTouchEnabledChanged&&h.onTouchEnabledChanged(h.touchenabled);break;case 15:h.TouchArray={};break;case 17:var l=String.fromCharCode.apply(null,data.slice(4));h.Debug("Got KVM Message: "+l),null!=h.onMessage&&h.onMessage(l,h);break;case 65:"."!=(l=String.fromCharCode.apply(null,data.slice(4)))[0]?(console.log(l),h.parent&&h.parent.setConsoleMessage&&h.parent.setConsoleMessage(l)):console.log("KVM: "+l.substring(1));break;case 88:if(5!=n)break;var d=t[4];v.length<d&&(d=0),p=v[d],g&&(h.CanvasId.style.cursor=p);break;default:console.log("Unknown command",e,n)}},h.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32},h.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6},h.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15},h.Alternate=0;var o={Pause:19,CapsLock:20,Space:32,Quote:222,Minus:189,NumpadMultiply:106,NumpadAdd:107,PrintScreen:44,Comma:188,NumpadSubtract:109,NumpadDecimal:110,Period:190,Slash:191,NumpadDivide:111,Semicolon:186,Equal:187,OSLeft:91,BracketLeft:219,OSRight:91,Backslash:220,BracketRight:221,ContextMenu:93,Backquote:192,NumLock:144,ScrollLock:145,Backspace:8,Tab:9,Enter:13,NumpadEnter:13,Escape:27,Delete:46,Home:36,PageUp:33,PageDown:34,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,End:35,Insert:45,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,MetaLeft:91,MetaRight:92,VolumeMute:181};function s(e,n,t){var o=Date.now();return"number"==typeof t?(h.recordedSize+=t,h.shortToStr(e)+h.shortToStr(n)+h.intToStr(t)+h.intToStr(o>>32)+h.intToStr(32&o)):(h.recordedSize+=t.length,h.shortToStr(e)+h.shortToStr(n)+h.intToStr(t.length)+h.intToStr(o>>32)+h.intToStr(32&o)+t)}return h.SendKeyMsg=function(e,n){var t;null!=e&&((n=n||window.event).code&&0==h.localKeyMap?null!=(t=function(e){return e.code.startsWith("Key")&&4==e.code.length?e.code.charCodeAt(3):e.code.startsWith("Digit")&&6==e.code.length?e.code.charCodeAt(5):e.code.startsWith("Numpad")&&7==e.code.length?e.code.charCodeAt(6)+48:o[e.code]}(n))&&h.SendKeyMsgKC(e,t):(59==(t=n.keyCode)?t=186:173==t?t=189:61==t&&(t=187),h.SendKeyMsgKC(e,t)))},h.SendMessage=function(e){3==h.State&&h.send(String.fromCharCode(0,17)+h.shortToStr(4+e.length)+e)},h.SendKeyMsgKC=function(e,n){if(3==h.State)if("object"==typeof e)for(var t in e)h.SendKeyMsgKC(e[t][0],e[t][1]);else{if(1==e)-1==h.pressedKeys.indexOf(n)&&h.pressedKeys.unshift(n);else if(2==e){-1!=(t=h.pressedKeys.indexOf(n))&&h.pressedKeys.splice(t,1)}h.send(String.fromCharCode(0,h.InputType.KEY,0,6,e-1,n))}},h.sendcad=function(){h.SendCtrlAltDelMsg()},h.SendCtrlAltDelMsg=function(){3==h.State&&h.send(String.fromCharCode(0,h.InputType.CTRLALTDEL,0,4))},h.SendEscKey=function(){3==h.State&&h.send(String.fromCharCode(0,h.InputType.KEY,0,6,0,27,0,h.InputType.KEY,0,6,1,27))},h.SendStartMsg=function(){h.SendKeyMsgKC(h.KeyAction.EXDOWN,91),h.SendKeyMsgKC(h.KeyAction.EXUP,91)},h.SendCharmsMsg=function(){h.SendKeyMsgKC(h.KeyAction.EXDOWN,91),h.SendKeyMsgKC(h.KeyAction.DOWN,67),h.SendKeyMsgKC(h.KeyAction.UP,67),h.SendKeyMsgKC(h.KeyAction.EXUP,91)},h.SendTouchMsg1=function(e,n,t,o){3==h.State&&h.send(String.fromCharCode(0,h.InputType.TOUCH)+h.shortToStr(14)+String.fromCharCode(1,e)+h.intToStr(n)+h.shortToStr(t)+h.shortToStr(o))},h.SendTouchMsg2=function(e,n){var t,o="";for(var a in h.TouchArray)a==e?t=n:1==h.TouchArray[a].f?(t=65542,h.TouchArray[a].f=3,"START"+a):2==h.TouchArray[a].f?(t=262144,"STOP"+a):t=131078,o+=String.fromCharCode(a)+h.intToStr(t)+h.shortToStr(h.TouchArray[a].x)+h.shortToStr(h.TouchArray[a].y),2==h.TouchArray[a].f&&delete h.TouchArray[a];3==h.State&&h.send(String.fromCharCode(0,h.InputType.TOUCH)+h.shortToStr(5+o.length)+String.fromCharCode(2)+o),0==Object.keys(h.TouchArray).length&&null!=h.touchtimer&&(clearInterval(h.touchtimer),h.touchtimer=null)},h.SendMouseMsg=function(e,n){if(3==h.State&&null!=e&&null!=h.Canvas){if(!n)n=window.event;var t=h.Canvas.canvas.height/h.CanvasId.clientHeight,o=h.Canvas.canvas.width/h.CanvasId.clientWidth,a=h.GetPositionOfControl(h.Canvas.canvas),r=(n.pageX-a[0])*o,i=(n.pageY-a[1])*t;if(n.addx&&(r+=n.addx),n.addy&&(i+=n.addy),0<=r&&r<=h.Canvas.canvas.width&&0<=i&&i<=h.Canvas.canvas.height){var s=0,c=0;e==h.KeyAction.UP||e==h.KeyAction.DOWN?n.which?s=1==n.which?h.MouseButton.LEFT:2==n.which?h.MouseButton.MIDDLE:h.MouseButton.RIGHT:n.button&&(s=0==n.button?h.MouseButton.LEFT:1==n.button?h.MouseButton.MIDDLE:h.MouseButton.RIGHT):e==h.KeyAction.SCROLL&&(n.detail?c=120*n.detail*-1:n.wheelDelta&&(c=3*n.wheelDelta));var u="";if(e==h.KeyAction.DBLCLICK)u=String.fromCharCode(0,h.InputType.MOUSE,0,10,0,136,r/256&255,255&r,i/256&255,255&i);else if(e==h.KeyAction.SCROLL){var l=0,d=0;d=c<0?(l=255-(Math.abs(c)>>8),255-(255&Math.abs(c))):(l=c>>8,255&c),u=String.fromCharCode(0,h.InputType.MOUSE,0,12,0,0,r/256&255,255&r,i/256&255,255&i,l,d)}else u=String.fromCharCode(0,h.InputType.MOUSE,0,10,0,e==h.KeyAction.DOWN?s:2*s&255,r/256&255,255&r,i/256&255,255&i);h.Action==h.KeyAction.NONE?0==h.Alternate||h.ipad?(h.send(u),h.Alternate=1):h.Alternate=0:h.send(u)}}},h.GetDisplayNumbers=function(){h.send(String.fromCharCode(0,11,0,4))},h.SetDisplay=function(e){h.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},h.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},h.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},h.onResize=function(){0!=h.ScreenWidth&&0!=h.ScreenHeight&&(h.Canvas.canvas.width==h.ScreenWidth&&h.Canvas.canvas.height==h.ScreenHeight||(h.FirstDraw&&(h.Canvas.canvas.width=h.ScreenWidth,h.Canvas.canvas.height=h.ScreenHeight,h.Canvas.fillRect(0,0,h.ScreenWidth,h.ScreenHeight),null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId)),h.FirstDraw=!1))},h.xxMouseInputGrab=!1,h.xxKeyInputGrab=!1,h.xxMouseMove=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.NONE,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseUp=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseDown=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseDblClick=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.DBLCLICK,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxDOMMouseScroll=function(e){return 3!=h.State||(h.SendMouseMsg(h.KeyAction.SCROLL,e),!1)},h.xxMouseWheel=function(e){return 3!=h.State||(h.SendMouseMsg(h.KeyAction.SCROLL,e),!1)},h.xxKeyUp=function(e){return 3==h.State&&h.SendKeyMsg(h.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxKeyDown=function(e){return 3==h.State&&h.SendKeyMsg(h.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxKeyPress=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.handleKeys=function(e){return 1!=h.stopInput&&3==desktop.State&&h.xxKeyPress(e)},h.handleKeyUp=function(e){if(1==h.stopInput||3!=desktop.State)return!1;if(h.firstUpKeys.length<5&&(h.firstUpKeys.push(e.keyCode),5==h.firstUpKeys.length)){var n=h.firstUpKeys.join(",");"16,17,91,91,16"!=n&&"16,17,18,91,92"!=n||(h.stopInput=!0)}return h.xxKeyUp(e)},h.handleKeyDown=function(e){return 1!=h.stopInput&&3==desktop.State&&h.xxKeyDown(e)},h.handleReleaseKeys=function(){var e=JSON.parse(JSON.stringify(h.pressedKeys));for(var n in e)h.SendKeyMsgKC(h.KeyAction.UP,e[n])},h.mousedblclick=function(e){return 1!=h.stopInput&&h.xxMouseDblClick(e)},h.mousedown=function(e){return 1!=h.stopInput&&h.xxMouseDown(e)},h.mouseup=function(e){return 1!=h.stopInput&&h.xxMouseUp(e)},h.mousemove=function(e){return 1!=h.stopInput&&h.xxMouseMove(e)},h.mousewheel=function(e){return 1!=h.stopInput&&h.xxMouseWheel(e)},h.xxMsTouchEvent=function(e){if(4!=e.originalEvent.pointerType){if(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),"MSPointerDown"==e.type||"MSPointerMove"==e.type||"MSPointerUp"==e.type){var n=0,t=e.originalEvent.pointerId%256,o=e.offsetX*(Canvas.canvas.width/h.CanvasId.clientWidth),a=e.offsetY*(Canvas.canvas.height/h.CanvasId.clientHeight);"MSPointerDown"==e.type?n=65542:"MSPointerMove"==e.type?n=131078:"MSPointerUp"==e.type&&(n=262144),h.TouchArray[t]||(h.TouchArray[t]={x:o,y:a}),h.SendTouchMsg2(t,n),"MSPointerUp"==e.type&&delete h.TouchArray[t]}else alert(e.type);return!0}},h.xxTouchStart=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;var n=e.originalEvent.touches[0];e.which=1,h.LastX=e.pageX=n.pageX,h.LastY=e.pageY=n.pageY,h.SendMouseMsg(KeyAction.DOWN,e)}else{var t=h.GetPositionOfControl(Canvas.canvas);for(var o in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[o].identifier){var a=e.originalEvent.changedTouches[o].identifier%256;h.TouchArray[a]||(h.TouchArray[a]={x:(e.originalEvent.touches[o].pageX-t[0])*(Canvas.canvas.width/h.CanvasId.clientWidth),y:(e.originalEvent.touches[o].pageY-t[1])*(Canvas.canvas.height/h.CanvasId.clientHeight),f:1})}0<Object.keys(h.TouchArray).length&&null==touchtimer&&(h.touchtimer=setInterval(function(){h.SendTouchMsg2(256,0)},50))}},h.xxTouchMove=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;var n=e.originalEvent.touches[0];e.which=1,h.LastX=e.pageX=n.pageX,h.LastY=e.pageY=n.pageY,h.SendMouseMsg(h.KeyAction.NONE,e)}else{var t=h.GetPositionOfControl(Canvas.canvas);for(var o in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[o].identifier){var a=e.originalEvent.changedTouches[o].identifier%256;h.TouchArray[a]&&(h.TouchArray[a].x=(e.originalEvent.touches[o].pageX-t[0])*(h.Canvas.canvas.width/h.CanvasId.clientWidth),h.TouchArray[a].y=(e.originalEvent.touches[o].pageY-t[1])*(h.Canvas.canvas.height/h.CanvasId.clientHeight))}}},h.xxTouchEnd=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;e.which=1,e.pageX=LastX,e.pageY=LastY,h.SendMouseMsg(KeyAction.UP,e)}else for(var n in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[n].identifier){var t=e.originalEvent.changedTouches[n].identifier%256;h.TouchArray[t]&&(h.TouchArray[t].f=2)}},h.GrabMouseInput=function(){if(1!=h.xxMouseInputGrab){var e=h.CanvasId;e.onmousemove=h.xxMouseMove,e.onmouseup=h.xxMouseUp,e.onmousedown=h.xxMouseDown,e.touchstart=h.xxTouchStart,e.touchmove=h.xxTouchMove,e.touchend=h.xxTouchEnd,e.MSPointerDown=h.xxMsTouchEvent,e.MSPointerMove=h.xxMsTouchEvent,e.MSPointerUp=h.xxMsTouchEvent,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=h.xxDOMMouseScroll:e.onmousewheel=h.xxMouseWheel,h.xxMouseInputGrab=!0}},h.UnGrabMouseInput=function(){if(0!=h.xxMouseInputGrab){var e=h.CanvasId;e.onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.touchstart=null,e.touchmove=null,e.touchend=null,e.MSPointerDown=null,e.MSPointerMove=null,e.MSPointerUp=null,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=null:e.onmousewheel=null,h.xxMouseInputGrab=!1}},h.GrabKeyInput=function(){1!=h.xxKeyInputGrab&&(document.onkeyup=h.xxKeyUp,document.onkeydown=h.xxKeyDown,document.onkeypress=h.xxKeyPress,h.xxKeyInputGrab=!0)},h.UnGrabKeyInput=function(){0!=h.xxKeyInputGrab&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,h.xxKeyInputGrab=!1)},h.GetPositionOfControl=function(e){var n=Array(2);for(n[0]=n[1]=0;e;)n[0]+=e.offsetLeft,n[1]+=e.offsetTop,e=e.offsetParent;return n},h.crotX=function(e,n){return 0==h.rotation?e:1==h.rotation?n:2==h.rotation?h.Canvas.canvas.width-e:3==h.rotation?h.Canvas.canvas.height-n:void 0},h.crotY=function(e,n){return 0==h.rotation?n:1==h.rotation?h.Canvas.canvas.width-e:2==h.rotation?h.Canvas.canvas.height-n:3==h.rotation?e:void 0},h.rotX=function(e,n){return 0==h.rotation||1==h.rotation?e:2==h.rotation?e-h.Canvas.canvas.width:3==h.rotation?e-h.Canvas.canvas.height:void 0},h.rotY=function(e,n){return 0==h.rotation||3==h.rotation?n:1==h.rotation?n-h.Canvas.canvas.width:2==h.rotation?n-h.Canvas.canvas.height:void 0},h.tcanvas=null,h.setRotation=function(e){for(;e<0;)e+=4;var n=e%4;if(n==h.rotation)return!0;var t=h.Canvas.canvas.width,o=h.Canvas.canvas.height;1!=h.rotation&&3!=h.rotation||(t=h.Canvas.canvas.height,o=h.Canvas.canvas.width),null==h.tcanvas&&(h.tcanvas=document.createElement("canvas"));var a=h.tcanvas.getContext("2d");return a.setTransform(1,0,0,1,0,0),a.canvas.width=t,a.canvas.height=o,a.rotate(-90*h.rotation*Math.PI/180),0==h.rotation&&a.drawImage(h.Canvas.canvas,0,0),1==h.rotation&&a.drawImage(h.Canvas.canvas,-h.Canvas.canvas.width,0),2==h.rotation&&a.drawImage(h.Canvas.canvas,-h.Canvas.canvas.width,-h.Canvas.canvas.height),3==h.rotation&&a.drawImage(h.Canvas.canvas,0,-h.Canvas.canvas.height),0!=h.rotation&&2!=h.rotation||(h.Canvas.canvas.height=t,h.Canvas.canvas.width=o),1!=h.rotation&&3!=h.rotation||(h.Canvas.canvas.height=o,h.Canvas.canvas.width=t),h.Canvas.setTransform(1,0,0,1,0,0),h.Canvas.rotate(90*n*Math.PI/180),h.rotation=n,h.Canvas.drawImage(h.tcanvas,h.rotX(0,0),h.rotY(0,0)),h.ScreenWidth=h.Canvas.canvas.width,h.ScreenHeight=h.Canvas.canvas.height,null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId),!0},h.StartRecording=function(){null==h.recordedData&&h.CanvasId.toBlob(function(e){var i=new FileReader;i.readAsArrayBuffer(e),i.onload=function(e){for(var n="",t=new Uint8Array(i.result),o=t.byteLength,a=0;a<o;a++)n+=String.fromCharCode(t[a]);h.recordedData=[],h.recordedStart=Date.now(),h.recordedSize=0,h.recordedData.push(s(1,0,JSON.stringify({magic:"MeshCentralRelaySession",ver:1,time:(new Date).toLocaleString(),protocol:2}))),h.recordedData.push(s(2,1,h.shortToStr(7)+h.shortToStr(8)+h.shortToStr(h.ScreenWidth)+h.shortToStr(h.ScreenHeight)));var r=4+n.length;65e3<r?h.recordedData.push(s(2,1,h.shortToStr(27)+h.shortToStr(8)+h.intToStr(r)+h.shortToStr(3)+h.shortToStr(0)+h.shortToStr(0)+h.shortToStr(0)+n)):h.recordedData.push(s(2,1,h.shortToStr(3)+h.shortToStr(r)+h.shortToStr(0)+h.shortToStr(0)+n))}})},h.StopRecording=function(){if(null!=h.recordedData){var e=h.recordedData;return e.push(s(3,0,"MeshCentralMCREC")),delete h.recordedData,delete h.recordedStart,delete h.recordedSize,e}},h.MuchTheSame=function(e,n){return Math.abs(e-n)<4},h.Debug=function(e){console.log(e)},h.getIEVersion=function(){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var n=navigator.userAgent;null!=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(n)&&(e=parseFloat(RegExp.$1))}return e},h.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h}
\ No newline at end of file
1 +Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(e,t){return new Uint8Array(Array.prototype.slice.call(this,e,t))}});var CreateAgentRemoteDesktop=function(e,t){var h={};"string"==typeof(h.CanvasId=e)&&(h.CanvasId=Q(e)),h.Canvas=h.CanvasId.getContext("2d"),h.scrolldiv=t,h.State=0,h.PendingOperations=[],h.tilesReceived=0,h.TilesDrawn=0,h.KillDraw=0,h.ipad=!1,h.tabletKeyboardVisible=!1,h.LastX=0,h.LastY=0,h.touchenabled=0,h.submenuoffset=0,h.touchtimer=null,h.TouchArray={},h.connectmode=0,h.connectioncount=0,h.rotation=0,h.protocol=2,h.debugmode=0,h.firstUpKeys=[],h.stopInput=!1,h.localKeyMap=!0,h.pressedKeys=[],h.sessionid=0,h.username,h.oldie=!1,h.CompressionLevel=50,h.ScalingLevel=1024,h.FrameRateTimer=100,h.FirstDraw=!1,h.ScreenWidth=960,h.ScreenHeight=700,h.width=960,h.height=960,h.displays=null,h.selectedDisplay=null,h.onScreenSizeChange=null,h.onMessage=null,h.onConnectCountChanged=null,h.onDebugMessage=null,h.onTouchEnabledChanged=null,h.onDisplayinfo=null;var g=!(h.accumulator=null),p="default";h.mouseCursorActive=function(e){g!=e&&(g=e,h.CanvasId.style.cursor=1==e?p:"default")};var v=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];h.Start=function(){h.State=0,h.accumulator=null},h.Stop=function(){h.setRotation(0),h.UnGrabKeyInput(),h.UnGrabMouseInput(),h.touchenabled=0,null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId),h.Canvas.clearRect(0,0,h.CanvasId.width,h.CanvasId.height)},h.xxStateChange=function(e){if(h.State!=e)switch(h.State=e,h.CanvasId.style.cursor="default",e){case 0:h.Stop()}},h.send=function(e){1<h.debugmode&&console.log("KSend("+e.length+"): "+rstr2hex(e)),null!=h.parent&&h.parent.send(e)},h.ProcessPictureMsg=function(e,t,n){var o=new Image;o.xcount=h.tilesReceived++;for(var a=h.tilesReceived,r=e.slice(4),s=0,i=[];5e4<r.byteLength-s;)i.push(String.fromCharCode.apply(null,r.slice(s,s+5e4))),s+=5e4;0<s?i.push(String.fromCharCode.apply(null,r.slice(s))):i.push(String.fromCharCode.apply(null,r)),o.src="data:image/jpeg;base64,"+btoa(i.join("")),o.onload=function(){if(null!=h.Canvas&&h.KillDraw<a&&0!=h.State)for(h.PendingOperations.push([a,2,o,t,n]);h.DoPendingOperations(););else h.PendingOperations.push([a,0])},o.error=function(){console.log("DecodeTileError")}},h.DoPendingOperations=function(){if(0==h.PendingOperations.length)return!1;for(var e=0;e<h.PendingOperations.length;e++){var t=h.PendingOperations[e];if(t[0]==h.TilesDrawn+1)return 1==t[1]?h.ProcessCopyRectMsg(t[2]):2==t[1]&&(h.Canvas.drawImage(t[2],h.rotX(t[3],t[4]),h.rotY(t[3],t[4])),delete t[2]),h.PendingOperations.splice(e,1),delete t,h.TilesDrawn++,h.TilesDrawn==h.tilesReceived&&h.KillDraw<h.TilesDrawn&&(h.KillDraw=h.TilesDrawn=h.tilesReceived=0),!0}return h.oldie&&0<h.PendingOperations.length&&h.TilesDrawn++,!1},h.ProcessCopyRectMsg=function(e){var t=((255&e.charCodeAt(0))<<8)+(255&e.charCodeAt(1)),n=((255&e.charCodeAt(2))<<8)+(255&e.charCodeAt(3)),o=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5)),a=((255&e.charCodeAt(6))<<8)+(255&e.charCodeAt(7)),r=((255&e.charCodeAt(8))<<8)+(255&e.charCodeAt(9)),s=((255&e.charCodeAt(10))<<8)+(255&e.charCodeAt(11));h.Canvas.drawImage(Canvas.canvas,t,n,r,s,o,a,r,s)},h.SendUnPause=function(){h.send(String.fromCharCode(0,8,0,5,0))},h.SendPause=function(){h.send(String.fromCharCode(0,8,0,5,1))},h.SendCompressionLevel=function(e,t,n,o){t&&(h.CompressionLevel=t),n&&(h.ScalingLevel=n),o&&(h.FrameRateTimer=o),h.send(String.fromCharCode(0,5,0,10,e,h.CompressionLevel)+h.shortToStr(h.ScalingLevel)+h.shortToStr(h.FrameRateTimer))},h.SendRefresh=function(){h.send(String.fromCharCode(0,6,0,4))},h.ProcessScreenMsg=function(e,t){for(0<h.debugmode&&console.log("ScreenSize: "+e+" x "+t),h.Canvas.setTransform(1,0,0,1,0,0),h.rotation=0,h.FirstDraw=!0,h.ScreenWidth=h.width=e,h.ScreenHeight=h.height=t,h.KillDraw=h.tilesReceived;0<h.PendingOperations.length;)h.PendingOperations.shift();h.SendCompressionLevel(1),h.SendUnPause(),null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId)},h.ProcessBinaryCommand=function(e,t,n){var o,a;switch(3!=e&&4!=e&&7!=e||(o=(n[4]<<8)+n[5],a=(n[6]<<8)+n[7]),null!=h.recordedData&&(65e3<t?h.recordedData.push(S(2,1,h.shortToStr(27)+h.shortToStr(8)+h.intToStr(t)+h.shortToStr(e)+h.shortToStr(0)+h.shortToStr(0)+h.shortToStr(0)+String.fromCharCode.apply(null,n))):h.recordedData.push(S(2,1,String.fromCharCode.apply(null,n)))),e){case 3:h.FirstDraw&&h.onResize(),h.ProcessPictureMsg(n.slice(4),o,a);break;case 7:h.ProcessScreenMsg(o,a),h.SendKeyMsgKC(h.KeyAction.UP,16),h.SendKeyMsgKC(h.KeyAction.UP,17),h.SendKeyMsgKC(h.KeyAction.UP,18),h.SendKeyMsgKC(h.KeyAction.UP,91),h.SendKeyMsgKC(h.KeyAction.UP,92),h.SendKeyMsgKC(h.KeyAction.UP,16),h.send(String.fromCharCode(0,14,0,4));break;case 11:var r=0,s={},i=(n[4]<<8)+n[5];if(0<i){r=(n[6+2*i]<<8)+n[7+2*i];for(var c=0;c<i;c++){var u=(n[6+2*c]<<8)+n[7+2*c];s[u]=65535==u?"All Displays":"Display "+u}}h.displays=s,h.selectedDisplay=r,null!=h.onDisplayinfo&&h.onDisplayinfo(h,s,r);break;case 12:break;case 14:h.touchenabled=1,h.TouchArray={},null!=h.onTouchEnabledChanged&&h.onTouchEnabledChanged(h.touchenabled);break;case 15:h.TouchArray={};break;case 17:var l=String.fromCharCode.apply(null,data.slice(4));h.Debug("Got KVM Message: "+l),null!=h.onMessage&&h.onMessage(l,h);break;case 65:"."!=(l=String.fromCharCode.apply(null,data.slice(4)))[0]?(console.log(l),h.parent&&h.parent.setConsoleMessage&&h.parent.setConsoleMessage(l)):console.log("KVM: "+l.substring(1));break;case 88:if(5!=t)break;var d=n[4];v.length<d&&(d=0),p=v[d],g&&(h.CanvasId.style.cursor=p);break;default:console.log("Unknown command",e,t)}},h.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32},h.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6},h.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15},h.Alternate=0;var o={Pause:19,CapsLock:20,Space:32,Quote:222,Minus:189,NumpadMultiply:106,NumpadAdd:107,PrintScreen:44,Comma:188,NumpadSubtract:109,NumpadDecimal:110,Period:190,Slash:191,NumpadDivide:111,Semicolon:186,Equal:187,OSLeft:91,BracketLeft:219,OSRight:91,Backslash:220,BracketRight:221,ContextMenu:93,Backquote:192,NumLock:144,ScrollLock:145,Backspace:8,Tab:9,Enter:13,NumpadEnter:13,Escape:27,Delete:46,Home:36,PageUp:33,PageDown:34,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,End:35,Insert:45,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,MetaLeft:91,MetaRight:92,VolumeMute:181};function S(e,t,n){var o=Date.now();return"number"==typeof n?(h.recordedSize+=n,h.shortToStr(e)+h.shortToStr(t)+h.intToStr(n)+h.intToStr(o>>32)+h.intToStr(32&o)):(h.recordedSize+=n.length,h.shortToStr(e)+h.shortToStr(t)+h.intToStr(n.length)+h.intToStr(o>>32)+h.intToStr(32&o)+n)}return h.SendKeyMsg=function(e,t){var n;null!=e&&((t=t||window.event).code&&0==h.localKeyMap?null!=(n=function(e){return e.code.startsWith("Key")&&4==e.code.length?e.code.charCodeAt(3):e.code.startsWith("Digit")&&6==e.code.length?e.code.charCodeAt(5):e.code.startsWith("Numpad")&&7==e.code.length?e.code.charCodeAt(6)+48:o[e.code]}(t))&&h.SendKeyMsgKC(e,n):(59==(n=t.keyCode)?n=186:173==n?n=189:61==n&&(n=187),h.SendKeyMsgKC(e,n)))},h.SendMessage=function(e){3==h.State&&h.send(String.fromCharCode(0,17)+h.shortToStr(4+e.length)+e)},h.SendKeyMsgKC=function(e,t){if(3==h.State)if("object"==typeof e)for(var n in e)h.SendKeyMsgKC(e[n][0],e[n][1]);else{if(1==e)-1==h.pressedKeys.indexOf(t)&&h.pressedKeys.unshift(t);else if(2==e){-1!=(n=h.pressedKeys.indexOf(t))&&h.pressedKeys.splice(n,1)}h.send(String.fromCharCode(0,h.InputType.KEY,0,6,e-1,t))}},h.sendcad=function(){h.SendCtrlAltDelMsg()},h.SendCtrlAltDelMsg=function(){3==h.State&&h.send(String.fromCharCode(0,h.InputType.CTRLALTDEL,0,4))},h.SendEscKey=function(){3==h.State&&h.send(String.fromCharCode(0,h.InputType.KEY,0,6,0,27,0,h.InputType.KEY,0,6,1,27))},h.SendStartMsg=function(){h.SendKeyMsgKC(h.KeyAction.EXDOWN,91),h.SendKeyMsgKC(h.KeyAction.EXUP,91)},h.SendCharmsMsg=function(){h.SendKeyMsgKC(h.KeyAction.EXDOWN,91),h.SendKeyMsgKC(h.KeyAction.DOWN,67),h.SendKeyMsgKC(h.KeyAction.UP,67),h.SendKeyMsgKC(h.KeyAction.EXUP,91)},h.SendTouchMsg1=function(e,t,n,o){3==h.State&&h.send(String.fromCharCode(0,h.InputType.TOUCH)+h.shortToStr(14)+String.fromCharCode(1,e)+h.intToStr(t)+h.shortToStr(n)+h.shortToStr(o))},h.SendTouchMsg2=function(e,t){var n,o="";for(var a in h.TouchArray)a==e?n=t:1==h.TouchArray[a].f?(n=65542,h.TouchArray[a].f=3,"START"+a):2==h.TouchArray[a].f?(n=262144,"STOP"+a):n=131078,o+=String.fromCharCode(a)+h.intToStr(n)+h.shortToStr(h.TouchArray[a].x)+h.shortToStr(h.TouchArray[a].y),2==h.TouchArray[a].f&&delete h.TouchArray[a];3==h.State&&h.send(String.fromCharCode(0,h.InputType.TOUCH)+h.shortToStr(5+o.length)+String.fromCharCode(2)+o),0==Object.keys(h.TouchArray).length&&null!=h.touchtimer&&(clearInterval(h.touchtimer),h.touchtimer=null)},h.SendMouseMsg=function(e,t){if(3==h.State&&null!=e&&null!=h.Canvas){if(!t)t=window.event;var n=h.Canvas.canvas.height/h.CanvasId.clientHeight,o=h.Canvas.canvas.width/h.CanvasId.clientWidth,a=h.GetPositionOfControl(h.Canvas.canvas),r=(t.pageX-a[0])*o,s=(t.pageY-a[1])*n;if(t.addx&&(r+=t.addx),t.addy&&(s+=t.addy),0<=r&&r<=h.Canvas.canvas.width&&0<=s&&s<=h.Canvas.canvas.height){var i=0,c=0;e==h.KeyAction.UP||e==h.KeyAction.DOWN?t.which?i=1==t.which?h.MouseButton.LEFT:2==t.which?h.MouseButton.MIDDLE:h.MouseButton.RIGHT:t.button&&(i=0==t.button?h.MouseButton.LEFT:1==t.button?h.MouseButton.MIDDLE:h.MouseButton.RIGHT):e==h.KeyAction.SCROLL&&(t.detail?c=120*t.detail*-1:t.wheelDelta&&(c=3*t.wheelDelta));var u="";if(e==h.KeyAction.DBLCLICK)u=String.fromCharCode(0,h.InputType.MOUSE,0,10,0,136,r/256&255,255&r,s/256&255,255&s);else if(e==h.KeyAction.SCROLL){var l=0,d=0;d=c<0?(l=255-(Math.abs(c)>>8),255-(255&Math.abs(c))):(l=c>>8,255&c),u=String.fromCharCode(0,h.InputType.MOUSE,0,12,0,0,r/256&255,255&r,s/256&255,255&s,l,d)}else u=String.fromCharCode(0,h.InputType.MOUSE,0,10,0,e==h.KeyAction.DOWN?i:2*i&255,r/256&255,255&r,s/256&255,255&s);h.Action==h.KeyAction.NONE?0==h.Alternate||h.ipad?(h.send(u),h.Alternate=1):h.Alternate=0:h.send(u)}}},h.GetDisplayNumbers=function(){h.send(String.fromCharCode(0,11,0,4))},h.SetDisplay=function(e){h.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},h.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},h.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},h.onResize=function(){0!=h.ScreenWidth&&0!=h.ScreenHeight&&(h.Canvas.canvas.width==h.ScreenWidth&&h.Canvas.canvas.height==h.ScreenHeight||(h.FirstDraw&&(h.Canvas.canvas.width=h.ScreenWidth,h.Canvas.canvas.height=h.ScreenHeight,h.Canvas.fillRect(0,0,h.ScreenWidth,h.ScreenHeight),null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId)),h.FirstDraw=!1))},h.xxMouseInputGrab=!1,h.xxKeyInputGrab=!1,h.xxMouseMove=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.NONE,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseUp=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseDown=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxMouseDblClick=function(e){return 3==h.State&&h.SendMouseMsg(h.KeyAction.DBLCLICK,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxDOMMouseScroll=function(e){return 3!=h.State||(h.SendMouseMsg(h.KeyAction.SCROLL,e),!1)},h.xxMouseWheel=function(e){return 3!=h.State||(h.SendMouseMsg(h.KeyAction.SCROLL,e),!1)},h.xxKeyUp=function(e){return 3==h.State&&h.SendKeyMsg(h.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxKeyDown=function(e){return 3==h.State&&h.SendKeyMsg(h.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.xxKeyPress=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h.handleKeys=function(e){return 1!=h.stopInput&&3==desktop.State&&h.xxKeyPress(e)},h.handleKeyUp=function(e){if(1==h.stopInput||3!=desktop.State)return!1;if(h.firstUpKeys.length<5&&(h.firstUpKeys.push(e.keyCode),5==h.firstUpKeys.length)){var t=h.firstUpKeys.join(",");"16,17,91,91,16"!=t&&"16,17,18,91,92"!=t||(h.stopInput=!0)}return h.xxKeyUp(e)},h.handleKeyDown=function(e){return 1!=h.stopInput&&3==desktop.State&&h.xxKeyDown(e)},h.handleReleaseKeys=function(){var e=JSON.parse(JSON.stringify(h.pressedKeys));for(var t in e)h.SendKeyMsgKC(h.KeyAction.UP,e[t])},h.mousedblclick=function(e){return 1!=h.stopInput&&h.xxMouseDblClick(e)},h.mousedown=function(e){return 1!=h.stopInput&&h.xxMouseDown(e)},h.mouseup=function(e){return 1!=h.stopInput&&h.xxMouseUp(e)},h.mousemove=function(e){return 1!=h.stopInput&&h.xxMouseMove(e)},h.mousewheel=function(e){return 1!=h.stopInput&&h.xxMouseWheel(e)},h.xxMsTouchEvent=function(e){if(4!=e.originalEvent.pointerType){if(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),"MSPointerDown"==e.type||"MSPointerMove"==e.type||"MSPointerUp"==e.type){var t=0,n=e.originalEvent.pointerId%256,o=e.offsetX*(Canvas.canvas.width/h.CanvasId.clientWidth),a=e.offsetY*(Canvas.canvas.height/h.CanvasId.clientHeight);"MSPointerDown"==e.type?t=65542:"MSPointerMove"==e.type?t=131078:"MSPointerUp"==e.type&&(t=262144),h.TouchArray[n]||(h.TouchArray[n]={x:o,y:a}),h.SendTouchMsg2(n,t),"MSPointerUp"==e.type&&delete h.TouchArray[n]}else alert(e.type);return!0}},h.xxTouchStart=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;var t=e.originalEvent.touches[0];e.which=1,h.LastX=e.pageX=t.pageX,h.LastY=e.pageY=t.pageY,h.SendMouseMsg(KeyAction.DOWN,e)}else{var n=h.GetPositionOfControl(Canvas.canvas);for(var o in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[o].identifier){var a=e.originalEvent.changedTouches[o].identifier%256;h.TouchArray[a]||(h.TouchArray[a]={x:(e.originalEvent.touches[o].pageX-n[0])*(Canvas.canvas.width/h.CanvasId.clientWidth),y:(e.originalEvent.touches[o].pageY-n[1])*(Canvas.canvas.height/h.CanvasId.clientHeight),f:1})}0<Object.keys(h.TouchArray).length&&null==touchtimer&&(h.touchtimer=setInterval(function(){h.SendTouchMsg2(256,0)},50))}},h.xxTouchMove=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;var t=e.originalEvent.touches[0];e.which=1,h.LastX=e.pageX=t.pageX,h.LastY=e.pageY=t.pageY,h.SendMouseMsg(h.KeyAction.NONE,e)}else{var n=h.GetPositionOfControl(Canvas.canvas);for(var o in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[o].identifier){var a=e.originalEvent.changedTouches[o].identifier%256;h.TouchArray[a]&&(h.TouchArray[a].x=(e.originalEvent.touches[o].pageX-n[0])*(h.Canvas.canvas.width/h.CanvasId.clientWidth),h.TouchArray[a].y=(e.originalEvent.touches[o].pageY-n[1])*(h.Canvas.canvas.height/h.CanvasId.clientHeight))}}},h.xxTouchEnd=function(e){if(3==h.State)if(e.preventDefault&&e.preventDefault(),0==h.touchenabled||1==h.touchenabled){if(1<e.originalEvent.touches.length)return;e.which=1,e.pageX=LastX,e.pageY=LastY,h.SendMouseMsg(KeyAction.UP,e)}else for(var t in e.originalEvent.changedTouches)if(e.originalEvent.changedTouches[t].identifier){var n=e.originalEvent.changedTouches[t].identifier%256;h.TouchArray[n]&&(h.TouchArray[n].f=2)}},h.GrabMouseInput=function(){if(1!=h.xxMouseInputGrab){var e=h.CanvasId;e.onmousemove=h.xxMouseMove,e.onmouseup=h.xxMouseUp,e.onmousedown=h.xxMouseDown,e.touchstart=h.xxTouchStart,e.touchmove=h.xxTouchMove,e.touchend=h.xxTouchEnd,e.MSPointerDown=h.xxMsTouchEvent,e.MSPointerMove=h.xxMsTouchEvent,e.MSPointerUp=h.xxMsTouchEvent,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=h.xxDOMMouseScroll:e.onmousewheel=h.xxMouseWheel,h.xxMouseInputGrab=!0}},h.UnGrabMouseInput=function(){if(0!=h.xxMouseInputGrab){var e=h.CanvasId;e.onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.touchstart=null,e.touchmove=null,e.touchend=null,e.MSPointerDown=null,e.MSPointerMove=null,e.MSPointerUp=null,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=null:e.onmousewheel=null,h.xxMouseInputGrab=!1}},h.GrabKeyInput=function(){1!=h.xxKeyInputGrab&&(document.onkeyup=h.xxKeyUp,document.onkeydown=h.xxKeyDown,document.onkeypress=h.xxKeyPress,h.xxKeyInputGrab=!0)},h.UnGrabKeyInput=function(){0!=h.xxKeyInputGrab&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,h.xxKeyInputGrab=!1)},h.GetPositionOfControl=function(e){var t=Array(2);for(t[0]=t[1]=0;e;)t[0]+=e.offsetLeft,t[1]+=e.offsetTop,e=e.offsetParent;return t},h.crotX=function(e,t){return 0==h.rotation?e:1==h.rotation?t:2==h.rotation?h.Canvas.canvas.width-e:3==h.rotation?h.Canvas.canvas.height-t:void 0},h.crotY=function(e,t){return 0==h.rotation?t:1==h.rotation?h.Canvas.canvas.width-e:2==h.rotation?h.Canvas.canvas.height-t:3==h.rotation?e:void 0},h.rotX=function(e,t){return 0==h.rotation||1==h.rotation?e:2==h.rotation?e-h.Canvas.canvas.width:3==h.rotation?e-h.Canvas.canvas.height:void 0},h.rotY=function(e,t){return 0==h.rotation||3==h.rotation?t:1==h.rotation?t-h.Canvas.canvas.width:2==h.rotation?t-h.Canvas.canvas.height:void 0},h.tcanvas=null,h.setRotation=function(e){for(;e<0;)e+=4;var t=e%4;if(t==h.rotation)return!0;var n=h.Canvas.canvas.width,o=h.Canvas.canvas.height;1!=h.rotation&&3!=h.rotation||(n=h.Canvas.canvas.height,o=h.Canvas.canvas.width),null==h.tcanvas&&(h.tcanvas=document.createElement("canvas"));var a=h.tcanvas.getContext("2d");return a.setTransform(1,0,0,1,0,0),a.canvas.width=n,a.canvas.height=o,a.rotate(-90*h.rotation*Math.PI/180),0==h.rotation&&a.drawImage(h.Canvas.canvas,0,0),1==h.rotation&&a.drawImage(h.Canvas.canvas,-h.Canvas.canvas.width,0),2==h.rotation&&a.drawImage(h.Canvas.canvas,-h.Canvas.canvas.width,-h.Canvas.canvas.height),3==h.rotation&&a.drawImage(h.Canvas.canvas,0,-h.Canvas.canvas.height),0!=h.rotation&&2!=h.rotation||(h.Canvas.canvas.height=n,h.Canvas.canvas.width=o),1!=h.rotation&&3!=h.rotation||(h.Canvas.canvas.height=o,h.Canvas.canvas.width=n),h.Canvas.setTransform(1,0,0,1,0,0),h.Canvas.rotate(90*t*Math.PI/180),h.rotation=t,h.Canvas.drawImage(h.tcanvas,h.rotX(0,0),h.rotY(0,0)),h.ScreenWidth=h.Canvas.canvas.width,h.ScreenHeight=h.Canvas.canvas.height,null!=h.onScreenSizeChange&&h.onScreenSizeChange(h,h.ScreenWidth,h.ScreenHeight,h.CanvasId),!0},h.StartRecording=function(){null==h.recordedData&&h.CanvasId.toBlob(function(e){var s=new FileReader;s.readAsArrayBuffer(e),s.onload=function(e){for(var t="",n=new Uint8Array(s.result),o=n.byteLength,a=0;a<o;a++)t+=String.fromCharCode(n[a]);h.recordedData=[],h.recordedStart=Date.now(),h.recordedSize=0,h.recordedData.push(S(1,0,JSON.stringify({magic:"MeshCentralRelaySession",ver:1,time:(new Date).toLocaleString(),protocol:2}))),h.recordedData.push(S(2,1,h.shortToStr(7)+h.shortToStr(8)+h.shortToStr(h.ScreenWidth)+h.shortToStr(h.ScreenHeight)));var r=8+t.length;65e3<r?h.recordedData.push(S(2,1,h.shortToStr(27)+h.shortToStr(8)+h.intToStr(r)+h.shortToStr(3)+h.shortToStr(0)+h.shortToStr(0)+h.shortToStr(0)+t)):h.recordedData.push(S(2,1,h.shortToStr(3)+h.shortToStr(r)+h.shortToStr(0)+h.shortToStr(0)+t))}})},h.StopRecording=function(){if(null!=h.recordedData){var e=h.recordedData;return e.push(S(3,0,"MeshCentralMCREC")),delete h.recordedData,delete h.recordedStart,delete h.recordedSize,e}},h.MuchTheSame=function(e,t){return Math.abs(e-t)<4},h.Debug=function(e){console.log(e)},h.getIEVersion=function(){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent;null!=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(t)&&(e=parseFloat(RegExp.$1))}return e},h.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},h}
\ No newline at end of file
views/default.handlebars
+25 -11
@@ -10671,16 +10671,18 @@
10671 var user = users[userid.toLowerCase()];
10672 if (user == null) return;
10673 var uself = (userinfo._id == user._id);
10674 - var x = '<div><div id=d2AdminPermissions>';
10674 + var x = '';
10675 x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_fileaccess>' + "Server Files" + '</label>, <input type=number onchange=showUserAdminDialogValidate() maxlength=10 id=ua_fileaccessquota>' + "k max, blank for default" + '<br><hr/>';
10676 x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_fulladmin>' + "Full Administrator" + '</label><br>';
10677 x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverbackup>' + "Server Backup" + '</label><br>';
10678 x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverrestore>' + "Server Restore" + '</label><br>';
10679 - x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverupdate>' + "Server Updates" + '</label><br>';
10680 - x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_manageusers>' + "Manage Users" + '</label><br>';
10681 - x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_manageusergroups>' + "Manage User Groups" + '</label><br>';
10682 - x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_managerecordings>' + "Manage Recordings" + '</label><br>';
10683 - x += '<hr/></div><label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_lockedaccount>' + "Lock Account" + '</label><br>';
10679 + x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverupdate>' + "Server Updates" + '</label><br></div>';
10680 + x += '<div id=d2MngUsr><label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_manageusers>' + "Manage Users" + '</label><br></div>';
10681 + x += '<div id=d2MngGrp><label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_manageusergroups>' + "Manage User Groups" + '</label><br></div>';
10682 + x += '<div id=d2MngRec><label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_managerecordings>' + "Manage Recordings" + '</label><br></div>';
10683 + if (x != '') { x += '<hr/>'; }
10684 + x = '<div><div id=d2AdminPermissions>' + x;
10685 + x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_lockedaccount>' + "Lock Account" + '</label><br>';
10686 x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_nonewgroups>' + "No New Device Groups" + '</label><br>';
10687 x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_nomeshcmd>' + "No Tools (MeshCmd/Router)" + '</label><br>';
10688 x += '</div>';
@@ -10688,26 +10690,38 @@
10690 if (user.siteadmin && user.siteadmin != 0) {
10691 Q('ua_fulladmin').checked = (user.siteadmin == 0xFFFFFFFF);
10692 Q('ua_serverbackup').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1) != 0)); // Server Backup
10691 - Q('ua_manageusers').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 2) != 0)); // Manage Users
10693 Q('ua_serverrestore').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 4) != 0)); // Server Restore
10694 Q('ua_fileaccess').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 8) != 0)); // Server Files
10695 Q('ua_serverupdate').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 16) != 0)); // Server Update
10696 Q('ua_lockedaccount').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 32) != 0)); // Account locked
10697 Q('ua_nonewgroups').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 64) != 0)); // No New Groups
10698 Q('ua_nomeshcmd').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 128) != 0)); // No Tools (MeshCMD / Router)
10699 + }
10700 + if ((userinfo.siteadmin & 2) != 0) {
10701 + Q('ua_manageusers').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 2) != 0)); // Manage Users
10702 + QE('ua_manageusers', !uself && (userinfo.siteadmin & 2));
10703 + }
10704 + if ((userinfo.siteadmin & 256) != 0) {
10705 Q('ua_manageusergroups').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 256) != 0)); // Manage User Groups
10706 + QE('ua_manageusergroups', !uself && (userinfo.siteadmin & 256));
10707 + }
10708 + if ((userinfo.siteadmin & 512) != 0) {
10709 Q('ua_managerecordings').checked = ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 512) != 0)); // Manage Recordings
10710 + QE('ua_managerecordings', !uself && (userinfo.siteadmin & 512));
10711 }
10712 +
10713 QE('ua_fulladmin', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10714 QE('ua_serverbackup', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10703 - QE('ua_manageusers', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10704 - QE('ua_manageusergroups', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10705 - QE('ua_managerecordings', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10715 QE('ua_serverrestore', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10716 QE('ua_fileaccess', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10717 QE('ua_fileaccessquota', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10718 QE('ua_serverupdate', !uself && (userinfo.siteadmin == 0xFFFFFFFF));
10719 QV('d2AdminPermissions', userinfo.siteadmin == 0xFFFFFFFF)
10720 +
10721 + QV('d2MngUsr', (userinfo.siteadmin & 2) != 0);
10722 + QV('d2MngGrp', (userinfo.siteadmin & 256) != 0);
10723 + QV('d2MngRec', (userinfo.siteadmin & 512) != 0);
10724 +
10725 QE('ua_lockedaccount', !uself && (userinfo.siteadmin & 2) && (user.siteadmin != 0xFFFFFFFF) && (userinfo._id != user._id));
10726 QE('ua_nonewgroups', !uself && (userinfo.siteadmin & 2) && (user.siteadmin != 0xFFFFFFFF) && (userinfo._id != user._id));
10727 QE('ua_nomeshcmd', !uself && (userinfo.siteadmin & 2) && (user.siteadmin != 0xFFFFFFFF) && (userinfo._id != user._id));
@@ -10726,7 +10740,7 @@
10740 QE('ua_lockedaccount', !Q('ua_fulladmin').checked);
10741 QE('ua_nonewgroups', !Q('ua_fulladmin').checked);
10742 QE('ua_nomeshcmd', !Q('ua_fulladmin').checked);
10729 - QE('ua_manageusergroups', !Q('ua_fulladmin').checked && Q('ua_manageusers').checked);
10743 + QE('ua_manageusergroups', !Q('ua_fulladmin').checked);
10744 QE('ua_fileaccessquota', Q('ua_fileaccess').checked && !Q('ua_fulladmin').checked);
10745 QE('ua_managerecordings', !Q('ua_fulladmin').checked);
10746 }