Auto disable logs after 14 days (#610)

Auto disable logs after 14 days
This commit is contained in:
Nethius 2024-03-20 21:22:29 +07:00 committed by GitHub
parent 294778884b
commit 95bdae68f4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 113 additions and 29 deletions

View file

@ -226,9 +226,22 @@ void Settings::setSaveLogs(bool enabled)
} }
} }
#endif #endif
if (enabled) {
setLogEnableDate(QDateTime::currentDateTime());
}
emit saveLogsChanged(enabled); emit saveLogsChanged(enabled);
} }
QDateTime Settings::getLogEnableDate()
{
return value("Conf/logEnableDate").toDateTime();
}
void Settings::setLogEnableDate(QDateTime date)
{
setValue("Conf/logEnableDate", date);
}
QString Settings::routeModeString(RouteMode mode) const QString Settings::routeModeString(RouteMode mode) const
{ {
switch (mode) { switch (mode) {

View file

@ -100,6 +100,9 @@ public:
} }
void setSaveLogs(bool enabled); void setSaveLogs(bool enabled);
QDateTime getLogEnableDate();
void setLogEnableDate(QDateTime date);
enum RouteMode { enum RouteMode {
VpnAllSites, VpnAllSites,
VpnOnlyForwardSites, VpnOnlyForwardSites,

View file

@ -27,6 +27,7 @@ SettingsController::SettingsController(const QSharedPointer<ServersModel> &serve
m_settings(settings) m_settings(settings)
{ {
m_appVersion = QString("%1 (%2, %3)").arg(QString(APP_VERSION), __DATE__, GIT_COMMIT_HASH); m_appVersion = QString("%1 (%2, %3)").arg(QString(APP_VERSION), __DATE__, GIT_COMMIT_HASH);
checkIfNeedDisableLogs();
} }
void SettingsController::toggleAmneziaDns(bool enable) void SettingsController::toggleAmneziaDns(bool enable)
@ -71,8 +72,11 @@ void SettingsController::toggleLogging(bool enable)
{ {
m_settings->setSaveLogs(enable); m_settings->setSaveLogs(enable);
#ifdef Q_OS_IOS #ifdef Q_OS_IOS
AmneziaVPN::toggleLogging(enable); AmneziaVPN::toggleLogging(enable);
#endif #endif
if (enable == true) {
checkIfNeedDisableLogs();
}
emit loggingStateChanged(); emit loggingStateChanged();
} }
@ -205,3 +209,13 @@ bool SettingsController::isCameraPresent()
return false; return false;
#endif #endif
} }
void SettingsController::checkIfNeedDisableLogs()
{
m_loggingDisableDate = m_settings->getLogEnableDate().addDays(14);
if (m_loggingDisableDate <= QDateTime::currentDateTime()) {
toggleLogging(false);
clearLogs();
emit loggingDisableByWatcher();
}
}

View file

@ -77,6 +77,8 @@ signals:
void amneziaDnsToggled(bool enable); void amneziaDnsToggled(bool enable);
void loggingDisableByWatcher();
private: private:
QSharedPointer<ServersModel> m_serversModel; QSharedPointer<ServersModel> m_serversModel;
QSharedPointer<ContainersModel> m_containersModel; QSharedPointer<ContainersModel> m_containersModel;
@ -85,6 +87,10 @@ private:
std::shared_ptr<Settings> m_settings; std::shared_ptr<Settings> m_settings;
QString m_appVersion; QString m_appVersion;
QDateTime m_loggingDisableDate;
void checkIfNeedDisableLogs();
}; };
#endif // SETTINGSCONTROLLER_H #endif // SETTINGSCONTROLLER_H

View file

@ -33,44 +33,71 @@ PageType {
anchors.fill: parent anchors.fill: parent
anchors.bottomMargin: drawer.collapsedHeight anchors.bottomMargin: drawer.collapsedHeight
ConnectButton { ColumnLayout {
id: connectButton anchors.fill: parent
anchors.centerIn: parent anchors.topMargin: 34
}
BasicButtonType {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 34 anchors.bottomMargin: 34
leftPadding: 16
rightPadding: 16
implicitHeight: 36 BasicButtonType {
property bool isLoggingEnabled: SettingsController.isLoggingEnabled
defaultColor: "transparent" Layout.alignment: Qt.AlignHCenter
hoveredColor: Qt.rgba(1, 1, 1, 0.08)
pressedColor: Qt.rgba(1, 1, 1, 0.12)
disabledColor: "#878B91"
textColor: "#878B91"
leftImageColor: "transparent"
borderWidth: 0
property bool isSplitTunnelingEnabled: SitesModel.isTunnelingEnabled || implicitHeight: 36
(ServersModel.isDefaultServerDefaultContainerHasSplitTunneling && ServersModel.getDefaultServerData("isServerFromApi"))
text: isSplitTunnelingEnabled ? qsTr("Split tunneling enabled") : qsTr("Split tunneling disabled") defaultColor: "transparent"
hoveredColor: Qt.rgba(1, 1, 1, 0.08)
pressedColor: Qt.rgba(1, 1, 1, 0.12)
disabledColor: "#878B91"
textColor: "#878B91"
borderWidth: 0
imageSource: isSplitTunnelingEnabled ? "qrc:/images/controls/split-tunneling.svg" : "" visible: isLoggingEnabled ? true : false
rightImageSource: "qrc:/images/controls/chevron-down.svg" text: qsTr("Logging enabled")
onClicked: { onClicked: {
homeSplitTunnelingDrawer.open() PageController.goToPage(PageEnum.PageSettingsLogging)
}
} }
HomeSplitTunnelingDrawer { ConnectButton {
id: homeSplitTunnelingDrawer id: connectButton
anchors.centerIn: parent
}
parent: root BasicButtonType {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 34
leftPadding: 16
rightPadding: 16
implicitHeight: 36
defaultColor: "transparent"
hoveredColor: Qt.rgba(1, 1, 1, 0.08)
pressedColor: Qt.rgba(1, 1, 1, 0.12)
disabledColor: "#878B91"
textColor: "#878B91"
leftImageColor: "transparent"
borderWidth: 0
property bool isSplitTunnelingEnabled: SitesModel.isTunnelingEnabled ||
(ServersModel.isDefaultServerDefaultContainerHasSplitTunneling && ServersModel.getDefaultServerData("isServerFromApi"))
text: isSplitTunnelingEnabled ? qsTr("Split tunneling enabled") : qsTr("Split tunneling disabled")
imageSource: isSplitTunnelingEnabled ? "qrc:/images/controls/split-tunneling.svg" : ""
rightImageSource: "qrc:/images/controls/chevron-down.svg"
onClicked: {
homeSplitTunnelingDrawer.open()
}
HomeSplitTunnelingDrawer {
id: homeSplitTunnelingDrawer
parent: root
}
} }
} }
} }

View file

@ -15,6 +15,18 @@ import "../Controls2/TextTypes"
PageType { PageType {
id: root id: root
Connections {
target: SettingsController
function onLoggingStateChanged() {
if (SettingsController.isLoggingEnabled) {
var message = qsTr("Logging is enabled. Note that logs will be automatically \
disabled after 14 days, and all log files will be deleted.")
PageController.showNotificationMessage(message)
}
}
}
BackButtonType { BackButtonType {
id: backButton id: backButton

View file

@ -129,6 +129,14 @@ PageType {
} }
} }
Connections {
target: SettingsController
function onLoggingDisableByWatcher() {
PageController.showNotificationMessage(qsTr("Logging was disabled after 14 days, log files were deleted"))
}
}
StackViewType { StackViewType {
id: tabBarStackView id: tabBarStackView

View file

@ -95,6 +95,7 @@ Window {
Connections { Connections {
target: SettingsController target: SettingsController
function onChangeSettingsFinished(finishedMessage) { function onChangeSettingsFinished(finishedMessage) {
PageController.showNotificationMessage(finishedMessage) PageController.showNotificationMessage(finishedMessage)
} }