Skip to content

Commit 2c2a9eb

Browse files
committed
Update CHANGELOG and package version to 1.1.0; enhance UI and fix security issues
1 parent d04092d commit 2c2a9eb

File tree

4 files changed

+39
-11
lines changed

4 files changed

+39
-11
lines changed

CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,17 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
66

77
## [Unreleased]
88

9+
## [1.1.0] - 2024-11-16
10+
### Added
11+
- Improved the user interface of the webview panel.
12+
- Added line number formatting with leading zeros.
13+
- Removed timestamp and dot from log entries in the summary.
14+
15+
### Fixed
16+
- Fixed potential security issue with non-literal argument in `fs.existsSync`.
17+
- Fixed potential object injection issue in `groupLogEntries` method.
918

10-
## v1.0.2
19+
## [1.0.2] - 2024-10-10
1120
### Changed
1221
- Repository URL to `https://github.com/OpenForgeProject/vscode-ext-magento-log-viewer`
1322

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "magento-log-viewer",
33
"displayName": "Magento Log Viewer",
44
"description": "A Visual Studio Code extension to view and manage Magento log files.",
5-
"version": "1.0.2",
5+
"version": "1.1.0",
66
"publisher": "MathiasElle",
77
"icon": "resources/logo.png",
88
"repository": {

src/extension.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export function activate(context: vscode.ExtensionContext) {
3131
});
3232
} else if (isMagentoProject === 'Yes') {
3333
const magentoRoot = config.get<string>('magentoLogViewer.magentoRoot', '');
34-
if (!magentoRoot || !fs.existsSync(magentoRoot) || !fs.lstatSync(magentoRoot).isDirectory()) {
34+
if (!magentoRoot || !isValidPath(magentoRoot)) {
3535
vscode.window.showErrorMessage('Magento root path is not set or is not a directory.');
3636
return;
3737
}
@@ -97,5 +97,13 @@ function activateExtension(context: vscode.ExtensionContext, magentoRoot: string
9797
context.subscriptions.push(watcher);
9898
}
9999

100+
function isValidPath(filePath: string): boolean {
101+
try {
102+
return fs.existsSync(filePath) && fs.lstatSync(filePath).isDirectory();
103+
} catch (error) {
104+
return false;
105+
}
106+
}
107+
100108
// This method is called when your extension is deactivated
101109
export function deactivate() {}

src/logViewer.ts

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,27 @@ export class LogViewerProvider implements vscode.TreeDataProvider<LogFile>, vsco
8181
const match = line.match(/\.(\w+):/);
8282
if (match) {
8383
const level = match[1];
84-
if (!grouped[level]) {
85-
grouped[level] = [];
84+
const message = line.replace(/^\[.*?\]\s*\.\w+:\s*/, ''); // Entfernt den Zeitstempel und den Punkt
85+
if (this.isValidLogLevel(level)) {
86+
if (!grouped[level]) {
87+
grouped[level] = [];
88+
}
89+
grouped[level].push({ line: message, lineNumber: index });
8690
}
87-
grouped[level].push({ line, lineNumber: index });
8891
}
8992
});
9093

9194
const summary = Object.keys(grouped).map(level => {
9295
const count = grouped[level].length;
9396
const label = `${level} (${count})`;
94-
const logFile = new LogFile(label, vscode.TreeItemCollapsibleState.Collapsed, undefined, grouped[level].map(entry => new LogFile(`Line ${entry.lineNumber + 1}: ${entry.line}`, vscode.TreeItemCollapsibleState.None, {
95-
command: 'magento-log-viewer.openFileAtLine',
96-
title: 'Open Log File at Line',
97-
arguments: [filePath, entry.lineNumber]
98-
})));
97+
const logFile = new LogFile(label, vscode.TreeItemCollapsibleState.Collapsed, undefined, grouped[level].map(entry => {
98+
const lineNumber = (entry.lineNumber + 1).toString().padStart(2, '0'); // Zeilennummer mit führenden Nullen
99+
return new LogFile(`Line ${lineNumber}: ${entry.line}`, vscode.TreeItemCollapsibleState.None, { // Fügen Sie hier den Abstand hinzu
100+
command: 'magento-log-viewer.openFileAtLine',
101+
title: 'Open Log File at Line',
102+
arguments: [filePath, entry.lineNumber]
103+
});
104+
}));
99105
switch (level.toLowerCase()) {
100106
case 'error':
101107
logFile.iconPath = new vscode.ThemeIcon('error');
@@ -118,6 +124,11 @@ export class LogViewerProvider implements vscode.TreeDataProvider<LogFile>, vsco
118124
return summary;
119125
}
120126

127+
private isValidLogLevel(level: string): boolean {
128+
const validLevels = ['error', 'warn', 'debug', 'info'];
129+
return validLevels.includes(level.toLowerCase());
130+
}
131+
121132
getLogFilesWithoutUpdatingBadge(dir: string): LogFile[] {
122133
if (this.pathExists(dir)) {
123134
const files = fs.readdirSync(dir);

0 commit comments

Comments
 (0)