This repository has been archived by the owner on Jul 15, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
inject.js
107 lines (88 loc) · 3.66 KB
/
inject.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/* Velocity Inject Script */
const fs = require("fs");
const path = require("path");
const { mkdir, writeFile, rmdir, rm } = require("fs").promises;
console.log("\u001b[32m|--------------------------------------|\u001b[0m");
console.log("\u001b[32m| \u001b[1;94mVelocity\u001b[0m");
console.log("\u001b[32m|--------------------------------------|\u001b[0m");
console.log("");
const run = async () => {
const channel = process.argv[2] || "stable";
const platform = process.platform;
if (channel !== "stable" && channel !== "ptb" && channel !== "canary") {
console.error("Invalid channel specified. Please use 'stable', 'ptb', or 'canary'.");
return process.exit(1);
}
console.log(`Injecting Velocity to \u001b[1;32m${platform}:${channel}\u001b[0m`);
console.log("");
let proposedPath;
if (platform === "win32") {
let discordVersion;
switch (channel) {
case "stable":
proposedPath = path.join(process.env.LOCALAPPDATA, "discord");
break;
case "ptb":
proposedPath = path.join(process.env.LOCALAPPDATA, "discordptb");
break;
case "canary":
proposedPath = path.join(process.env.LOCALAPPDATA, "discordcanary");
break;
}
discordVersion = fs.readdirSync(proposedPath).filter((file) => file.startsWith("app-"))[0];
proposedPath = path.join(proposedPath, discordVersion, "resources");
console.log(`Found Discord installation at \u001b[1;32m${proposedPath}\u001b[0m`);
} else if (platform === "darwin") {
switch (channel) {
case "stable":
proposedPath = "/Applications/Discord.app/Contents/Resources/";
break;
case "ptb":
proposedPath = "/Applications/Discord PTB.app/Contents/Resources/";
break;
case "canary":
proposedPath = "/Applications/Discord Canary.app/Contents/Resources/";
break;
}
console.log(`Found Discord installation at \u001b[1;32m${proposedPath}\u001b[0m`);
} else if (platform === "linux") {
switch (channel) {
case "stable":
proposedPath = "/usr/share/discord/";
break;
case "ptb":
proposedPath = "/usr/share/discordptb/";
break;
case "canary":
proposedPath = "/usr/share/discordcanary/";
break;
}
console.log(`Found Discord installation at \u001b[1;32m${proposedPath}\u001b[0m`);
}
const filesAlreadyExist = fs.existsSync(path.join(proposedPath, "app"));
if (filesAlreadyExist) {
console.log("\u001b[1;33mClient Mod already injected into this location.\u001b[0m");
console.log("\u001b[1;33mOverwriting...\u001b[0m");
console.log("");
await rm(path.join(proposedPath, "app"), { recursive: true });
}
try {
mkdir(path.join(proposedPath, "app"));
console.log("Created /app");
writeFile(path.join(proposedPath, "app", "index.js"), `require("${path.join(__dirname, "../").replace(/\\/g, "\\\\")}");`);
console.log("Created /app/index.js");
writeFile(
path.join(proposedPath, "app", "package.json"),
JSON.stringify({
name: "velocity",
main: "index.js",
})
);
console.log("Created /app/package.json");
} catch (e) {
console.error(`\u001b[1;31mFailed to inject files: ${e}\u001b[0m`);
}
console.log("");
console.log("\u001b[1;32mSuccessfully injected Velocity.\u001b[0m");
};
run();