mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Fixed password generation for keepasshttp
This commit is contained in:
parent
b87097a7ab
commit
75564c8fb5
@ -104,6 +104,7 @@ set(keepassx_SOURCES
|
|||||||
gui/group/GroupView.cpp
|
gui/group/GroupView.cpp
|
||||||
http/AccessControlDialog.cpp
|
http/AccessControlDialog.cpp
|
||||||
http/EntryConfig.cpp
|
http/EntryConfig.cpp
|
||||||
|
http/HttpPasswordGeneratorWidget.cpp
|
||||||
http/HttpSettings.cpp
|
http/HttpSettings.cpp
|
||||||
http/OptionDialog.cpp
|
http/OptionDialog.cpp
|
||||||
http/Protocol.cpp
|
http/Protocol.cpp
|
||||||
@ -189,6 +190,7 @@ set(keepassx_MOC
|
|||||||
gui/group/GroupView.h
|
gui/group/GroupView.h
|
||||||
http/AccessControlDialog.h
|
http/AccessControlDialog.h
|
||||||
http/EntryConfig.h
|
http/EntryConfig.h
|
||||||
|
http/HttpPasswordGeneratorWidget.h
|
||||||
http/OptionDialog.h
|
http/OptionDialog.h
|
||||||
http/Protocol.h
|
http/Protocol.h
|
||||||
http/Server.h
|
http/Server.h
|
||||||
@ -221,6 +223,7 @@ set(keepassx_FORMS
|
|||||||
gui/entry/EditEntryWidgetMain.ui
|
gui/entry/EditEntryWidgetMain.ui
|
||||||
gui/group/EditGroupWidgetMain.ui
|
gui/group/EditGroupWidgetMain.ui
|
||||||
http/AccessControlDialog.ui
|
http/AccessControlDialog.ui
|
||||||
|
http/HttpPasswordGeneratorWidget.ui
|
||||||
http/OptionDialog.ui
|
http/OptionDialog.ui
|
||||||
)
|
)
|
||||||
|
|
||||||
|
148
src/http/HttpPasswordGeneratorWidget.cpp
Normal file
148
src/http/HttpPasswordGeneratorWidget.cpp
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Felix Geyer <debfx@fobos.de>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 or (at your option)
|
||||||
|
* version 3 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "HttpPasswordGeneratorWidget.h"
|
||||||
|
#include "ui_HttpPasswordGeneratorWidget.h"
|
||||||
|
|
||||||
|
#include <QLineEdit>
|
||||||
|
|
||||||
|
#include "core/Config.h"
|
||||||
|
#include "core/PasswordGenerator.h"
|
||||||
|
#include "core/FilePath.h"
|
||||||
|
|
||||||
|
HttpPasswordGeneratorWidget::HttpPasswordGeneratorWidget(QWidget* parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
, m_updatingSpinBox(false)
|
||||||
|
, m_generator(new PasswordGenerator())
|
||||||
|
, m_ui(new Ui::HttpPasswordGeneratorWidget())
|
||||||
|
{
|
||||||
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
|
connect(m_ui->buttonApply, SIGNAL(clicked()), SLOT(saveSettings()));
|
||||||
|
|
||||||
|
connect(m_ui->sliderLength, SIGNAL(valueChanged(int)), SLOT(sliderMoved()));
|
||||||
|
connect(m_ui->spinBoxLength, SIGNAL(valueChanged(int)), SLOT(spinBoxChanged()));
|
||||||
|
|
||||||
|
connect(m_ui->optionButtons, SIGNAL(buttonClicked(int)), SLOT(updateGenerator()));
|
||||||
|
m_ui->buttonApply->setEnabled(true);
|
||||||
|
|
||||||
|
loadSettings();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpPasswordGeneratorWidget::~HttpPasswordGeneratorWidget()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpPasswordGeneratorWidget::loadSettings()
|
||||||
|
{
|
||||||
|
m_ui->checkBoxLower->setChecked(config()->get("Http/generator/LowerCase", true).toBool());
|
||||||
|
m_ui->checkBoxUpper->setChecked(config()->get("Http/generator/UpperCase", true).toBool());
|
||||||
|
m_ui->checkBoxNumbers->setChecked(config()->get("Http/generator/Numbers", true).toBool());
|
||||||
|
m_ui->checkBoxSpecialChars->setChecked(config()->get("Http/generator/SpecialChars", false).toBool());
|
||||||
|
|
||||||
|
m_ui->checkBoxExcludeAlike->setChecked(config()->get("Http/generator/ExcludeAlike", true).toBool());
|
||||||
|
m_ui->checkBoxEnsureEvery->setChecked(config()->get("Http/generator/EnsureEvery", true).toBool());
|
||||||
|
|
||||||
|
m_ui->spinBoxLength->setValue(config()->get("Http/generator/Length", 16).toInt());
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpPasswordGeneratorWidget::saveSettings()
|
||||||
|
{
|
||||||
|
config()->set("Http/generator/LowerCase", m_ui->checkBoxLower->isChecked());
|
||||||
|
config()->set("Http/generator/UpperCase", m_ui->checkBoxUpper->isChecked());
|
||||||
|
config()->set("Http/generator/Numbers", m_ui->checkBoxNumbers->isChecked());
|
||||||
|
config()->set("Http/generator/SpecialChars", m_ui->checkBoxSpecialChars->isChecked());
|
||||||
|
|
||||||
|
config()->set("Http/generator/ExcludeAlike", m_ui->checkBoxExcludeAlike->isChecked());
|
||||||
|
config()->set("Http/generator/EnsureEvery", m_ui->checkBoxEnsureEvery->isChecked());
|
||||||
|
|
||||||
|
config()->set("Http/generator/Length", m_ui->spinBoxLength->value());
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpPasswordGeneratorWidget::reset()
|
||||||
|
{
|
||||||
|
updateGenerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpPasswordGeneratorWidget::sliderMoved()
|
||||||
|
{
|
||||||
|
if (m_updatingSpinBox) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_ui->spinBoxLength->setValue(m_ui->sliderLength->value());
|
||||||
|
|
||||||
|
updateGenerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpPasswordGeneratorWidget::spinBoxChanged()
|
||||||
|
{
|
||||||
|
// Interlock so that we don't update twice - this causes issues as the spinbox can go higher than slider
|
||||||
|
m_updatingSpinBox = true;
|
||||||
|
|
||||||
|
m_ui->sliderLength->setValue(m_ui->spinBoxLength->value());
|
||||||
|
|
||||||
|
m_updatingSpinBox = false;
|
||||||
|
|
||||||
|
updateGenerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
PasswordGenerator::CharClasses HttpPasswordGeneratorWidget::charClasses()
|
||||||
|
{
|
||||||
|
PasswordGenerator::CharClasses classes;
|
||||||
|
|
||||||
|
if (m_ui->checkBoxLower->isChecked()) {
|
||||||
|
classes |= PasswordGenerator::LowerLetters;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_ui->checkBoxUpper->isChecked()) {
|
||||||
|
classes |= PasswordGenerator::UpperLetters;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_ui->checkBoxNumbers->isChecked()) {
|
||||||
|
classes |= PasswordGenerator::Numbers;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_ui->checkBoxSpecialChars->isChecked()) {
|
||||||
|
classes |= PasswordGenerator::SpecialCharacters;
|
||||||
|
}
|
||||||
|
|
||||||
|
return classes;
|
||||||
|
}
|
||||||
|
|
||||||
|
PasswordGenerator::GeneratorFlags HttpPasswordGeneratorWidget::generatorFlags()
|
||||||
|
{
|
||||||
|
PasswordGenerator::GeneratorFlags flags;
|
||||||
|
|
||||||
|
if (m_ui->checkBoxExcludeAlike->isChecked()) {
|
||||||
|
flags |= PasswordGenerator::ExcludeLookAlike;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_ui->checkBoxEnsureEvery->isChecked()) {
|
||||||
|
flags |= PasswordGenerator::CharFromEveryGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpPasswordGeneratorWidget::updateGenerator()
|
||||||
|
{
|
||||||
|
m_generator->setLength(m_ui->spinBoxLength->value());
|
||||||
|
m_generator->setCharClasses(charClasses());
|
||||||
|
m_generator->setFlags(generatorFlags());
|
||||||
|
}
|
60
src/http/HttpPasswordGeneratorWidget.h
Normal file
60
src/http/HttpPasswordGeneratorWidget.h
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Felix Geyer <debfx@fobos.de>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 or (at your option)
|
||||||
|
* version 3 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef KEEPASSX_PASSWORDGENERATORWIDGET_H
|
||||||
|
#define KEEPASSX_PASSWORDGENERATORWIDGET_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QComboBox>
|
||||||
|
|
||||||
|
#include "core/Global.h"
|
||||||
|
#include "core/PasswordGenerator.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class HttpPasswordGeneratorWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
class PasswordGenerator;
|
||||||
|
|
||||||
|
class HttpPasswordGeneratorWidget : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit HttpPasswordGeneratorWidget(QWidget* parent = Q_NULLPTR);
|
||||||
|
~HttpPasswordGeneratorWidget();
|
||||||
|
void loadSettings();
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void saveSettings();
|
||||||
|
void sliderMoved();
|
||||||
|
void spinBoxChanged();
|
||||||
|
|
||||||
|
void updateGenerator();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_updatingSpinBox;
|
||||||
|
|
||||||
|
PasswordGenerator::CharClasses charClasses();
|
||||||
|
PasswordGenerator::GeneratorFlags generatorFlags();
|
||||||
|
|
||||||
|
const QScopedPointer<PasswordGenerator> m_generator;
|
||||||
|
const QScopedPointer<Ui::HttpPasswordGeneratorWidget> m_ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // KEEPASSX_PASSWORDGENERATORWIDGET_H
|
227
src/http/HttpPasswordGeneratorWidget.ui
Normal file
227
src/http/HttpPasswordGeneratorWidget.ui
Normal file
@ -0,0 +1,227 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>HttpPasswordGeneratorWidget</class>
|
||||||
|
<widget class="QWidget" name="HttpPasswordGeneratorWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>434</width>
|
||||||
|
<height>250</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="labelLength">
|
||||||
|
<property name="text">
|
||||||
|
<string>Length:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QSlider" name="sliderLength">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>64</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="tickPosition">
|
||||||
|
<enum>QSlider::TicksBelow</enum>
|
||||||
|
</property>
|
||||||
|
<property name="tickInterval">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinBoxLength">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Character Types</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="checkBoxUpper">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Upper Case Letters</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>A-Z</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">optionButtons</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="checkBoxLower">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Lower Case Letters</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>a-z</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">optionButtons</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="checkBoxNumbers">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Numbers</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>0-9</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">optionButtons</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="checkBoxSpecialChars">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Special Characters</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>/*_& ...</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">optionButtons</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBoxExcludeAlike">
|
||||||
|
<property name="text">
|
||||||
|
<string>Exclude look-alike characters</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">optionButtons</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBoxEnsureEvery">
|
||||||
|
<property name="text">
|
||||||
|
<string>Ensure that the password contains characters from every group</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">optionButtons</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="buttonApply">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Accept</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>PasswordComboBox</class>
|
||||||
|
<extends>QComboBox</extends>
|
||||||
|
<header location="global">gui/PasswordComboBox.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<tabstops>
|
||||||
|
<tabstop>sliderLength</tabstop>
|
||||||
|
<tabstop>spinBoxLength</tabstop>
|
||||||
|
<tabstop>checkBoxUpper</tabstop>
|
||||||
|
<tabstop>checkBoxLower</tabstop>
|
||||||
|
<tabstop>checkBoxNumbers</tabstop>
|
||||||
|
<tabstop>checkBoxSpecialChars</tabstop>
|
||||||
|
<tabstop>checkBoxExcludeAlike</tabstop>
|
||||||
|
<tabstop>checkBoxEnsureEvery</tabstop>
|
||||||
|
<tabstop>buttonApply</tabstop>
|
||||||
|
</tabstops>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
<buttongroups>
|
||||||
|
<buttongroup name="optionButtons">
|
||||||
|
<property name="exclusive">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</buttongroup>
|
||||||
|
</buttongroups>
|
||||||
|
</ui>
|
@ -14,6 +14,8 @@
|
|||||||
#include "HttpSettings.h"
|
#include "HttpSettings.h"
|
||||||
#include "core/Config.h"
|
#include "core/Config.h"
|
||||||
|
|
||||||
|
PasswordGenerator HttpSettings::m_generator;
|
||||||
|
|
||||||
bool HttpSettings::isEnabled()
|
bool HttpSettings::isEnabled()
|
||||||
{
|
{
|
||||||
return config()->get("Http/Enabled", true).toBool();
|
return config()->get("Http/Enabled", true).toBool();
|
||||||
@ -126,72 +128,73 @@ void HttpSettings::setSupportKphFields(bool supportKphFields)
|
|||||||
|
|
||||||
bool HttpSettings::passwordUseNumbers()
|
bool HttpSettings::passwordUseNumbers()
|
||||||
{
|
{
|
||||||
return config()->get("Http/PasswordUseNumbers", true).toBool();
|
return config()->get("Http/generator/Numbers", true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HttpSettings::setPasswordUseNumbers(bool useNumbers)
|
void HttpSettings::setPasswordUseNumbers(bool useNumbers)
|
||||||
{
|
{
|
||||||
config()->set("Http/PasswordUseNumbers", useNumbers);
|
config()->set("Http/generator/Numbers", useNumbers);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HttpSettings::passwordUseLowercase()
|
bool HttpSettings::passwordUseLowercase()
|
||||||
{
|
{
|
||||||
return config()->get("Http/PasswordUseLowercase", true).toBool();
|
return config()->get("Http/generator/LowerCase", true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HttpSettings::setPasswordUseLowercase(bool useLowercase)
|
void HttpSettings::setPasswordUseLowercase(bool useLowercase)
|
||||||
{
|
{
|
||||||
config()->set("Http/PasswordUseLowercase", useLowercase);
|
config()->set("Http/generator/LowerCase", useLowercase);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HttpSettings::passwordUseUppercase()
|
bool HttpSettings::passwordUseUppercase()
|
||||||
{
|
{
|
||||||
return config()->get("Http/PasswordUseUppercase", true).toBool();
|
return config()->get("Http/generator/UpperCase", true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HttpSettings::setPasswordUseUppercase(bool useUppercase)
|
void HttpSettings::setPasswordUseUppercase(bool useUppercase)
|
||||||
{
|
{
|
||||||
config()->set("Http/PasswordUseUppercase", useUppercase);
|
config()->set("Http/generator/UpperCase", useUppercase);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HttpSettings::passwordUseSpecial()
|
bool HttpSettings::passwordUseSpecial()
|
||||||
{
|
{
|
||||||
return config()->get("Http/PasswordUseSpecial", false).toBool();
|
return config()->get("Http/generator/SpecialChars", false).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HttpSettings::setPasswordUseSpecial(bool useSpecial)
|
void HttpSettings::setPasswordUseSpecial(bool useSpecial)
|
||||||
{
|
{
|
||||||
config()->set("Http/PasswordUseSpecial", useSpecial);
|
config()->set("Http/generator/SpecialChars", useSpecial);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HttpSettings::passwordEveryGroup()
|
bool HttpSettings::passwordEveryGroup()
|
||||||
{
|
{
|
||||||
return config()->get("Http/PasswordEveryGroup", true).toBool();
|
return config()->get("Http/generator/EnsureEvery", true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HttpSettings::setPasswordEveryGroup(bool everyGroup)
|
void HttpSettings::setPasswordEveryGroup(bool everyGroup)
|
||||||
{
|
{
|
||||||
config()->get("Http/PasswordEveryGroup", everyGroup);
|
config()->get("Http/generator/EnsureEvery", everyGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HttpSettings::passwordExcludeAlike()
|
bool HttpSettings::passwordExcludeAlike()
|
||||||
{
|
{
|
||||||
return config()->get("Http/PasswordExcludeAlike", true).toBool();
|
return config()->get("Http/generator/ExcludeAlike", true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HttpSettings::setPasswordExcludeAlike(bool excludeAlike)
|
void HttpSettings::setPasswordExcludeAlike(bool excludeAlike)
|
||||||
{
|
{
|
||||||
config()->set("Http/PasswordExcludeAlike", excludeAlike);
|
config()->set("Http/generator/ExcludeAlike", excludeAlike);
|
||||||
}
|
}
|
||||||
|
|
||||||
int HttpSettings::passwordLength()
|
int HttpSettings::passwordLength()
|
||||||
{
|
{
|
||||||
return config()->get("Http/PasswordLength", 20).toInt();
|
return config()->get("Http/generator/Length", 20).toInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HttpSettings::setPasswordLength(int length)
|
void HttpSettings::setPasswordLength(int length)
|
||||||
{
|
{
|
||||||
config()->set("Http/PasswordLength", length);
|
config()->set("Http/generator/Length", length);
|
||||||
|
m_generator.setLength(length);
|
||||||
}
|
}
|
||||||
|
|
||||||
PasswordGenerator::CharClasses HttpSettings::passwordCharClasses()
|
PasswordGenerator::CharClasses HttpSettings::passwordCharClasses()
|
||||||
@ -217,3 +220,12 @@ PasswordGenerator::GeneratorFlags HttpSettings::passwordGeneratorFlags()
|
|||||||
flags |= PasswordGenerator::CharFromEveryGroup;
|
flags |= PasswordGenerator::CharFromEveryGroup;
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString HttpSettings::generatePassword()
|
||||||
|
{
|
||||||
|
m_generator.setLength(passwordLength());
|
||||||
|
m_generator.setCharClasses(passwordCharClasses());
|
||||||
|
m_generator.setFlags(passwordGeneratorFlags());
|
||||||
|
|
||||||
|
return m_generator.generatePassword();
|
||||||
|
}
|
||||||
|
@ -59,6 +59,10 @@ public:
|
|||||||
static void setPasswordLength(int length);
|
static void setPasswordLength(int length);
|
||||||
static PasswordGenerator::CharClasses passwordCharClasses();
|
static PasswordGenerator::CharClasses passwordCharClasses();
|
||||||
static PasswordGenerator::GeneratorFlags passwordGeneratorFlags();
|
static PasswordGenerator::GeneratorFlags passwordGeneratorFlags();
|
||||||
|
static QString generatePassword();
|
||||||
|
|
||||||
|
private:
|
||||||
|
static PasswordGenerator m_generator;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // HTTPSETTINGS_H
|
#endif // HTTPSETTINGS_H
|
||||||
|
@ -43,6 +43,7 @@ void OptionDialog::loadSettings()
|
|||||||
else
|
else
|
||||||
ui->sortByTitle->setChecked(true);
|
ui->sortByTitle->setChecked(true);
|
||||||
|
|
||||||
|
/*
|
||||||
ui->checkBoxLower->setChecked(settings.passwordUseLowercase());
|
ui->checkBoxLower->setChecked(settings.passwordUseLowercase());
|
||||||
ui->checkBoxNumbers->setChecked(settings.passwordUseNumbers());
|
ui->checkBoxNumbers->setChecked(settings.passwordUseNumbers());
|
||||||
ui->checkBoxUpper->setChecked(settings.passwordUseUppercase());
|
ui->checkBoxUpper->setChecked(settings.passwordUseUppercase());
|
||||||
@ -50,6 +51,7 @@ void OptionDialog::loadSettings()
|
|||||||
ui->checkBoxEnsureEvery->setChecked(settings.passwordEveryGroup());
|
ui->checkBoxEnsureEvery->setChecked(settings.passwordEveryGroup());
|
||||||
ui->checkBoxExcludeAlike->setChecked(settings.passwordExcludeAlike());
|
ui->checkBoxExcludeAlike->setChecked(settings.passwordExcludeAlike());
|
||||||
ui->spinBoxLength->setValue(settings.passwordLength());
|
ui->spinBoxLength->setValue(settings.passwordLength());
|
||||||
|
*/
|
||||||
|
|
||||||
ui->alwaysAllowAccess->setChecked(settings.alwaysAllowAccess());
|
ui->alwaysAllowAccess->setChecked(settings.alwaysAllowAccess());
|
||||||
ui->alwaysAllowUpdate->setChecked(settings.alwaysAllowUpdate());
|
ui->alwaysAllowUpdate->setChecked(settings.alwaysAllowUpdate());
|
||||||
@ -67,6 +69,7 @@ void OptionDialog::saveSettings()
|
|||||||
settings.setMatchUrlScheme(ui->matchUrlScheme->isChecked());
|
settings.setMatchUrlScheme(ui->matchUrlScheme->isChecked());
|
||||||
settings.setSortByUsername(ui->sortByUsername->isChecked());
|
settings.setSortByUsername(ui->sortByUsername->isChecked());
|
||||||
|
|
||||||
|
/*
|
||||||
settings.setPasswordUseLowercase(ui->checkBoxLower->isChecked());
|
settings.setPasswordUseLowercase(ui->checkBoxLower->isChecked());
|
||||||
settings.setPasswordUseNumbers(ui->checkBoxNumbers->isChecked());
|
settings.setPasswordUseNumbers(ui->checkBoxNumbers->isChecked());
|
||||||
settings.setPasswordUseUppercase(ui->checkBoxUpper->isChecked());
|
settings.setPasswordUseUppercase(ui->checkBoxUpper->isChecked());
|
||||||
@ -74,6 +77,7 @@ void OptionDialog::saveSettings()
|
|||||||
settings.setPasswordEveryGroup(ui->checkBoxEnsureEvery->isChecked());
|
settings.setPasswordEveryGroup(ui->checkBoxEnsureEvery->isChecked());
|
||||||
settings.setPasswordExcludeAlike(ui->checkBoxExcludeAlike->isChecked());
|
settings.setPasswordExcludeAlike(ui->checkBoxExcludeAlike->isChecked());
|
||||||
settings.setPasswordLength(ui->spinBoxLength->value());
|
settings.setPasswordLength(ui->spinBoxLength->value());
|
||||||
|
*/
|
||||||
|
|
||||||
settings.setAlwaysAllowAccess(ui->alwaysAllowAccess->isChecked());
|
settings.setAlwaysAllowAccess(ui->alwaysAllowAccess->isChecked());
|
||||||
settings.setAlwaysAllowUpdate(ui->alwaysAllowUpdate->isChecked());
|
settings.setAlwaysAllowUpdate(ui->alwaysAllowUpdate->isChecked());
|
||||||
|
@ -114,88 +114,7 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned<
|
|||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<widget class="HttpPasswordGeneratorWidget" name="passwordGenerator" native="true"/>
|
||||||
<item>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QCheckBox" name="checkBoxLower">
|
|
||||||
<property name="text">
|
|
||||||
<string>Lower letters</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QCheckBox" name="checkBoxNumbers">
|
|
||||||
<property name="text">
|
|
||||||
<string>Numbers</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QCheckBox" name="checkBoxUpper">
|
|
||||||
<property name="text">
|
|
||||||
<string>Upper letters</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QCheckBox" name="checkBoxSpecialChars">
|
|
||||||
<property name="text">
|
|
||||||
<string>Special characters</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QCheckBox" name="checkBoxEnsureEvery">
|
|
||||||
<property name="text">
|
|
||||||
<string>Ensure that the password contains characters from every group</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QCheckBox" name="checkBoxExcludeAlike">
|
|
||||||
<property name="text">
|
|
||||||
<string>Exclude look-alike characters</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="labelLength">
|
|
||||||
<property name="text">
|
|
||||||
<string>Length:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QSpinBox" name="spinBoxLength">
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>999</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer_3">
|
<spacer name="verticalSpacer_3">
|
||||||
@ -300,6 +219,19 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned<
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>HttpPasswordGeneratorWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>http/HttpPasswordGeneratorWidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>PasswordEdit</class>
|
||||||
|
<extends>QLineEdit</extends>
|
||||||
|
<header>gui/PasswordEdit.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
@ -494,7 +494,7 @@ void Service::updateEntry(const QString &, const QString &uuid, const QString &l
|
|||||||
|
|
||||||
QString Service::generatePassword()
|
QString Service::generatePassword()
|
||||||
{
|
{
|
||||||
return QString("nonrandompassword");
|
return HttpSettings::generatePassword();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Service::removeSharedEncryptionKeys()
|
void Service::removeSharedEncryptionKeys()
|
||||||
|
Loading…
Reference in New Issue
Block a user