diff --git a/db.js b/db.js index 51d8c236..7cc97bd4 100644 --- a/db.js +++ b/db.js @@ -784,11 +784,11 @@ module.exports.CreateDB = function (parent, func) { // Check if we need to reset indexes var indexesByName = {}, indexCount = 0; for (var i in indexes) { indexesByName[indexes[i].name] = indexes[i]; indexCount++; } - if ((indexCount != 5) || (indexesByName['UsernameAction1'] == null) || (indexesByName['DomainNodeTime1'] == null) || (indexesByName['IdsAndTime1'] == null) || (indexesByName['ExpireTime1'] == null)) { + if ((indexCount != 5) || (indexesByName['UseridAction1'] == null) || (indexesByName['DomainNodeTime1'] == null) || (indexesByName['IdsAndTime1'] == null) || (indexesByName['ExpireTime1'] == null)) { // Reset all indexes console.log("Resetting events indexes..."); obj.eventsfile.dropIndexes(function (err) { - obj.eventsfile.createIndex({ username: 1, action: 1 }, { sparse: 1, name: 'UsernameAction1' }); + obj.eventsfile.createIndex({ userid: 1, action: 1 }, { sparse: 1, name: 'UseridAction1' }); obj.eventsfile.createIndex({ domain: 1, nodeid: 1, time: -1 }, { sparse: 1, name: 'DomainNodeTime1' }); obj.eventsfile.createIndex({ ids: 1, time: -1 }, { sparse: 1, name: 'IdsAndTime1' }); obj.eventsfile.createIndex({ time: 1 }, { expireAfterSeconds: expireEventsSeconds, name: 'ExpireTime1' }); @@ -889,11 +889,11 @@ module.exports.CreateDB = function (parent, func) { // Check if we need to reset indexes var indexesByName = {}, indexCount = 0; for (var i in indexes) { indexesByName[indexes[i].name] = indexes[i]; indexCount++; } - if ((indexCount != 5) || (indexesByName['UsernameAction1'] == null) || (indexesByName['DomainNodeTime1'] == null) || (indexesByName['IdsAndTime1'] == null) || (indexesByName['ExpireTime1'] == null)) { + if ((indexCount != 5) || (indexesByName['UseridAction1'] == null) || (indexesByName['DomainNodeTime1'] == null) || (indexesByName['IdsAndTime1'] == null) || (indexesByName['ExpireTime1'] == null)) { // Reset all indexes console.log("Resetting events indexes..."); obj.eventsfile.dropIndexes(function (err) { - obj.eventsfile.createIndex({ username: 1, action: 1 }, { sparse: 1, name: 'UsernameAction1' }); + obj.eventsfile.createIndex({ userid: 1, action: 1 }, { sparse: 1, name: 'UseridAction1' }); obj.eventsfile.createIndex({ domain: 1, nodeid: 1, time: -1 }, { sparse: 1, name: 'DomainNodeTime1' }); obj.eventsfile.createIndex({ ids: 1, time: -1 }, { sparse: 1, name: 'IdsAndTime1' }); obj.eventsfile.createIndex({ time: 1 }, { expireAfterSeconds: expireEventsSeconds, name: 'ExpireTime1' }); @@ -1209,16 +1209,14 @@ module.exports.CreateDB = function (parent, func) { sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE (domain = $1 AND (target = ANY ($2))) GROUP BY id ORDER BY time DESC LIMIT $3', [domain, ids, limit], func); } }; - obj.GetUserEvents = function (ids, domain, username, func) { - const userid = 'user/' + domain + '/' + username.toLowerCase(); + obj.GetUserEvents = function (ids, domain, userid, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE (domain = $1 AND userid = $2) ORDER BY time DESC', [domain, userid], func); } else { sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE (domain = $1 AND userid = $2 AND (target = ANY ($3))) GROUP BY id ORDER BY time DESC', [domain, userid, ids], func); } }; - obj.GetUserEventsWithLimit = function (ids, domain, username, limit, func) { - const userid = 'user/' + domain + '/' + username.toLowerCase(); + obj.GetUserEventsWithLimit = function (ids, domain, userid, limit, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE (domain = $1 AND userid = $2) ORDER BY time DESC LIMIT $3', [domain, userid, limit], func); } else { @@ -1232,13 +1230,13 @@ module.exports.CreateDB = function (parent, func) { sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE ((domain = $1) AND (target = ANY ($2)) AND (time BETWEEN $3 AND $4)) GROUP BY id ORDER BY time', [domain, ids, start, end], func); } }; - //obj.GetUserLoginEvents = function (domain, username, func) { } // TODO + //obj.GetUserLoginEvents = function (domain, userid, func) { } // TODO obj.GetNodeEventsWithLimit = function (nodeid, domain, limit, func) { sqlDbQuery('SELECT doc FROM events WHERE (nodeid = $1) AND (domain = $2) ORDER BY time DESC LIMIT $3', [nodeid, domain, limit], func); }; obj.GetNodeEventsSelfWithLimit = function (nodeid, domain, userid, limit, func) { sqlDbQuery('SELECT doc FROM events WHERE (nodeid = $1) AND (domain = $2) AND ((userid = $3) OR (userid IS NULL)) ORDER BY time DESC LIMIT $4', [nodeid, domain, userid, limit], func); }; obj.RemoveAllEvents = function (domain) { sqlDbQuery('DELETE FROM events', null, function (err, docs) { }); }; obj.RemoveAllNodeEvents = function (domain, nodeid) { if ((domain == null) || (nodeid == null)) return; sqlDbQuery('DELETE FROM events WHERE domain = $1 AND nodeid = $2', [domain, nodeid], function (err, docs) { }); }; obj.RemoveAllUserEvents = function (domain, userid) { if ((domain == null) || (userid == null)) return; sqlDbQuery('DELETE FROM events WHERE domain = $1 AND userid = $2', [domain, userid], function (err, docs) { }); }; - obj.GetFailedLoginCount = function (username, domainid, lastlogin, func) { sqlDbExec('SELECT COUNT(id) FROM events WHERE action = "authfail" AND domain = $1 AND userid = $2 AND time > $3', [domainid, 'user/' + domainid + '/' + username.toLowerCase(), lastlogin], function (err, response) { func(err == null ? response['COUNT(id)'] : 0); }); } + obj.GetFailedLoginCount = function (userid, domainid, lastlogin, func) { sqlDbExec('SELECT COUNT(id) FROM events WHERE action = "authfail" AND domain = $1 AND userid = $2 AND time > $3', [domainid, userid, lastlogin], function (err, response) { func(err == null ? response['COUNT(id)'] : 0); }); } // Database actions on the power collection obj.getAllPower = function (func) { sqlDbQuery('SELECT doc FROM power', null, func); }; @@ -1378,16 +1376,14 @@ module.exports.CreateDB = function (parent, func) { sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE (domain = ? AND target IN (?)) GROUP BY id ORDER BY time DESC LIMIT ?', [domain, ids, limit], func); } }; - obj.GetUserEvents = function (ids, domain, username, func) { - const userid = 'user/' + domain + '/' + username.toLowerCase(); + obj.GetUserEvents = function (ids, domain, userid, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE (domain = ? AND userid = ?) ORDER BY time DESC', [domain, userid], func); } else { sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE (domain = ? AND userid = ? AND target IN (?)) GROUP BY id ORDER BY time DESC', [domain, userid, ids], func); } }; - obj.GetUserEventsWithLimit = function (ids, domain, username, limit, func) { - const userid = 'user/' + domain + '/' + username.toLowerCase(); + obj.GetUserEventsWithLimit = function (ids, domain, userid, limit, func) { if (ids.indexOf('*') >= 0) { sqlDbQuery('SELECT doc FROM events WHERE (domain = ? AND userid = ?) ORDER BY time DESC LIMIT ?', [domain, userid, limit], func); } else { @@ -1401,13 +1397,13 @@ module.exports.CreateDB = function (parent, func) { sqlDbQuery('SELECT doc FROM events JOIN eventids ON id = fkid WHERE ((domain = ?) AND (target IN (?)) AND (time BETWEEN ? AND ?)) GROUP BY id ORDER BY time', [domain, ids, start, end], func); } }; - //obj.GetUserLoginEvents = function (domain, username, func) { } // TODO + //obj.GetUserLoginEvents = function (domain, userid, func) { } // TODO obj.GetNodeEventsWithLimit = function (nodeid, domain, limit, func) { sqlDbQuery('SELECT doc FROM events WHERE (nodeid = ?) AND (domain = ?) ORDER BY time DESC LIMIT ?', [nodeid, domain, limit], func); }; obj.GetNodeEventsSelfWithLimit = function (nodeid, domain, userid, limit, func) { sqlDbQuery('SELECT doc FROM events WHERE (nodeid = ?) AND (domain = ?) AND ((userid = ?) OR (userid IS NULL)) ORDER BY time DESC LIMIT ?', [nodeid, domain, userid, limit], func); }; obj.RemoveAllEvents = function (domain) { sqlDbQuery('DELETE FROM events', null, function (err, docs) { }); }; obj.RemoveAllNodeEvents = function (domain, nodeid) { if ((domain == null) || (nodeid == null)) return; sqlDbQuery('DELETE FROM events WHERE domain = ? AND nodeid = ?', [domain, nodeid], function (err, docs) { }); }; obj.RemoveAllUserEvents = function (domain, userid) { if ((domain == null) || (userid == null)) return; sqlDbQuery('DELETE FROM events WHERE domain = ? AND userid = ?', [domain, userid], function (err, docs) { }); }; - obj.GetFailedLoginCount = function (username, domainid, lastlogin, func) { sqlDbExec('SELECT COUNT(id) FROM events WHERE action = "authfail" AND domain = ? AND userid = ? AND time > ?', [domainid, 'user/' + domainid + '/' + username.toLowerCase(), lastlogin], function (err, response) { func(err == null ? response['COUNT(id)'] : 0); }); } + obj.GetFailedLoginCount = function (userid, domainid, lastlogin, func) { sqlDbExec('SELECT COUNT(id) FROM events WHERE action = "authfail" AND domain = ? AND userid = ? AND time > ?', [domainid, userid, lastlogin], function (err, response) { func(err == null ? response['COUNT(id)'] : 0); }); } // Database actions on the power collection obj.getAllPower = function (func) { sqlDbQuery('SELECT doc FROM power', null, func); }; @@ -1635,20 +1631,20 @@ module.exports.CreateDB = function (parent, func) { obj.GetEvents = function (ids, domain, func) { obj.eventsfile.find({ domain: domain, ids: { $in: ids } }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).toArray(func); }; obj.GetEventsWithLimit = function (ids, domain, limit, func) { obj.eventsfile.find({ domain: domain, ids: { $in: ids } }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit).toArray(func); }; - obj.GetUserEvents = function (ids, domain, username, func) { obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).toArray(func); }; - obj.GetUserEventsWithLimit = function (ids, domain, username, limit, func) { obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit).toArray(func); }; + obj.GetUserEvents = function (ids, domain, userid, func) { obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { userid: userid }] }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).toArray(func); }; + obj.GetUserEventsWithLimit = function (ids, domain, userid, limit, func) { obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { userid: userid }] }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit).toArray(func); }; obj.GetEventsTimeRange = function (ids, domain, msgids, start, end, func) { obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }], msgid: { $in: msgids }, time: { $gte: start, $lte: end } }).project({ type: 0, _id: 0, domain: 0, node: 0 }).sort({ time: 1 }).toArray(func); }; - obj.GetUserLoginEvents = function (domain, username, func) { obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, username: username, msgArgs: { $exists: true } }).project({ action: 1, time: 1, msgid: 1, msgArgs: 1, tokenName: 1 }).sort({ time: -1 }).toArray(func); }; + obj.GetUserLoginEvents = function (domain, userid, func) { obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, userid: userid, msgArgs: { $exists: true } }).project({ action: 1, time: 1, msgid: 1, msgArgs: 1, tokenName: 1 }).sort({ time: -1 }).toArray(func); }; obj.GetNodeEventsWithLimit = function (nodeid, domain, limit, func) { obj.eventsfile.find({ domain: domain, nodeid: nodeid }).project({ type: 0, etype: 0, _id: 0, domain: 0, ids: 0, node: 0, nodeid: 0 }).sort({ time: -1 }).limit(limit).toArray(func); }; obj.GetNodeEventsSelfWithLimit = function (nodeid, domain, userid, limit, func) { obj.eventsfile.find({ domain: domain, nodeid: nodeid, userid: { $in: [userid, null] } }).project({ type: 0, etype: 0, _id: 0, domain: 0, ids: 0, node: 0, nodeid: 0 }).sort({ time: -1 }).limit(limit).toArray(func); }; obj.RemoveAllEvents = function (domain) { obj.eventsfile.deleteMany({ domain: domain }, { multi: true }); }; obj.RemoveAllNodeEvents = function (domain, nodeid) { if ((domain == null) || (nodeid == null)) return; obj.eventsfile.deleteMany({ domain: domain, nodeid: nodeid }, { multi: true }); }; obj.RemoveAllUserEvents = function (domain, userid) { if ((domain == null) || (userid == null)) return; obj.eventsfile.deleteMany({ domain: domain, userid: userid }, { multi: true }); }; - obj.GetFailedLoginCount = function (username, domainid, lastlogin, func) { + obj.GetFailedLoginCount = function (userid, domainid, lastlogin, func) { if (obj.eventsfile.countDocuments) { - obj.eventsfile.countDocuments({ action: 'authfail', username: username, domain: domainid, time: { "$gte": lastlogin } }, function (err, count) { func((err == null) ? count : 0); }); + obj.eventsfile.countDocuments({ action: 'authfail', userid: userid, domain: domainid, time: { "$gte": lastlogin } }, function (err, count) { func((err == null) ? count : 0); }); } else { - obj.eventsfile.count({ action: 'authfail', username: username, domain: domainid, time: { "$gte": lastlogin } }, function (err, count) { func((err == null) ? count : 0); }); + obj.eventsfile.count({ action: 'authfail', userid: userid, domain: domainid, time: { "$gte": lastlogin } }, function (err, count) { func((err == null) ? count : 0); }); } } @@ -1810,18 +1806,18 @@ module.exports.CreateDB = function (parent, func) { obj.StoreEvent = function (event, func) { obj.eventsfile.insert(event, func); }; obj.GetEvents = function (ids, domain, func) { if (obj.databaseType == 1) { obj.eventsfile.find({ domain: domain, ids: { $in: ids } }, { _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).exec(func); } else { obj.eventsfile.find({ domain: domain, ids: { $in: ids } }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }, func); } }; obj.GetEventsWithLimit = function (ids, domain, limit, func) { if (obj.databaseType == 1) { obj.eventsfile.find({ domain: domain, ids: { $in: ids } }, { _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit).exec(func); } else { obj.eventsfile.find({ domain: domain, ids: { $in: ids } }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit, func); } }; - obj.GetUserEvents = function (ids, domain, username, func) { + obj.GetUserEvents = function (ids, domain, userid, func) { if (obj.databaseType == 1) { - obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).exec(func); + obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { userid: userid }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).exec(func); } else { - obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }, func); + obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { userid: userid }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }, func); } }; - obj.GetUserEventsWithLimit = function (ids, domain, username, limit, func) { + obj.GetUserEventsWithLimit = function (ids, domain, userid, limit, func) { if (obj.databaseType == 1) { - obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit).exec(func); + obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { userid: userid }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit).exec(func); } else { - obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit, func); + obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { userid: userid }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit, func); } }; obj.GetEventsTimeRange = function (ids, domain, msgids, start, end, func) { @@ -1831,11 +1827,11 @@ module.exports.CreateDB = function (parent, func) { obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }], msgid: { $in: msgids }, time: { $gte: start, $lte: end } }, { type: 0, _id: 0, domain: 0, node: 0 }).sort({ time: 1 }, func); } }; - obj.GetUserLoginEvents = function (domain, username, func) { + obj.GetUserLoginEvents = function (domain, userid, func) { if (obj.databaseType == 1) { - obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, username: username, msgArgs: { $exists: true } }, { action: 1, time: 1, msgid: 1, msgArgs: 1, tokenName: 1 }).sort({ time: -1 }).exec(func); + obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, userid: userid, msgArgs: { $exists: true } }, { action: 1, time: 1, msgid: 1, msgArgs: 1, tokenName: 1 }).sort({ time: -1 }).exec(func); } else { - obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, username: username, msgArgs: { $exists: true } }, { action: 1, time: 1, msgid: 1, msgArgs: 1, tokenName: 1 }).sort({ time: -1 }, func); + obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, userid: userid, msgArgs: { $exists: true } }, { action: 1, time: 1, msgid: 1, msgArgs: 1, tokenName: 1 }).sort({ time: -1 }, func); } }; obj.GetNodeEventsWithLimit = function (nodeid, domain, limit, func) { if (obj.databaseType == 1) { obj.eventsfile.find({ domain: domain, nodeid: nodeid }, { type: 0, etype: 0, _id: 0, domain: 0, ids: 0, node: 0, nodeid: 0 }).sort({ time: -1 }).limit(limit).exec(func); } else { obj.eventsfile.find({ domain: domain, nodeid: nodeid }, { type: 0, etype: 0, _id: 0, domain: 0, ids: 0, node: 0, nodeid: 0 }).sort({ time: -1 }).limit(limit, func); } }; @@ -1843,7 +1839,7 @@ module.exports.CreateDB = function (parent, func) { obj.RemoveAllEvents = function (domain) { obj.eventsfile.remove({ domain: domain }, { multi: true }); }; obj.RemoveAllNodeEvents = function (domain, nodeid) { if ((domain == null) || (nodeid == null)) return; obj.eventsfile.remove({ domain: domain, nodeid: nodeid }, { multi: true }); }; obj.RemoveAllUserEvents = function (domain, userid) { if ((domain == null) || (userid == null)) return; obj.eventsfile.remove({ domain: domain, userid: userid }, { multi: true }); }; - obj.GetFailedLoginCount = function (username, domainid, lastlogin, func) { obj.eventsfile.count({ action: 'authfail', username: username, domain: domainid, time: { "$gte": lastlogin } }, function (err, count) { func((err == null) ? count : 0); }); } + obj.GetFailedLoginCount = function (userid, domainid, lastlogin, func) { obj.eventsfile.count({ action: 'authfail', userid: userid, domain: domainid, time: { "$gte": lastlogin } }, function (err, count) { func((err == null) ? count : 0); }); } // Database actions on the power collection obj.getAllPower = function (func) { obj.powerfile.find({}, func); }; @@ -2612,7 +2608,7 @@ module.exports.CreateDB = function (parent, func) { // Send the user update var targets = ['*', 'server-users', user._id]; if (user.groups) { for (var i in user.groups) { targets.push('server-users:' + i); } } - parent.DispatchEvent(targets, obj, { etype: 'user', username: user.name, account: parent.webserver.CloneSafeUser(user), action: (added ? 'accountcreate' : 'accountchange'), domain: user.domain, nolog: 1 }); + parent.DispatchEvent(targets, obj, { etype: 'user', userid: user._id, username: user.name, account: parent.webserver.CloneSafeUser(user), action: (added ? 'accountcreate' : 'accountchange'), domain: user.domain, nolog: 1 }); } // Called when a user group has changed diff --git a/emails/translations/account-check-min_cs.html b/emails/translations/account-check-min_cs.html deleted file mode 100644 index 69d4360d..00000000 --- a/emails/translations/account-check-min_cs.html +++ /dev/null @@ -1 +0,0 @@ -
[[[SERVERNAME]]] - Ověření |
Ahoj [[[USERNAME]]], [[[SERVERNAME]]] požaduje ověření e-mailem a dokončete proces kliknutím na následující odkaz.
Pokud jste tento požadavek nezačali, ignorujte tento e-mail.[[[SERVERNAME]]] - Verificering |
Hej [[[USERNAME]], [[[SERVER NAMN]]] anmoder om e-mailbekræftelse, klik på følgende link for at fuldføre processen.
Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.[[[SERVERNAME]]] - Überprüfung |
Hallo [[[USERNAME]]], [[[SERVERNAME]]] Wenn Sie eine E-Mail-Bestätigung anfordern, klicken Sie auf den folgenden Link, um den Vorgang abzuschließen.
Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.[[[SERVERNAME]]] - Verificación |
Hola [[[USERNAME]]], [[[SERVERNAME]]] esta solicitando la verificación por correo electrónico, haz clic en el siguiente enlace para completar el proceso.
Haz clic aquí para verificar tu dirección de correo electrónico.
Si tu no iniciaste este requerimiento, por favor ignora este correo.[[[SERVERNAME]]] - Todentaminen |
Moi [[[USERNAME]]], [[[SERVERNAME]]] pyytää sähköpostitse vahvistusta, suorita prosessi napsauttamalla seuraavaa linkkiä.
Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.[[[SERVERNAME]]] - Vérification |
Bonjour [[[USERNAME]]], [[[SERVERNAME]]] demande une vérification par e-mail, cliquez sur le lien suivant pour terminer le processus.
Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.[[[SERVERNAME]]] - सत्यापन |
हाय [[[USERNAME]]], [[[SERVERNAME]]] ईमेल सत्यापन का अनुरोध कर रहा है, प्रक्रिया को पूरा करने के लिए निम्न लिंक पर क्लिक करें।
यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।[[[SERVERNAME]]] - Verifica |
Salve [[[USERNAME]]], [[[SERVERNAME]]] sta richiedendo la verifica tramite posta elettronica, fare clic sul collegamento seguente per completare il processo.
Se non hai avviato questa richiesta, ignora questo messaggio.[[[SERVERNAME]]] - 確認 |
[[[USERNAME]]]様 [[[SERVERNAME]]] がメールの確認をリクエストしている場合は、次のリンクをクリックしてプロセスを完了してください。
このリクエストを開始していない場合は、このメールを無視してください。[[[SERVERNAME]]] - 인증 |
안녕하세요, [[[USERNAME]]]님. [[[SERVERNAME]]] 이메일 검증을 요구하는 경우, 다음 링크를 클릭하여 과정을 완료하십시오.
이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.[[[SERVERNAME]]] - Verificatie |
Hallo [[[USERNAME]]], [[[SERVERNAME]]] vraagt om e-mailverificatie, klik op de volgende link om het proces te voltooien.
Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.[[[SERVERNAME]]] - Weryfikacja |
Cześć [[[USERNAME]]], [[[SERVERNAME]]] prosi o weryfikację adresu email, kliknij na poniższy link, aby zakończyć proces.
Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.[[[SERVERNAME]]] - Verificação |
Olá [[[NOME DE USUÁRIO]]], [[[NOME DO SERVIDOR]]] está solicitando verificação de e-mail, clique no link a seguir para concluir o processo.
Se você não iniciou esta solicitação, ignore este e-mail.[[[SERVERNAME]]] - Verificação |
Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando verificação de e-mail, clique no link a seguir para concluir o processo.
Se você não iniciou esta solicitação, ignore este e-mail.[[[SERVERNAME]]] - Подтверждение |
Привет [[[USERNAME]]], [[[SERVERNAME]]] запрашивает подтверждение по электронной почте, нажмите на следующую ссылку, чтобы завершить процесс.
Нажмите здесь, чтобы подтвердить свой адрес электронной почты.
Если вы не инициировали этот запрос, игнорируйте это письмо.[[[SERVERNAME]]] - Verifiering |
Hej [[[USERNAME]], [[[SERVER NAMN]]] begär e-postverifiering, klicka på följande länk för att slutföra processen.
Om du inte initierade denna begäran, ignorerar du det här meddelandet.[[[SERVERNAME]]] - Doğrulama |
Merhaba [[[USERNAME]]], [[[SERVERNAME]]] e-posta doğrulaması istiyorsa, işlemi tamamlamak için aşağıdaki bağlantıya tıklayın.
Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.[[[SERVERNAME]]]-验证 |
[[[USERNAME]],你好, [[[SERVERNAME]]] 正在请求电邮验证,请单击以下连结以完成该过程。
如果您没有发起此请求,请不理此邮件。[[[SERVERNAME]]]-驗證 |
[[[USERNAME]],你好, [[[SERVERNAME]] 正在請求電郵驗證,請單擊以下鏈結以完成該過程。
如果你沒有發起此請求,請不理此電郵。[[[SERVERNAME]]] - Pozvánka na účet |
Účet byl pro vás vytvořen na serveru [[[SERVERNAME]]], nyní k němu máte přístup:
Uživatelské jméno: [[[ACCOUNTNAME]]]
Heslo: [[[PASSWORD]]]
[[[SERVERNAME]]] - Konto invitation |
En konto blev oprettet til dig på serveren [[[SERVERNAME]]]du kan tilgå den nu med:
Brugernavn: [[[ACCOUNTNAME]]]
Adgangskode: [[[PASSWORD]]]
[[[SERVERNAME]]] - Kontoeinladung |
Auf dem Server wurde ein Konto für Sie erstellt [[[SERVERNAME]]], Sie können jetzt darauf zugreifen mit:
Benutzername: [[[ACCOUNTNAME]]]
Passwort: [[[PASSWORD]]]
[[[SERVERNAME]]] - Invitación de Cuenta |
Una cuenta ha sido creada en tu servidor [[[SERVERNAME]]], ahora puede acceder con:
Nombre de Usuario: [[[ACCOUNTNAME]]]
Contraseña: [[[PASSWORD]]]
[[[SERVERNAME]]] - Tili kutsu |
Sinulle on luotu tili palvelimelle [[[SERVERNAME]]], voit käyttää sitä nyt:
Käyttäjätunnus: [[[ACCOUNTNAME]]]
Salasana: [[[PASSWORD]]]
[[[SERVERNAME]]] - Invitation au compte |
Un compte a été créé pour vous sur le serveur [[[SERVERNAME]]], vous pouvez y accéder maintenant avec :
Nom d'utilisateur: [[[ACCOUNTNAME]]]
Mot de passe: [[[PASSWORD]]]
[[[SERVERNAME]]] - खाता निमंत्रण |
सर्वर पर आपके लिए एक खाता बनाया गया था [[[SERVERNAME]]], आप इसे अभी एक्सेस कर सकते हैं:
उपयोगकर्ता नाम: [[[ACCOUNTNAME]]]
कुंजिका: [[[PASSWORD]]]
[[[SERVERNAME]]] - Invito per l'account |
È stato creato un account per te sul server [[[SERVERNAME]]], puoi accedervi ora con
Nome utente: [[[ACCOUNTNAME]]]
Password: [[[PASSWORD]]]
[[[SERVERNAME]]] - アカウントの招待 |
サーバー上にアカウントが作成されました [[[SERVERNAME]]]、あなたは今それを使ってそれにアクセスできます:
ユーザー名: [[[ACCOUNTNAME]]]
パスワード: [[[PASSWORD]]]
[[[SERVERNAME]]] - 계정 초대 |
당신을 위해 서버에서 한 계정이 생성되었습니다. [[[SERVERNAME]]]이제 당신은 다음으로 접근 가능합니다:
사용자 이름: [[[ACCOUNTNAME]]]
암호: [[[PASSWORD]]]
[[[SERVERNAME]]] - Account uitnodiging |
Er is een account voor je aangemaakt op de server [[[SERVERNAME]]], je hebt er nu toegang toe met:
Gebruikersnaam: [[[ACCOUNTNAME]]]
Wachtwoord: [[[PASSWORD]]]
[[[SERVERNAME]]] - Zaproszenie Do Założenia Konta |
Konto zostało utworzone dla Ciebie na serwerze [[[SERVERNAME]]], możesz uzyskać dostęp przez:
Nazwa użytkownika: [[[ACCOUNTNAME]]]
Hasło: [[[PASSWORD]]]
[[[SERVERNAME]]] - Convite para conta |
Uma conta foi criada para você no servidor [[[SERVERNAME]]], você pode acessá-lo agora com:
Nome do usuário: [[[ACCOUNTNAME]]]
Senha: [[[PASSWORD]]]
[[[SERVERNAME]]] - Convite para conta |
Uma conta foi criada para você no servidor [[[SERVERNAME]]], você pode acessá-lo agora com:
Nome de usuário: [[[ACCOUNTNAME]]]
Senha: [[[PASSWORD]]]
[[[SERVERNAME]]] - приглашение в аккаунт |
Учетная запись была создана для вас на сервере [[[SERVERNAME]]]Вы можете получить к нему доступ сейчас:
Имя пользователя: [[[ACCOUNTNAME]]]
Пароль: [[[PASSWORD]]]
[[[SERVERNAME]]] - Kontoinbjudan |
Ett konto skapades åt dig på servern [[[SERVERNAME]]]kan du komma åt det nu med:
Användarnamn: [[[ACCOUNTNAME]]]
Lösenord: [[[PASSWORD]]]
[[[SERVERNAME]]] - Hesap Davetiyesi |
Sunucuda sizin için bir hesap oluşturuldu [[[SERVERNAME]]], şimdi şununla erişebilirsiniz:
Kullanıcı adı: [[[ACCOUNTNAME]]]
Parola: [[[PASSWORD]]]
[[[SERVERNAME]]]-帐户邀请 |
在服务器上为您创建了一个帐户 [[[SERVERNAME]]],您现在可以通过以下方式访问它:
用户名: [[[ACCOUNTNAME]]]
密码: [[[PASSWORD]]]
[[[SERVERNAME]]]-帳戶邀請 |
在伺服器上為你創建了一個帳戶 [[[SERVERNAME]]],你現在可以通過以下方式訪問它:
用戶名: [[[ACCOUNTNAME]]]
密碼: [[[PASSWORD]]]
[[[SERVERNAME]]] - Přihlášení k účtu |
Váš přihlašovací token je: [[[TOKEN]]]
Tento token lze použít pouze jednou a je platný po dobu 5 minut.
[[[SERVERNAME]]] - Konto login |
Dit login-token er: [[[TOKEN]]]
Denne token kan kun bruges én gang og er gyldig i 5 minutter.
[[[SERVERNAME]]] - Konto-Login |
Ihr Login-Token lautet: [[[TOKEN]]]
Dieser Token kann nur einmal verwendet werden und ist 5 Minuten gültig.
[[[SERVERNAME]]] - Inicio de Sesión |
Tu token de inicio de sesión es: [[[TOKEN]]]
Este token sólo se puede usar una vez y es válido durante 5 minutos.
[[[SERVERNAME]]] - Tilille Kirjautuminen |
Kirjautumistunnuksesi on: [[[TOKEN]]]
Tätä tunnusta voidaan käyttää vain kerran ja se on voimassa 5 minuuttia.
[[[SERVERNAME]]] - Connexion au compte |
Votre jeton de connexion est: [[[TOKEN]]]
Ce jeton ne peut être utilisé qu'une seule fois et est valide pendant 5 minutes.
[[[SERVERNAME]]] - खाता लॉगिन |
आपका लॉगिन टोकन है: [[[TOKEN]]]
यह टोकन केवल एक बार उपयोग किया जा सकता है और 5 मिनट के लिए वैध है।
[[[SERVERNAME]]] - Accesso all'account |
Il tuo token di accesso è: [[[TOKEN]]]
Questo token può essere utilizzato solo una volta ed è valido per 5 minuti.
[[[SERVERNAME]]] - アカウントログイン |
ログイントークンは次のとおりです:[[[TOKEN]]]
このトークンは1回だけ使用でき、5分間有効です。
[[[SERVERNAME]]] - 계정 로그인 |
당신이 로그인한 토큰은 다음과 같습니다 : [[[TOKEN]]]
이 토큰은 오직 한 번만 사용될 수 있으며, 5분 동안만 유효합니다.
[[[SERVERNAME]]] - Inloggen account |
Uw login token is: [[[TOKEN]]]
Dit token kan maar één keer worden gebruikt en is 5 minuten geldig.
[[[SERVERNAME]]] - Logowanie Do Konta |
Twój token logowania to: [[[TOKEN]]]
Ten token może być użyty tylko raz i jest ważny przez 5 minut.
[[[SERVERNAME]]] - Login da conta |
Seu token de login é: [[[TOKEN]]]
Este token só pode ser usado uma vez e é válido por 5 minutos.
[[[SERVERNAME]]] - Login da conta |
Seu token de login é: [[[TOKEN]]]
Este token só pode ser usado uma vez e é válido por 5 minutos.
[[[SERVERNAME]]] - Вход в аккаунт |
Ваш токен для входа: [[[TOKEN]]]
Этот токен может быть использован только один раз и действителен в течение 5 минут.
[[[SERVERNAME]]] - Kontoinloggning |
Din inloggningstoken är: [[[TOKEN]]]
Denna token kan bara användas en gång och är giltig i 5 minuter.
[[[SERVERNAME]]] - Hesap Girişi |
Giriş jetonunuz: [[[TOKEN]]]
Bu simge yalnızca bir kez kullanılabilir ve 5 dakika geçerlidir.
[[[SERVERNAME]]]-帐户登录 |
您的登录保安编码为:[[[TOKEN]]]
此保安编码只能使用一次,有效期为5分钟。
[[[SERVERNAME]]]-帳戶登入 |
你的登入保安編碼為:[[[TOKEN]]]
該保安編碼只能使用一次,有效期為5分鐘。
[[[SERVERNAME]]] - Ověření |
Ahoj [[[USERNAME]]], [[[SERVERNAME]]] požaduje obnovení hesla k účtu, dokončete proces kliknutím na následující odkaz.
Pokud jste tento požadavek nezačali, ignorujte tento e-mail.[[[SERVERNAME]]] - Verificering |
Hej [[[USERNAME]], [[[SERVER NAMN]]] anmoder om en nulstilling af kontoadgangskode, klik på følgende link for at fuldføre processen.
Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.[[[SERVERNAME]]] - Überprüfung |
Hallo [[[USERNAME]]], [[[SERVERNAME]]] Wenn Sie ein Zurücksetzen des Kontokennworts anfordern, klicken Sie auf den folgenden Link, um den Vorgang abzuschließen.
Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.[[[SERVERNAME]]] - Verificación |
Hola [[[USERNAME]]], [[[SERVERNAME]]] está solicitando restablecer la contraseña de la cuenta, haz clic en el siguiente enlace para completar el proceso.
Si tu no iniciaste este requerimiento, por favor ignora este correo.[[[SERVERNAME]]] - Todentaminen |
Moi [[[USERNAME]]], [[[SERVERNAME]]] pyytää tilin salasanan palauttamista, suorita prosessi napsauttamalla seuraavaa linkkiä.
Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.[[[SERVERNAME]]] - Vérification |
Bonjour [[[USERNAME]]], [[[SERVERNAME]]] demande une réinitialisation du mot de passe du compte, cliquez sur le lien suivant pour terminer le processus.
Cliquez ici pour réinitialiser le mot de passe de votre compte.
Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.[[[SERVERNAME]]] - सत्यापन |
हाय [[[USERNAME]]], [[[SERVERNAME]]] खाता पासवर्ड रीसेट का अनुरोध कर रहा है, प्रक्रिया पूरी करने के लिए निम्न लिंक पर क्लिक करें।
यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।[[[SERVERNAME]]] - Verifica |
Salve [[[USERNAME]]], [[[SERVERNAME]]] sta richiedendo la reimpostazione della password dell'account, fare clic sul seguente collegamento per completare il processo.
Se non hai avviato questa richiesta, ignora questo messaggio.[[[SERVERNAME]]] - 確認 |
[[[USERNAME]]]様 [[[SERVERNAME]]] がアカウントパスワードのリセットを要求している場合は、次のリンクをクリックしてプロセスを完了します。
このリクエストを開始していない場合は、このメールを無視してください。[[[SERVERNAME]]] - 인증 |
안녕하세요, [[[USERNAME]]]님. [[[SERVERNAME]]] 계정 비밀번호 재설정을 요청하는 경우, 다음 링크를 클릭하여 과정을 완료하십시오.
이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.[[[SERVERNAME]]] - Verificatie |
Hallo [[[USERNAME]]], [[[SERVERNAME]]] vraagt om het opnieuw instellen van het wachtwoord van een account, klik op de volgende link om het proces te voltooien.
Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.[[[SERVERNAME]]] - Weryfikacja |
Cześć [[[USERNAME]]], [[[SERVERNAME]]] prosi o zresetowanie hasła do konta, kliknij na poniższy link aby zakończyć proces.
Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.[[[SERVERNAME]]] - Verificação |
Olá [[[NOME DE USUÁRIO]]], [[[NOME DO SERVIDOR]]] está solicitando a redefinição da senha da conta, clique no link a seguir para concluir o processo.
Se você não iniciou esta solicitação, ignore este e-mail.[[[SERVERNAME]]] - Verificação |
Olá [[[NOME DE USUÁRIO]]], [[[SERVERNAME]]] está solicitando a redefinição da senha da conta, clique no link a seguir para concluir o processo.
Se você não iniciou esta solicitação, ignore este e-mail.[[[SERVERNAME]]] - Подтверждение |
Привет [[[USERNAME]]], [[[SERVERNAME]]] запрашивает сброс пароля учетной записи, нажмите на следующую ссылку, чтобы завершить процесс.
Если вы не инициировали этот запрос, игнорируйте это письмо.[[[SERVERNAME]]] - Verifiering |
Hej [[[USERNAME]], [[[SERVER NAMN]]] begär återställning av kontolösenord, klicka på följande länk för att slutföra processen.
Om du inte initierade denna begäran, ignorerar du det här meddelandet.[[[SERVERNAME]]] - Doğrulama |
Merhaba [[[USERNAME]]], [[[SERVERNAME]]] bir hesap şifresi sıfırlama talep ediyor, işlemi tamamlamak için aşağıdaki bağlantıya tıklayın.
Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.[[[SERVERNAME]]]-验证 |
[[[USERNAME]],你好, [[[SERVERNAME]]] 正在要求重置帐户密码,请单击以下连结以完成该过程。
如果您没有发起此请求,请不理此邮件。[[[SERVERNAME]]]-驗證 |
[[[USERNAME]],你好, [[[SERVERNAME]] 正在要求重置帳戶密碼,請單擊以下鏈結以完成該過程。
如果你沒有發起此請求,請不理此電郵。[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, klikněte zde within 1 hour of getting this message.
[[[SERVERNAME]]] - Enheds Notifikation |
Følgende enheder har ændret deres forbindelsestilstand.
Forbundne enheder:
[[[CONNECTIONS]]]
Afbrudte enheder:
[[[DISCONNECTIONS]]]
For at afmelde, Klik her inden for 1 time efter at have modtaget denne besked.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, hier klicken within 1 hour of getting this message.
[[[SERVERNAME]]] - Notificación del dispositivo |
Los siguientes dispositivos han cambiado su estado de conexión.
Dispositivos conectados:
[[[CONNECTIONS]]]
Dispositivos desconectados:
[[[DISCONNECTIONS]]]
Para darse de baja, haz clic aquí en 1 hora desde la recepción de este mensaje.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, klikkaa tästä within 1 hour of getting this message.
[[[SERVERNAME]]] - Notification de l'appareil |
Ces appareils ont changé leur statut de connexion :
Appareils connectés :
[[[CONNECTIONS]]]
Appareils déconnectés :
[[[DISCONNECTIONS]]]
Pour se désinscrire, cliquez ici dans l'heure suivant la réception de ce message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, यहाँ क्लिक करें within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, clicca qui within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, ここをクリック within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, 여기를 클릭하십시오. within 1 hour of getting this message.
[[[SERVERNAME]]] - Apparaatmelding |
De volgende apparaten hebben hun verbindingsstatus gewijzigd.
Verbonden apparaten:
[[[CONNECTIONS]]]
Losgekoppelde apparaten:
[[[DISCONNECTIONS]]]
Uitschrijven, Klik hier binnen 1 uur na ontvangst van dit bericht.
[[[SERVERNAME]]] - Powiadomienia Urządzenia |
Przedstawione urządzenia zmieniły stan połączenia.
Podłączone urządzenia:
[[[CONNECTIONS]]]
Rozłączone urządzenia:
[[[DISCONNECTIONS]]]
By się wypisać. kliknij tutaj w ciągu 1 godziny od otrzymania wiadomości.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, Clique aqui within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, Clique aqui within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, кликните сюда within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, Klicka här within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, buraya Tıkla within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, 点击这里 within 1 hour of getting this message.
[[[SERVERNAME]]] - Device Notification |
The following devices have changed their connection state.
Connected devices:
[[[CONNECTIONS]]]
Disconnected devices:
[[[DISCONNECTIONS]]]
To unsubscribe, 點擊這裡 within 1 hour of getting this message.
+ [[[SERVERNAME]]] - Device Notification + | +
+ The following devices have changed their connection state. +
++ Connected devices: +
++[[[CONNECTIONS]]] +
++ Disconnected devices: +
++[[[DISCONNECTIONS]]] +
++ To unsubscribe, click here within 1 hour of getting this message. +
+[[[SERVERNAME]]] - Instalace agenta |
Dobrý den, [[[NAME]]],
Uživatel [[[USERNAME]]] na serveru [[[SERVERNAME]]] vás žádá o instalaci softwaru pro spuštění relace dálkového ovládání.
Zpráva: [[[MSG]]]
V případě systému Linux vyjměte a vložte do terminálu a nainstalujte agenta:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Chcete-li nainstalovat software, klikněte zde a postupujte podle pokynů.
Pokud jste tento požadavek nezačali, ignorujte tento e-mail.
S pozdravem,[[[SERVERNAME]]] - Agent installation |
Hej [[[NAME]]]
Bruger [[[USERNAME]]] på serveren [[[SERVER NAMN]]] anmoder dig om at installere software for at starte en fjernbetjeningssession.
Meddelelse: [[[MSG]]]
For Linux skal du klippe og indsætte følgende i en terminal for at installere agenten:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
For at installere softwaren, Klik her og følg instruktionerne.
Hvis du ikke startede denne anmodning, bedes du ignorere denne mail.
Venlig hilsen,[[[SERVERNAME]]] - Agenteninstallation |
Hallo [[[NAME]]],
Benutzer [[[USERNAME]]] auf dem Server [[[SERVERNAME]]] fordert Sie auf, Software zu installieren, um eine Fernsteuerungssitzung zu starten.
Botschaft: [[[MSG]]]
Klicken Sie hier, um den MeshAgent für Windows herunterzuladen.
Klicken Sie hier, um den MeshAgent für Apple OSX herunterzuladen.
Schneiden Sie unter Linux Folgendes aus und fügen Sie es in ein Terminal ein, um den Agenten zu installieren:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Um die Software zu installieren, hier klicken und folgen Sie den Anweisungen.
Wenn Sie diese Anfrage nicht initiiert haben, ignorieren Sie diese Mail bitte.
Freundliche Grüße,[[[SERVERNAME]]] - Instalación de Agente |
Hola [[[NAME]]],
Usuario [[[USERNAME]]] en servidor [[[SERVERNAME]]] te solicita que instales el software para iniciar una sesión de control remoto.
Mensaje: [[[MSG]]]
Para Linux, copia y pega lo siguiente en la terminal para instalar el agente:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Para instalar el software, haz clic aquí y sigue las instrucciones.
Si tu no iniciaste este requerimiento, por favor ignora este correo.
Atentamente,[[[SERVERNAME]]] - Agentin asennus |
Hei [[[NAME]]],
Käyttäjä [[[USERNAME]]] palvelimella [[[SERVERNAME]]] pyytää sinua asentamaan ohjelmiston etäohjausistunnon aloittamiseksi.
Viesti: [[[MSG]]]
Linux: leikkaa ja liitä seuraava päätelaitteeseen agentin asentamiseksi:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Asentaaksesi ohjelman, klikkaa tästä ja seuraa ohjeita.
Jos et suorittanut tätä pyyntöä, voit ohitaa tämän sähköpostin.
Ystävällisin terveisin,[[[SERVERNAME]]] - Installation de l'agent |
Bonjour [[[NAME]]],
Utilisateur [[[USERNAME]]] sur le serveur [[[SERVERNAME]]] vous demande d'installer un logiciel pour démarrer une session de contrôle à distance.
Message: [[[MSG]]]
Pour Linux, copiez et collez les éléments suivants dans un terminal pour installer l'agent:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Pour installer le logiciel, cliquez ici et suivez les instructions.
Si vous n'avez pas initié cette demande, veuillez ignorer ce courrier.
Meilleures salutations,[[[SERVERNAME]]] - एजेंट स्थापना |
नमस्कार [[[NAME]]],
उपयोगकर्ता [[[USERNAME]]] सर्वर पर [[[SERVERNAME]]] रिमोट कंट्रोल सेशन शुरू करने के लिए आपको सॉफ्टवेयर इंस्टॉल करने का अनुरोध कर रहा है।
संदेश: [[[MSG]]]
विंडोज के लिए मेशजेंट को डाउनलोड करने के लिए यहां क्लिक करें।
Apple OSX के लिए मेशजेंट को डाउनलोड करने के लिए यहां क्लिक करें।
लिनक्स में, एजेंट को स्थापित करने के लिए टर्मिनल में निम्नलिखित को काटें और चिपकाएँ:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
सॉफ़्टवेयर स्थापित करने के लिए, यहाँ क्लिक करें और निर्देशों का पालन करें।
यदि आपने यह अनुरोध आरंभ नहीं किया है, तो कृपया इस मेल को अनदेखा करें।
सादर,[[[SERVERNAME]]] - Installazione dell'agente |
Salve [[[NAME]]],
Utente [[[USERNAME]]] sul server [[[SERVERNAME]]] chiede di installare un software per avviare una sessione di controllo remoto.
Messaggio: [[[MSG]]]
Per Linux, taglia e incolla quanto segue in un terminale per installare l'agente:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Per installare il software, clicca qui e segui le istruzioni.
Se non hai avviato questa richiesta, ignora questo messaggio.
I migliori saluti,[[[SERVERNAME]]] - エージェントのインストール |
[[[NAME]]]様
サーバー上のユーザー[[[USERNAME]]] [[[SERVERNAME]]] リモートコントロールセッションを開始するソフトウェアをインストールするように要求しています。
メッセージ: [[[MSG]]]
Linuxの場合は、ターミナルで以下をカットアンドペーストしてエージェントをインストールします。
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
ソフトウェアをインストールするには、 ここをクリック 指示に従ってください。
このリクエストを開始していない場合は、このメールを無視してください。
宜しくお願いします、[[[SERVERNAME]]] - 에이전트 설치 |
안녕하세요, [[[NAME]]]님.
서버의 [[[USERNAME]]] 사용자 [[[SERVERNAME]]] 원격 제어 세션을 시작하기 위해 소프트웨어 설치를 요청하고 있습니다.
메시지: [[[MSG]]]
Linux의 경우, 다음을 잘라내어 터미널에 붙여 넣어 에이전트를 설치하십시오.
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
소프트웨어를 설치하려면, 여기를 클릭하십시오. 그리고 다음 지시들을 따르십시오.
이 요청을 시작하지 않은 경우, 이 메일을 무시하십시오.
최고의 안부를 전합니다,[[[SERVERNAME]]] - Agent installatie |
Hallo [[[NAME]]],
Gebruiker [[[USERNAME]]] op server [[[SERVERNAME]]] vraagt u om de software te installeren om een ondersteunings sessie te starten.
Bericht: [[[MSG]]]
Voor Linux, knip het volgende en plak dit in een terminal om de agent te installeren:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Om de software te installeren, Klik hier en volg de instructies.
Als u dit verzoek niet heeft ingediend, dan kunt u deze e-mail negeren.
Vriendelijke groeten,[[[SERVERNAME]]] - Instalacja Agenta |
Witaj [[[NAME]]],
Użytkownik [[[USERNAME]]] na serwerze [[[SERVERNAME]]] prosi o zainstalowanie oprogramowania w celu rozpoczęcia sesji zdalnego sterowania.
Wiadomość: [[[MSG]]]
W systemie Linuks, wytnij i wklej poniższe polecenia w terminalu, aby zainstalować agenta:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Aby zainstalować oprogramowanie, kliknij tutaj i postępuj zgodnie z instrukcjami.
Jeśli nie byłeś inicjatorem tej prośby, proszę zignorować ten email.
Z wyrazami szacunku,[[[SERVERNAME]]] - Instalação do Agente |
Olá [[[NAME]]],
Usuário [[[USERNAME]]] no servidor [[[NOME DO SERVIDOR]]] está solicitando a instalação de um software para iniciar uma sessão de controle remoto.
Mensagem: [[[MSG]]]
Para Linux, recorte e cole o seguinte em um terminal para instalar o agente:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Para instalar o software, Clique aqui e siga as instruções.
Se você não iniciou esta solicitação, ignore este e-mail.
Atenciosamente,[[[SERVERNAME]]] - Instalação do Agente |
Olá [[[NAME]]],
Usuário [[[USERNAME]]] no servidor [[[SERVERNAME]]] está solicitando a instalação de um software para iniciar uma sessão de controle remoto.
Mensagem: [[[MSG]]]
Para Linux, recorte e cole o seguinte em um terminal para instalar o agente:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Para instalar o software, Clique aqui e siga as instruções.
Se você não iniciou esta solicitação, ignore este e-mail.
Cumprimentos,[[[SERVERNAME]]] - Установка агента |
Здравствуйте, [[[NAME]]],
Пользователь [[[USERNAME]]] на сервере [[[SERVERNAME]]] просит вас установить программное обеспечение, чтобы начать сеанс удаленного управления.
Сообщение: [[[MSG]]]
Для Linux вырезайте и вставляйте в терминал следующее, чтобы установить агент:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Чтобы установить программное обеспечение, кликните сюда и следуйте инструкциям.
Если вы не инициировали этот запрос, игнорируйте это письмо.
С уважением,[[[SERVERNAME]]] - Agentinstallation |
Hej [[[NAME]]]
Användare [[[USERNAME]]] på servern [[[SERVER NAMN]]] ber dig att installera programvara för att starta en fjärrkontrollsession.
Meddelande: [[[MSG]]]
För Linux, klipp och klistra in följande i en terminal för att installera agenten:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
För att installera programvaran, Klicka här och följ instruktionerna.
Om du inte initierade denna begäran, ignorerar du det här meddelandet.
Vänliga hälsningar,[[[SERVERNAME]]] - Aracı Kurulumu |
Merhaba [[[NAME]]],
Sunucudaki kullanıcı [[[USERNAME]]] [[[SERVERNAME]]] bir uzaktan kontrol oturumu başlatmak için yazılım yüklemenizi istiyor.
İleti: [[[MSG]]]
Linux için, aracıyı yüklemek için aşağıdakileri kesip bir terminale yapıştırın:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
Yazılımı kurmak için, buraya Tıkla ve talimatları izleyin.
Bu isteği siz başlatmadıysanız, lütfen bu postayı dikkate almayın.
Saygılarımla,[[[SERVERNAME]]]-代理程序安装 |
您好[[[NAME]]],
服务器上的使用者[[[USERNAME]]] [[[SERVERNAME]]] 正在要求您安装软件以启动远程控制会话。
消息: [[[MSG]]]
对于Linux,将以下内容剪切并粘贴到终端中以安装代理软件:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
要安装软件, 点击这里 并按照说明进行操作。
如果您没有发起此请求,请不理此邮件。
最好的祝福,[[[SERVERNAME]]]-代理程序安裝 |
你好[[[NAME]]],
伺服器上的使用者[[[USERNAME]]] [[[SERVERNAME]] 正在要求你安裝軟體以啟動遠程控制會話。
訊息: [[[MSG]]]
對於Linux,將以下內容剪切並粘貼到終端中以安裝代理軟體:
wget -q "[[[SERVERURL]]]/meshagents?script=1" --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh [[[SERVERURL]]] \'[[[MESHIDHEX]]]\'
要安裝軟體, 點擊這裡 並按照說明進行操作。
如果你沒有發起此請求,請不理此電郵。
最好的祝福,