mirror of
https://github.com/nextcloud/passman.git
synced 2024-12-26 09:34:02 +08:00
Merge branch 'scrutinizerFixes'
This commit is contained in:
commit
3b283cf1ce
32 changed files with 116 additions and 4 deletions
|
@ -16,4 +16,10 @@ tools:
|
|||
php_mess_detector: true
|
||||
php_code_sniffer: true
|
||||
sensiolabs_security_checker: true
|
||||
php_code_coverage: true
|
||||
php_code_coverage: true
|
||||
|
||||
build_failure_conditions:
|
||||
- 'issues.label("coding-style").new.count > 5'
|
||||
- 'issues.severity(>= MAJOR).new.exists'
|
||||
- 'elements.rating(<= D).new.exists'
|
||||
- 'project.metric("scrutinizer.quality", < 7.5)'
|
|
@ -82,6 +82,7 @@
|
|||
redirectTo: '/'
|
||||
});
|
||||
}).config(['$httpProvider', function ($httpProvider) {
|
||||
/** global: oc_requesttoken */
|
||||
$httpProvider.defaults.headers.common.requesttoken = oc_requesttoken;
|
||||
}]).config(function (localStorageServiceProvider) {
|
||||
localStorageServiceProvider
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
'pascalprecht.translate'
|
||||
|
||||
]).config(['$httpProvider', function ($httpProvider) {
|
||||
/** global: oc_requesttoken */
|
||||
$httpProvider.defaults.headers.common.requesttoken = oc_requesttoken;
|
||||
}]).config(function ($translateProvider) {
|
||||
$translateProvider.useUrlLoader(OC.generateUrl('/apps/passman/api/v2/language'));
|
||||
|
|
|
@ -384,6 +384,7 @@
|
|||
|
||||
$scope.parseQR = function (QRCode) {
|
||||
var re = /otpauth:\/\/(totp|hotp)\/(.*)\?(secret|issuer)=(.*)&(issuer|secret)=(.*)/, parsedQR, qrInfo;
|
||||
qrInfo = [];
|
||||
parsedQR = (QRCode.qrData.match(re));
|
||||
if (parsedQR)
|
||||
qrInfo = {
|
||||
|
|
|
@ -157,6 +157,7 @@
|
|||
var private_key = EncryptService.decryptString(VaultService.getActiveVault().private_sharing_key);
|
||||
|
||||
private_key = ShareService.rsaPrivateKeyFromPEM(private_key);
|
||||
/** global: forge */
|
||||
crypted_shared_key = private_key.decrypt(forge.util.decode64(crypted_shared_key));
|
||||
crypted_shared_key = EncryptService.encryptString(crypted_shared_key);
|
||||
|
||||
|
|
|
@ -275,6 +275,7 @@
|
|||
|
||||
$scope.parseQR = function (QRCode) {
|
||||
var re = /otpauth:\/\/(totp|hotp)\/(.*)\?(secret|issuer)=(.*)&(issuer|secret)=(.*)/, parsedQR, qrInfo;
|
||||
qrInfo = [];
|
||||
parsedQR = (QRCode.qrData.match(re));
|
||||
if (parsedQR)
|
||||
qrInfo = {
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
var key = base32tohex(scope.secret);
|
||||
var epoch = Math.round(new Date().getTime() / 1000.0);
|
||||
var time = leftpad(dec2hex(Math.floor(epoch / 30)), 16, '0');
|
||||
/** global: jsSHA */
|
||||
var hmacObj = new jsSHA(time, 'HEX');
|
||||
var hmac = hmacObj.getHMAC(key, 'HEX', 'SHA-1', "HEX");
|
||||
var offset = hex2dec(hmac.substring(hmac.length - 1));
|
||||
|
|
|
@ -124,6 +124,7 @@
|
|||
|
||||
var rng_psize, rng_state, rng_pool, rng_pptr, t, z, crypt_obj, num, buf, i
|
||||
if (Arcfour.prototype.init = ARC4init, Arcfour.prototype.next = ARC4next, rng_psize = 256, null == rng_pool) {
|
||||
/** global: navigator */
|
||||
if (rng_pool = [], rng_pptr = 0, "undefined" != typeof navigator && "Netscape" == navigator.appName && navigator.appVersion < "5" && "undefined" != typeof window && window.crypto)for (z = window.crypto.random(32), t = 0; t < z.length; ++t)rng_pool[rng_pptr++] = 255 & z.charCodeAt(t)
|
||||
try {
|
||||
if (crypt_obj = null, "undefined" != typeof window && void 0 !== window.crypto ? crypt_obj = window.crypto : "undefined" != typeof window && void 0 !== window.msCrypto && (crypt_obj = window.msCrypto), void 0 !== crypt_obj && "function" == typeof crypt_obj.getRandomValues && rng_psize > rng_pptr)for (num = Math.floor((rng_psize - rng_pptr) / 2) + 1, buf = new Uint16Array(num), crypt_obj.getRandomValues(buf), i = 0; i < buf.length; i++)t = buf[i], rng_pool[rng_pptr++] = t >>> 8, rng_pool[rng_pptr++] = 255 & t
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
var invoker = $parse(attributes.onRead);
|
||||
scope.imageData = null;
|
||||
|
||||
/** global: qrcode */
|
||||
qrcode.callback = function (result) {
|
||||
//console.log('QR callback:',result);
|
||||
invoker(scope, {
|
||||
|
@ -48,12 +49,14 @@
|
|||
//element.val('');
|
||||
};
|
||||
element.bind("change", function (changeEvent) {
|
||||
/** global: FileReader */
|
||||
var reader = new FileReader(), file = changeEvent.target.files[0];
|
||||
reader.readAsDataURL(file);
|
||||
reader.onload = (function () {
|
||||
return function (e) {
|
||||
//gCtx.clearRect(0, 0, gCanvas.width, gCanvas.height);
|
||||
scope.imageData = e.target.result;
|
||||
/** global: qrcode */
|
||||
qrcode.decode(e.target.result);
|
||||
};
|
||||
})(file);
|
||||
|
|
|
@ -297,7 +297,7 @@
|
|||
this.plain_credential = master_promise.plain_credential;
|
||||
};
|
||||
this.credential_data = {};
|
||||
|
||||
/** global: C_Promise */
|
||||
(new C_Promise(promise_credential_update, new password_data())).progress(function (data) {
|
||||
master_promise.call_progress(data);
|
||||
}).then(function (data) {
|
||||
|
@ -306,7 +306,7 @@
|
|||
master_promise.promises++;
|
||||
|
||||
master_promise.credential_data = data;
|
||||
|
||||
/** global: C_Promise */
|
||||
(new C_Promise(promise_files_update, new password_data())).progress(function (data) {
|
||||
master_promise.call_progress(data);
|
||||
}).then(function () {
|
||||
|
@ -318,6 +318,7 @@
|
|||
});
|
||||
|
||||
master_promise.promises++;
|
||||
/** global: C_Promise */
|
||||
(new C_Promise(promise_revisions_update, new password_data())).progress(function (data) {
|
||||
master_promise.call_progress(data);
|
||||
}).then(function () {
|
||||
|
@ -329,7 +330,7 @@
|
|||
});
|
||||
});
|
||||
};
|
||||
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(promise_workload);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
_key = VaultService.getActiveVault().vaultKey;
|
||||
}
|
||||
var rp = {};
|
||||
/** global: sjcl */
|
||||
var ct = sjcl.encrypt(_key, string, encryption_config, rp);
|
||||
return window.btoa(ct);
|
||||
},
|
||||
|
@ -56,6 +57,7 @@
|
|||
ciphertext = window.atob(ciphertext);
|
||||
var rp = {};
|
||||
try {
|
||||
/** global: sjcl */
|
||||
return sjcl.decrypt(_key, ciphertext, encryption_config, rp);
|
||||
} catch (e) {
|
||||
throw e;
|
||||
|
|
|
@ -107,10 +107,12 @@
|
|||
}
|
||||
|
||||
// write the ArrayBuffer to a blob, and you're done
|
||||
/** global: Blob */
|
||||
bb = new Blob([ab], {
|
||||
type: ftype
|
||||
});
|
||||
|
||||
/** global: URL */
|
||||
return URL.createObjectURL(bb);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
.service('ShareService', ['$http', 'VaultService', 'EncryptService', 'CredentialService', function ($http, VaultService, EncryptService, CredentialService) {
|
||||
// Setup sjcl random engine to max paranoia level and start collecting data
|
||||
var paranoia_level = 10;
|
||||
/** global: sjcl */
|
||||
sjcl.random.setDefaultParanoia(paranoia_level);
|
||||
sjcl.random.startCollectors();
|
||||
|
||||
|
@ -65,6 +66,7 @@
|
|||
return $http.get(queryUrl, {search: userId}).then(function (response) {
|
||||
if (response.data) {
|
||||
for (var i = 0; i < response.data.length; i++) {
|
||||
/** global: forge */
|
||||
response.data[i].public_sharing_key = forge.pki.publicKeyFromPem(response.data[i].public_sharing_key);
|
||||
}
|
||||
return response.data;
|
||||
|
@ -201,10 +203,13 @@
|
|||
},
|
||||
|
||||
generateRSAKeys: function (key_length) {
|
||||
/** global: C_Promise */
|
||||
var p = new C_Promise(function () {
|
||||
/** global: forge */
|
||||
var state = forge.pki.rsa.createKeyPairGenerationState(key_length, 0x10001);
|
||||
var step = function () {
|
||||
// run for 100 ms
|
||||
/** global: forge */
|
||||
if (!forge.pki.rsa.stepKeyPairGenerationState(state, 100)) {
|
||||
if (state.p !== null) {
|
||||
// progress(50);
|
||||
|
@ -227,8 +232,10 @@
|
|||
},
|
||||
generateSharedKey: function (size) {
|
||||
size = size || 20;
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function () {
|
||||
var t = this;
|
||||
/** global: CRYPTO */
|
||||
CRYPTO.PASSWORD.generate(size,
|
||||
function (pass) {
|
||||
t.call_then(pass);
|
||||
|
@ -253,9 +260,11 @@
|
|||
};
|
||||
},
|
||||
rsaPrivateKeyFromPEM: function (private_pem) {
|
||||
/** global: forge */
|
||||
return forge.pki.privateKeyFromPem(private_pem);
|
||||
},
|
||||
rsaPublicKeyFromPEM: function (public_pem) {
|
||||
/** global: forge */
|
||||
return forge.pki.publicKeyFromPem(public_pem);
|
||||
},
|
||||
/**
|
||||
|
@ -267,6 +276,7 @@
|
|||
var workload = function () {
|
||||
if (this.current_index < this.vaults.length > 0 && this.vaults.length > 0) {
|
||||
var _vault = angular.copy(this.vaults[this.current_index]);
|
||||
/** global: forge */
|
||||
_vault.key = forge.util.encode64(
|
||||
_vault.public_sharing_key.encrypt(this.string)
|
||||
);
|
||||
|
@ -282,6 +292,7 @@
|
|||
this.call_then(this.data);
|
||||
}
|
||||
};
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function () {
|
||||
this.data = [];
|
||||
this.vaults = vaults;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
// Importers should always start with this
|
||||
/** global: PassmanImporter */
|
||||
var PassmanImporter = PassmanImporter || {};
|
||||
(function(window, $, PassmanImporter) {
|
||||
'use strict';
|
||||
|
@ -33,6 +34,7 @@ var PassmanImporter = PassmanImporter || {};
|
|||
};
|
||||
|
||||
PassmanImporter.clippers.readFile = function (file_data) {
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function() {
|
||||
var credential_list = [];
|
||||
var re = /<textarea>(.*?)<\/textarea>/gi;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
// Importers should always start with this
|
||||
/** global: PassmanImporter */
|
||||
var PassmanImporter = PassmanImporter || {};
|
||||
(function(window, $, PassmanImporter) {
|
||||
'use strict';
|
||||
|
@ -34,6 +35,7 @@ var PassmanImporter = PassmanImporter || {};
|
|||
};
|
||||
|
||||
PassmanImporter.dashLaneCsv.readFile = function (file_data) {
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function(){
|
||||
var rows = file_data.split('\n');
|
||||
var credential_list = [];
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
// Importers should always start with this
|
||||
/** global: PassmanImporter */
|
||||
var PassmanImporter = PassmanImporter || {};
|
||||
(function(window, $, PassmanImporter) {
|
||||
'use strict';
|
||||
|
@ -34,6 +35,7 @@ var PassmanImporter = PassmanImporter || {};
|
|||
};
|
||||
|
||||
PassmanImporter.keepassCsv.readFile = function (file_data) {
|
||||
/** global: C_Promise */
|
||||
var p = new C_Promise(function(){
|
||||
var parsed_csv = PassmanImporter.readCsv(file_data);
|
||||
var credential_list = [];
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
// Importers should always start with this
|
||||
/** global: PassmanImporter */
|
||||
var PassmanImporter = PassmanImporter || {};
|
||||
(function(window, $, PassmanImporter) {
|
||||
'use strict';
|
||||
|
@ -34,6 +35,7 @@ var PassmanImporter = PassmanImporter || {};
|
|||
};
|
||||
|
||||
PassmanImporter.lastpassCsv.readFile = function (file_data) {
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function(){
|
||||
var parsed_csv = PassmanImporter.readCsv(file_data);
|
||||
var credential_list = [];
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
// Importers should always start with this
|
||||
/** global: PassmanImporter */
|
||||
var PassmanImporter = PassmanImporter || {};
|
||||
(function(window, $, PassmanImporter) {
|
||||
'use strict';
|
||||
|
@ -33,6 +34,7 @@ var PassmanImporter = PassmanImporter || {};
|
|||
};
|
||||
|
||||
PassmanImporter.passmanJson.readFile = function (file_data) {
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function(){
|
||||
var parsed_json = PassmanImporter.readJson(file_data);
|
||||
var credential_list = [];
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
// Importers should always start with this
|
||||
/** global: PassmanImporter */
|
||||
var PassmanImporter = PassmanImporter || {};
|
||||
(function(window, $, PassmanImporter) {
|
||||
'use strict';
|
||||
|
@ -34,6 +35,7 @@ var PassmanImporter = PassmanImporter || {};
|
|||
};
|
||||
|
||||
PassmanImporter.passpackCsv.readFile = function (file_data) {
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function(){
|
||||
var parsed_csv = PassmanImporter.readCsv(file_data, false);
|
||||
var credential_list = [];
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
// Importers should always start with this
|
||||
/** global: PassmanImporter */
|
||||
var PassmanImporter = PassmanImporter || {};
|
||||
(function(window, $, PassmanImporter) {
|
||||
'use strict';
|
||||
|
@ -36,6 +37,7 @@ var PassmanImporter = PassmanImporter || {};
|
|||
};
|
||||
|
||||
PassmanImporter.randomData.readFile = function () {
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function () {
|
||||
var tags =
|
||||
['Social media',
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
// Importers should always start with this
|
||||
/** global: PassmanImporter */
|
||||
var PassmanImporter = PassmanImporter || {};
|
||||
|
||||
(function(window, $, PassmanImporter) {
|
||||
|
@ -36,6 +37,7 @@ var PassmanImporter = PassmanImporter || {};
|
|||
};
|
||||
|
||||
PassmanImporter.zohoCsv.readFile = function (file_data) {
|
||||
/** global: C_Promise */
|
||||
return new C_Promise(function(){
|
||||
var parsed_csv = PassmanImporter.readCsv(file_data, false);
|
||||
var credential_list = [];
|
||||
|
|
|
@ -42,6 +42,8 @@ var CRYPTO = { // Global variables of the object:
|
|||
* @param progress The process of the generation, optional, called each 4 characters generated.
|
||||
*/
|
||||
generate : function (length, callback, progress, start_string) {
|
||||
/** global: paranoia_level */
|
||||
/** global: sjcl */
|
||||
if (!sjcl.random.isReady(paranoia_level)) {
|
||||
setTimeout(this.generate(length, callback, progress, start_string), 500);
|
||||
return;
|
||||
|
@ -49,6 +51,7 @@ var CRYPTO = { // Global variables of the object:
|
|||
|
||||
if (start_string == null) start_string = "";
|
||||
if (start_string.length < length) {
|
||||
/** global: CRYPTO */
|
||||
start_string += CRYPTO.RANDOM.getRandomASCII();
|
||||
if (progress != null) progress(start_string.length / length * 100);
|
||||
}
|
||||
|
@ -80,6 +83,8 @@ var CRYPTO = { // Global variables of the object:
|
|||
|
||||
var ret = "";
|
||||
while (ret.length < 4) {
|
||||
/** global: paranoia_level */
|
||||
/** global: sjcl */
|
||||
var int = sjcl.random.randomWords(1, paranoia_level);
|
||||
int = int[0];
|
||||
|
||||
|
@ -134,6 +139,7 @@ var CRYPTO = { // Global variables of the object:
|
|||
initEngines : function (default_paranoia) {
|
||||
paranoia_level = default_paranoia || 10;
|
||||
|
||||
/** global: sjcl */
|
||||
sjcl.random.setDefaultParanoia(this.paranoia_level);
|
||||
sjcl.random.startCollectors();
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ OC.L10N.register(
|
|||
"Please fill in a label!" : "Bitte Beschriftung hinzufügen!",
|
||||
"Please fill in a value!" : "Bitte einen Wert hinzufügen!",
|
||||
"Error loading file" : "Fehler beim Laden der Datei",
|
||||
"An error happened during decryption" : "Ein Fehler ist bei der Entschlüsselung aufgetreten",
|
||||
"Credential created!" : "Anmeldeinformation erstellt!",
|
||||
"Credential deleted" : "Anmeldeinformation gelöscht",
|
||||
"Credential updated" : "Anmeldeinformation aktualisiert",
|
||||
|
@ -207,6 +208,7 @@ OC.L10N.register(
|
|||
"Last accessed" : "Letzter Zugriff",
|
||||
"Never" : "Nie",
|
||||
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
|
||||
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
|
||||
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
|
||||
"Vault password" : "Tresor-Passwort",
|
||||
"Repeat vault password" : "Tresor-Passwort wiederholen",
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"Please fill in a label!" : "Bitte Beschriftung hinzufügen!",
|
||||
"Please fill in a value!" : "Bitte einen Wert hinzufügen!",
|
||||
"Error loading file" : "Fehler beim Laden der Datei",
|
||||
"An error happened during decryption" : "Ein Fehler ist bei der Entschlüsselung aufgetreten",
|
||||
"Credential created!" : "Anmeldeinformation erstellt!",
|
||||
"Credential deleted" : "Anmeldeinformation gelöscht",
|
||||
"Credential updated" : "Anmeldeinformation aktualisiert",
|
||||
|
@ -205,6 +206,7 @@
|
|||
"Last accessed" : "Letzter Zugriff",
|
||||
"Never" : "Nie",
|
||||
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
|
||||
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
|
||||
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
|
||||
"Vault password" : "Tresor-Passwort",
|
||||
"Repeat vault password" : "Tresor-Passwort wiederholen",
|
||||
|
|
|
@ -10,6 +10,7 @@ OC.L10N.register(
|
|||
"Please fill in a label!" : "Bitte Beschriftung hinzufügen!",
|
||||
"Please fill in a value!" : "Bitte einen Wert hinzufügen!",
|
||||
"Error loading file" : "Fehler beim Laden der Datei",
|
||||
"An error happened during decryption" : "Ein Fehler ist bei der Entschlüsselung aufgetreten",
|
||||
"Credential created!" : "Anmeldeinformation erstellt!",
|
||||
"Credential deleted" : "Anmeldeinformation gelöscht",
|
||||
"Credential updated" : "Anmeldeinformation aktualisiert",
|
||||
|
@ -207,6 +208,7 @@ OC.L10N.register(
|
|||
"Last accessed" : "Letzter Zugriff",
|
||||
"Never" : "Nie",
|
||||
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
|
||||
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
|
||||
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
|
||||
"Vault password" : "Tresor-Passwort",
|
||||
"Repeat vault password" : "Tresor-Passwort wiederholen",
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"Please fill in a label!" : "Bitte Beschriftung hinzufügen!",
|
||||
"Please fill in a value!" : "Bitte einen Wert hinzufügen!",
|
||||
"Error loading file" : "Fehler beim Laden der Datei",
|
||||
"An error happened during decryption" : "Ein Fehler ist bei der Entschlüsselung aufgetreten",
|
||||
"Credential created!" : "Anmeldeinformation erstellt!",
|
||||
"Credential deleted" : "Anmeldeinformation gelöscht",
|
||||
"Credential updated" : "Anmeldeinformation aktualisiert",
|
||||
|
@ -205,6 +206,7 @@
|
|||
"Last accessed" : "Letzter Zugriff",
|
||||
"Never" : "Nie",
|
||||
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
|
||||
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
|
||||
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
|
||||
"Vault password" : "Tresor-Passwort",
|
||||
"Repeat vault password" : "Tresor-Passwort wiederholen",
|
||||
|
|
|
@ -10,6 +10,7 @@ OC.L10N.register(
|
|||
"Please fill in a label!" : "Veuillez remplir une étiquette !",
|
||||
"Please fill in a value!" : "Veuillez remplir une valeur !",
|
||||
"Error loading file" : "Erreur lors du chargement du fichier",
|
||||
"An error happened during decryption" : "Une erreur est survenue lors du décryptage",
|
||||
"Credential created!" : "Information d'identification créée !",
|
||||
"Credential deleted" : "Information d'identification supprimée",
|
||||
"Credential updated" : "Information d'identification mise à jour",
|
||||
|
@ -187,6 +188,7 @@ OC.L10N.register(
|
|||
"Last accessed" : "Dernier accès",
|
||||
"Never" : "Jamais",
|
||||
"No vaults found, why not create one?" : "Pas de coffre-fort trouvé, pourquoi ne pas en créer un ?",
|
||||
"Password strength must be at least: {{strength}}" : "La force du mot de passe doit être au moins : {{strength}}",
|
||||
"Please give your new vault a name." : "Veuillez donner un nom à votre nouveau coffre-fort.",
|
||||
"Vault password" : "Mot de passe du coffre-fort",
|
||||
"Repeat vault password" : "Confirmer le mot de passe du coffre-fort",
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"Please fill in a label!" : "Veuillez remplir une étiquette !",
|
||||
"Please fill in a value!" : "Veuillez remplir une valeur !",
|
||||
"Error loading file" : "Erreur lors du chargement du fichier",
|
||||
"An error happened during decryption" : "Une erreur est survenue lors du décryptage",
|
||||
"Credential created!" : "Information d'identification créée !",
|
||||
"Credential deleted" : "Information d'identification supprimée",
|
||||
"Credential updated" : "Information d'identification mise à jour",
|
||||
|
@ -185,6 +186,7 @@
|
|||
"Last accessed" : "Dernier accès",
|
||||
"Never" : "Jamais",
|
||||
"No vaults found, why not create one?" : "Pas de coffre-fort trouvé, pourquoi ne pas en créer un ?",
|
||||
"Password strength must be at least: {{strength}}" : "La force du mot de passe doit être au moins : {{strength}}",
|
||||
"Please give your new vault a name." : "Veuillez donner un nom à votre nouveau coffre-fort.",
|
||||
"Vault password" : "Mot de passe du coffre-fort",
|
||||
"Repeat vault password" : "Confirmer le mot de passe du coffre-fort",
|
||||
|
|
21
l10n/it.js
21
l10n/it.js
|
@ -10,6 +10,7 @@ OC.L10N.register(
|
|||
"Please fill in a label!" : "Aggiungi un'etichetta!",
|
||||
"Please fill in a value!" : "Aggiungi un valore!",
|
||||
"Error loading file" : "Errore durante il caricamento del file",
|
||||
"An error happened during decryption" : "Si è verificato un errore durante la decifratura",
|
||||
"Credential created!" : "Credenziali create!",
|
||||
"Credential deleted" : "Credenziali eliminate",
|
||||
"Credential updated" : "Credenziali aggiornate",
|
||||
|
@ -41,6 +42,10 @@ OC.L10N.register(
|
|||
"Credential unshared" : "Credenziali non condivise",
|
||||
"Credential shared" : "Credenziali condivise",
|
||||
"Saved!" : "Salvato!",
|
||||
"Poor" : "Povera",
|
||||
"Weak" : "Debole",
|
||||
"Good" : "Buona",
|
||||
"Strong" : "Forte",
|
||||
"Toggle visibility" : "Commuta la visibilità",
|
||||
"Copy to clipboard" : "Copia negli appunti",
|
||||
"Copied to clipboard!" : "Copiato negli appunti!",
|
||||
|
@ -90,6 +95,7 @@ OC.L10N.register(
|
|||
"Rename vault" : "Rinomina cassaforte",
|
||||
"New vault name" : "Nome della nuova cassaforte",
|
||||
"Change" : "Modifica",
|
||||
"Change vault key" : "Modifica chiave della cassaforte",
|
||||
"Old vault password" : "Vecchia password della cassaforte",
|
||||
"New vault password" : "Nuova password della cassaforte",
|
||||
"New vault password repeat" : "Ripeti la nuova password della cassaforte",
|
||||
|
@ -112,7 +118,9 @@ OC.L10N.register(
|
|||
"Save keys" : "Salva chiavi",
|
||||
"Generate sharing keys" : "Genera chiavi di condivisione",
|
||||
"Generating sharing keys" : "Generazione chiavi di condivisione",
|
||||
"The password tool will scan your password, calculate the avarage crack time and, if below the threshold, show them" : "Lo strumento delle password analizzerà la tua password, calcolerà il tempo medio per decifrarla e, se sotto la soglia, lo segnalerà.",
|
||||
"Minimum password stength" : "Robustezza minima della password",
|
||||
"Passman scanned your passwords, and here is the result." : "Passman ha analizzato le tue password, ed ecco il risultato.",
|
||||
"A total of {{scan_result}} weak credentials." : "Un totale di {{scan_result}} credenziali deboli.",
|
||||
"Score" : "Punteggio",
|
||||
"Action" : "Azione",
|
||||
|
@ -121,6 +129,7 @@ OC.L10N.register(
|
|||
"Uploading" : "Caricamento",
|
||||
"User" : "Utente",
|
||||
"Crypto time" : "Tempo di cifratura",
|
||||
"Total time spent cyphering" : "Tempo totale impiegato nella cifratura",
|
||||
"Read" : "Lettura",
|
||||
"Write" : "Scrittura",
|
||||
"Files" : "File",
|
||||
|
@ -154,6 +163,7 @@ OC.L10N.register(
|
|||
"Settings" : "Impostazioni",
|
||||
"Share credential {{credential}}" : "Condividi credenziali {{credential}}",
|
||||
"Unshare" : "Rimuovi condivisione",
|
||||
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Visualizzazione di {{number_filtered}} di {{credential_number}} credenziali",
|
||||
"Search credential..." : "Cerca credenziali...",
|
||||
"Account" : "Account",
|
||||
"Password" : "Password",
|
||||
|
@ -178,6 +188,7 @@ OC.L10N.register(
|
|||
"Last accessed" : "Ultimo accesso",
|
||||
"Never" : "Mai",
|
||||
"No vaults found, why not create one?" : "Nessuna cassaforte trovata, vuoi crearne una?",
|
||||
"Password strength must be at least: {{strength}}" : "La robustezza della password deve essere almeno: {{strength}}",
|
||||
"Please give your new vault a name." : "Dai un nome alla tua nuova cassaforte.",
|
||||
"Vault password" : "Password della cassaforte",
|
||||
"Repeat vault password" : "Ripeti la password della cassaforte",
|
||||
|
@ -198,6 +209,7 @@ OC.L10N.register(
|
|||
"Click here to request it" : "Fai clic qui per richiederle",
|
||||
"Loading..." : "Caricamento in corso...",
|
||||
"Awwhh.... credential not found. Maybe it expired" : "Ops... credenziali non trovate. Potrebbero essere scadute",
|
||||
"Error while saving field" : "Errore durante il salvataggio del campo",
|
||||
"A Passman item has been created, modified or deleted" : "Un elemento Passman è stato creato, modificato o eliminato",
|
||||
"A Passman item has expired" : "Un elemento Passman è scaduto",
|
||||
"A Passman item has been shared" : "Un elemento Passman è stato condiviso",
|
||||
|
@ -226,6 +238,15 @@ OC.L10N.register(
|
|||
"%s shared \"%s\" with you. Click here to accept" : "%s ha condiviso \"%s\" con te. Fai clic qui per accettare",
|
||||
"%s has declined your share request for \"%s\"." : "%s ha rifiutato la tua richiesta di condivisione per \"%s\".",
|
||||
"%s has accepted your share request for \"%s\"." : "%s ha accettato la tua richiesta di condivisione per \"%s\".",
|
||||
"Unable to get version info" : "Impossibile ottenere le informazioni di versione",
|
||||
"Passman Settings" : "Impostazioni di Passman",
|
||||
"Github version:" : "Versione di Github:",
|
||||
"A newer version of passman is available" : "Una nuova versione di Passman è disponibile",
|
||||
"Allow users on this server to share passwords with a link" : "Consenti agli utenti su questo server di condividere le password tramite un collegamento",
|
||||
"Allow users on this server to share passwords with other users" : "Consenti agli utenti su questo server di condividere le password con altri utenti",
|
||||
"Check for new versions" : "Controlla la presenza di nuove versioni",
|
||||
"Enable HTTPS check" : "Abilita controllo HTTPS",
|
||||
"Disable context menu" : "Disabilita menu contestuale",
|
||||
"Connection to server lost" : "Connessione al server interrotta",
|
||||
"Problem loading page, reloading in 5 seconds" : "Problema durante il caricamento della pagina, aggiornamento tra 5 secondi",
|
||||
"Saving..." : "Salvataggio in corso...",
|
||||
|
|
21
l10n/it.json
21
l10n/it.json
|
@ -8,6 +8,7 @@
|
|||
"Please fill in a label!" : "Aggiungi un'etichetta!",
|
||||
"Please fill in a value!" : "Aggiungi un valore!",
|
||||
"Error loading file" : "Errore durante il caricamento del file",
|
||||
"An error happened during decryption" : "Si è verificato un errore durante la decifratura",
|
||||
"Credential created!" : "Credenziali create!",
|
||||
"Credential deleted" : "Credenziali eliminate",
|
||||
"Credential updated" : "Credenziali aggiornate",
|
||||
|
@ -39,6 +40,10 @@
|
|||
"Credential unshared" : "Credenziali non condivise",
|
||||
"Credential shared" : "Credenziali condivise",
|
||||
"Saved!" : "Salvato!",
|
||||
"Poor" : "Povera",
|
||||
"Weak" : "Debole",
|
||||
"Good" : "Buona",
|
||||
"Strong" : "Forte",
|
||||
"Toggle visibility" : "Commuta la visibilità",
|
||||
"Copy to clipboard" : "Copia negli appunti",
|
||||
"Copied to clipboard!" : "Copiato negli appunti!",
|
||||
|
@ -88,6 +93,7 @@
|
|||
"Rename vault" : "Rinomina cassaforte",
|
||||
"New vault name" : "Nome della nuova cassaforte",
|
||||
"Change" : "Modifica",
|
||||
"Change vault key" : "Modifica chiave della cassaforte",
|
||||
"Old vault password" : "Vecchia password della cassaforte",
|
||||
"New vault password" : "Nuova password della cassaforte",
|
||||
"New vault password repeat" : "Ripeti la nuova password della cassaforte",
|
||||
|
@ -110,7 +116,9 @@
|
|||
"Save keys" : "Salva chiavi",
|
||||
"Generate sharing keys" : "Genera chiavi di condivisione",
|
||||
"Generating sharing keys" : "Generazione chiavi di condivisione",
|
||||
"The password tool will scan your password, calculate the avarage crack time and, if below the threshold, show them" : "Lo strumento delle password analizzerà la tua password, calcolerà il tempo medio per decifrarla e, se sotto la soglia, lo segnalerà.",
|
||||
"Minimum password stength" : "Robustezza minima della password",
|
||||
"Passman scanned your passwords, and here is the result." : "Passman ha analizzato le tue password, ed ecco il risultato.",
|
||||
"A total of {{scan_result}} weak credentials." : "Un totale di {{scan_result}} credenziali deboli.",
|
||||
"Score" : "Punteggio",
|
||||
"Action" : "Azione",
|
||||
|
@ -119,6 +127,7 @@
|
|||
"Uploading" : "Caricamento",
|
||||
"User" : "Utente",
|
||||
"Crypto time" : "Tempo di cifratura",
|
||||
"Total time spent cyphering" : "Tempo totale impiegato nella cifratura",
|
||||
"Read" : "Lettura",
|
||||
"Write" : "Scrittura",
|
||||
"Files" : "File",
|
||||
|
@ -152,6 +161,7 @@
|
|||
"Settings" : "Impostazioni",
|
||||
"Share credential {{credential}}" : "Condividi credenziali {{credential}}",
|
||||
"Unshare" : "Rimuovi condivisione",
|
||||
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Visualizzazione di {{number_filtered}} di {{credential_number}} credenziali",
|
||||
"Search credential..." : "Cerca credenziali...",
|
||||
"Account" : "Account",
|
||||
"Password" : "Password",
|
||||
|
@ -176,6 +186,7 @@
|
|||
"Last accessed" : "Ultimo accesso",
|
||||
"Never" : "Mai",
|
||||
"No vaults found, why not create one?" : "Nessuna cassaforte trovata, vuoi crearne una?",
|
||||
"Password strength must be at least: {{strength}}" : "La robustezza della password deve essere almeno: {{strength}}",
|
||||
"Please give your new vault a name." : "Dai un nome alla tua nuova cassaforte.",
|
||||
"Vault password" : "Password della cassaforte",
|
||||
"Repeat vault password" : "Ripeti la password della cassaforte",
|
||||
|
@ -196,6 +207,7 @@
|
|||
"Click here to request it" : "Fai clic qui per richiederle",
|
||||
"Loading..." : "Caricamento in corso...",
|
||||
"Awwhh.... credential not found. Maybe it expired" : "Ops... credenziali non trovate. Potrebbero essere scadute",
|
||||
"Error while saving field" : "Errore durante il salvataggio del campo",
|
||||
"A Passman item has been created, modified or deleted" : "Un elemento Passman è stato creato, modificato o eliminato",
|
||||
"A Passman item has expired" : "Un elemento Passman è scaduto",
|
||||
"A Passman item has been shared" : "Un elemento Passman è stato condiviso",
|
||||
|
@ -224,6 +236,15 @@
|
|||
"%s shared \"%s\" with you. Click here to accept" : "%s ha condiviso \"%s\" con te. Fai clic qui per accettare",
|
||||
"%s has declined your share request for \"%s\"." : "%s ha rifiutato la tua richiesta di condivisione per \"%s\".",
|
||||
"%s has accepted your share request for \"%s\"." : "%s ha accettato la tua richiesta di condivisione per \"%s\".",
|
||||
"Unable to get version info" : "Impossibile ottenere le informazioni di versione",
|
||||
"Passman Settings" : "Impostazioni di Passman",
|
||||
"Github version:" : "Versione di Github:",
|
||||
"A newer version of passman is available" : "Una nuova versione di Passman è disponibile",
|
||||
"Allow users on this server to share passwords with a link" : "Consenti agli utenti su questo server di condividere le password tramite un collegamento",
|
||||
"Allow users on this server to share passwords with other users" : "Consenti agli utenti su questo server di condividere le password con altri utenti",
|
||||
"Check for new versions" : "Controlla la presenza di nuove versioni",
|
||||
"Enable HTTPS check" : "Abilita controllo HTTPS",
|
||||
"Disable context menu" : "Disabilita menu contestuale",
|
||||
"Connection to server lost" : "Connessione al server interrotta",
|
||||
"Problem loading page, reloading in 5 seconds" : "Problema durante il caricamento della pagina, aggiornamento tra 5 secondi",
|
||||
"Saving..." : "Salvataggio in corso...",
|
||||
|
|
|
@ -10,6 +10,7 @@ OC.L10N.register(
|
|||
"Please fill in a label!" : "Voeg een label toe!",
|
||||
"Please fill in a value!" : "Geef een waarde op!",
|
||||
"Error loading file" : "Fout bij laden bestand",
|
||||
"An error happened during decryption" : "Er trad een fout op bij ontsleutelen",
|
||||
"Credential created!" : "Inloggegevens aangemaakt!",
|
||||
"Credential deleted" : "Inloggegevens verwijderd",
|
||||
"Credential updated" : "Inloggegevens bijgewerkt",
|
||||
|
@ -207,6 +208,7 @@ OC.L10N.register(
|
|||
"Last accessed" : "Laatst benaderd",
|
||||
"Never" : "Nooit",
|
||||
"No vaults found, why not create one?" : "Geen kluis gevonden, eentje aanmaken?",
|
||||
"Password strength must be at least: {{strength}}" : "Wachtwoordsterkte minimale waarde: {{strength}}",
|
||||
"Please give your new vault a name." : "Voer de naam van je nieuwe kluis in.",
|
||||
"Vault password" : "Kluiswachtwoord",
|
||||
"Repeat vault password" : "Herhaal kluiswachtwoord",
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"Please fill in a label!" : "Voeg een label toe!",
|
||||
"Please fill in a value!" : "Geef een waarde op!",
|
||||
"Error loading file" : "Fout bij laden bestand",
|
||||
"An error happened during decryption" : "Er trad een fout op bij ontsleutelen",
|
||||
"Credential created!" : "Inloggegevens aangemaakt!",
|
||||
"Credential deleted" : "Inloggegevens verwijderd",
|
||||
"Credential updated" : "Inloggegevens bijgewerkt",
|
||||
|
@ -205,6 +206,7 @@
|
|||
"Last accessed" : "Laatst benaderd",
|
||||
"Never" : "Nooit",
|
||||
"No vaults found, why not create one?" : "Geen kluis gevonden, eentje aanmaken?",
|
||||
"Password strength must be at least: {{strength}}" : "Wachtwoordsterkte minimale waarde: {{strength}}",
|
||||
"Please give your new vault a name." : "Voer de naam van je nieuwe kluis in.",
|
||||
"Vault password" : "Kluiswachtwoord",
|
||||
"Repeat vault password" : "Herhaal kluiswachtwoord",
|
||||
|
|
Loading…
Reference in a new issue