@akaanakbaik/pterodactyl-gateway 0.4.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-entry.js +21 -3
- package/dist/cli-entry.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +212 -0
- package/dist/config.js.map +1 -0
- package/dist/templates.d.ts +2 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +139 -0
- package/dist/templates.js.map +1 -0
- package/dist/wizard-cli.d.ts +3 -0
- package/dist/wizard-cli.d.ts.map +1 -0
- package/dist/wizard-cli.js +10 -0
- package/dist/wizard-cli.js.map +1 -0
- package/dist/wizard.d.ts +2 -0
- package/dist/wizard.d.ts.map +1 -0
- package/dist/wizard.js +219 -0
- package/dist/wizard.js.map +1 -0
- package/package.json +8 -5
package/dist/cli-entry.js
CHANGED
|
@@ -8,7 +8,7 @@ const EXPLAINS = {
|
|
|
8
8
|
reason: "Env PTERO_DOMAIN belum tersedia atau config createPtero belum berisi domain/panelUrl.",
|
|
9
9
|
fix: [
|
|
10
10
|
"export PTERO_DOMAIN=\"https://panel.example.com\"",
|
|
11
|
-
"
|
|
11
|
+
"atau pakai: ptero-gateway config init --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx",
|
|
12
12
|
"jalankan ulang: ptero-gateway doctor"
|
|
13
13
|
]
|
|
14
14
|
},
|
|
@@ -18,7 +18,7 @@ const EXPLAINS = {
|
|
|
18
18
|
fix: [
|
|
19
19
|
"buat Application API Key di panel admin Pterodactyl",
|
|
20
20
|
"export PTERO_PTLA=\"ptla_xxx\"",
|
|
21
|
-
"
|
|
21
|
+
"atau simpan di profile: ptero-gateway config init --domain ... --ptla ptla_xxx"
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
24
|
PTLC_REQUIRED: {
|
|
@@ -27,7 +27,7 @@ const EXPLAINS = {
|
|
|
27
27
|
fix: [
|
|
28
28
|
"buat Client API Key dari account panel",
|
|
29
29
|
"export PTERO_PTLC=\"ptlc_xxx\"",
|
|
30
|
-
"
|
|
30
|
+
"atau simpan di profile: ptero-gateway config init --domain ... --ptlc ptlc_xxx"
|
|
31
31
|
]
|
|
32
32
|
},
|
|
33
33
|
DOCKER_IMAGE_NOT_FOUND: {
|
|
@@ -105,6 +105,14 @@ else if (command === "env-template") {
|
|
|
105
105
|
].join("\n");
|
|
106
106
|
console.log(content);
|
|
107
107
|
}
|
|
108
|
+
else if (command === "config") {
|
|
109
|
+
const { configCommand } = await import("./config.js");
|
|
110
|
+
await configCommand(rawArgs.slice(1));
|
|
111
|
+
}
|
|
112
|
+
else if (command === "templates") {
|
|
113
|
+
const { templatesCommand } = await import("./templates.js");
|
|
114
|
+
templatesCommand(rawArgs.slice(1));
|
|
115
|
+
}
|
|
108
116
|
else if (command === "explain") {
|
|
109
117
|
const code = (rawArgs[1] ?? "").toUpperCase();
|
|
110
118
|
const result = EXPLAINS[code];
|
|
@@ -119,12 +127,22 @@ else if (command === "explain") {
|
|
|
119
127
|
}
|
|
120
128
|
}
|
|
121
129
|
else {
|
|
130
|
+
const { applyConfigProfile } = await import("./config.js");
|
|
131
|
+
applyConfigProfile();
|
|
122
132
|
await import("./cli.js");
|
|
123
133
|
}
|
|
124
134
|
function printHelp() {
|
|
125
135
|
console.log(`Akadev Pterodactyl Gateway
|
|
126
136
|
|
|
127
137
|
Perintah:
|
|
138
|
+
ptero-gateway config help
|
|
139
|
+
ptero-gateway config init --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx
|
|
140
|
+
ptero-gateway config list
|
|
141
|
+
ptero-gateway config use <profile>
|
|
142
|
+
ptero-gateway config doctor
|
|
143
|
+
ptero-gateway templates list
|
|
144
|
+
ptero-gateway templates show nodejs-bot
|
|
145
|
+
ptero-gateway templates command nodejs-bot --name "bot saya" --email user@example.com --node 1 --nest 5 --egg 18
|
|
128
146
|
ptero-gateway presets [--json]
|
|
129
147
|
ptero-gateway explain <ERROR_CODE> [--json]
|
|
130
148
|
ptero-gateway env-template
|
package/dist/cli-entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../src/cli-entry.ts"],"names":[],"mappings":";AAEA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAE5C,MAAM,QAAQ,GAAqE;IACjF,eAAe,EAAE;QACf,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,uFAAuF;QAC/F,GAAG,EAAE;YACH,mDAAmD;YACnD
|
|
1
|
+
{"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../src/cli-entry.ts"],"names":[],"mappings":";AAEA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAE5C,MAAM,QAAQ,GAAqE;IACjF,eAAe,EAAE;QACf,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,uFAAuF;QAC/F,GAAG,EAAE;YACH,mDAAmD;YACnD,0GAA0G;YAC1G,sCAAsC;SACvC;KACF;IACD,aAAa,EAAE;QACb,KAAK,EAAE,iCAAiC;QACxC,MAAM,EAAE,oCAAoC;QAC5C,GAAG,EAAE;YACH,qDAAqD;YACrD,gCAAgC;YAChC,gFAAgF;SACjF;KACF;IACD,aAAa,EAAE;QACb,KAAK,EAAE,4BAA4B;QACnC,MAAM,EAAE,4CAA4C;QACpD,GAAG,EAAE;YACH,wCAAwC;YACxC,gCAAgC;YAChC,gFAAgF;SACjF;KACF;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,kCAAkC;QACzC,MAAM,EAAE,2EAA2E;QACnF,GAAG,EAAE;YACH,sDAAsD;YACtD,2CAA2C;YAC3C,mEAAmE;SACpE;KACF;IACD,0BAA0B,EAAE;QAC1B,KAAK,EAAE,kCAAkC;QACzC,MAAM,EAAE,4EAA4E;QACpF,GAAG,EAAE;YACH,uDAAuD;YACvD,yCAAyC;YACzC,qEAAqE;SACtE;KACF;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,mDAAmD;QAC3D,GAAG,EAAE;YACH,8CAA8C;YAC9C,qDAAqD;YACrD,4CAA4C;SAC7C;KACF;IACD,cAAc,EAAE;QACd,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,4DAA4D;QACpE,GAAG,EAAE;YACH,qDAAqD;YACrD,wCAAwC;YACxC,wDAAwD;SACzD;KACF;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,4DAA4D;QACpE,GAAG,EAAE;YACH,6CAA6C;YAC7C,yEAAyE;YACzE,2BAA2B;SAC5B;KACF;IACD,MAAM,EAAE;QACN,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE,qFAAqF;QAC7F,GAAG,EAAE;YACH,oEAAoE;YACpE,2CAA2C;YAC3C,2CAA2C;SAC5C;KACF;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,uCAAuC;QAC9C,MAAM,EAAE,sDAAsD;QAC9D,GAAG,EAAE;YACH,yCAAyC;YACzC,6DAA6D;YAC7D,2DAA2D;SAC5D;KACF;CACF,CAAC;AAEF,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;IACnE,SAAS,EAAE,CAAC;AACd,CAAC;KAAM,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG;QACd,wCAAwC;QACxC,kDAAkD;QAClD,kDAAkD;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;KAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IAChC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;KAAM,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC5D,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;KAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;SAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACrJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,kBAAkB,MAAM,CAAC,MAAM,wBAAwB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3J,CAAC;AACH,CAAC;KAAM,CAAC;IACN,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC3D,kBAAkB,EAAE,CAAC;IACrB,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA2DQ,CAAC,CAAC;AACxB,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type GatewayProfile = {
|
|
2
|
+
domain: string;
|
|
3
|
+
ptla?: string;
|
|
4
|
+
ptlc?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function configCommand(args: string[]): Promise<void>;
|
|
7
|
+
export declare function applyConfigProfile(profileName?: string | undefined): boolean;
|
|
8
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,iBAmGjD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,qBAA4B,WAWzE"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, chmodSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
const CONFIG_DIR = join(homedir(), ".pterodactyl-gateway");
|
|
5
|
+
const CONFIG_FILE = join(CONFIG_DIR, "config.json");
|
|
6
|
+
export async function configCommand(args) {
|
|
7
|
+
const action = args[0] ?? "help";
|
|
8
|
+
const jsonMode = args.includes("--json");
|
|
9
|
+
if (["help", "--help", "-h"].includes(action)) {
|
|
10
|
+
printConfigHelp();
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (action === "path") {
|
|
14
|
+
console.log(CONFIG_FILE);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (action === "init" || action === "set") {
|
|
18
|
+
const profile = getOption(args, "--profile") ?? getOption(args, "--name") ?? "default";
|
|
19
|
+
const domain = getOption(args, "--domain") ?? process.env.PTERO_DOMAIN;
|
|
20
|
+
const ptla = getOption(args, "--ptla") ?? process.env.PTERO_PTLA;
|
|
21
|
+
const ptlc = getOption(args, "--ptlc") ?? process.env.PTERO_PTLC;
|
|
22
|
+
if (!domain)
|
|
23
|
+
throw new Error("--domain wajib diisi atau set PTERO_DOMAIN dulu.");
|
|
24
|
+
const config = readConfig();
|
|
25
|
+
config.profiles[profile] = compactProfile({ domain, ptla, ptlc });
|
|
26
|
+
config.active = profile;
|
|
27
|
+
writeConfig(config);
|
|
28
|
+
printJsonOrText(jsonMode, safeConfig(config), `Profile '${profile}' tersimpan dan aktif.`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (action === "list") {
|
|
32
|
+
const config = readConfig();
|
|
33
|
+
const rows = Object.entries(config.profiles).map(([name, profile]) => ({
|
|
34
|
+
name,
|
|
35
|
+
active: config.active === name ? "yes" : "no",
|
|
36
|
+
domain: profile.domain,
|
|
37
|
+
ptla: profile.ptla ? maskSecret(profile.ptla) : "-",
|
|
38
|
+
ptlc: profile.ptlc ? maskSecret(profile.ptlc) : "-"
|
|
39
|
+
}));
|
|
40
|
+
printJsonOrText(jsonMode, safeConfig(config), rows.length ? table(rows, ["name", "active", "domain", "ptla", "ptlc"]) : "Belum ada config profile.");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (action === "show") {
|
|
44
|
+
const config = readConfig();
|
|
45
|
+
const profileName = args[1] && !args[1].startsWith("--") ? args[1] : config.active;
|
|
46
|
+
if (!profileName)
|
|
47
|
+
throw new Error("Belum ada active profile. Jalankan: ptero-gateway config init --domain ...");
|
|
48
|
+
const profile = config.profiles[profileName];
|
|
49
|
+
if (!profile)
|
|
50
|
+
throw new Error(`Profile tidak ditemukan: ${profileName}`);
|
|
51
|
+
printJsonOrText(jsonMode, { name: profileName, ...safeProfile(profile) }, formatProfile(profileName, profile));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (action === "use") {
|
|
55
|
+
const profileName = args[1];
|
|
56
|
+
if (!profileName)
|
|
57
|
+
throw new Error("Format: ptero-gateway config use <profile>");
|
|
58
|
+
const config = readConfig();
|
|
59
|
+
if (!config.profiles[profileName])
|
|
60
|
+
throw new Error(`Profile tidak ditemukan: ${profileName}`);
|
|
61
|
+
config.active = profileName;
|
|
62
|
+
writeConfig(config);
|
|
63
|
+
printJsonOrText(jsonMode, safeConfig(config), `Profile aktif: ${profileName}`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (action === "env") {
|
|
67
|
+
const config = readConfig();
|
|
68
|
+
const profileName = args[1] && !args[1].startsWith("--") ? args[1] : config.active;
|
|
69
|
+
if (!profileName)
|
|
70
|
+
throw new Error("Belum ada active profile.");
|
|
71
|
+
const profile = config.profiles[profileName];
|
|
72
|
+
if (!profile)
|
|
73
|
+
throw new Error(`Profile tidak ditemukan: ${profileName}`);
|
|
74
|
+
console.log(toEnv(profile));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (action === "doctor") {
|
|
78
|
+
const config = readConfig();
|
|
79
|
+
const profileName = args[1] && !args[1].startsWith("--") ? args[1] : config.active;
|
|
80
|
+
const profile = profileName ? config.profiles[profileName] : undefined;
|
|
81
|
+
const result = {
|
|
82
|
+
ok: Boolean(profile?.domain && (profile.ptla || profile.ptlc)),
|
|
83
|
+
path: CONFIG_FILE,
|
|
84
|
+
active: profileName ?? null,
|
|
85
|
+
profileExists: Boolean(profile),
|
|
86
|
+
hasDomain: Boolean(profile?.domain),
|
|
87
|
+
hasPtla: Boolean(profile?.ptla),
|
|
88
|
+
hasPtlc: Boolean(profile?.ptlc)
|
|
89
|
+
};
|
|
90
|
+
const pretty = [
|
|
91
|
+
`Config: ${result.ok ? "OK" : "PERLU DILENGKAPI"}`,
|
|
92
|
+
`Path: ${result.path}`,
|
|
93
|
+
`Active: ${result.active ?? "-"}`,
|
|
94
|
+
`${result.profileExists ? "✓" : "✗"} profile tersedia`,
|
|
95
|
+
`${result.hasDomain ? "✓" : "✗"} domain`,
|
|
96
|
+
`${result.hasPtla ? "✓" : "-"} PTLA`,
|
|
97
|
+
`${result.hasPtlc ? "✓" : "-"} PTLC`
|
|
98
|
+
].join("\n");
|
|
99
|
+
printJsonOrText(jsonMode, result, pretty);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
throw new Error(`Config command tidak dikenal: ${action}`);
|
|
103
|
+
}
|
|
104
|
+
export function applyConfigProfile(profileName = process.env.PTERO_PROFILE) {
|
|
105
|
+
if (!existsSync(CONFIG_FILE))
|
|
106
|
+
return false;
|
|
107
|
+
const config = readConfig();
|
|
108
|
+
const active = profileName || config.active;
|
|
109
|
+
if (!active)
|
|
110
|
+
return false;
|
|
111
|
+
const profile = config.profiles[active];
|
|
112
|
+
if (!profile)
|
|
113
|
+
return false;
|
|
114
|
+
process.env.PTERO_DOMAIN ||= profile.domain;
|
|
115
|
+
if (profile.ptla)
|
|
116
|
+
process.env.PTERO_PTLA ||= profile.ptla;
|
|
117
|
+
if (profile.ptlc)
|
|
118
|
+
process.env.PTERO_PTLC ||= profile.ptlc;
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
function readConfig() {
|
|
122
|
+
if (!existsSync(CONFIG_FILE))
|
|
123
|
+
return { profiles: {} };
|
|
124
|
+
const raw = JSON.parse(readFileSync(CONFIG_FILE, "utf8"));
|
|
125
|
+
return { active: raw.active, profiles: raw.profiles ?? {} };
|
|
126
|
+
}
|
|
127
|
+
function writeConfig(config) {
|
|
128
|
+
mkdirSync(dirname(CONFIG_FILE), { recursive: true });
|
|
129
|
+
writeFileSync(CONFIG_FILE, `${JSON.stringify(config, null, 2)}\n`, "utf8");
|
|
130
|
+
try {
|
|
131
|
+
chmodSync(CONFIG_FILE, 0o600);
|
|
132
|
+
}
|
|
133
|
+
catch { }
|
|
134
|
+
}
|
|
135
|
+
function compactProfile(profile) {
|
|
136
|
+
return {
|
|
137
|
+
domain: profile.domain.replace(/\/$/, ""),
|
|
138
|
+
...(profile.ptla ? { ptla: profile.ptla } : {}),
|
|
139
|
+
...(profile.ptlc ? { ptlc: profile.ptlc } : {})
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function getOption(args, name) {
|
|
143
|
+
const index = args.indexOf(name);
|
|
144
|
+
if (index < 0)
|
|
145
|
+
return undefined;
|
|
146
|
+
return args[index + 1];
|
|
147
|
+
}
|
|
148
|
+
function safeConfig(config) {
|
|
149
|
+
return {
|
|
150
|
+
active: config.active,
|
|
151
|
+
profiles: Object.fromEntries(Object.entries(config.profiles).map(([name, profile]) => [name, safeProfile(profile)]))
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function safeProfile(profile) {
|
|
155
|
+
return {
|
|
156
|
+
domain: profile.domain,
|
|
157
|
+
ptla: profile.ptla ? maskSecret(profile.ptla) : undefined,
|
|
158
|
+
ptlc: profile.ptlc ? maskSecret(profile.ptlc) : undefined
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function formatProfile(name, profile) {
|
|
162
|
+
return [
|
|
163
|
+
`Profile: ${name}`,
|
|
164
|
+
`Domain: ${profile.domain}`,
|
|
165
|
+
`PTLA: ${profile.ptla ? maskSecret(profile.ptla) : "-"}`,
|
|
166
|
+
`PTLC: ${profile.ptlc ? maskSecret(profile.ptlc) : "-"}`
|
|
167
|
+
].join("\n");
|
|
168
|
+
}
|
|
169
|
+
function toEnv(profile) {
|
|
170
|
+
return [
|
|
171
|
+
`export PTERO_DOMAIN=${JSON.stringify(profile.domain)}`,
|
|
172
|
+
profile.ptla ? `export PTERO_PTLA=${JSON.stringify(profile.ptla)}` : "",
|
|
173
|
+
profile.ptlc ? `export PTERO_PTLC=${JSON.stringify(profile.ptlc)}` : ""
|
|
174
|
+
].filter(Boolean).join("\n");
|
|
175
|
+
}
|
|
176
|
+
function maskSecret(value) {
|
|
177
|
+
if (value.length <= 10)
|
|
178
|
+
return "********";
|
|
179
|
+
return `${value.slice(0, 5)}********${value.slice(-4)}`;
|
|
180
|
+
}
|
|
181
|
+
function printJsonOrText(jsonMode, raw, text) {
|
|
182
|
+
if (jsonMode)
|
|
183
|
+
console.log(JSON.stringify(raw, null, 2));
|
|
184
|
+
else
|
|
185
|
+
console.log(text);
|
|
186
|
+
}
|
|
187
|
+
function table(rows, columns) {
|
|
188
|
+
const widths = columns.map(column => Math.max(column.length, ...rows.map(row => String(row[column] ?? "").length)));
|
|
189
|
+
return [
|
|
190
|
+
columns.map((column, index) => column.padEnd(widths[index] ?? column.length)).join(" "),
|
|
191
|
+
widths.map(width => "-".repeat(width)).join(" "),
|
|
192
|
+
...rows.map(row => columns.map((column, index) => String(row[column] ?? "").padEnd(widths[index] ?? column.length)).join(" "))
|
|
193
|
+
].join("\n");
|
|
194
|
+
}
|
|
195
|
+
function printConfigHelp() {
|
|
196
|
+
console.log(`Akadev Pterodactyl Gateway Config
|
|
197
|
+
|
|
198
|
+
Perintah:
|
|
199
|
+
ptero-gateway config path
|
|
200
|
+
ptero-gateway config init --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx
|
|
201
|
+
ptero-gateway config init --profile prod --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx
|
|
202
|
+
ptero-gateway config list
|
|
203
|
+
ptero-gateway config show [profile]
|
|
204
|
+
ptero-gateway config use <profile>
|
|
205
|
+
ptero-gateway config env [profile]
|
|
206
|
+
ptero-gateway config doctor
|
|
207
|
+
|
|
208
|
+
Catatan:
|
|
209
|
+
File config disimpan di ~/.pterodactyl-gateway/config.json dengan permission 600.
|
|
210
|
+
CLI otomatis memakai active profile jika env PTERO_DOMAIN/PTERO_PTLA/PTERO_PTLC belum di-set.`);
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAwCA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAqD9C"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
const TEMPLATES = {
|
|
2
|
+
"nodejs-bot": {
|
|
3
|
+
description: "Bot Node.js umum dengan preset basic dan startup node index.js.",
|
|
4
|
+
preset: "basic",
|
|
5
|
+
startup: "node index.js",
|
|
6
|
+
dockerImage: "auto",
|
|
7
|
+
recommendedFiles: ["package.json", "index.js"]
|
|
8
|
+
},
|
|
9
|
+
"nodejs-api": {
|
|
10
|
+
description: "API Express/Fastify ringan dengan preset standard.",
|
|
11
|
+
preset: "standard",
|
|
12
|
+
startup: "npm start",
|
|
13
|
+
dockerImage: "auto",
|
|
14
|
+
recommendedFiles: ["package.json", "src/index.js"]
|
|
15
|
+
},
|
|
16
|
+
"wa-bot": {
|
|
17
|
+
description: "Bot WhatsApp/Baileys dengan preset standard.",
|
|
18
|
+
preset: "standard",
|
|
19
|
+
startup: "npm start",
|
|
20
|
+
dockerImage: "auto",
|
|
21
|
+
recommendedFiles: ["package.json", "index.js", "sessions/"]
|
|
22
|
+
},
|
|
23
|
+
"python-bot": {
|
|
24
|
+
description: "Bot Python ringan dengan preset basic.",
|
|
25
|
+
preset: "basic",
|
|
26
|
+
startup: "python3 main.py",
|
|
27
|
+
dockerImage: "auto",
|
|
28
|
+
recommendedFiles: ["requirements.txt", "main.py"]
|
|
29
|
+
},
|
|
30
|
+
"blank": {
|
|
31
|
+
description: "Server kosong untuk upload manual.",
|
|
32
|
+
preset: "mini",
|
|
33
|
+
startup: "bash",
|
|
34
|
+
dockerImage: "auto",
|
|
35
|
+
recommendedFiles: []
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
export function templatesCommand(args) {
|
|
39
|
+
const action = args[0] ?? "list";
|
|
40
|
+
const jsonMode = args.includes("--json");
|
|
41
|
+
if (["help", "--help", "-h"].includes(action)) {
|
|
42
|
+
printTemplatesHelp();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (action === "list") {
|
|
46
|
+
const rows = Object.entries(TEMPLATES).map(([name, template]) => ({
|
|
47
|
+
name,
|
|
48
|
+
preset: template.preset,
|
|
49
|
+
startup: template.startup,
|
|
50
|
+
description: template.description
|
|
51
|
+
}));
|
|
52
|
+
printJsonOrText(jsonMode, TEMPLATES, table(rows, ["name", "preset", "startup", "description"]));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (action === "show") {
|
|
56
|
+
const name = args[1];
|
|
57
|
+
const template = getTemplate(name);
|
|
58
|
+
printJsonOrText(jsonMode, template, formatTemplate(name, template));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (action === "command") {
|
|
62
|
+
const name = args[1];
|
|
63
|
+
const template = getTemplate(name);
|
|
64
|
+
const serverName = getOption(args, "--name") ?? "my-server";
|
|
65
|
+
const email = getOption(args, "--email") ?? "user@example.com";
|
|
66
|
+
const node = getOption(args, "--node") ?? "1";
|
|
67
|
+
const nest = getOption(args, "--nest") ?? "5";
|
|
68
|
+
const egg = getOption(args, "--egg") ?? "18";
|
|
69
|
+
const username = getOption(args, "--username");
|
|
70
|
+
const pieces = [
|
|
71
|
+
"ptero-gateway admin create-server",
|
|
72
|
+
`--name ${quote(serverName)}`,
|
|
73
|
+
`--email ${quote(email)}`,
|
|
74
|
+
username ? `--username ${quote(username)}` : "",
|
|
75
|
+
`--node ${quote(node)}`,
|
|
76
|
+
`--nest ${quote(nest)}`,
|
|
77
|
+
`--egg ${quote(egg)}`,
|
|
78
|
+
`--preset ${quote(template.preset)}`,
|
|
79
|
+
`--startup ${quote(template.startup)}`,
|
|
80
|
+
"--dry-run"
|
|
81
|
+
].filter(Boolean);
|
|
82
|
+
console.log(pieces.join(" "));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`Template command tidak dikenal: ${action}`);
|
|
86
|
+
}
|
|
87
|
+
function getTemplate(name) {
|
|
88
|
+
if (!name)
|
|
89
|
+
throw new Error(`Template wajib diisi. Jalankan: ptero-gateway templates list`);
|
|
90
|
+
if (!(name in TEMPLATES))
|
|
91
|
+
throw new Error(`Template tidak dikenal: ${name}`);
|
|
92
|
+
return TEMPLATES[name];
|
|
93
|
+
}
|
|
94
|
+
function getOption(args, name) {
|
|
95
|
+
const index = args.indexOf(name);
|
|
96
|
+
if (index < 0)
|
|
97
|
+
return undefined;
|
|
98
|
+
return args[index + 1];
|
|
99
|
+
}
|
|
100
|
+
function quote(value) {
|
|
101
|
+
return JSON.stringify(value);
|
|
102
|
+
}
|
|
103
|
+
function formatTemplate(name, template) {
|
|
104
|
+
return [
|
|
105
|
+
`Template: ${name}`,
|
|
106
|
+
`Description: ${template.description}`,
|
|
107
|
+
`Preset: ${template.preset}`,
|
|
108
|
+
`Startup: ${template.startup}`,
|
|
109
|
+
`Docker: ${template.dockerImage}`,
|
|
110
|
+
`Recommended files: ${template.recommendedFiles.length ? template.recommendedFiles.join(", ") : "-"}`
|
|
111
|
+
].join("\n");
|
|
112
|
+
}
|
|
113
|
+
function printJsonOrText(jsonMode, raw, text) {
|
|
114
|
+
if (jsonMode)
|
|
115
|
+
console.log(JSON.stringify(raw, null, 2));
|
|
116
|
+
else
|
|
117
|
+
console.log(text);
|
|
118
|
+
}
|
|
119
|
+
function table(rows, columns) {
|
|
120
|
+
const widths = columns.map(column => Math.max(column.length, ...rows.map(row => String(row[column] ?? "").length)));
|
|
121
|
+
return [
|
|
122
|
+
columns.map((column, index) => column.padEnd(widths[index] ?? column.length)).join(" "),
|
|
123
|
+
widths.map(width => "-".repeat(width)).join(" "),
|
|
124
|
+
...rows.map(row => columns.map((column, index) => String(row[column] ?? "").padEnd(widths[index] ?? column.length)).join(" "))
|
|
125
|
+
].join("\n");
|
|
126
|
+
}
|
|
127
|
+
function printTemplatesHelp() {
|
|
128
|
+
console.log(`Akadev Pterodactyl Gateway Templates
|
|
129
|
+
|
|
130
|
+
Perintah:
|
|
131
|
+
ptero-gateway templates list
|
|
132
|
+
ptero-gateway templates show nodejs-bot
|
|
133
|
+
ptero-gateway templates command nodejs-bot --name "bot saya" --email user@example.com --node 1 --nest 5 --egg 18
|
|
134
|
+
|
|
135
|
+
Catatan:
|
|
136
|
+
Template hanya membuat rekomendasi command create-server.
|
|
137
|
+
Template tidak membuat node/location/allocation dan tidak mengeksekusi server otomatis.`);
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-cli.d.ts","sourceRoot":"","sources":["../src/wizard-cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { runWizard } from "./wizard.js";
|
|
3
|
+
try {
|
|
4
|
+
await runWizard(process.argv.slice(2));
|
|
5
|
+
}
|
|
6
|
+
catch (error) {
|
|
7
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
8
|
+
process.exitCode = 1;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=wizard-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-cli.js","sourceRoot":"","sources":["../src/wizard-cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,IAAI,CAAC;IACH,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
package/dist/wizard.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"AAkBA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,iBAoB7C"}
|
package/dist/wizard.js
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { createInterface } from "node:readline/promises";
|
|
2
|
+
import { stdin as input, stdout as output } from "node:process";
|
|
3
|
+
import { createPtero } from "./index.js";
|
|
4
|
+
const PRESETS = ["mini", "basic", "standard", "premium", "unlimited"];
|
|
5
|
+
export async function runWizard(args) {
|
|
6
|
+
const action = args[0] ?? "help";
|
|
7
|
+
const flags = parseFlags(args);
|
|
8
|
+
if (["help", "--help", "-h"].includes(action)) {
|
|
9
|
+
printWizardHelp();
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (action === "create-user") {
|
|
13
|
+
await wizardCreateUser(flags);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (action === "create-server") {
|
|
17
|
+
await wizardCreateServer(flags);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
throw new Error(`Wizard tidak dikenal: ${action}`);
|
|
21
|
+
}
|
|
22
|
+
async function wizardCreateUser(flags) {
|
|
23
|
+
const rl = createInterface({ input, output });
|
|
24
|
+
try {
|
|
25
|
+
console.log("Wizard Create User");
|
|
26
|
+
const username = await required(rl, "Username");
|
|
27
|
+
const email = await required(rl, "Email");
|
|
28
|
+
const password = await question(rl, "Password (kosong = auto)", "auto");
|
|
29
|
+
const administratorRaw = await question(rl, "Administrator? yes/no", "no");
|
|
30
|
+
const administrator = parseYesNo(administratorRaw);
|
|
31
|
+
const payload = { username, email, password, administrator };
|
|
32
|
+
if (flags.dryRun) {
|
|
33
|
+
printResult({ dryRun: true, payload }, flags);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (!flags.yes) {
|
|
37
|
+
const ok = parseYesNo(await question(rl, "Buat user sekarang? yes/no", "no"));
|
|
38
|
+
if (!ok) {
|
|
39
|
+
console.log("Dibatalkan.");
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const ptero = createPtero.fromEnv();
|
|
44
|
+
const result = await ptero.users.createSmart(payload);
|
|
45
|
+
printResult(result, flags, "User berhasil dibuat.");
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
rl.close();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function wizardCreateServer(flags) {
|
|
52
|
+
const rl = createInterface({ input, output });
|
|
53
|
+
try {
|
|
54
|
+
console.log("Wizard Create Server");
|
|
55
|
+
console.log("Catatan: node/nest/egg ID tetap diisi manual oleh admin. Jalankan `ptero-gateway ids` jika perlu melihat ID.");
|
|
56
|
+
const name = await required(rl, "Nama server");
|
|
57
|
+
const email = await required(rl, "Email owner");
|
|
58
|
+
const username = await question(rl, "Username owner jika ingin auto-create user (kosong = pakai user existing dari email)", "");
|
|
59
|
+
const password = username ? await question(rl, "Password user (kosong = auto)", "auto") : undefined;
|
|
60
|
+
const description = await question(rl, "Description", "Created by Akadev Pterodactyl Gateway Wizard");
|
|
61
|
+
const nodeId = parseRequiredNumber(await required(rl, "Node ID"), "Node ID");
|
|
62
|
+
const nestId = parseRequiredNumber(await required(rl, "Nest ID"), "Nest ID");
|
|
63
|
+
const eggId = parseRequiredNumber(await required(rl, "Egg ID"), "Egg ID");
|
|
64
|
+
const preset = await choosePreset(rl);
|
|
65
|
+
const memory = await question(rl, "Memory override (kosong = preset)", "");
|
|
66
|
+
const disk = await question(rl, "Disk override (kosong = preset)", "");
|
|
67
|
+
const cpu = await question(rl, "CPU override (kosong = preset)", "");
|
|
68
|
+
const databases = await optionalNumber(rl, "Database limit override (kosong = preset)");
|
|
69
|
+
const allocations = await optionalNumber(rl, "Allocation limit override (kosong = preset)");
|
|
70
|
+
const backups = await optionalNumber(rl, "Backup limit override (kosong = preset)");
|
|
71
|
+
const inputPayload = {
|
|
72
|
+
name,
|
|
73
|
+
email,
|
|
74
|
+
username: username || undefined,
|
|
75
|
+
password,
|
|
76
|
+
autoCreateUser: Boolean(username),
|
|
77
|
+
description,
|
|
78
|
+
nodeId,
|
|
79
|
+
nestId,
|
|
80
|
+
eggId,
|
|
81
|
+
dockerImage: "auto",
|
|
82
|
+
startup: "auto",
|
|
83
|
+
preset,
|
|
84
|
+
specs: {
|
|
85
|
+
...(memory ? { memory } : {}),
|
|
86
|
+
...(disk ? { disk } : {}),
|
|
87
|
+
...(cpu ? { cpu } : {}),
|
|
88
|
+
...(databases !== undefined ? { databases } : {}),
|
|
89
|
+
...(allocations !== undefined ? { allocations } : {}),
|
|
90
|
+
...(backups !== undefined ? { backups } : {})
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
console.log("\nPreview input:");
|
|
94
|
+
console.log(JSON.stringify(maskPayload(inputPayload), null, 2));
|
|
95
|
+
const ptero = createPtero.fromEnv();
|
|
96
|
+
const normalizedInput = normalizeCreateServerInput(inputPayload);
|
|
97
|
+
if (flags.dryRun) {
|
|
98
|
+
const result = await ptero.servers.createSmart(normalizedInput, { dryRun: true });
|
|
99
|
+
printResult(result, flags, "Create server dry-run OK.");
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (!flags.yes) {
|
|
103
|
+
const ok = parseYesNo(await question(rl, "Buat server sekarang? yes/no", "no"));
|
|
104
|
+
if (!ok) {
|
|
105
|
+
console.log("Dibatalkan.");
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const result = await ptero.servers.createSmart(normalizedInput);
|
|
110
|
+
printResult(result, flags, "Server berhasil dibuat.");
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
rl.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function normalizeCreateServerInput(inputPayload) {
|
|
117
|
+
const preset = inputPayload.preset ?? "basic";
|
|
118
|
+
const fallback = presetToSpecs(preset);
|
|
119
|
+
const specs = { ...fallback, ...inputPayload.specs };
|
|
120
|
+
return { ...inputPayload, specs };
|
|
121
|
+
}
|
|
122
|
+
function presetToSpecs(preset) {
|
|
123
|
+
if (preset === "mini")
|
|
124
|
+
return { memory: "512MB", disk: "1GB", cpu: "50%", databases: 0, allocations: 1, backups: 0, swap: 0, io: 500 };
|
|
125
|
+
if (preset === "standard")
|
|
126
|
+
return { memory: "2GB", disk: "5GB", cpu: "200%", databases: 1, allocations: 1, backups: 1, swap: 0, io: 500 };
|
|
127
|
+
if (preset === "premium")
|
|
128
|
+
return { memory: "4GB", disk: "10GB", cpu: "300%", databases: 2, allocations: 2, backups: 2, swap: 0, io: 500 };
|
|
129
|
+
if (preset === "unlimited")
|
|
130
|
+
return { memory: "0", disk: "0", cpu: "0", databases: 5, allocations: 3, backups: 3, swap: 0, io: 500 };
|
|
131
|
+
return { memory: "1GB", disk: "2GB", cpu: "100%", databases: 0, allocations: 1, backups: 0, swap: 0, io: 500 };
|
|
132
|
+
}
|
|
133
|
+
async function choosePreset(rl) {
|
|
134
|
+
const answer = await question(rl, `Preset (${PRESETS.join("/")})`, "basic");
|
|
135
|
+
if (!PRESETS.includes(answer))
|
|
136
|
+
throw new Error(`Preset tidak dikenal: ${answer}`);
|
|
137
|
+
return answer;
|
|
138
|
+
}
|
|
139
|
+
async function optionalNumber(rl, label) {
|
|
140
|
+
const value = await question(rl, label, "");
|
|
141
|
+
if (!value)
|
|
142
|
+
return undefined;
|
|
143
|
+
return parseRequiredNumber(value, label);
|
|
144
|
+
}
|
|
145
|
+
async function required(rl, label) {
|
|
146
|
+
const value = await question(rl, label, "");
|
|
147
|
+
if (!value)
|
|
148
|
+
throw new Error(`${label} wajib diisi.`);
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
async function question(rl, label, fallback) {
|
|
152
|
+
const suffix = fallback ? ` [${fallback}]` : "";
|
|
153
|
+
const value = (await rl.question(`${label}${suffix}: `)).trim();
|
|
154
|
+
return value || fallback;
|
|
155
|
+
}
|
|
156
|
+
function parseRequiredNumber(value, label) {
|
|
157
|
+
const parsed = Number(value);
|
|
158
|
+
if (!Number.isInteger(parsed) || parsed < 0)
|
|
159
|
+
throw new Error(`${label} harus angka.`);
|
|
160
|
+
return parsed;
|
|
161
|
+
}
|
|
162
|
+
function parseYesNo(value) {
|
|
163
|
+
const normalized = value.trim().toLowerCase();
|
|
164
|
+
if (["yes", "y", "true", "1", "iya", "ya"].includes(normalized))
|
|
165
|
+
return true;
|
|
166
|
+
if (["no", "n", "false", "0", "tidak", "nggak", "ga", "gak"].includes(normalized))
|
|
167
|
+
return false;
|
|
168
|
+
throw new Error("Jawaban harus yes/no.");
|
|
169
|
+
}
|
|
170
|
+
function parseFlags(args) {
|
|
171
|
+
return {
|
|
172
|
+
dryRun: args.includes("--dry-run"),
|
|
173
|
+
yes: args.includes("--yes") || args.includes("-y"),
|
|
174
|
+
json: args.includes("--json")
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function maskPayload(value) {
|
|
178
|
+
if (Array.isArray(value))
|
|
179
|
+
return value.map(maskPayload);
|
|
180
|
+
if (typeof value !== "object" || value === null)
|
|
181
|
+
return value;
|
|
182
|
+
const output = {};
|
|
183
|
+
for (const [key, item] of Object.entries(value)) {
|
|
184
|
+
output[key] = /(password|token|key|secret|auth)/i.test(key) && typeof item === "string" ? maskSecret(item) : maskPayload(item);
|
|
185
|
+
}
|
|
186
|
+
return output;
|
|
187
|
+
}
|
|
188
|
+
function maskSecret(value) {
|
|
189
|
+
if (!value || value === "auto")
|
|
190
|
+
return value;
|
|
191
|
+
if (value.length <= 4)
|
|
192
|
+
return "****";
|
|
193
|
+
return `${value.slice(0, 2)}****${value.slice(-2)}`;
|
|
194
|
+
}
|
|
195
|
+
function printResult(result, flags, message) {
|
|
196
|
+
if (flags.json) {
|
|
197
|
+
console.log(JSON.stringify(result, null, 2));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (message)
|
|
201
|
+
console.log(message);
|
|
202
|
+
console.log(JSON.stringify(maskPayload(result), null, 2));
|
|
203
|
+
}
|
|
204
|
+
function printWizardHelp() {
|
|
205
|
+
console.log(`Akadev Pterodactyl Gateway Wizard
|
|
206
|
+
|
|
207
|
+
Perintah:
|
|
208
|
+
ptero-wizard create-user
|
|
209
|
+
ptero-wizard create-user --dry-run
|
|
210
|
+
ptero-wizard create-server
|
|
211
|
+
ptero-wizard create-server --dry-run
|
|
212
|
+
ptero-wizard create-server --yes
|
|
213
|
+
|
|
214
|
+
Catatan:
|
|
215
|
+
Wizard tidak mengelola node/location/allocation.
|
|
216
|
+
Node ID, Nest ID, dan Egg ID tetap diisi manual oleh admin.
|
|
217
|
+
Jalankan ptero-gateway ids untuk melihat daftar ID yang tersedia.`);
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akaanakbaik/pterodactyl-gateway",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "SDK, CLI, dan smart gateway TypeScript untuk Pterodactyl Panel.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
9
|
"ptero-gateway": "dist/cli-entry.js",
|
|
10
|
-
"ptg": "dist/cli-entry.js"
|
|
10
|
+
"ptg": "dist/cli-entry.js",
|
|
11
|
+
"ptero-wizard": "dist/wizard-cli.js"
|
|
11
12
|
},
|
|
12
13
|
"exports": {
|
|
13
14
|
".": {
|
|
@@ -25,13 +26,15 @@
|
|
|
25
26
|
"scripts": {
|
|
26
27
|
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
27
28
|
"build": "npm run clean && tsc -p tsconfig.json && npm run chmod:bin",
|
|
28
|
-
"chmod:bin": "node -e \"const fs=require('fs'); for (const f of ['dist/cli.js','dist/cli-entry.js']) if (fs.existsSync(f)) fs.chmodSync(f, 0o755)\"",
|
|
29
|
+
"chmod:bin": "node -e \"const fs=require('fs'); for (const f of ['dist/cli.js','dist/cli-entry.js','dist/wizard-cli.js']) if (fs.existsSync(f)) fs.chmodSync(f, 0o755)\"",
|
|
29
30
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
30
31
|
"test": "npm run build && node --test test/*.test.js",
|
|
31
|
-
"test:cli": "npm run build && node dist/cli-entry.js help && ./dist/cli-entry.js help && node dist/cli-entry.js presets && node dist/cli-entry.js explain DOMAIN_REQUIRED && node dist/cli-entry.js env-template",
|
|
32
|
+
"test:cli": "npm run build && node dist/cli-entry.js help && ./dist/cli-entry.js help && node dist/cli-entry.js presets && node dist/cli-entry.js templates list && node dist/cli-entry.js config help && node dist/cli-entry.js config doctor && node dist/cli-entry.js explain DOMAIN_REQUIRED && node dist/cli-entry.js env-template && node dist/wizard-cli.js help && ./dist/wizard-cli.js help",
|
|
32
33
|
"test:pack": "npm run build && npm pack --dry-run",
|
|
34
|
+
"test:release": "node scripts/release-guard.js",
|
|
33
35
|
"cli": "node dist/cli-entry.js",
|
|
34
|
-
"
|
|
36
|
+
"wizard": "node dist/wizard-cli.js",
|
|
37
|
+
"verify": "npm run typecheck && npm test && npm run test:cli && npm run test:release && npm run test:pack",
|
|
35
38
|
"prepublishOnly": "npm run verify"
|
|
36
39
|
},
|
|
37
40
|
"keywords": [
|