* @brief Command line interface for the PswGen application
* @author Enar Vaikene
*
- * Copyright (c) 2011 Enar Vaikene
+ * Copyright (c) 2011-2012 Enar Vaikene
*
* This file is part of the eVaf C++ cross-platform application development framework.
*
#include <Common/iEventQueue>
#include <Common/iApp>
#include <Common/Event>
+#include <Common/Util>
#include <QtCore>
Module::Module()
: Plugins::iPlugin()
, mReady(false)
- , mGenerator(false)
- , mStorage(false)
+ , mGenerator(0)
+ , mStorage(0)
, mEvReady(0)
{
setObjectName(QString("%1-Module").arg(VER_MODULE_NAME_STR));
{
QString masterPassword;
QString appName;
- int passwordLength = DefaultPasswordLength;
+ QString suffix;
+ int passwordLength = 0;
+ uint flags = 0;
+ int alnum = -1;
// Process command-line arguments
QStringList args = QCoreApplication::arguments();
masterPassword = arg.at(1);
else if (QRegExp("-[-]?n(ame)?").exactMatch(arg.at(0)) && arg.size() > 1)
appName = arg.at(1);
+ else if (QRegExp("-[-]?s(uffix)?").exactMatch(arg.at(0)) && arg.size() > 1)
+ suffix = arg.at(1);
+ else if (QRegExp("-[-]?a(lphanumeric)?").exactMatch(arg.at(0))) {
+ if (arg.size() > 1) {
+ if (Common::isTrue(arg.at(1)))
+ alnum = 1;
+ else if (Common::isFalse(arg.at(1)))
+ alnum = 0;
+ }
+ else
+ alnum = 1;
+ }
else if (QRegExp("-[-]?l(ength)?").exactMatch(arg.at(0)) && arg.size() > 1) {
bool ok;
int t = arg.at(1).toInt(&ok);
}
}
+ // Set flags
+ if (alnum != -1) {
+ if (alnum == 1)
+ flags |= uint(iGenerator::ALPHANUMERIC);
+ else
+ flags &= ~uint(iGenerator::ALPHANUMERIC);
+ }
+
QTextStream cin(stdin);
QTextStream cout(stdout);
QExplicitlySharedDataPointer<PswGen::Storage::Data> data;
if (mStorage) {
data = mStorage->query(appName);
- if (data)
- passwordLength = data->length();
+ if (data) {
+ if (passwordLength == 0)
+ passwordLength = data->length();
+ if (suffix.isEmpty())
+ suffix = data->suffix();
+ if (alnum == -1)
+ flags = data->flags();
+ }
}
+ // If the length argument is still not initialized, use the default length value
+ if (!passwordLength)
+ passwordLength = DefaultPasswordLength;
+
// Generate password
- QString password = mGenerator->generatePassword(appName, masterPassword, passwordLength);
+ QString password = mGenerator->generatePassword(appName + suffix, masterPassword, passwordLength);
cout << "Generated password : " << password << endl;
// Store arguments for this password
if (mStorage) {
if (!data)
- data = new Storage::Data(appName, passwordLength);
+ data = new Storage::Data(appName, suffix, passwordLength);
+ else {
+ data->setSuffix(suffix);
+ data->setLength(passwordLength);
+ }
mStorage->save(appName, data);
}
}