Skip to content

Commit 0faa9c7

Browse files
committed
use constants for octal chmod values
1 parent 56df09e commit 0faa9c7

32 files changed

Lines changed: 99 additions & 85 deletions

src/commands/action-flows/action-flow/action-flow.service.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Context } from "../../../core/command/cli-context";
66
import { ActionFlowApi } from "./action-flow-api";
77
import { fileService, FileService } from "../../../core/utils/file-service";
88
import { logger } from "../../../core/utils/logger";
9+
import { FileConstants } from "../../../core/utils/file.constants";
910

1011
export class ActionFlowService {
1112
public static readonly METADATA_FILE_NAME = "metadata.json";
@@ -22,15 +23,15 @@ export class ActionFlowService {
2223

2324
const zip = new AdmZip();
2425
tmpZip.getEntries().forEach(entry => {
25-
zip.addFile(entry.entryName, entry.getData(), "", 0o600);
26+
zip.addFile(entry.entryName, entry.getData(), "", FileConstants.DEFAULT_FILE_PERMISSIONS);
2627
});
2728

2829
if (metadataFilePath) {
2930
this.attachMetadataFile(metadataFilePath, zip);
3031
}
3132

3233
const fileName = "action-flows_export_" + uuidv4() + ".zip";
33-
zip.writeZip(fileName, () => fs.chmodSync(fileName, 0o600));
34+
zip.writeZip(fileName, () => fs.chmodSync(fileName, FileConstants.DEFAULT_FILE_PERMISSIONS));
3435
logger.info(FileService.fileDownloadedMessage + fileName);
3536
}
3637

@@ -74,6 +75,6 @@ export class ActionFlowService {
7475
fileName = fileName + (fileName.endsWith(".json") ? "" : ".json");
7576
const metadata = fileService.readFile(fileName);
7677

77-
zip.addFile(ActionFlowService.METADATA_FILE_NAME, Buffer.from(metadata), "", 0o600);
78+
zip.addFile(ActionFlowService.METADATA_FILE_NAME, Buffer.from(metadata), "", FileConstants.DEFAULT_FILE_PERMISSIONS);
7879
}
7980
}

src/commands/configuration-management/batch-import-export.service.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { BatchImportExportApi } from "./api/batch-import-export-api";
1717
import { StudioService } from "./studio.service";
1818
import { GitService } from "../../core/git-profile/git/git.service";
1919
import * as fs from "fs";
20+
import { FileConstants } from "../../core/utils/file.constants";
2021

