From a0a585353c12f1890f0bfa8ed37be1b0f065de0b Mon Sep 17 00:00:00 2001 From: q5sys Date: Mon, 5 Jun 2017 10:41:40 -0400 Subject: [PATCH 1/2] a few additions to sysadm-general --- src/server/library/sysadm-general.cpp | 50 +++++++++++++++++++++++++++ src/server/library/sysadm-general.h | 4 +++ 2 files changed, 54 insertions(+) diff --git a/src/server/library/sysadm-general.cpp b/src/server/library/sysadm-general.cpp index c60bcf2..bff209c 100644 --- a/src/server/library/sysadm-general.cpp +++ b/src/server/library/sysadm-general.cpp @@ -10,6 +10,10 @@ #include "sysadm-global.h" using namespace sysadm; + +#define PREFIX QString("/usr/local") +QString TRUEOS_ETCCONF(PREFIX + "/etc/trueos.conf"); // The default trueos.conf file + //================= // RunCommand() variations //================= @@ -241,6 +245,30 @@ bool General::setConfFileValue(QString fileName, QString oldKey, QString newKey, return true; } +QString General::getValFromTrueOSConf(QString key) { + return getValFromTOConf(TRUEOS_ETCCONF, key); +} + +QString General::getValFromTOConf(QString conf, QString key) { + + // Load from conf the requested key + QFile confFile(conf); + if ( confFile.open( QIODevice::ReadOnly ) ) { + QTextStream stream( &confFile ); + stream.setCodec("UTF-8"); + QString line; + while ( !stream.atEnd() ) { + line = stream.readLine().simplified(); + if ( line.indexOf(key + ": ") == 0 ) { + confFile.close(); + return line.replace(key + ": ", ""); + } + + } + confFile.close(); + } +} + //=========================== // SYSCTL ACCESS (might require root) //=========================== @@ -261,3 +289,25 @@ long long General::sysctlAsInt(QString var){ if(0!=sysctlbyname(var.toLocal8Bit(), &result, &len, NULL, 0) ){ return 0; } return result; } + +//=========================== +// Misc +//=========================== + +QString General::bytesToHumanReadable(long long bytes) +{ + float num = bytes; + QStringList list; + list << "KB" << "MB" << "GB" << "TB"; + + QStringListIterator i(list); + QString unit("bytes"); + + while(num >= 1024.0 && i.hasNext()) + { + unit = i.next(); + num /= 1024.0; + } + return QString().setNum(num,'f',2)+" "+unit; +} + diff --git a/src/server/library/sysadm-general.h b/src/server/library/sysadm-general.h index 507a3ee..2a648af 100644 --- a/src/server/library/sysadm-general.h +++ b/src/server/library/sysadm-general.h @@ -55,6 +55,10 @@ public: //Retrieve a number-based sysctl static long long sysctlAsInt(QString var); +static QString bytesToHumanReadable(long long bytes); +static QString getValFromTOConf(QString conf, QString key); +static QString getValFromTrueOSConf(QString key); + }; } //end of pcbsd namespace From c4750152a64cf1c873f7ddcd4bf73e6c180b1c28 Mon Sep 17 00:00:00 2001 From: q5sys Date: Mon, 5 Jun 2017 11:40:50 -0400 Subject: [PATCH 2/2] prototype sourcetree management for sysadm --- src/server/library/sysadm-general.cpp | 30 +++++++++++ src/server/library/sysadm-general.h | 3 +- src/server/library/sysadm-systemmanager.cpp | 57 +++++++++++++++++++++ src/server/library/sysadm-systemmanager.h | 2 + 4 files changed, 91 insertions(+), 1 deletion(-) diff --git a/src/server/library/sysadm-general.cpp b/src/server/library/sysadm-general.cpp index bff209c..ece4d4a 100644 --- a/src/server/library/sysadm-general.cpp +++ b/src/server/library/sysadm-general.cpp @@ -58,6 +58,21 @@ bool General::RunQuickCommand(QString command, QStringList arguments,QString wor return success; } +QStringList General::gitCMD(QString dir, QString cmd, QStringList args){ + //Run a quick command in the proper dir and return the output + QProcess proc; + proc.setProcessChannelMode(QProcess::MergedChannels); + if( !dir.isEmpty() && QFile::exists(dir) ){ proc.setWorkingDirectory(dir); } + if(args.isEmpty()){ proc.start(cmd); } + else{ proc.start(cmd, args); } + while(!proc.waitForFinished(300)){ QCoreApplication::processEvents(); } + QStringList out; + while(proc.canReadLine()){ + out << QString( proc.readLine() ); + } + return out; +} + //================= // TEXT FILE INTERACTION //================= @@ -311,3 +326,18 @@ QString General::bytesToHumanReadable(long long bytes) return QString().setNum(num,'f',2)+" "+unit; } +void General::emptyDir(QString dir){ + QDir d(dir); + if(!d.exists()){ return; } //quick check to make sure directory exists first + //Remove all the files in this directory + QStringList tmp = d.entryList(QDir::Files | QDir::NoDotAndDotDot); + for(int i=0; i