Hello community, here is the log from the commit of package scap-workbench for openSUSE:Factory checked in at 2015-10-28 17:30:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/scap-workbench (Old) and /work/SRC/openSUSE:Factory/.scap-workbench.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "scap-workbench" Changes: -------- --- /work/SRC/openSUSE:Factory/scap-workbench/scap-workbench.changes 2015-04-03 14:34:51.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.scap-workbench.new/scap-workbench.changes 2015-10-28 17:30:21.000000000 +0100 @@ -1,0 +2,11 @@ +Mon Oct 12 10:38:16 UTC 2015 - kkae...@suse.com + +- Update to 1.1.1 + Bugfix release + +------------------------------------------------------------------- +Mon Oct 12 10:35:43 UTC 2015 - kkae...@suse.com + +- take ownership of /usr/share/polkit-1* + +------------------------------------------------------------------- Old: ---- scap-workbench-1.1.0.tar.bz2 New: ---- scap-workbench-1.1.1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ scap-workbench.spec ++++++ --- /var/tmp/diff_new_pack.HFeywh/_old 2015-10-28 17:30:22.000000000 +0100 +++ /var/tmp/diff_new_pack.HFeywh/_new 2015-10-28 17:30:22.000000000 +0100 @@ -17,7 +17,7 @@ Name: scap-workbench -Version: 1.1.0 +Version: 1.1.1 Release: 0 Summary: A SCAP scanner and SCAP content editor License: GPL-3.0 @@ -99,6 +99,8 @@ %{_datadir}/%name/translations/README %{_datadir}/applications/%name.desktop %{_datadir}/pixmaps/%{name}* +%dir %{_datadir}/polkit-1 +%dir %{_datadir}/polkit-1/actions %{_datadir}/polkit-1/actions/%{name}* %{_mandir}/man8/%{name}* %dir %{_libdir}/%{name} ++++++ scap-workbench-1.1.0.tar.bz2 -> scap-workbench-1.1.1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/CMakeLists.txt new/scap-workbench-1.1.1/CMakeLists.txt --- old/scap-workbench-1.1.0/CMakeLists.txt 2015-03-23 21:08:32.000000000 +0100 +++ new/scap-workbench-1.1.1/CMakeLists.txt 2015-09-22 16:41:44.000000000 +0200 @@ -3,7 +3,7 @@ project("scap-workbench") set(SCAP_WORKBENCH_VERSION_MAJOR "1") set(SCAP_WORKBENCH_VERSION_MINOR "1") -set(SCAP_WORKBENCH_VERSION_PATCH "0") +set(SCAP_WORKBENCH_VERSION_PATCH "1") set(SCAP_WORKBENCH_VERSION "${SCAP_WORKBENCH_VERSION_MAJOR}.${SCAP_WORKBENCH_VERSION_MINOR}.${SCAP_WORKBENCH_VERSION_PATCH}") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") @@ -35,6 +35,16 @@ find_program(SETSID_EXECUTABLE NAMES setsid) # optional for remote scan, makes sure ssh always spawns GUI dialog if (SETSID_EXECUTABLE) set(SCAP_WORKBENCH_LOCAL_SETSID_FOUND 1) + execute_process( + COMMAND ${SETSID_EXECUTABLE} --wait ${CMAKE_COMMAND} -E sleep 0 + ERROR_QUIET # suppress help message of setsid in case it doesn't support --wait + RESULT_VARIABLE SETSID_EXECUTABLE_WAIT_EC + ) + if (${SETSID_EXECUTABLE_WAIT_EC} EQUAL 0) + set(SCAP_WORKBENCH_LOCAL_SETSID_SUPPORTS_WAIT 1) + else() + set(SCAP_WORKBENCH_LOCAL_SETSID_SUPPORTS_WAIT 0) + endif() endif() # Save as RPM tools, optional but required for saving content as RPM diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/README.md new/scap-workbench-1.1.1/README.md --- old/scap-workbench-1.1.0/README.md 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/README.md 2015-09-22 16:41:27.000000000 +0200 @@ -18,56 +18,56 @@ 1) Make sure you have installed all prerequisites required dependencies: -```bash -yum install cmake gcc-c++ openssh-clients util-linux openscap-devel qt-devel +```console +# yum install cmake gcc-c++ openssh-clients util-linux openscap-devel qt-devel ``` required dependencies (only for the git repo, not required for released tarballs): -```bash -yum install rubygem-asciidoctor +```console +# yum install rubygem-asciidoctor ``` optional dependencies: -```bash -yum install polkit +```console +# yum install polkit ``` 2) Build SCAP Workbench: -```bash -mkdir build; cd build -cmake ../ -make +```console +$ mkdir build; cd build +$ cmake ../ +$ make ``` 3) Install SCAP Workbench: (optional) (inside the build folder): -```bash -make install +```console +# make install ``` 4a) Run SCAP Workbench: (if it was installed) spawning open file dialog: -```bash -scap-workbench +```console +$ scap-workbench ``` with an XCCDF file to load: -```bash -scap-workbench /path/to/xccdf-file.xml +```console +$ scap-workbench /path/to/xccdf-file.xml ``` with a source datastream (SDS) to load: -```bash -scap-workbench /path/to/sds-file +```console +$ scap-workbench /path/to/sds-file ``` 4b) Run SCAP Workbench: (straight from build dir, without installation) -```bash -cd build/ -bash runwrapper.sh ./scap-workbench +```console +$ cd build/ +$ bash runwrapper.sh ./scap-workbench ``` What now? @@ -83,8 +83,8 @@ How to make a tarball --------------------- -```bash -mkdir build; cd build -cmake ../ -make package_source +```console +$ mkdir build; cd build +$ cmake ../ +$ make package_source ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/doc/user_manual.adoc new/scap-workbench-1.1.1/doc/user_manual.adoc --- old/scap-workbench-1.1.0/doc/user_manual.adoc 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/doc/user_manual.adoc 2015-09-22 16:41:27.000000000 +0200 @@ -263,6 +263,9 @@ .Set minimum password length to 14 image::tailoring_set_value.png[align="center"] +Changes to the values are applied immediately as you change the combobox or +editbox. + After desired customization changes are done, click *Confirm changes* to get back to the previous GUI. To undo all of the changes to the profile, click *Discard*. If you want to delete the profile from tailoring, click *Delete profile*. @@ -489,7 +492,7 @@ * #openscap channel on irc.freenode.net * https://www.redhat.com/mailman/listinfo/open-scap-list[openscap mailing list] -In case you have found a bug, do not hesitate to https://fedorahosted.org/scap-workbench/newticket[submit it] -(requires a Fedora FAS account). Make sure you provide as many details as possible, +In case you have found a bug, do not hesitate to https://github.com/OpenSCAP/scap-workbench/issues[submit it] +(requires a GitHub account). Make sure you provide as many details as possible, including your distribution, architecture, OpenSCAP, SCAP Workbench and Qt versions and any output scap-workbench writes to stderr. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/doc/user_manual.html new/scap-workbench-1.1.1/doc/user_manual.html --- old/scap-workbench-1.1.0/doc/user_manual.html 2015-03-24 11:08:39.000000000 +0100 +++ new/scap-workbench-1.1.1/doc/user_manual.html 2015-09-22 16:44:58.000000000 +0200 @@ -919,6 +919,10 @@ <div class="title">Figure 8. Set minimum password length to 14</div> </div> <div class="paragraph"> +<p>Changes to the values are applied immediately as you change the combobox or +editbox.</p> +</div> +<div class="paragraph"> <p>After desired customization changes are done, click <strong>Confirm changes</strong> to get back to the previous GUI. To undo all of the changes to the profile, click <strong>Discard</strong>. If you want to delete the profile from tailoring, click <strong>Delete profile</strong>.</p> @@ -1271,8 +1275,8 @@ </ul> </div> <div class="paragraph"> -<p>In case you have found a bug, do not hesitate to <a href="https://fedorahosted.org/scap-workbench/newticket">submit it</a> -(requires a Fedora FAS account). Make sure you provide as many details as possible, +<p>In case you have found a bug, do not hesitate to <a href="https://github.com/OpenSCAP/scap-workbench/issues">submit it</a> +(requires a GitHub account). Make sure you provide as many details as possible, including your distribution, architecture, OpenSCAP, SCAP Workbench and Qt versions and any output scap-workbench writes to stderr.</p> </div> @@ -1299,7 +1303,7 @@ </div> <div id="footer"> <div id="footer-text"> -Last updated 2015-03-17 17:14:00 CET +Last updated 2015-09-22 16:41:27 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/include/APIHelpers.h new/scap-workbench-1.1.1/include/APIHelpers.h --- old/scap-workbench-1.1.0/include/APIHelpers.h 2015-03-17 17:12:56.000000000 +0100 +++ new/scap-workbench-1.1.1/include/APIHelpers.h 2015-09-22 16:41:27.000000000 +0200 @@ -66,4 +66,11 @@ */ QString oscapErrDesc(); +/** + * Returns QString containing utf8 contents of oscap_err_get_full_error() + * + * @exception nothrow This function is guaranteed to not throw any exceptions. + */ +QString oscapErrGetFullError(); + #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/include/Config.h.in new/scap-workbench-1.1.1/include/Config.h.in --- old/scap-workbench-1.1.0/include/Config.h.in 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/include/Config.h.in 2015-09-22 16:41:27.000000000 +0200 @@ -27,22 +27,23 @@ #define SCAP_WORKBENCH_VERSION_PATCH @SCAP_WORKBENCH_VERSION_PATCH@ #define SCAP_WORKBENCH_VERSION "@SCAP_WORKBENCH_VERSION@" -#define SCAP_WORKBENCH_ICON "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_DATADIR@/pixmaps/scap-workbench.png" -#define SCAP_WORKBENCH_SHARE "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_DATADIR@/scap-workbench" -#define SCAP_WORKBENCH_DOC "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_DOCDIR@" +#define SCAP_WORKBENCH_ICON "@CMAKE_INSTALL_FULL_DATADIR@/pixmaps/scap-workbench.png" +#define SCAP_WORKBENCH_SHARE "@CMAKE_INSTALL_FULL_DATADIR@/scap-workbench" +#define SCAP_WORKBENCH_DOC "@CMAKE_INSTALL_FULL_DOCDIR@" #define SCAP_WORKBENCH_SSG_DIRECTORY "@SCAP_WORKBENCH_SSG_DIRECTORY@" #define SCAP_WORKBENCH_SCAP_CONTENT_DIRECTORY "@SCAP_WORKBENCH_SCAP_CONTENT_DIRECTORY@" #cmakedefine SCAP_WORKBENCH_LOCAL_SCAN_ENABLED #define SCAP_WORKBENCH_LOCAL_OSCAP_PATH "oscap" -#define SCAP_WORKBENCH_LOCAL_PKEXEC_OSCAP_PATH "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/scap-workbench-pkexec-oscap.sh" -#define SCAP_WORKBENCH_LOCAL_RPM_EXTRACT_PATH "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/scap-workbench-rpm-extract.sh" +#define SCAP_WORKBENCH_LOCAL_PKEXEC_OSCAP_PATH "@CMAKE_INSTALL_FULL_LIBEXECDIR@/scap-workbench-pkexec-oscap.sh" +#define SCAP_WORKBENCH_LOCAL_RPM_EXTRACT_PATH "@CMAKE_INSTALL_FULL_LIBEXECDIR@/scap-workbench-rpm-extract.sh" #define SCAP_WORKBENCH_REMOTE_OSCAP_PATH "oscap" #cmakedefine SCAP_WORKBENCH_LOCAL_SSH_FOUND #define SCAP_WORKBENCH_LOCAL_SSH_PATH "@SSH_EXECUTABLE@" #cmakedefine SCAP_WORKBENCH_LOCAL_SETSID_FOUND #define SCAP_WORKBENCH_LOCAL_SETSID_PATH "@SETSID_EXECUTABLE@" +#cmakedefine SCAP_WORKBENCH_LOCAL_SETSID_SUPPORTS_WAIT #cmakedefine SCAP_WORKBENCH_LOCAL_NICE_FOUND #define SCAP_WORKBENCH_LOCAL_NICE_PATH "@NICE_EXECUTABLE@" #define SCAP_WORKBENCH_LOCAL_OSCAP_NICENESS 10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/include/DiagnosticsDialog.h new/scap-workbench-1.1.1/include/DiagnosticsDialog.h --- old/scap-workbench-1.1.0/include/DiagnosticsDialog.h 2014-10-22 14:38:21.000000000 +0200 +++ new/scap-workbench-1.1.1/include/DiagnosticsDialog.h 2015-09-22 16:41:27.000000000 +0200 @@ -51,6 +51,17 @@ }; /** + * @brief MessageFormat can be any subset of this flags + */ +enum MessageFormat +{ + MF_STANDARD = 0x01, + MF_PREFORMATTED = 0x02, // Preserve whitespaces to output + MF_XML = 0x04, // Replace xml metacharacters with xml entities + MF_PREFORMATTED_XML = MF_PREFORMATTED | MF_XML, +}; + +/** * @brief Workbench displays errors and warnings, this dialog groups them * * This is a final class and is not supposed to be inherited. @@ -85,7 +96,7 @@ * The diagnostics dialog will not open when just these messages are * received. */ - void infoMessage(const QString& message); + void infoMessage(const QString& message, MessageFormat format = MF_STANDARD); /** * @brief Scanner triggers this to show a warning message @@ -93,7 +104,7 @@ * A warning message will open the diagnostics dialog if it isn't * being shown already. */ - void warningMessage(const QString& message); + void warningMessage(const QString& message, MessageFormat format = MF_STANDARD); /** * @brief Scanner triggers this to show an error message @@ -101,15 +112,15 @@ * An error message will open the diagnostics dialog if it isn't * being shown already. */ - void errorMessage(const QString& message); + void errorMessage(const QString& message, MessageFormat format = MF_STANDARD); /** * @brief Report a caught exception. */ - void exceptionMessage(const std::exception& e, const QString& context = ""); + void exceptionMessage(const std::exception& e, const QString& context = "", MessageFormat format = MF_STANDARD); private: - void pushMessage(MessageSeverity severity, const QString& fullMessage); + void pushMessage(MessageSeverity severity, const QString& fullMessage, MessageFormat format = MF_STANDARD); /** * @brief Pushes a single info message containing version info diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/include/MainWindow.h new/scap-workbench-1.1.1/include/MainWindow.h --- old/scap-workbench-1.1.0/include/MainWindow.h 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/include/MainWindow.h 2015-09-22 16:41:27.000000000 +0200 @@ -28,6 +28,7 @@ #include <QMainWindow> #include <QThread> #include <QMenu> +#include <QMessageBox> extern "C" { @@ -263,6 +264,13 @@ */ unsigned int getSelectedRulesCount(); + /** + * @brief Ask user to proceed with closing old file due to openning of new one + * + * @return user answer + */ + QMessageBox::StandardButton openNewFileQuestionDialog(const QString& oldFilepath); + private slots: /** * @brief This slot gets triggered by the scanner to notify of a new result diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/include/OscapScannerBase.h new/scap-workbench-1.1.1/include/OscapScannerBase.h --- old/scap-workbench-1.1.0/include/OscapScannerBase.h 2014-10-22 14:38:21.000000000 +0200 +++ new/scap-workbench-1.1.1/include/OscapScannerBase.h 2015-09-22 16:41:27.000000000 +0200 @@ -62,8 +62,19 @@ /// Last read rule id QString mLastRuleID; - /// If true we are in the rule ID reading phase, if false we are reading rule result - bool mReadingRuleID; + /// Last downloading file + QString mLastDownloadingFile; + + enum ReadingState + { + RS_READING_PREFIX, + RS_READING_RULE_RESULT, + RS_READING_DOWNLOAD_FILE, + RS_READING_DOWNLOAD_FILE_STATUS + }; + + ReadingState mReadingState; + /// We keep filling this buffer until we reach : or \n QString mReadBuffer; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/include/Scanner.h new/scap-workbench-1.1.1/include/Scanner.h --- old/scap-workbench-1.1.0/include/Scanner.h 2015-03-17 17:12:56.000000000 +0100 +++ new/scap-workbench-1.1.1/include/Scanner.h 2015-09-22 16:41:27.000000000 +0200 @@ -74,6 +74,8 @@ virtual void setMainThread(QThread* thread); virtual void setSkipValid(bool skip); bool getSkipValid() const; + virtual void setFetchRemoteResources(bool fetch); + bool getFetchRemoteResources() const; virtual void setSession(ScanningSession* session); ScanningSession* getSession() const; virtual void setTarget(const QString& target); @@ -194,6 +196,9 @@ /// If true openscap will skip validation when interpreting the content bool mSkipValid; + /// If true openscap will download of remote OVAL content referenced from XCCDF + bool mFetchRemoteResources; + /// Session containing setup parameters for the scan ScanningSession* mSession; /// Target machine we should be scanning diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/man/scap-workbench.8 new/scap-workbench-1.1.1/man/scap-workbench.8 --- old/scap-workbench-1.1.0/man/scap-workbench.8 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/man/scap-workbench.8 2015-09-22 16:41:27.000000000 +0200 @@ -1,10 +1,10 @@ .TH scap-workbench "8" "Sep 2013" "Red Hat" "System Administration Utilities" .SH NAME -SCAP Workbench \- GUI tool for systems compliance evaluation +scap\-workbench \- GUI tool for systems compliance evaluation .SH SYNOPSIS -\fBscap-workbench\fR [--skip-valid] [\fIXCCDF_FILE\fR] +\fBscap\-workbench\fR [\-\-skip\-valid] [\fIXCCDF_FILE\fR] .SH DESCRIPTION SCAP Workbench is GUI tool for security compliance checking. Compliance can be @@ -18,7 +18,7 @@ .SH OPTIONS .TP -\fB--skip-valid\fR +\fB\-\-skip\-valid\fR If this option is provided openscap validation will not be performed. This is recommended only for advanced users and may cause OpenSCAP or SCAP Workbench to crash! @@ -28,7 +28,7 @@ source datastream (SDS) file after it starts. .SH SCAP CONTENT -Sample content is provided by the OpenSCAP project (in the \fBopenscap-content\fR package). +Sample content is provided by the OpenSCAP project (in the \fBopenscap\-content\fR package). Other sources of SCAP content are: .TP @@ -36,9 +36,9 @@ .TP \fBRed Hat content repository\fR - \fIhttp://www.redhat.com/security/data/oval/\fR .TP -\fBscap-security-guide project\fR - \fIhttp://fedorahosted.org/scap-security-guide/\fR +\fBscap\-security\-guide project\fR - \fIhttp://fedorahosted.org/scap\-security\-guide/\fR .TP -\fBsce-community-content project\fR - \fIhttp://fedorahosted.org/sce-community-content/\fR +\fBsce\-community\-content project\fR - \fIhttp://fedorahosted.org/sce\-community\-content/\fR .SH AUTHORS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/scap-workbench-oscap.sh new/scap-workbench-1.1.1/scap-workbench-oscap.sh --- old/scap-workbench-1.1.0/scap-workbench-oscap.sh 2014-10-22 14:38:21.000000000 +0200 +++ new/scap-workbench-1.1.1/scap-workbench-oscap.sh 2015-09-02 13:43:50.000000000 +0200 @@ -45,15 +45,15 @@ case "${args[i]}" in ("--results") - TARGET_RESULTS_XCCDF=${args[j]} + TARGET_RESULTS_XCCDF="${args[j]}" args[j]="$TEMP_DIR/results-xccdf.xml" ;; ("--results-arf") - TARGET_RESULTS_ARF=${args[j]} + TARGET_RESULTS_ARF="${args[j]}" args[j]="$TEMP_DIR/results-arf.xml" ;; ("--report") - TARGET_REPORT=${args[j]} + TARGET_REPORT="${args[j]}" args[j]="$TEMP_DIR/report.html" ;; *) @@ -64,7 +64,7 @@ LOCAL_OSCAP="oscap" pushd "$TEMP_DIR" > /dev/null -$LOCAL_OSCAP ${args[@]} & +$LOCAL_OSCAP "${args[@]}" & PID=$! RET=1 @@ -86,8 +86,8 @@ function chown_copy { - local what=$1 - local where=$2 + local what="$1" + local where="$2" [ ! -f "$what" ] || cp "$what" "$where" @@ -97,9 +97,9 @@ fi } -chown_copy "$TEMP_DIR/results-xccdf.xml" $TARGET_RESULTS_XCCDF -chown_copy "$TEMP_DIR/results-arf.xml" $TARGET_RESULTS_ARF -chown_copy "$TEMP_DIR/report.html" $TARGET_REPORT +chown_copy "$TEMP_DIR/results-xccdf.xml" "$TARGET_RESULTS_XCCDF" +chown_copy "$TEMP_DIR/results-arf.xml" "$TARGET_RESULTS_ARF" +chown_copy "$TEMP_DIR/report.html" "$TARGET_REPORT" rm -r "$TEMP_DIR" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/scap-workbench-pkexec-oscap.sh new/scap-workbench-1.1.1/scap-workbench-pkexec-oscap.sh --- old/scap-workbench-1.1.0/scap-workbench-pkexec-oscap.sh 2014-10-22 14:38:21.000000000 +0200 +++ new/scap-workbench-1.1.1/scap-workbench-pkexec-oscap.sh 2015-09-02 13:43:50.000000000 +0200 @@ -29,7 +29,7 @@ # We run unprivileged if pkexec was not found. #which $PKEXEC_PATH > /dev/null || exit 1 # fail if pkexec was not found -$PKEXEC_PATH --disable-internal-agent $SCAP_WORKBENCH_OSCAP $uid $gid $@ 2> >(tail -n +2 1>&2) +$PKEXEC_PATH --disable-internal-agent "$SCAP_WORKBENCH_OSCAP" $uid $gid "$@" 2> >(tail -n +2 1>&2) EC=$? # 126 is a special exit code of pkexec when user dismisses the auth dialog @@ -38,7 +38,7 @@ # This is common in niche desktop environments. if [ $EC -eq 126 ] || [ $EC -eq 127 ]; then # in case of dismissed dialog we run without super user rights - $SCAP_WORKBENCH_OSCAP $uid $gid $@ 2> >(tail -n +2 1>&2); + "$SCAP_WORKBENCH_OSCAP" $uid $gid "$@" 2> >(tail -n +2 1>&2); exit $? fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/scap-workbench-rpm-extract.sh new/scap-workbench-1.1.1/scap-workbench-rpm-extract.sh --- old/scap-workbench-1.1.0/scap-workbench-rpm-extract.sh 2015-03-17 17:12:56.000000000 +0100 +++ new/scap-workbench-1.1.1/scap-workbench-rpm-extract.sh 2015-09-22 16:41:27.000000000 +0200 @@ -18,5 +18,5 @@ set -u -o pipefail -rpm2cpio $1 | cpio -ivd +rpm2cpio "$1" | cpio -ivd exit $? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/APIHelpers.cpp new/scap-workbench-1.1.1/src/APIHelpers.cpp --- old/scap-workbench-1.1.0/src/APIHelpers.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/APIHelpers.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -70,3 +70,11 @@ { return QString::fromUtf8(oscap_err_desc()); } + +QString oscapErrGetFullError() +{ + char* fullErrorCstr = oscap_err_get_full_error(); + QString fullError = QString::fromUtf8(fullErrorCstr); + free(fullErrorCstr); + return fullError; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/DiagnosticsDialog.cpp new/scap-workbench-1.1.1/src/DiagnosticsDialog.cpp --- old/scap-workbench-1.1.0/src/DiagnosticsDialog.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/DiagnosticsDialog.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -34,12 +34,12 @@ mUI.setupUi(this); QObject::connect( - mUI.clipboardButton, SIGNAL(released()), + mUI.clipboardButton, SIGNAL(clicked()), this, SLOT(copyToClipboard()) ); QObject::connect( - mUI.closeButton, SIGNAL(released()), + mUI.closeButton, SIGNAL(clicked()), this, SLOT(hide()) ); @@ -63,36 +63,37 @@ } } -void DiagnosticsDialog::infoMessage(const QString& message) +void DiagnosticsDialog::infoMessage(const QString& message, MessageFormat format) { - pushMessage(MS_INFO, message); + pushMessage(MS_INFO, message, format); } -void DiagnosticsDialog::warningMessage(const QString& message) +void DiagnosticsDialog::warningMessage(const QString& message, MessageFormat format) { - pushMessage(MS_WARNING, message); + pushMessage(MS_WARNING, message, format); // warning message is important, make sure the diagnostics are shown show(); } -void DiagnosticsDialog::errorMessage(const QString& message) +void DiagnosticsDialog::errorMessage(const QString& message, MessageFormat format) { - pushMessage(MS_ERROR, message); + pushMessage(MS_ERROR, message, format); // error message is important, make sure the diagnostics are shown show(); } -void DiagnosticsDialog::exceptionMessage(const std::exception& e, const QString& context) +void DiagnosticsDialog::exceptionMessage(const std::exception& e, const QString& context, MessageFormat format) { - pushMessage(MS_EXCEPTION, (context.isEmpty() ? "" : context + "\n\n" + QString::fromUtf8(e.what()))); + pushMessage(MS_EXCEPTION, (context.isEmpty() ? "" : context + "\n\n" + QString::fromUtf8(e.what())), format); // error message is important, make sure the diagnostics are shown show(); } -void DiagnosticsDialog::pushMessage(MessageSeverity severity, const QString& fullMessage) + +void DiagnosticsDialog::pushMessage(MessageSeverity severity, const QString& fullMessage, MessageFormat format) { char stime[11]; stime[10] = '\0'; @@ -132,9 +133,21 @@ strSeverity = strSeverity.leftJustified(8); std::cerr << stime << " | " << strSeverity.toUtf8().constData() << " | " << fullMessage.toUtf8().constData() << std::endl; + + QString outputMessage = fullMessage; + if (format & MF_XML) + { + outputMessage = Qt::escape(outputMessage); + } + + if (format & MF_PREFORMATTED) + { + outputMessage = QString("<pre>%1</pre>").arg(outputMessage); + } + mUI.messages->append( - QString("<table><tr><td><pre>%1 </pre></td><td style=\"background: %2\"><pre>%3 </pre></td><td>%4</td></tr></table>\n") - .arg(stime, bgCol, strSeverity, fullMessage) + QString("<table><tr><td style=\"padding:5px 0px 0px 5px\"><pre>%1 </pre></td><td style=\"background: %2; padding:5px\"><pre>%3 </pre></td><td>%4</td></tr></table>\n") + .arg(stime, bgCol, strSeverity, outputMessage) ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/MainWindow.cpp new/scap-workbench-1.1.1/src/MainWindow.cpp --- old/scap-workbench-1.1.0/src/MainWindow.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/MainWindow.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -36,7 +36,6 @@ #include <QFileDialog> #include <QAbstractEventDispatcher> -#include <QMessageBox> #include <QCloseEvent> #include <QDesktopWidget> @@ -148,19 +147,19 @@ #endif QObject::connect( - mUI.scanButton, SIGNAL(released()), + mUI.scanButton, SIGNAL(clicked()), this, SLOT(scanAsyncAutoMode()) ); QObject::connect( - mUI.offlineRemediateButton, SIGNAL(released()), + mUI.offlineRemediateButton, SIGNAL(clicked()), this, SLOT(offlineRemediateAsync()) ); QObject::connect( - mUI.cancelButton, SIGNAL(released()), + mUI.cancelButton, SIGNAL(clicked()), this, SLOT(cancelScanAsync()) ); QObject::connect( - mUI.clearButton, SIGNAL(released()), + mUI.clearButton, SIGNAL(clicked()), this, SLOT(clearResults()) ); @@ -179,7 +178,7 @@ #endif QObject::connect( - mUI.customizeProfileButton, SIGNAL(released()), + mUI.customizeProfileButton, SIGNAL(clicked()), this, SLOT(customizeProfile()) ); @@ -338,7 +337,7 @@ setWindowTitle(QObject::tr("SCAP Workbench")); mUI.tailoringFileComboBox->clear(); - mDiagnosticsDialog->exceptionMessage(e, QObject::tr("Error while opening file.")); + mDiagnosticsDialog->exceptionMessage(e, QObject::tr("Error while opening file."), MF_PREFORMATTED_XML); } } @@ -374,13 +373,8 @@ if (fileOpened()) { - if (QMessageBox::question(this, QObject::tr("Close currently opened file?"), - QObject::tr("Opened file has to be closed before '%1' is opened instead.\n\n" - "Are you sure you want to close currently opened file?").arg(path), - QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes) - { + if (openNewFileQuestionDialog(mScanningSession->getOpenedFilePath()) == QMessageBox::Yes) closeFile(); - } else // user cancelled closing current file, we have to abort break; @@ -424,10 +418,7 @@ { if (fileOpened()) { - if (QMessageBox::question(this, QObject::tr("Close currently opened file?"), - QObject::tr("Opened file has to be closed before '%1' is opened instead.\n\n" - "Are you sure you want to close currently opened file?").arg(dialog->getSelectedSSGFile()), - QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes) + if (openNewFileQuestionDialog(mScanningSession->getOpenedFilePath()) == QMessageBox::Yes) { closeFile(); } @@ -535,6 +526,7 @@ const QString target = mUI.localMachineRadioButton->isChecked() ? "localhost" : mUI.remoteMachineDetails->getTarget(); + bool fetchRemoteResources = mUI.fetchRemoteResourcesCheckbox->isChecked(); try { //if (!mScanner || mScanner->getTarget() != target) @@ -581,6 +573,7 @@ mScanner->setScanThread(mScanThread); mScanner->setMainThread(thread()); mScanner->setSkipValid(mSkipValid); + mScanner->setFetchRemoteResources(fetchRemoteResources); mScanner->setSession(mScanningSession); mScanner->setScannerMode(scannerMode); @@ -1406,3 +1399,13 @@ { QMessageBox::aboutQt(this); } + +QMessageBox::StandardButton MainWindow::openNewFileQuestionDialog(const QString& oldFilepath) +{ + return QMessageBox::question(this, + QObject::tr("Close currently opened file?"), + QObject::tr("Opened file '%1' has to be closed before opening another file.\n\n" + "Do you want to proceed?").arg(oldFilepath), + QMessageBox::Yes | QMessageBox::No, QMessageBox::No + ); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/OscapScannerBase.cpp new/scap-workbench-1.1.1/src/OscapScannerBase.cpp --- old/scap-workbench-1.1.0/src/OscapScannerBase.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/OscapScannerBase.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -36,7 +36,8 @@ Scanner(), mLastRuleID(""), - mReadingRuleID(true), + mLastDownloadingFile(""), + mReadingState(RS_READING_PREFIX), mReadBuffer(""), mCancelRequested(false) { @@ -79,7 +80,8 @@ Scanner::signalCompletion(canceled); mLastRuleID = ""; - mReadingRuleID = true; + mLastDownloadingFile = ""; + mReadingState = RS_READING_PREFIX; mReadBuffer = ""; // reset the cancel flag now that we have finished XOR canceled @@ -165,6 +167,11 @@ { ret.append("--skip-valid"); } + + if (mFetchRemoteResources) + { + ret.append("--fetch-remote-resources"); + } if (mSession->isSDS()) { @@ -270,36 +277,71 @@ if (readChar == ':') { - mLastRuleID = mReadBuffer; - if (mReadingRuleID) // sanity check - { - emit progressReport(mLastRuleID, "processing"); - } - else + switch (mReadingState) { - emit warningMessage(QString( - QObject::tr("Error when parsing scan progress output from stdout of the 'oscap' process. " - "':' encountered while not reading rule ID, newline and/or rule result are missing! " - "Read buffer is '%1'.")).arg(mReadBuffer)); + case RS_READING_PREFIX: + if (mReadBuffer=="Downloading") + { + mReadingState = RS_READING_DOWNLOAD_FILE; + } + else + { + mLastRuleID = mReadBuffer; + emit progressReport(mLastRuleID, "processing"); + mReadingState = RS_READING_RULE_RESULT; + } + mReadBuffer = ""; + break; + + case RS_READING_RULE_RESULT: + emit warningMessage(QString( + QObject::tr("Error when parsing scan progress output from stdout of the 'oscap' process. " + "':' encountered while not reading rule ID, newline and/or rule result are missing! " + "Read buffer is '%1'.")).arg(mReadBuffer)); + mReadBuffer = ""; + break; + } - mReadBuffer = ""; - mReadingRuleID = false; } else if (readChar == '\n') { - if (!mReadingRuleID) // sanity check + switch(mReadingState) { - emit progressReport(mLastRuleID, mReadBuffer); - } - else - { - emit warningMessage(QString( - QObject::tr("Error when parsing scan progress output from stdout of the 'oscap' process. " - "Newline encountered while reading rule ID, rule result and/or ':' are missing! " - "Read buffer is '%1'.")).arg(mReadBuffer)); + + case RS_READING_PREFIX: + emit warningMessage(QString( + QObject::tr("Error when parsing scan progress output from stdout of the 'oscap' process. " + "Newline encountered while reading rule ID, rule result and/or ':' are missing! " + "Read buffer is '%1'.")).arg(mReadBuffer)); + break; + + case RS_READING_RULE_RESULT: + emit progressReport(mLastRuleID, mReadBuffer); + break; + + case RS_READING_DOWNLOAD_FILE_STATUS: + QString downloadStatus = mReadBuffer.mid(1); + if (downloadStatus == "ok") + emit infoMessage(QString("Downloading of \"%1\" finished: %2").arg(mLastDownloadingFile).arg(downloadStatus)); + else + emit warningMessage(QString("Failed to download \"%1\"!").arg(mLastDownloadingFile)); + break; + } + mReadingState = RS_READING_PREFIX; + mReadBuffer = ""; + } + else if ( (readChar == '.') && (mReadingState == RS_READING_DOWNLOAD_FILE) && (mReadBuffer.endsWith(" .."))) + { + int urlLen = mReadBuffer.length(); + urlLen -= 1; // without first space + urlLen -= 3; // without "progress dots" + mLastDownloadingFile = mReadBuffer.mid(1, urlLen); + + emit infoMessage(QString("Downloading of \"%1\"...").arg(mLastDownloadingFile)); + mReadBuffer = ""; - mReadingRuleID = true; + mReadingState = RS_READING_DOWNLOAD_FILE_STATUS; } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/ProcessHelpers.cpp new/scap-workbench-1.1.1/src/ProcessHelpers.cpp --- old/scap-workbench-1.1.0/src/ProcessHelpers.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/ProcessHelpers.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -169,8 +169,8 @@ mRunning = false; - mStdOutContents = process.readAllStandardOutput(); - mStdErrContents = process.readAllStandardError(); + mStdOutContents = QString::fromLocal8Bit(process.readAllStandardOutput()); + mStdErrContents = QString::fromLocal8Bit(process.readAllStandardError()); // TODO: We are duplicating data here! mDiagnosticInfo += "stdout:\n===============================\n" + QString(mStdOutContents) + QString("\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/RemoteSsh.cpp new/scap-workbench-1.1.1/src/RemoteSsh.cpp --- old/scap-workbench-1.1.0/src/RemoteSsh.cpp 2015-03-20 11:51:43.000000000 +0100 +++ new/scap-workbench-1.1.1/src/RemoteSsh.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -46,6 +46,9 @@ #if defined(__APPLE__) static const QDir dir(QCoreApplication::applicationDirPath()); mEnvironment.insert("SSH_ASKPASS", dir.absoluteFilePath("scap-workbench-osx-ssh-askpass.sh")); +#elif defined(WIN32) + static const QDir dir(QCoreApplication::applicationDirPath()); + mEnvironment.insert("SSH_ASKPASS", dir.absoluteFilePath("win-ssh-askpass.exe")); #endif } @@ -122,7 +125,9 @@ { QStringList args; #ifdef SCAP_WORKBENCH_LOCAL_SETSID_FOUND - args.append("-w"); // for setsid +# ifdef SCAP_WORKBENCH_LOCAL_SETSID_SUPPORTS_WAIT + args.append("--wait"); +# endif args.append(SCAP_WORKBENCH_LOCAL_SSH_PATH); #endif @@ -175,7 +180,9 @@ { QStringList args; #ifdef SCAP_WORKBENCH_LOCAL_SETSID_FOUND - args.append("-w"); // for setsid +# ifdef SCAP_WORKBENCH_LOCAL_SETSID_SUPPORTS_WAIT + args.append("--wait"); +# endif args.append(SCAP_WORKBENCH_LOCAL_SSH_PATH); #endif @@ -245,7 +252,9 @@ QStringList args; #ifdef SCAP_WORKBENCH_LOCAL_SETSID_FOUND - args.append("-w"); // for setsid +# ifdef SCAP_WORKBENCH_LOCAL_SETSID_SUPPORTS_WAIT + args.append("--wait"); +# endif args.append(SCAP_WORKBENCH_LOCAL_SSH_PATH); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/ResultViewer.cpp new/scap-workbench-1.1.1/src/ResultViewer.cpp --- old/scap-workbench-1.1.0/src/ResultViewer.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/ResultViewer.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -56,7 +56,7 @@ mUI.saveButton->setMenu(mSaveMenu); QObject::connect( - mUI.openReportButton, SIGNAL(released()), + mUI.openReportButton, SIGNAL(clicked()), this, SLOT(openReport()) ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/SSGIntegrationDialog.cpp new/scap-workbench-1.1.1/src/SSGIntegrationDialog.cpp --- old/scap-workbench-1.1.0/src/SSGIntegrationDialog.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/SSGIntegrationDialog.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -77,6 +77,7 @@ const QDir& dir = getSSGDirectory(); const QStringList variants = dir.entryList(QDir::Files | QDir::NoDotAndDotDot); + int lastFavoriteIndex = 1; for (QStringList::const_iterator it = variants.constBegin(); it != variants.constEnd(); ++it) { @@ -90,15 +91,36 @@ QString label = name; + bool favorite = false; // Make the label nicer for known variants - if (label.startsWith("rhel")) // use RHEL instead of rhel + if (label.startsWith("rhel")) + { + // use RHEL instead of rhel label = name.toUpper(); - else if (label.startsWith("fedora")) // use Fedora instead of fedora - label[0] = 'F'; + favorite = true; + } + else if (label.startsWith("centos")) // use CentOS instead of centos + label.replace(0, 6, "CentOS"); + + else if (label.startsWith("jre")) // use JRE instead of jre + label.replace(0, 3, "JRE"); + + else if (label.startsWith("sl")) // use SL instead of sl + label.replace(0, 2, "SL"); + + else + label[0] = label[0].toUpper(); // Capitalize first letter + + if (label.startsWith("Fedora")) + favorite = true; - QPushButton* button = new QPushButton(label, mUI.variants); + QPushButton* button = new QPushButton(label, mUI.content); button->setProperty("ssg_variant", QVariant(name)); - mUI.variants->layout()->addWidget(button); + + if (favorite) + mUI.variantsLayout->insertWidget(lastFavoriteIndex++, button); // insert button before text and divider + else + mUI.variantsLayout->addWidget(button); QObject::connect( button, SIGNAL(released()), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/Scanner.cpp new/scap-workbench-1.1.1/src/Scanner.cpp --- old/scap-workbench-1.1.0/src/Scanner.cpp 2015-03-17 17:12:56.000000000 +0100 +++ new/scap-workbench-1.1.1/src/Scanner.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -27,6 +27,7 @@ mScanThread(0), mMainThread(0), mSkipValid(false), + mFetchRemoteResources(false), mSession(0), mTarget("") {} @@ -54,6 +55,16 @@ return mSkipValid; } +void Scanner::setFetchRemoteResources(bool fetch) +{ + mFetchRemoteResources = fetch; +} + +bool Scanner::getFetchRemoteResources() const +{ + return mFetchRemoteResources; +} + void Scanner::setSession(ScanningSession* session) { // TODO: assert that we are not running diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/ScanningSession.cpp new/scap-workbench-1.1.1/src/ScanningSession.cpp --- old/scap-workbench-1.1.0/src/ScanningSession.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/ScanningSession.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -615,7 +615,7 @@ { if (xccdf_session_load(mSession) != 0) throw ScanningSessionException( - QString("Failed to reload session. OpenSCAP error message:\n%1").arg(oscapErrDesc())); + QString("Failed to reload session. OpenSCAP error message:\n%1").arg(oscapErrGetFullError())); struct xccdf_policy_model* policyModel = xccdf_session_get_policy_model(mSession); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/src/TailoringWindow.cpp new/scap-workbench-1.1.1/src/TailoringWindow.cpp --- old/scap-workbench-1.1.0/src/TailoringWindow.cpp 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/src/TailoringWindow.cpp 2015-09-22 16:41:27.000000000 +0200 @@ -131,17 +131,17 @@ mUI.setupUi(this); QObject::connect( - mUI.confirmButton, SIGNAL(released()), + mUI.confirmButton, SIGNAL(clicked()), this, SLOT(confirmAndClose()) ); QObject::connect( - mUI.cancelButton, SIGNAL(released()), + mUI.cancelButton, SIGNAL(clicked()), this, SLOT(close()) ); QObject::connect( - mUI.deleteProfileButton, SIGNAL(released()), + mUI.deleteProfileButton, SIGNAL(clicked()), this, SLOT(deleteProfileAndDiscard()) ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/ui/DiagnosticsDialog.ui new/scap-workbench-1.1.1/ui/DiagnosticsDialog.ui --- old/scap-workbench-1.1.0/ui/DiagnosticsDialog.ui 2014-10-22 14:38:21.000000000 +0200 +++ new/scap-workbench-1.1.1/ui/DiagnosticsDialog.ui 2015-07-17 13:06:12.000000000 +0200 @@ -25,7 +25,7 @@ <widget class="QTextEdit" name="messages"> <property name="font"> <font> - <family>DejaVu Sans Mono</family> + <family>monospace</family> </font> </property> <property name="readOnly"> @@ -35,7 +35,7 @@ <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans Mono'; font-size:10pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:monospace; font-size:10pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> </property> <property name="acceptRichText"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/ui/MainWindow.ui new/scap-workbench-1.1.1/ui/MainWindow.ui --- old/scap-workbench-1.1.0/ui/MainWindow.ui 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/ui/MainWindow.ui 2015-09-22 16:41:27.000000000 +0200 @@ -40,13 +40,31 @@ <item row="8" column="1" colspan="2"> <widget class="QWidget" name="widget_3" native="true"> <layout class="QVBoxLayout" name="verticalLayout_4"> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> <widget class="QWidget" name="widget_4" native="true"> <layout class="QHBoxLayout" name="horizontalLayout_5"> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> @@ -227,13 +245,31 @@ <item> <widget class="QWidget" name="widget_5" native="true"> <layout class="QVBoxLayout" name="verticalLayout_3"> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> <widget class="QWidget" name="preScanTools" native="true"> <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> @@ -257,6 +293,21 @@ </spacer> </item> <item> + <widget class="QCheckBox" name="fetchRemoteResourcesCheckbox"> + <property name="font"> + <font> + <pointsize>11</pointsize> + </font> + </property> + <property name="toolTip"> + <string><html><head/><body><p>Allow download of&nbsp;remote OVAL content referenced from&nbsp;XCCDF by&nbsp;check-content-ref/@href.</p></body></html></string> + </property> + <property name="text"> + <string>Fetch remote resources</string> + </property> + </widget> + </item> + <item> <widget class="QCheckBox" name="onlineRemediationCheckBox"> <property name="font"> <font> @@ -294,7 +345,16 @@ <item> <widget class="QWidget" name="scanTools" native="true"> <layout class="QHBoxLayout" name="horizontalLayout_4"> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> @@ -336,7 +396,16 @@ <item> <widget class="QWidget" name="postScanTools" native="true"> <layout class="QHBoxLayout" name="horizontalLayout_3"> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item> @@ -409,7 +478,7 @@ <x>0</x> <y>0</y> <width>800</width> - <height>27</height> + <height>23</height> </rect> </property> <property name="font"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scap-workbench-1.1.0/ui/SSGIntegrationDialog.ui new/scap-workbench-1.1.1/ui/SSGIntegrationDialog.ui --- old/scap-workbench-1.1.0/ui/SSGIntegrationDialog.ui 2015-03-17 17:14:00.000000000 +0100 +++ new/scap-workbench-1.1.1/ui/SSGIntegrationDialog.ui 2015-09-22 16:41:27.000000000 +0200 @@ -7,52 +7,96 @@ <x>0</x> <y>0</y> <width>528</width> - <height>373</height> + <height>700</height> </rect> </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> <property name="windowTitle"> <string>Open SCAP Security Guide</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QWidget" name="variants" native="true"> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QLabel" name="ssgLogo"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Maximum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string/> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>SCAP Security Guide was found installed on this machine. Select one of the default guides or a custom guide to open.</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - <property name="margin"> - <number>5</number> - </property> - </widget> - </item> - </layout> + <widget class="QLabel" name="ssgLogo"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Maximum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string/> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QScrollArea" name="variants"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>150</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="lineWidth"> + <number>0</number> + </property> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="content"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>514</width> + <height>637</height> + </rect> + </property> + <layout class="QVBoxLayout" name="variantsLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>SCAP Security Guide was found installed on this machine. Select one of the default guides or a custom guide to open.</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + <property name="margin"> + <number>5</number> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> </widget> </item> <item> @@ -67,7 +111,16 @@ <property name="spacing"> <number>6</number> </property> - <property name="margin"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> <number>0</number> </property> <item>