1
0
mirror of https://github.com/S2-/pwgen.git synced 2025-08-03 01:00:04 +02:00

9 Commits

Author SHA1 Message Date
s2
6c773377b1 v1.1.7 2017-11-21 19:33:35 +01:00
s2
b0932baeea add timeout before copying password 2017-11-21 19:33:09 +01:00
s2
81d5bbb055 add a margin 2017-11-21 15:39:56 +01:00
s2
c26eba33c0 v1.1.6 2017-11-21 09:31:21 +01:00
s2
42838040d2 use crypto.getRandomValues 2017-11-21 09:30:54 +01:00
s2
8ab06aa554 remove useless css 2017-11-21 09:30:44 +01:00
s2
07b558eeb7 v1.1.5 2017-11-21 09:13:36 +01:00
s2
be3046051a do not repeat numbers 2017-11-21 09:11:22 +01:00
s2
17c92ce99a update screenshot 2017-11-21 08:33:42 +01:00
5 changed files with 48 additions and 33 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -2,7 +2,7 @@
"description": "Just a toolbar button that generates a password and copies it to your clipboard.", "description": "Just a toolbar button that generates a password and copies it to your clipboard.",
"manifest_version": 2, "manifest_version": 2,
"name": "pwgen reloaded", "name": "pwgen reloaded",
"version": "1.1.4", "version": "1.1.7",
"homepage_url": "https://github.com/S2-/pwgen", "homepage_url": "https://github.com/S2-/pwgen",
"icons": { "icons": {
"48": "icons/lock-48.png" "48": "icons/lock-48.png"

View File

@@ -2,6 +2,10 @@ body {
margin: 15px; margin: 15px;
} }
div {
margin-top: 5px;
}
input[type="number"] { input[type="number"] {
-moz-appearance: none; -moz-appearance: none;
color: var(--in-content-text-color); color: var(--in-content-text-color);

View File

@@ -2,10 +2,9 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="chrome://global/skin/global.css" type="text/css" /> <link rel="stylesheet" href="chrome://global/skin/global.css" type="text/css" />
<link rel="stylesheet" href="chrome://global/skin/in-content/common.css" type="text/css" /> <link rel="stylesheet" href="chrome://global/skin/in-content/common.css" type="text/css" />
<link rel="stylesheet" href="chrome://mozapps/content/extensions/extensions.css" type="text/css" />
<link rel="stylesheet" href="resource://gre-resources/forms.css" type="text/css" />
<link rel="stylesheet" href="pwgen.css"/> <link rel="stylesheet" href="pwgen.css"/>
</head> </head>

View File

@@ -1,12 +1,17 @@
function randPassword(length, includeSpecial) { function randPassword(length, includeSpecial) {
let pwdChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; let pwdChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
if (includeSpecial) { if (includeSpecial) {
pwdChars += '°^!"§$%&/()=?`´\\}][{²³€|<>-.,;:*+_µ@~'; pwdChars += '°^!"§$%&/()=?`´\\}][{²³€|<>-.,;:*+_µ@~';
} }
let randPassword = Array(length).fill(pwdChars).map(function(x) {
return x[Math.floor(Math.random() * x.length)] let randValues = new Uint32Array(length);
}).join(''); let randPwd = '';
return randPassword; window.crypto.getRandomValues(randValues);
for(i=0; i<length; i++)
{
randPwd += pwdChars[randValues[i] % pwdChars.length];
}
return randPwd;
} }
function getParams() { function getParams() {
@@ -30,36 +35,43 @@ function saveOptions(options) {
} }
function copypasstoclippboard() { function copypasstoclippboard() {
var copyText = document.getElementById('pw'); setTimeout(function() {
copyText.select(); var copyText = document.getElementById('pw');
document.execCommand('copy'); copyText.select();
document.execCommand('copy');
}, 100);
} }
document.getElementById('new').addEventListener('click', (ev) => { document.addEventListener('DOMContentLoaded', function() {
ev.preventDefault();
var params = getParams();
document.getElementById('pw').value = randPassword(params.length, params.special);
});
document.getElementById('copy').addEventListener('click', (ev) => { document.getElementById('new').addEventListener('click', (ev) => {
ev.preventDefault(); ev.preventDefault();
copypasstoclippboard(); var params = getParams();
}); document.getElementById('pw').value = randPassword(params.length, params.special);
var list = document.getElementsByTagName('input');
for (var i = 0; i < list.length; i++) {
list[i].addEventListener('change', (ev) => {
saveOptions(getParams());
}); });
}
loadOptions().then((options) => { document.getElementById('copy').addEventListener('click', (ev) => {
document.getElementById('length').value = options.length; ev.preventDefault();
document.getElementById('special').checked = options.special;
document.getElementById('directcopy').checked = options.directcopy;
document.getElementById('pw').value = randPassword(getParams().length, getParams().special);
if (options.directcopy) {
copypasstoclippboard(); copypasstoclippboard();
});
var list = document.getElementsByTagName('input');
for (var i = 0; i < list.length; i++) {
list[i].addEventListener('change', (ev) => {
saveOptions(getParams());
});
} }
loadOptions().then((options) => {
document.getElementById('length').value = options.length;
document.getElementById('special').checked = options.special;
document.getElementById('directcopy').checked = options.directcopy;
document.getElementById('pw').value = randPassword(getParams().length, getParams().special);
if (options.directcopy) {
copypasstoclippboard();
}
});
}); });