2122
export class BatchImportExportService {
2223

@@ -82,13 +83,13 @@ export class BatchImportExportService {
8283

8384
let exportedVariables = await this.getVersionedVariablesForPackagesWithKeys(versionsByPackageKey);
8485
exportedVariables = this.studioService.fixConnectionVariables(exportedVariables);
85-
exportedPackagesZip.addFile(BatchExportImportConstants.VARIABLES_FILE_NAME, Buffer.from(stringify(exportedVariables), "utf8"), "", 0o600);
86+
exportedPackagesZip.addFile(BatchExportImportConstants.VARIABLES_FILE_NAME, Buffer.from(stringify(exportedVariables), "utf8"), "", FileConstants.DEFAULT_FILE_PERMISSIONS);
8687

8788
const studioPackageKeys = manifest.filter(packageManifest => packageManifest.flavor === BatchExportImportConstants.STUDIO)
8889
.map(packageManifest => packageManifest.packageKey);
8990

9091
const studioData = await this.studioService.getStudioPackageManifests(studioPackageKeys);
91-
exportedPackagesZip.addFile(BatchExportImportConstants.STUDIO_FILE_NAME, Buffer.from(stringify(studioData), "utf8"), "", 0o600);
92+
exportedPackagesZip.addFile(BatchExportImportConstants.STUDIO_FILE_NAME, Buffer.from(stringify(studioData), "utf8"), "", FileConstants.DEFAULT_FILE_PERMISSIONS);
9293

9394
exportedPackagesZip.getEntries().forEach(entry => {
9495
if (entry.name.endsWith(BatchExportImportConstants.ZIP_EXTENSION)) {
@@ -261,7 +262,7 @@ export class BatchImportExportService {
261262
} else {
262263
const fileDownloadedMessage = "File downloaded successfully. New filename: ";
263264
const filename = `export_${uuidv4()}.zip`;
264-
exportedZip.writeZip(filename, () => fs.chmodSync(filename, 0o600));
265+
exportedZip.writeZip(filename, () => fs.chmodSync(filename, FileConstants.DEFAULT_FILE_PERMISSIONS));
265266
logger.info(fileDownloadedMessage + filename);
266267
}
267268
}

src/commands/studio/manager/widget.manager-factory.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { FatalError, logger } from "../../../core/utils/logger";
55
import { Context } from "../../../core/command/cli-context";
66
import * as AdmZip from "adm-zip";
77
import { parse } from "../../../core/utils/yaml";
8+
import { FileConstants } from "../../../core/utils/file.constants";
89

910
export class WidgetManagerFactory {
1011

@@ -34,7 +35,7 @@ export class WidgetManagerFactory {
3435
const zip = new AdmZip();
3536
const zipFileName = path.resolve(process.cwd(), "output.zip");
3637
zip.addLocalFolder(path.resolve(process.cwd()));
37-
zip.writeZip(zipFileName, () => fs.chmodSync(zipFileName, 0o600));
38+
zip.writeZip(zipFileName, () => fs.chmodSync(zipFileName, FileConstants.DEFAULT_FILE_PERMISSIONS));
3839
return fs.createReadStream(path.resolve(process.cwd(), "output.zip"));
3940
}
4041

src/core/git-profile/git-profile.service.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { FatalError, logger } from "../utils/logger";
44
import os = require("os");
55
import { AuthenticationType, GitProfile } from "./git-profile.interface";
66
import { GitProfileValidator } from "./git-profile.validator";
7+
import { FileConstants } from "../utils/file.constants";
78

89
export interface GitConfig {
910
defaultProfile: string;
@@ -63,7 +64,7 @@ export class GitProfileService {
6364
const newProfileFileName = this.constructProfileFileName(profile.name);
6465
fs.writeFileSync(path.resolve(this.gitProfileContainerPath, newProfileFileName), JSON.stringify(profile), {
6566
encoding: "utf-8",
66-
mode: "0600",
67+
mode: FileConstants.DEFAULT_FILE_PERMISSIONS,
6768
});
6869
}
6970

@@ -89,12 +90,12 @@ export class GitProfileService {
8990
}
9091

9192
private storeConfig(config: GitConfig): void {
92-
fs.writeFileSync(this.configContainer, JSON.stringify(config), { encoding: "utf-8", mode: "0600" });
93+
fs.writeFileSync(this.configContainer, JSON.stringify(config), { encoding: "utf-8", mode: FileConstants.DEFAULT_FILE_PERMISSIONS });
9394
}
9495

9596
private createProfileContainerIfNotExists(): void {
9697
if (!fs.existsSync(this.gitProfileContainerPath)) {
97-
fs.mkdirSync(this.gitProfileContainerPath, 0o700);
98+
fs.mkdirSync(this.gitProfileContainerPath, FileConstants.DEFAULT_FOLDER_PERMISSIONS);
9899
}
99100
}
100101

src/core/git-profile/git/git.service.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Context } from "../../command/cli-context";
66
import { v4 as uuid } from "uuid";
77
import { SimpleGit } from "simple-git/dist/typings/simple-git";
88
import { GitProfile } from "../git-profile.interface";
9+
import { FileConstants } from "../../utils/file.constants";
910

1011
export class GitService {
1112

@@ -20,7 +21,7 @@ export class GitService {
2021
const repoUrl = this.getRepoUrl();
2122

2223
const targetDir = path.join(os.tmpdir(), `content-cli-${uuid()}`);
23-
fs.mkdirSync(targetDir, { recursive: true, mode: 0o700 });
24+
fs.mkdirSync(targetDir, { recursive: true, mode: FileConstants.DEFAULT_FOLDER_PERMISSIONS });
2425

2526
const git = simpleGit();
2627
try {
@@ -36,7 +37,7 @@ export class GitService {
3637
this.validateGitProfileExistence();
3738

3839
const workingDir = path.join(os.tmpdir(), `content-cli-${uuid()}`);
39-
fs.mkdirSync(workingDir, { recursive: true, mode: 0o700 });
40+
fs.mkdirSync(workingDir, { recursive: true, mode: FileConstants.DEFAULT_FOLDER_PERMISSIONS });
4041

4142
const repoUrl = this.getRepoUrl();
4243
const git = simpleGit();

src/core/http/http-shared/base.manager.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { FatalError, logger } from "../../utils/logger";
44
import { ManagerConfig } from "./manager-config.interface";
55
import { HttpClient } from "../http-client";
66
import { Context } from "../../command/cli-context";
7+
import { FileConstants } from "../../utils/file.constants";
78

89
export abstract class BaseManager {
910
private httpClient: () => HttpClient;
@@ -103,14 +104,14 @@ export abstract class BaseManager {
103104

104105
protected writeStreamToFile(data: any): string {
105106
const filename = this.getConfig().exportFileName;
106-
fs.writeFileSync(filename, data, { mode: "0600" });
107+
fs.writeFileSync(filename, data, { mode: FileConstants.DEFAULT_FILE_PERMISSIONS });
107108
return filename;
108109
}
109110

110111
protected writeToFileWithGivenName(data: any, filename: string): void {
111112
fs.writeFileSync(path.resolve(process.cwd(), filename), this.getSerializedFileContent(data), {
112113
encoding: "utf-8",
113-
mode: "0600",
114+
mode: FileConstants.DEFAULT_FILE_PERMISSIONS,
114115
});
115116
}
116117

src/core/profile/profile.service.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { Client, Issuer } from "openid-client";
1010
import axios from "axios";
1111
import os = require("os");
1212
import { SecureSecretStorageService } from "./secret-storage.service";
13+
import { FileConstants } from "../utils/file.constants";
1314

1415
const homedir = os.homedir();
1516
// use 5 seconds buffer to avoid rare cases when accessToken is just about to expire before the command is sent
@@ -117,7 +118,7 @@ export class ProfileService {
117118

118119
fs.writeFileSync(path.resolve(this.profileContainerPath, newProfileFileName), JSON.stringify(profileToStore), {
119120
encoding: "utf-8",
120-
mode: "0600",
121+
mode: FileConstants.DEFAULT_FILE_PERMISSIONS,
121122
});
122123
}
123124

@@ -135,12 +136,12 @@ export class ProfileService {
135136
}
136137

137138
private storeConfig(config: Config): void {
138-
fs.writeFileSync(this.configContainer, JSON.stringify(config), { encoding: "utf-8", mode: "0600" });
139+
fs.writeFileSync(this.configContainer, JSON.stringify(config), { encoding: "utf-8", mode: FileConstants.DEFAULT_FILE_PERMISSIONS });
139140
}
140141

141142
private createProfileContainerIfNotExists(): void {
142143
if (!fs.existsSync(this.profileContainerPath)) {
143-
fs.mkdirSync(this.profileContainerPath, 0o700);
144+
fs.mkdirSync(this.profileContainerPath, FileConstants.DEFAULT_FOLDER_PERMISSIONS);
144145
}
145146
}
146147

src/core/utils/file-service.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import {FatalError, logger} from "./logger";
44
import AdmZip = require("adm-zip");
55
import { v4 as uuidv4 } from "uuid";
66
import * as os from "node:os";
7+
import { FileConstants } from "./file.constants";
78

89
export class FileService {
910
public static readonly fileDownloadedMessage = "File downloaded successfully. New filename: ";
1011

1112
public writeToFileWithGivenName(data: any, filename: string): void {
1213
fs.writeFileSync(path.resolve(process.cwd(), filename), this.getSerializedFileContent(data), {
1314
encoding: "utf-8",
14-
mode: "0600",
15+
mode: FileConstants.DEFAULT_FILE_PERMISSIONS,
1516
});
1617
}
1718

@@ -35,7 +36,7 @@ export class FileService {
3536
}
3637

3738
public extractExportedZipWithNestedZipsToDir(zipFile: AdmZip, targetDir: string): string {
38-
fs.mkdirSync(targetDir, { recursive: true, mode: 0o700 });
39+
fs.mkdirSync(targetDir, { recursive: true, mode: FileConstants.DEFAULT_FOLDER_PERMISSIONS });
3940
zipFile.extractAllTo(targetDir, true, true);
4041

4142
const files = fs.readdirSync(targetDir);
@@ -45,7 +46,7 @@ export class FileService {
4546
const nestedZip = new AdmZip(innerZipPath);
4647
const nestedDir = innerZipPath.replace(/\.zip$/, "");
4748

48-
fs.mkdirSync(nestedDir, { recursive: true, mode: 0o700 });
49+
fs.mkdirSync(nestedDir, { recursive: true, mode: FileConstants.DEFAULT_FOLDER_PERMISSIONS });
4950
nestedZip.extractAllTo(nestedDir, true, true);
5051
fs.rmSync(innerZipPath); // Optionally remove the inner zip
5152
}
@@ -75,16 +76,16 @@ export class FileService {
7576
zip.addLocalFolder(fullPath);
7677
const zippedBuffer = zip.toBuffer();
7778

78-
finalZip.addFile(`${file}.zip`, zippedBuffer, "", 0x600);
79+
finalZip.addFile(`${file}.zip`, zippedBuffer, "", FileConstants.DEFAULT_FILE_PERMISSIONS);
7980
} else if (stat.isFile()) {
8081
finalZip.addLocalFile(fullPath);
8182
}
8283
});
8384

8485
const tempDir = path.join(os.tmpdir(), "content-cli-exports");
85-
fs.mkdirSync(tempDir, { recursive: true, mode: 0o700 });
86+
fs.mkdirSync(tempDir, { recursive: true, mode: FileConstants.DEFAULT_FOLDER_PERMISSIONS });
8687
const zipFilePath = path.join(tempDir, `export_${uuidv4()}.zip`);
87-
finalZip.writeZip(zipFilePath, () => fs.chmodSync(zipFilePath, 0o600));
88+
finalZip.writeZip(zipFilePath, () => fs.chmodSync(zipFilePath, FileConstants.DEFAULT_FILE_PERMISSIONS));
8889

8990
return zipFilePath;
9091
}
@@ -99,10 +100,10 @@ export class FileService {
99100
for (const file of files) {
100101
const filePath = path.join(targetDir, file);
101102
if (fs.statSync(filePath)?.isDirectory()) {
102-
fs.chmodSync(filePath, 0o700);
103+
fs.chmodSync(filePath, FileConstants.DEFAULT_FOLDER_PERMISSIONS);
103104
this.restrictFilePermissions(filePath);
104105
} else {
105-
fs.chmodSync(filePath, 0o600);
106+
fs.chmodSync(filePath, FileConstants.DEFAULT_FILE_PERMISSIONS);
106107
}
107108
}
108109
}

src/core/utils/file.constants.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export enum FileConstants {
2+
DEFAULT_FILE_PERMISSIONS = 0o600,
3+
DEFAULT_FOLDER_PERMISSIONS = 0o700
4+
}

src/core/utils/logger.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Logger } from "winston";
44
import os = require("os");
55
import * as path from "path";
66
import * as fs from "fs";
7+
import { FileConstants } from "./file.constants";
78

89
class CustomTransport extends Transport {
910
constructor(opts: any) {
@@ -37,7 +38,7 @@ const maxSizeBytes = maxLogSizeMB * 1024 * 1024; // 3 MB in bytes
3738
// --- Ensure log directory exists ---
3839
try {
3940
if (!fs.existsSync(logDir)) {
40-
fs.mkdirSync(logDir, { recursive: true, mode: 0o700 });
41+
fs.mkdirSync(logDir, { recursive: true, mode: FileConstants.DEFAULT_FOLDER_PERMISSIONS });
4142
}
4243
} catch (error) {
4344
console.error(`Error creating log directory: ${logDir}`, error);

0 commit comments

Comments
 (0)