refactoring of netctlprofile

This commit is contained in:
arcan1s
2014-07-13 00:13:24 +04:00
parent b37272d875
commit 44f0b6a06a
4 changed files with 131 additions and 102 deletions

View File

@ -28,8 +28,10 @@
NetctlProfile::NetctlProfile(const bool debugCmd, const QMap<QString, QString> settings)
: debug(debugCmd)
{
profileDirectory = new QDir(settings[QString("PROFILE_DIR")]);
sudoCommand = settings[QString("SUDO_PATH")];
if (settings.contains(QString("PROFILE_DIR")))
profileDirectory = new QDir(settings[QString("PROFILE_DIR")]);
if (settings.contains(QString("SUDO_PATH")))
sudoCommand = settings[QString("SUDO_PATH")];
}
@ -44,9 +46,18 @@ NetctlProfile::~NetctlProfile()
bool NetctlProfile::copyProfile(const QString oldPath)
{
if (debug) qDebug() << "[NetctlProfile]" << "[copyProfile]";
if (debug) qDebug() << "[NetctlProfile]" << "[copyProfile]" << ":" << "Path" << oldPath;
if (profileDirectory == 0) {
if (debug) qDebug() << "[NetctlProfile]" << "[profileDirectory]" << "Could not find directory";
return false;
}
if (sudoCommand == 0) {
if (debug) qDebug() << "[NetctlProfile]" << "[profileDirectory]" << "Could not find sudo";
return false;
}
QString newPath = profileDirectory->absolutePath() + QDir::separator() + QFileInfo(oldPath).fileName();
QProcess command;
QString newPath = profileDirectory->absolutePath() + QDir::separator() + QFileInfo(oldPath).fileName();
QString commandText = sudoCommand + QString(" /usr/bin/mv ") + oldPath + QString(" ") + newPath;
if (debug) qDebug() << "[NetctlProfile]" << "[copyProfile]" << ":" << "Run cmd" << commandText;
command.start(commandText);
@ -59,38 +70,17 @@ bool NetctlProfile::copyProfile(const QString oldPath)
}
bool NetctlProfile::removeProfile(const QString profile)
{
if (debug) qDebug() << "[NetctlProfile]" << "[removeProfile]";
QString profilePath = profileDirectory->absolutePath() + QDir::separator() + QFileInfo(profile).fileName();
QProcess command;
QString commandText = sudoCommand + QString(" /usr/bin/rm ") + profilePath;
if (debug) qDebug() << "[NetctlProfile]" << "[removeProfile]" << ":" << "Run cmd" << commandText;
command.start(commandText);
command.waitForFinished(-1);
if (command.exitCode() == 0)
return true;
else
return false;
}
QString NetctlProfile::createProfile(const QString profile, const QMap<QString, QString> settings)
{
if (debug) qDebug() << "[NetctlProfile]" << "[createProfile]";
if (debug) qDebug() << "[NetctlProfile]" << "[createProfile]" << ":" << "Profile name" << profile;
if (debug) qDebug() << "[NetctlProfile]" << "[createProfile]" << ":" << "Profile" << profile;
QString profileTempName = QDir::homePath() + QDir::separator() +
QString(".cache") + QDir::separator() + QFileInfo(profile).fileName();
QFile profileFile(profileTempName);
if (debug) qDebug() << "[NetctlProfile]" << "[createProfile]" << ":" << "Save to" << profileTempName;
if (!profileFile.open(QIODevice::WriteOnly | QIODevice::Text))
return profileTempName;
QTextStream out(&profileFile);
for (int i=0; i<settings.keys().count(); i++) {
out << settings.keys()[i] << QString("=");
@ -105,9 +95,9 @@ QString NetctlProfile::createProfile(const QString profile, const QMap<QString,
(settings.keys()[i] == QString("DNSOptions")) ||
(settings.keys()[i] == QString("WPAConfigSection")) ||
(settings.keys()[i] == QString("WPAConfigSection")))
out << QString("(") + settings[settings.keys()[i]] << QString(")\n");
out << QString("(") + settings[settings.keys()[i]] << QString(")") << endl;
else
out << settings[settings.keys()[i]] << QString("\n");
out << settings[settings.keys()[i]] << endl;
}
profileFile.close();
@ -115,75 +105,94 @@ QString NetctlProfile::createProfile(const QString profile, const QMap<QString,
}
QString NetctlProfile::getNameByString(const QString profile)
{
if (debug) qDebug() << "[NetctlProfile]" << "[getNameByString]";
if (debug) qDebug() << "[NetctlProfile]" << "[getNameByString]" << ":" << "Raw string" << profile;
return QFileInfo(profile).fileName();
}
QMap<QString, QString> NetctlProfile::getSettingsFromProfile(const QString profile)
{
if (debug) qDebug() << "[NetctlProfile]" << "[getSettingsFromProfile]";
if (debug) qDebug() << "[NetctlProfile]" << "[getSettingsFromProfile]" << ":" << "Profile" << profile;
if (profileDirectory == 0) {
if (debug) qDebug() << "[NetctlProfile]" << "[getSettingsFromProfile]" << "Could not find directory";
return QMap<QString, QString>();
}
QMap<QString, QString> settings;
QString fileStr, profileUrl;
profileUrl = profileDirectory->absolutePath() + QDir::separator() + QFileInfo(profile).fileName();
QFile profileFile(profileUrl);
if (debug) qDebug() << "[NetctlProfile]" << "[getSettingsFromProfile]" << ":" << "Read from" << profileUrl;
if (!profileFile.open(QIODevice::ReadOnly))
return settings;
while (true) {
fileStr = QString(profileFile.readLine());
if (fileStr[0] != '#') {
if (fileStr.split(QChar('='), QString::SkipEmptyParts).count() == 2) {
if ((fileStr.split(QChar('='))[1][0] == QChar('(')) &&
(fileStr.split(QChar('='))[1][fileStr.split(QChar('='))[1].size()-2] == QChar(')')))
settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]
.remove(QString("("))
.remove(QString(")"))
.trimmed();
else if (fileStr.split(QChar('='))[1][0] == QChar('(')) {
QString parameterName = fileStr.split(QChar('='))[0];
QStringList parameter;
if (!fileStr.split(QChar('='))[1]
.remove(QString("("))
.remove(QString(")"))
.trimmed()
.isEmpty())
parameter.append(fileStr.split(QChar('='))[1]
.remove(QString("("))
.remove(QString(")"))
.trimmed());
while(true) {
fileStr = QString(profileFile.readLine());
if (fileStr[fileStr.size()-2] == QChar(')'))
break;
if (!fileStr.remove(QString("("))
.remove(QString(")"))
.trimmed()
.isEmpty())
parameter.append(fileStr.remove(QString("("))
.remove(QString(")"))
.trimmed());
if (profileFile.atEnd())
break;
}
settings[parameterName] = parameter.join(QString("\n"));
}
else
settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]
.trimmed();
if (fileStr[0] == QChar('#')) continue;
if (fileStr.split(QChar('='), QString::SkipEmptyParts).count() != 2) continue;
if ((fileStr.split(QChar('='))[1][0] == QChar('(')) &&
(fileStr.split(QChar('='))[1][fileStr.split(QChar('='))[1].size()-2] == QChar(')')))
settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]
.remove(QChar('('))
.remove(QChar(')'))
.trimmed();
else if (fileStr.split(QChar('='))[1][0] == QChar('(')) {
QString parameterName = fileStr.split(QChar('='))[0];
QStringList parameter;
if (!fileStr.split(QChar('='))[1]
.remove(QChar('('))
.remove(QChar(')'))
.trimmed()
.isEmpty())
parameter.append(fileStr.split(QChar('='))[1]
.remove(QChar('('))
.remove(QChar(')'))
.trimmed());
while(true) {
fileStr = QString(profileFile.readLine());
if (fileStr[fileStr.size()-2] == QChar(')'))
break;
if (!fileStr.remove(QChar('('))
.remove(QChar(')'))
.trimmed()
.isEmpty())
parameter.append(fileStr.remove(QChar('('))
.remove(QChar(')'))
.trimmed());
if (profileFile.atEnd())
break;
}
settings[parameterName] = parameter.join(QChar('\n'));
}
else
settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]
.trimmed();
if (profileFile.atEnd())
break;
}
profileFile.close();
return settings;
}
bool NetctlProfile::removeProfile(const QString profile)
{
if (debug) qDebug() << "[NetctlProfile]" << "[removeProfile]";
if (debug) qDebug() << "[NetctlProfile]" << "[removeProfile]" << ":" << "Profile" << profile;
if (profileDirectory == 0) {
if (debug) qDebug() << "[NetctlProfile]" << "[removeProfile]" << "Could not find directory";
return false;
}
if (sudoCommand == 0) {
if (debug) qDebug() << "[NetctlProfile]" << "[removeProfile]" << "Could not find sudo";
return false;
}
QProcess command;
QString profilePath = profileDirectory->absolutePath() + QDir::separator() + QFileInfo(profile).fileName();
QString commandText = sudoCommand + QString(" /usr/bin/rm ") + profilePath;
if (debug) qDebug() << "[NetctlProfile]" << "[removeProfile]" << ":" << "Run cmd" << commandText;
command.start(commandText);
command.waitForFinished(-1);
if (command.exitCode() == 0)
return true;
else
return false;
}