Merge branch 'develop' into usb

This commit is contained in:
antelle 2020-05-02 14:05:47 +02:00
commit 32c171d05b
No known key found for this signature in database
GPG Key ID: 094A2F2D6136A4EE
16 changed files with 196 additions and 154 deletions

View File

@ -5125,14 +5125,28 @@ class Command {
return cmdStr;
}
}
/**
* Sanitizes an input into a string so it can be passed into issueCommand safely
* @param input input to sanitize into a string
*/
function toCommandValue(input) {
if (input === null || input === undefined) {
return '';
}
else if (typeof input === 'string' || input instanceof String) {
return input;
}
return JSON.stringify(input);
}
exports.toCommandValue = toCommandValue;
function escapeData(s) {
return (s || '')
return toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A');
}
function escapeProperty(s) {
return (s || '')
return toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A')
@ -7141,11 +7155,13 @@ var ExitCode;
/**
* Sets env variable for this action and future actions in the job
* @param name the name of the variable to set
* @param val the value of the variable
* @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function exportVariable(name, val) {
process.env[name] = val;
command_1.issueCommand('set-env', { name }, val);
const convertedVal = command_1.toCommandValue(val);
process.env[name] = convertedVal;
command_1.issueCommand('set-env', { name }, convertedVal);
}
exports.exportVariable = exportVariable;
/**
@ -7184,12 +7200,22 @@ exports.getInput = getInput;
* Sets the value of an output.
*
* @param name name of the output to set
* @param value value to store
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function setOutput(name, value) {
command_1.issueCommand('set-output', { name }, value);
}
exports.setOutput = setOutput;
/**
* Enables or disables the echoing of commands into stdout for the rest of the step.
* Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
*
*/
function setCommandEcho(enabled) {
command_1.issue('echo', enabled ? 'on' : 'off');
}
exports.setCommandEcho = setCommandEcho;
//-----------------------------------------------------------------------
// Results
//-----------------------------------------------------------------------
@ -7223,18 +7249,18 @@ function debug(message) {
exports.debug = debug;
/**
* Adds an error issue
* @param message error issue message
* @param message error issue message. Errors will be converted to string via toString()
*/
function error(message) {
command_1.issue('error', message);
command_1.issue('error', message instanceof Error ? message.toString() : message);
}
exports.error = error;
/**
* Adds an warning issue
* @param message warning issue message
* @param message warning issue message. Errors will be converted to string via toString()
*/
function warning(message) {
command_1.issue('warning', message);
command_1.issue('warning', message instanceof Error ? message.toString() : message);
}
exports.warning = warning;
/**
@ -7292,8 +7318,9 @@ exports.group = group;
* Saves state for current action, the state can only be retrieved by this action's post job execution.
*
* @param name name of the state to store
* @param value value to store
* @param value value to store. Non-string values will be converted to a string via JSON.stringify
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function saveState(name, value) {
command_1.issueCommand('save-state', { name }, value);
}

View File

@ -5,14 +5,14 @@
"requires": true,
"dependencies": {
"@actions/core": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.3.tgz",
"integrity": "sha512-Wp4xnyokakM45Uuj4WLUxdsa8fJjKVl1fDTsPbTEcTcuu0Nb26IPQbOtjmnfaCPGcaoPOOqId8H9NapZ8gii4w=="
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.4.tgz",
"integrity": "sha512-YJCEq8BE3CdN8+7HPZ/4DxJjk/OkZV2FFIf+DlZTC/4iBlzYCD5yjRR6eiOS5llO11zbRltIRuKAjMKaWTE6cg=="
},
"@actions/exec": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.3.tgz",
"integrity": "sha512-TogJGnueOmM7ntCi0ASTUj4LapRRtDfj57Ja4IhPmg2fls28uVOPbAn8N+JifaOumN2UG3oEO/Ixek2A4NcYSA==",
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.4.tgz",
"integrity": "sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw==",
"requires": {
"@actions/io": "^1.0.1"
}

View File

@ -9,8 +9,8 @@
"author": "",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.2.3",
"@actions/exec": "^1.0.3",
"@actions/core": "^1.2.4",
"@actions/exec": "^1.0.4",
"@actions/github": "^2.1.1"
},
"devDependencies": {

View File

@ -1,5 +1,4 @@
{
"appBrowserAuthComplete": "Die Authentifizierung ist abgeschlossen, Sie können diesen Tab jetzt schließen.",
"months": [
"Januar",
"Februar",
@ -358,6 +357,7 @@
"appRightsAlert": "Schreibschutz für KeeWeb wird eingerichtet",
"appRightsAlertBody1": "Ihre KeeWeb-Anwendung ist nicht gegen Änderungen von außen gesichert. Um diesen Schreibschutz einzurichten, benötigt die App Administratorrechte.",
"appRightsAlertBody2": "Sie möchten der App keine Administratorrechte erteilen? Mit folgendem Befehl können Sie den Schreibschutz auch von Hand im Terminal aktivieren",
"appBrowserAuthComplete": "Die Authentifizierung ist abgeschlossen, Sie können diesen Tab jetzt schließen.",
"setGenTitle": "Allgemeine Einstellungen",
"setGenUpdate": "Update",
"setGenNewVersion": "Eine neue Version der App ist verfügbar und wurde heruntergeladen",
@ -434,6 +434,7 @@
"setGenLockAutoType": "Bei Auto-Type",
"setGenLockOrSleep": "Bei Aktivierung von Bildschirmsperre oder Ruhezustand",
"setGenStorage": "Synchronisierung",
"setGenStorageLogout": "Abmelden",
"setGenShowAdvanced": "Erweiterte Einstellungen anzeigen",
"setGenDevTools": "Entwicklerwerkzeuge anzeigen",
"setGenTryBeta": "Beta-Version bis zum Schließen der App ausprobieren",
@ -588,6 +589,8 @@
"dropboxSetupDesc": "Etwas Konfiguration ist notwendig, um Dropbox in einer selbst gehosteten Web-App zu verwenden. Bitte erstellen Sie eine eigene Dropbox-App und tragen Sie ihren App-Schlüssel unten ein.",
"dropboxAppKey": "Dropbox App-Schlüssel",
"dropboxAppKeyDesc": "Kopieren Sie den Schlüssel aus Ihrer Dropbox-App (Entwicklereinstellungen)",
"dropboxAppSecret": "Dropbox App Secret",
"dropboxAppSecretDesc": "Das App Secret ist neben dem App Key zu finden",
"dropboxFolder": "App-Ordner",
"dropboxFolderDesc": "Wenn Ihre App mit der gesamten Dropbox verlinkt ist (anstatt mit einem bestimmten Ordner), geben Sie hier den Pfad zum Ordner mit Ihren KDBX-Dateien an.",
"dropboxFolderSettingsDesc": "Wählen Sie einen Ordner in Ihrer Dropbox, in dem die Dateien gespeichert werden (standardmäßig das Stammverzeichnis)",

View File

@ -1,5 +1,4 @@
{
"appBrowserAuthComplete": "Authentification terminée, vous pouvez fermer cet onglet.",
"months": [
"Janvier",
"Février",
@ -62,8 +61,8 @@
"history": "historique",
"template": "modèle",
"notImplemented": "Non Implémenté",
"saveChanges": "Sauvegarder les changements",
"discardChanges": "Annuler les changements",
"saveChanges": "Sauvegarder les modifications",
"discardChanges": "Annuler les modifications",
"advanced": "Avancé",
"shortcuts": "Raccourcis",
"help": "Aide",
@ -101,26 +100,26 @@
"alertDoNotAsk": "Ne plus me le redemander",
"appBeta": "ATTENTION: version beta, aperçu seulement",
"footerOpen": "Ouvrir/Nouveau",
"footerSyncError": "Erreur de synchro",
"footerSyncError": "Erreur de synchronisation",
"footerTitleGen": "Générer",
"footerTitleLock": "Verrouiller",
"genLen": "Longueur",
"genNewPass": "Nouveau mot de passe",
"genPresetDefault": "réglages par défaut",
"genPresetDerived": "comme ancien mot de passe",
"genPresetDerived": "identique à l'ancien mot de passe",
"genPresetPronounceable": "prononçable",
"genPresetMed": "longueur moyenne",
"genPresetLong": "long",
"genPresetPin4": "code à 4 chiffres",
"genPresetMac": "adresse MAC",
"genPresetHash128": "hash 128-bit",
"genPresetHash256": "hash 256-bit",
"genPresetHash128": "hash 128 bits",
"genPresetHash256": "hash 256 bits",
"genHidePass": "Masquer le mot de passe",
"genShowPass": "Afficher le mot de passe",
"grpTitle": "Groupe",
"grpSearch": "Activer la recherche dans les entrées de ce groupe",
"grpAutoType": "Activer l'auto-complétion",
"grpAutoTypeSeq": "Séquence auto-complétion",
"grpAutoTypeSeq": "Séquence d'auto-complétion",
"grpAutoTypeSeqDefault": "Utiliser la séquence d'auto-complétion par défaut",
"grpTrash": "Supprimer le groupe et toutes ses entrées",
"tagTitle": "Tag",
@ -132,7 +131,7 @@
"tagExistsBody": "Un tag existe déjà avec ce nom. Merci de choisir un autre nom.",
"tagBadName": "Nom invalide",
"tagBadNameBody": "Un nom de tag ne peut pas contenir les caractères {}. Merci de les supprimer.",
"genPsTitle": "Générateur de préréglage",
"genPsTitle": "Préréglages du Générateur",
"genPsCreate": "Nouveau préréglage",
"genPsDelete": "Supprimer préréglage",
"genPsNew": "préréglage",
@ -144,18 +143,18 @@
"genPsDigits": "Chiffres",
"genPsSpecial": "Caractères spéciaux",
"genPsBrackets": "Parenthèses",
"genPsHigh": "Caractères ASCII hauts",
"genPsHigh": "Caractères ASCII étendus",
"genPsAmbiguous": "Caractères ambigus",
"genPsInclude": "Caractères additionnels à inclure",
"genPsExample": "Exemple de mot de passe généré",
"genPsPattern": "Modèle",
"genPsPatternHelp": "Des modèles peuvent être utilisés pour spécifier des règles de sélection de caractères. 1-AA générera un mot de passe commençant par un chiffre, suivi d'un tiret et de 2 lettres. Vous pouvez utiliser ces symboles :",
"genPsAllRanges": "Tous les caractères",
"genPsIncluded": "Symboles additionnels ajoutés au-dessus",
"keyChangeTitleRemote": "Clé maître changée",
"keyChangeMessageRemote": "La clé maître a été changée pour cette base de donnée. Merci d'entrer une nouvelle clé",
"keyChangeTitleExpired": "Clé maître expirée",
"keyChangeMessageExpired": "La clé maître pour cette base de donnée est expirée. Merci d'entrer une nouvelle clé",
"genPsIncluded": "Caractères additionnels ajoutés ci-dessus",
"keyChangeTitleRemote": "Clé Maître Modifiée",
"keyChangeMessageRemote": "La clé maître a été modifiée pour cette base de données. Merci de saisir une nouvelle clé.",
"keyChangeTitleExpired": "Clé Maître Expirée",
"keyChangeMessageExpired": "La clé maître pour cette base de donnée est expirée. Merci de saisir une nouvelle clé.",
"keyChangeRepeatPassword": "Mot de passe, encore une fois",
"keyEnter": "Entrée",
"iconFavTitle": "Télécharger et utiliser le favicon du site web",
@ -358,6 +357,7 @@
"appRightsAlert": "Protéger l'appli KeeWeb",
"appRightsAlertBody1": "Votre application KeeWeb est accessible en écriture. Nous demandons les droits administrateurs pour le mettre en écriture uniquement pour les administrateurs.",
"appRightsAlertBody2": "Vous ne voulez pas donner les permissions ? Vous pouvez le faire vous-même à partir d'un terminal",
"appBrowserAuthComplete": "Authentification terminée, vous pouvez fermer cet onglet.",
"setGenTitle": "Paramètres",
"setGenUpdate": "Mettre à jour",
"setGenNewVersion": "Une nouvelle version a été téléchargée",
@ -434,6 +434,7 @@
"setGenLockAutoType": "sur saisie auto",
"setGenLockOrSleep": "Quand l'ordinateur est verrouillé ou mis en sommeil",
"setGenStorage": "Stockage",
"setGenStorageLogout": "Déconnexion",
"setGenShowAdvanced": "Afficher les paramètres avancés",
"setGenDevTools": "Afficher les outils de développement",
"setGenTryBeta": "Essayer une fois la version beta ",
@ -588,6 +589,9 @@
"dropboxSetupDesc": "Une configuration particulière est nécessaire pour utiliser Dropbox dans une application auto-hébergée. Merci de créer votre propre application Dropbox et d'inscrire sa clé ci-dessous.",
"dropboxAppKey": "Clé Dropbox",
"dropboxAppKeyDesc": "Copier la clé de votre appli Dropbox (Réglages développeur)",
"dropboxAppKeyHint": "Votre \"Dropbox App Key\"",
"dropboxAppSecret": "Votre \"Dropbox App Secret\"",
"dropboxAppSecretDesc": "Votre \"Dropbox App Secret\" peut être trouvée à côté de votre \"Dropbox App Key\".",
"dropboxFolder": "Dossier Appli",
"dropboxFolderDesc": "Si votre appli est liée à l'espace Dropbox entier (et non un dossier), définir le dossier avec vos fichiers Kdbx ici",
"dropboxFolderSettingsDesc": "Sélectionner un dossier dans votre Dropbox où les fichiers sont stockés (à la racine par défaut)",

View File

@ -138,82 +138,87 @@ class StorageBase {
}
_httpRequestLauncher(config, onLoad) {
Launcher.resolveProxy(config.url, proxy => {
const https = Launcher.req('https');
const net = Launcher.remReq('electron').net;
const opts = Launcher.req('url').parse(config.url);
const opts = Launcher.req('url').parse(config.url);
opts.method = config.method || 'GET';
opts.headers = {
'User-Agent': navigator.userAgent,
...config.headers
};
opts.timeout = Timeouts.DefaultHttpRequest;
opts.method = config.method || 'GET';
opts.headers = {
'User-Agent': navigator.userAgent,
...config.headers
};
opts.timeout = Timeouts.DefaultHttpRequest;
let data;
if (config.data) {
if (config.dataIsMultipart) {
data = Buffer.concat(config.data.map(chunk => Buffer.from(chunk)));
} else {
data = Buffer.from(config.data);
}
opts.headers['Content-Length'] = data.byteLength;
let data;
if (config.data) {
if (config.dataIsMultipart) {
data = Buffer.concat(config.data.map(chunk => Buffer.from(chunk)));
} else {
data = Buffer.from(config.data);
}
// Electron's API doesn't like that, while node.js needs it
// opts.headers['Content-Length'] = data.byteLength;
}
if (proxy) {
opts.headers.Host = opts.host;
opts.host = proxy.host;
opts.port = proxy.port;
opts.path = config.url;
}
const req = net.request(opts);
const req = https.request(opts);
req.on('response', res => {
const chunks = [];
res.on('data', chunk => chunks.push(chunk));
res.on('end', () => {
this.logger.debug(
'HTTP response',
opts.method,
config.url,
res.statusCode,
res.headers
);
let response = Buffer.concat(chunks);
if (config.responseType === 'json') {
try {
response = JSON.parse(response.toString('utf8'));
} catch (e) {
return config.error && config.error('json parse error');
}
} else {
response = response.buffer.slice(
response.byteOffset,
response.byteOffset + response.length
);
}
onLoad({
status: res.statusCode,
response,
getResponseHeader: name => res.headers[name.toLowerCase()]
});
});
});
req.on('error', e => {
this.logger.error('HTTP error', opts.method, config.url, e);
return config.error && config.error('network error', {});
});
req.on('timeout', () => {
req.abort();
return config.error && config.error('timeout', {});
});
if (data) {
req.write(data);
}
req.end();
let closed = false;
req.on('close', () => {
closed = true;
});
req.on('response', res => {
const chunks = [];
const onClose = () => {
this.logger.debug(
'HTTP response',
opts.method,
config.url,
res.statusCode,
res.headers
);
let response = Buffer.concat(chunks);
if (config.responseType === 'json') {
try {
response = JSON.parse(response.toString('utf8'));
} catch (e) {
return config.error && config.error('json parse error');
}
} else {
response = response.buffer.slice(
response.byteOffset,
response.byteOffset + response.length
);
}
onLoad({
status: res.statusCode,
response,
getResponseHeader: name => res.headers[name.toLowerCase()]
});
};
res.on('data', chunk => {
chunks.push(chunk);
if (closed && !res.readable) {
// sometimes 'close' event arrives faster in Electron
onClose();
}
});
// in Electron it's not res.on('end'), like in node.js, which is a bit weird
req.on('close', onClose);
});
req.on('error', e => {
this.logger.error('HTTP error', opts.method, config.url, e);
return config.error && config.error('network error', {});
});
req.on('timeout', () => {
req.abort();
return config.error && config.error('timeout', {});
});
if (data) {
req.write(data);
}
req.end();
}
_openPopup(url, title, width, height, extras) {

View File

@ -1,6 +1,6 @@
{
"name": "KeeWeb",
"version": "1.14.0",
"version": "1.14.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "KeeWeb",
"version": "1.14.0",
"version": "1.14.1",
"description": "Free cross-platform password manager compatible with KeePass",
"main": "main.js",
"homepage": "https://keeweb.info",

76
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "keeweb",
"version": "1.14.0",
"version": "1.14.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -2090,10 +2090,11 @@
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
},
"asar": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/asar/-/asar-2.0.3.tgz",
"integrity": "sha512-QdHKO+HOYVtE4B/M3up3i4LSJeJgsa2CTVBrjBf9GgLUPGGUFZowcdJ5yE4gOJuRAHNdqB9JFeRfFfaOu5x8Rw==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/asar/-/asar-2.1.0.tgz",
"integrity": "sha512-d2Ovma+bfqNpvBzY/KU8oPY67ZworixTpkjSx0PCXnQi67c2cXmssaTxpFDUM0ttopXoGx/KRxNg/GDThYbXQA==",
"requires": {
"@types/glob": "^7.1.1",
"chromium-pickle-js": "^0.2.0",
"commander": "^2.20.0",
"cuint": "^0.2.2",
@ -4229,17 +4230,17 @@
}
},
"cross-zip": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-2.1.6.tgz",
"integrity": "sha512-xLIETNkzRcU6jGRzenJyRFxahbtP4628xEKMTI/Ql0Vu8m4h8M7uRLVi7E5OYHuJ6VQPsG4icJumKAFUvfm0+A==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-3.0.0.tgz",
"integrity": "sha512-cm+l8PJ6WiSQmKZ/x8DGvUm2u/3FX2JFs1AFd18gdHaVhP5Lf4oE6Jrj2Jd05JYSioz5x+nIRVp0zBQuzuCRcQ==",
"requires": {
"rimraf": "^3.0.0"
},
"dependencies": {
"rimraf": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
"integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"requires": {
"glob": "^7.1.3"
}
@ -5130,13 +5131,13 @@
}
},
"electron-packager": {
"version": "14.2.0",
"resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-14.2.0.tgz",
"integrity": "sha512-6JHv0zfRpxpFta4MJBt7RtcS6zhtl4f76ombZKqicgl5I3Ighx8WBQRYUKMdAO3tNYEq/B0i1FYsBp6oXzlTfA==",
"version": "14.2.1",
"resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-14.2.1.tgz",
"integrity": "sha512-g6y3BVrAOz/iavKD+VMFbehrQcwCWuA3CZvVbmmbQuCfegGA1ytwWn0BNIDDrEdbuz31Fti7mnNHhb5L+3Wq9A==",
"requires": {
"@electron/get": "^1.6.0",
"asar": "^2.0.1",
"cross-zip": "^2.1.5",
"cross-zip": "^3.0.0",
"debug": "^4.0.1",
"electron-notarize": "^0.2.0",
"electron-osx-sign": "^0.4.11",
@ -9689,9 +9690,9 @@
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"minipass": {
"version": "3.1.1",
@ -9769,20 +9770,19 @@
}
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
}
"minimist": "^1.2.5"
}
},
"mkdirp-classic": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz",
"integrity": "sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g==",
"optional": true
},
"mocha": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz",
@ -11000,9 +11000,9 @@
"integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY="
},
"portfinder": {
"version": "1.0.25",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
"integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
"version": "1.0.26",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz",
"integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==",
"requires": {
"async": "^2.6.2",
"debug": "^3.1.1",
@ -11894,9 +11894,9 @@
}
},
"rcedit": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.1.0.tgz",
"integrity": "sha512-Nrd/65LzMjFmKpS9d2fqIxVYdW0M8ovsN0PgZhCrPMQss2yznkp6/zjEQ1a9DzzoGv2uuN3yDJAeHybOD5ZNKA=="
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.1.1.tgz",
"integrity": "sha512-N1JyXxHD2zpqqW4A77RNK1d/M+tyed9JkvL/lnUI5cf4igF/8B9FNLFCtDUhGrk2GWEPxC+RF0WXWWB3I8QC7w=="
},
"read-config-file": {
"version": "6.0.0",
@ -13873,13 +13873,13 @@
}
},
"tar-fs": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz",
"integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz",
"integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==",
"optional": true,
"requires": {
"chownr": "^1.1.1",
"mkdirp": "^0.5.1",
"mkdirp-classic": "^0.5.2",
"pump": "^3.0.0",
"tar-stream": "^2.0.0"
}

View File

@ -1,6 +1,6 @@
{
"name": "keeweb",
"version": "1.14.0",
"version": "1.14.1",
"description": "Free cross-platform password manager compatible with KeePass",
"main": "Gruntfile.js",
"private": true,

View File

@ -8,10 +8,10 @@
"email": "antelle.net@gmail.com",
"url": "http://antelle.net"
},
"licence": "MIT",
"license": "MIT",
"url": "https://keeweb.info",
"resources": {
"js": "GkZuvYFiRx6UZk1hvJjInhmunMxyFVuI3u4UpCB6rjho1hgfR9CtebwU6dyTYARfivzZAsD4kVxx8TnbsU+Wu4PuS0cvE9e7+C3I8yGwoTgpk8GOCnORsaQBXMRvi93Snb/B8TXwT7wpSVFraiNGsuf5VKGZqN7YB0DyZHmeAtZf8KXMeg5XrSiwUtTokdozFQKSAx9pyKpIBvEQ7c03wQfZu9L6xSYJsLTjNje2UbEH6TS7yVt5F1lqaitaHRUMAYGbVgZkAK75jboUitWKebXaJUJbF8VxWJJDp7cmYkq6Zc6Qy1uTElzAu8sR/jTxHsJ0UpgaUeXxqpMZjLEjYQ=="
},
"publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1QB+yQofkqIHbHFVAtWhjEFjaxvNekyQx/aK7nEpZzqM8ReoVWbJGVA+7z7MhymwZanbL8uAUrSpNTp5eFWltDksxqHqmXT4UcFU+4reLjYfgwjIaA3c9Q+2JA1Iowqbv3NDcDKm6Ug+dROr04VDCfYE4WRYgGdTYHDbJs5svxUgQ25uc0KKUWAvhYbSKsw43AwmbPbKkHdfZHiS5ZST99HVEJWxn3Kd2zLY9Kk70nu9MzypMLDqxUqjKgdeRCIyZeAYzB75miH3B5vMKhFcdmA8+D6WU2N+6gzKsY5BfqF729uFKSTo4JUKQ5fMU0lKSDHG4qGrkgnURfAUuj9YMQIDAQAB"
}
}

View File

@ -8,11 +8,11 @@
"email": "antelle.net@gmail.com",
"url": "http://antelle.net"
},
"licence": "MIT",
"license": "MIT",
"url": "https://keeweb.info",
"resources": {
"js": "CYFYasnvIMZdFX6C4MB8IG8viR967TR2pnopW9vSNAPkBVCnKp7/Q5T6vOnxrbC/CBJMCPR4DiPnu/sLMce7AgSh60ubgOKdke5eQSxEwMZ4JV3sA5WaeEffzEFwwkqkSRFRss7tAeHjcwgjsshzbykzWJ4YGtwGtBiOgEcLFciFam9aQmyTBkyAVdx9qAilinSqKVmn4zCl2/+ycS4a6HaPf8Nz47TPskB2txyzK6gaJJAt/tn7Exeeoh3LI2bAMwsxiAdyKMaLKMU0A0k/iEmrQv3enBquPr7vR9YaesOawZB2U8fwLdzB23nF5vGq8N1kBVH8xg6Nz5AYwuO10A==",
"css": "P3qX1ccKLeHI/75sWC/46O/Qs8cq6UFyoW2qPYRn05q8dtAfXr7YKXEndt1BqSqaa+ZanaA6TDmb5FJ/GKQpG1KfuXy+ug92uwSvp6QUd7/hj++OR6RRY/bsL4hA9J2BwMB3jYc58lCPcK2jcu3HCYX5T+I1tFLmqOAKbTUGQxl+a4lc0w/zAq9sEFIvm7Nj66HhF7TMqVoPt6pUBz7oWdTYuKJ3rz46rLd9kzTeaeG6WxGorFc6Sk5tlvy+o9e5S2T0lHJwCHw24rMeOSgwV8rA/RXXnKowVc9Qbb3KwVh2TlKUWRtUuygIIgSsp4GmzT+w8+5hXke7iXDTGczp1Q=="
},
"publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1QB+yQofkqIHbHFVAtWhjEFjaxvNekyQx/aK7nEpZzqM8ReoVWbJGVA+7z7MhymwZanbL8uAUrSpNTp5eFWltDksxqHqmXT4UcFU+4reLjYfgwjIaA3c9Q+2JA1Iowqbv3NDcDKm6Ug+dROr04VDCfYE4WRYgGdTYHDbJs5svxUgQ25uc0KKUWAvhYbSKsw43AwmbPbKkHdfZHiS5ZST99HVEJWxn3Kd2zLY9Kk70nu9MzypMLDqxUqjKgdeRCIyZeAYzB75miH3B5vMKhFcdmA8+D6WU2N+6gzKsY5BfqF729uFKSTo4JUKQ5fMU0lKSDHG4qGrkgnURfAUuj9YMQIDAQAB"
}
}

View File

@ -8,7 +8,7 @@
"email": "antelle.net@gmail.com",
"url": "http://antelle.net"
},
"licence": "MIT",
"license": "MIT",
"url": "https://keeweb.info",
"resources": {
"css": "0cE6WVYhFJAcn8viGNQlJMFJTFvw0vuwKk3z6WHBd1b5WkqEB6a31lW9VwTe3mCdaKYvm3wXmW0COMPI4NWu32yTlAZ/DPglOtR4HHxDAkQhwIlCBGPD43SZqE+iqSxJc5dRutlQjwGUVXkKRQ6ggcYo2H715gVWx0n4uYx4V7fR/rTI+juNF1+1dCSipxqi+5JHk1Y/qspZmB73Nt9Dbu1OsUERlR5DFHUFooJUJHRLszkEFjmvtGYf/a8MgyQCjZ6di6UrsLc83p6GFrxhPGSu6MKmBPqRW1ldkHP7dXjSSrKkQ5G1k9Op86FlNsRvawgcQohSmEXloC/AmejLdA=="
@ -18,4 +18,4 @@
"name": "rainbow",
"title": "Rainbow"
}
}
}

View File

@ -8,10 +8,10 @@
"email": "antelle.net@gmail.com",
"url": "http://antelle.net"
},
"licence": "MIT",
"license": "MIT",
"url": "https://keeweb.info",
"resources": {
"js": "wCVKnMnyvsijMmgIKsv5a2lsogcrchL+X/W+UeJyROvGBClTZKEj764d/Ss7UvmmA1mf8XLYIqiHf6HIsal+0LOEYEmsLY/vyb+/ziwq33XuB+uMe0u8ecOjM2dT4Rq1fEOlSsv0LuEhElmG905KPjzXd61nufuS0tWezs1nVp+kH8edRM7tY67pyw0rDWcVdcGssNdGDnc7NiP7I+CTdXMRwQjsfEjynTJS2MgEM7j85h2GifWnVNqU3fwfpHIWZyp8tTkIXMxRzWo9uXQMo1MbkeTCFFSbzgzjhcIFbD18oS/nP+hwVIm6RllOzbMAN5U/YD+YKAS2jyriYPTMLQ=="
},
"publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1QB+yQofkqIHbHFVAtWhjEFjaxvNekyQx/aK7nEpZzqM8ReoVWbJGVA+7z7MhymwZanbL8uAUrSpNTp5eFWltDksxqHqmXT4UcFU+4reLjYfgwjIaA3c9Q+2JA1Iowqbv3NDcDKm6Ug+dROr04VDCfYE4WRYgGdTYHDbJs5svxUgQ25uc0KKUWAvhYbSKsw43AwmbPbKkHdfZHiS5ZST99HVEJWxn3Kd2zLY9Kk70nu9MzypMLDqxUqjKgdeRCIyZeAYzB75miH3B5vMKhFcdmA8+D6WU2N+6gzKsY5BfqF729uFKSTo4JUKQ5fMU0lKSDHG4qGrkgnURfAUuj9YMQIDAQAB"
}
}

View File

@ -8,7 +8,7 @@
"email": "antelle.net@gmail.com",
"url": "http://antelle.net"
},
"licence": "MIT",
"license": "MIT",
"url": "https://keeweb.info",
"resources": {
"loc": "iQeeuzk/MuNvmqIboqMMvz+Jyw7dHBJtqNe9ja2i8GJrjbPIG0wPgiRohSFwiAqNDrRQlvfhoNdyvp7UlGO4fAWLaN4h4IUP/iQo7CElYQFMuN+4psJnAkx7HJajtMrJ5lHH5w5aeHxVW5jEYzY0SR2zxzYqxZVifOwJmj8/oKweWzkxt7Cs/2NfcFXLnrU83IyFk75yunvbDP7jlt08mEyrfOQIwzGnsrEiEZ6ha6w0kG2cd6Mmda/12Jnk95ZpQrZcK5J+nafIXYcGwvaQhmWMjZzIWp7/tDdqhBRUhiRDFQwl3rjdubeKUBjYvxZDkDH2DPiOR8kMw2kT6mNqiQ=="

View File

@ -8,6 +8,9 @@ Release notes
`+` #1350: clearing master password after auto lock period
`-` fix #1463: copying the original url instead of adding https:
##### v1.14.1 (2020-05-02)
`-` fix #1478: fixed proxy issues with storage providers
##### v1.14.0 (2020-04-18)
`+` using OAuth authorization code grant for all storage providers
`-` fixed a number of vulnerabilities in opening untrusted kdbx files