Skip to content

Commit 1606695

Browse files
committed
Add feature to view admin_audit log files
Add a LogFileProvider class that identifies the available log files It checks if the admin_audit app is enabled, and fetches it's logfile path. Additionally, add ability for user to select the file they want to view. The "Download logs" button now downloads the currently selected log file. Tested by enabling and disabling the admin_audit app TODO: Update the commands to also use the choosen logfile Fixes: #318 Signed-off-by: Abijeet <[email protected]>
1 parent 0ab708a commit 1606695

15 files changed

+305
-51
lines changed

appinfo/info.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
</screenshot>
2121

2222
<dependencies>
23-
<nextcloud min-version="22" max-version="22" />
23+
<nextcloud min-version="21" max-version="22" />
2424
</dependencies>
2525

2626
<commands>

appinfo/routes.php

+2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
['name' => 'log#get', 'url' => '/get', 'verb' => 'GET'],
1515
['name' => 'log#poll', 'url' => '/poll', 'verb' => 'GET'],
1616
['name' => 'log#search', 'url' => '/search', 'verb' => 'GET'],
17+
['name' => 'log#download', 'url' => '/download', 'verb' => 'GET'],
1718
['name' => 'log#getSettings', 'url' => '/settings', 'verb' => 'GET'],
1819
['name' => 'log#getLevels', 'url' => '/levels', 'verb' => 'GET'],
1920
['name' => 'log#setLevels', 'url' => '/levels', 'verb' => 'PUT'],
2021
['name' => 'log#setRelative', 'url' => '/relative', 'verb' => 'PUT'],
2122
['name' => 'log#setLive', 'url' => '/live', 'verb' => 'PUT'],
23+
['name' => 'log#setLogFile', 'url' => '/logFile', 'verb' => 'PUT']
2224
]];

build/main.css

+11-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/main.css.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/main.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/main.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/App.js

+21-5
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ export class App extends Component {
2323
provider: null,
2424
relative: true,
2525
dateFormat: 'Y-m-d\TH:i:sO',
26-
live: false
26+
live: false,
27+
availableLogFiles: []
2728
};
2829

2930
constructor (props) {
@@ -43,11 +44,15 @@ export class App extends Component {
4344
const relative = await this.logProvider.getRelative();
4445
const dateFormat = await this.logProvider.getDateFormat();
4546
const live = await this.logProvider.getLive();
47+
const availableLogFiles = await this.logProvider.getAvailableLogFiles();
48+
const logFile = await this.logProvider.getLogFile();
4649
this.setState({
4750
levels,
4851
relative,
4952
dateFormat,
5053
live,
54+
availableLogFiles,
55+
logFile,
5156
provider: this.logProvider
5257
});
5358
await this.logProvider.load();
@@ -76,7 +81,7 @@ export class App extends Component {
7681
this.logProvider.load();
7782
}
7883

79-
onLogFile = async (content) => {
84+
onCustomLogFile = async (content) => {
8085
const logFile = new LogFile(content);
8186
logFile.on('entries', entries => {
8287
if (this.state.provider === logFile) {
@@ -107,14 +112,22 @@ export class App extends Component {
107112
this.saveLive(live);
108113
};
109114

115+
async setLogFile (logFile) {
116+
this.setState({logFile, loading: true});
117+
await this.logProvider.setLogFile(logFile);
118+
this.logProvider.reset();
119+
this.logProvider.load();
120+
this.setState({loading: false});
121+
}
122+
110123
handlePaste = (event) => {
111124
let data = event.clipboardData.getData('Text');
112125
if (!data) {
113126
data = event.clipboardData.getData('text/plain');
114127
}
115128
data = data.trim();
116129
if (data.indexOf('{') !== -1 && data.indexOf('}')) {
117-
this.onLogFile(data);
130+
this.onCustomLogFile(data);
118131
}
119132
};
120133

@@ -151,6 +164,7 @@ export class App extends Component {
151164
isLoading={this.state.loading}>
152165
<div className={styles.content}>
153166
<LogTable
167+
availableLogFiles={this.state.availableLogFiles}
154168
inlineSettings={this.props.inlineSettings}
155169
levels={this.state.levels}
156170
setRelative={this.setRelative}
@@ -161,7 +175,9 @@ export class App extends Component {
161175
hidden={this.state.entries.length - entries.length}
162176
live={this.state.live}
163177
setLive={this.setLive.bind(this)}
164-
onLogFile={this.onLogFile}
178+
logFile={this.state.logFile}
179+
setLogFile={this.setLogFile.bind(this)}
180+
onLogFile={this.onCustomLogFile}
165181
/>
166182
</div>
167183
</ReactScrolla>
@@ -172,7 +188,7 @@ export class App extends Component {
172188
<div>
173189
{!this.props.inlineSettings ?
174190
<SideBar><LogUploader
175-
onLogFile={this.onLogFile}/>
191+
onLogFile={this.onCustomLogFile}/>
176192
<Separator/>
177193
{filters}
178194
<Settings>

js/Components/LogTable.js

+4
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,14 @@ export class LogTable extends Component {
154154
{
155155
this.state.showLevelSettings ?
156156
<Settings
157+
availableLogFiles={this.props.availableLogFiles}
157158
setLevel={this.props.setLevel}
158159
levels={this.props.levels}
159160
live={this.props.live}
160161
setLive={this.props.setLive}
162+
live={this.props.live}
163+
setLogFile={this.props.setLogFile}
164+
logFile={this.props.logFile}
161165
onLogFile={this.props.onLogFile}
162166
/> :
163167
<div className="hidden"/>

0 commit comments

Comments
 (0)