1 /*
2     KApacheLog, a apache log viewer tool
3     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
4 
5     SPDX-License-Identifier: GPL-2.0-or-later
6 */
7 
8 #include "authenticationConfigurationWidget.h"
9 
AuthenticationConfigurationWidget()10 AuthenticationConfigurationWidget::AuthenticationConfigurationWidget()
11     : LogModeConfigurationWidget(i18n("Authentication Log"), QStringLiteral(AUTHENTICATION_MODE_ICON), i18n("Authentication Log"))
12 {
13     auto layout = new QVBoxLayout(this);
14 
15     mWarningBox = new KMessageWidget(this);
16     mWarningBox->setVisible(false);
17     mWarningBox->setMessageType(KMessageWidget::Warning);
18     mWarningBox->setText(i18n("Log file does not exist. Mode will be unavailable."));
19     mWarningBox->setCloseButtonVisible(false);
20     mWarningBox->setIcon(QIcon::fromTheme(QStringLiteral("dialog-warning")));
21 
22     // Authentication log file
23     auto authenticationBox = new QGroupBox(i18n("Authentication Log File"));
24     auto authenticationLayout = new QVBoxLayout();
25     auto filePathLayout = new QHBoxLayout();
26     authenticationBox->setLayout(authenticationLayout);
27 
28     authenticationLayout->addWidget(mWarningBox);
29     authenticationLayout->addLayout(filePathLayout);
30 
31     layout->addWidget(authenticationBox);
32 
33     filePathLayout->addWidget(new QLabel(i18n("Authentication log file:")));
34 
35     mAuthenticationUrlRequester = new KUrlRequester(authenticationBox);
36     mAuthenticationUrlRequester->setMode(KFile::File);
37 
38     mAuthenticationUrlRequester->setToolTip(i18n("You can type or choose the authentication log file (example: <i>/var/log/auth.log</i>)."));
39     mAuthenticationUrlRequester->setWhatsThis(
40         i18n("You can type or choose here the authentication log file. This file will be analyzed when you "
41              "select the <b>Authentication log</b> menu. Generally, its name is <i>/var/log/auth.log</i>"));
42     filePathLayout->addWidget(mAuthenticationUrlRequester);
43 
44     connect(mAuthenticationUrlRequester, &KUrlRequester::textChanged, this, &LogModeConfigurationWidget::configurationChanged);
45 
46     layout->addStretch();
47 }
48 
saveConfig()49 void AuthenticationConfigurationWidget::saveConfig()
50 {
51     auto *authenticationConfiguration =
52         Globals::instance().findLogMode(QStringLiteral(AUTHENTICATION_LOG_MODE_ID))->logModeConfiguration<AuthenticationConfiguration *>();
53 
54     authenticationConfiguration->setAuthenticationPath(mAuthenticationUrlRequester->url().toLocalFile());
55 }
56 
readConfig()57 void AuthenticationConfigurationWidget::readConfig()
58 {
59     auto *authenticationConfiguration =
60         Globals::instance().findLogMode(QStringLiteral(AUTHENTICATION_LOG_MODE_ID))->logModeConfiguration<AuthenticationConfiguration *>();
61 
62     const QString path = authenticationConfiguration->authenticationPath();
63     const QFileInfo fileInfo(path);
64     mWarningBox->setVisible(!fileInfo.exists());
65 
66     mAuthenticationUrlRequester->setUrl(QUrl::fromLocalFile(path));
67 }
68 
defaultConfig()69 void AuthenticationConfigurationWidget::defaultConfig()
70 {
71     // TODO Find a way to read the configuration per default
72     readConfig();
73 }
74 
isValid() const75 bool AuthenticationConfigurationWidget::isValid() const
76 {
77     if (!mAuthenticationUrlRequester->url().toLocalFile().isEmpty()) {
78         return true;
79     }
80 
81     return false;
82 }
83