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
if (enabled) {
setLogEnableDate(QDateTime::currentDateTime());
}
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
{
switch (mode) {

View file

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

View file

@ -27,6 +27,7 @@ SettingsController::SettingsController(const QSharedPointer<ServersModel> &serve
m_settings(settings)
{
m_appVersion = QString("%1 (%2, %3)").arg(QString(APP_VERSION), __DATE__, GIT_COMMIT_HASH);
checkIfNeedDisableLogs();
}
void SettingsController::toggleAmneziaDns(bool enable)
@ -71,8 +72,11 @@ void SettingsController::toggleLogging(bool enable)
{
m_settings->setSaveLogs(enable);
#ifdef Q_OS_IOS
AmneziaVPN::toggleLogging(enable);
AmneziaVPN::toggleLogging(enable);
#endif
if (enable == true) {
checkIfNeedDisableLogs();
}
emit loggingStateChanged();
}
@ -205,3 +209,13 @@ bool SettingsController::isCameraPresent()
return false;
#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 loggingDisableByWatcher();
private:
QSharedPointer<ServersModel> m_serversModel;
QSharedPointer<ContainersModel> m_containersModel;
@ -85,6 +87,10 @@ private:
std::shared_ptr<Settings> m_settings;
QString m_appVersion;
QDateTime m_loggingDisableDate;
void checkIfNeedDisableLogs();
};
#endif // SETTINGSCONTROLLER_H

View file

@ -33,44 +33,71 @@ PageType {
anchors.fill: parent
anchors.bottomMargin: drawer.collapsedHeight
ConnectButton {
id: connectButton
anchors.centerIn: parent
}
BasicButtonType {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
ColumnLayout {
anchors.fill: parent
anchors.topMargin: 34
anchors.bottomMargin: 34
leftPadding: 16
rightPadding: 16
implicitHeight: 36
BasicButtonType {
property bool isLoggingEnabled: SettingsController.isLoggingEnabled
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
Layout.alignment: Qt.AlignHCenter
property bool isSplitTunnelingEnabled: SitesModel.isTunnelingEnabled ||
(ServersModel.isDefaultServerDefaultContainerHasSplitTunneling && ServersModel.getDefaultServerData("isServerFromApi"))
implicitHeight: 36
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" : ""
rightImageSource: "qrc:/images/controls/chevron-down.svg"
visible: isLoggingEnabled ? true : false
text: qsTr("Logging enabled")
onClicked: {
homeSplitTunnelingDrawer.open()
onClicked: {
PageController.goToPage(PageEnum.PageSettingsLogging)
}
}
HomeSplitTunnelingDrawer {
id: homeSplitTunnelingDrawer
ConnectButton {
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 {
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 {
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 {
id: tabBarStackView

View file

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