mirror of
https://github.com/MCSManager/MCSManager.git
synced 2025-03-25 16:50:22 +08:00
Merge branch 'master' of github.com:MCSManager/MCSManager
This commit is contained in:
commit
e57cd413ce
@ -11,13 +11,11 @@ cd daemon
|
||||
call npm run build
|
||||
|
||||
echo "Build panel..."
|
||||
cd ..
|
||||
cd panel
|
||||
cd ../panel
|
||||
call npm run build
|
||||
|
||||
echo "Build frontend..."
|
||||
cd ..
|
||||
cd frontend
|
||||
cd ../frontend
|
||||
call npm run build
|
||||
|
||||
echo "Collecting files..."
|
||||
|
@ -10,8 +10,6 @@ import DockerStartCommand from "./docker/docker_start";
|
||||
import TimeCheck from "./task/time";
|
||||
import GeneralUpdateCommand from "./general/general_update";
|
||||
import PtyStartCommand from "./pty/pty_start";
|
||||
import PtyStopCommand from "./pty/pty_stop";
|
||||
import OpenFrpTask from "./task/openfrp";
|
||||
import RconCommand from "./steam/rcon_command";
|
||||
import DockerResizeCommand from "./docker/docker_pty_resize";
|
||||
import PtyResizeCommand from "./pty/pty_resize";
|
||||
@ -45,7 +43,7 @@ export default class FunctionDispatcher extends InstanceCommand {
|
||||
|
||||
// the component that the instance must mount
|
||||
instance.lifeCycleTaskManager.registerLifeCycleTask(new TimeCheck());
|
||||
instance.lifeCycleTaskManager.registerLifeCycleTask(new OpenFrpTask());
|
||||
// instance.lifeCycleTaskManager.registerLifeCycleTask(new OpenFrpTask());
|
||||
|
||||
// Instance general preset capabilities
|
||||
instance.setPreset("command", new GeneralSendCommand());
|
||||
@ -64,7 +62,6 @@ export default class FunctionDispatcher extends InstanceCommand {
|
||||
// Enable emulated terminal mode
|
||||
if (instance.config.terminalOption.pty && instance.config.processType === "general") {
|
||||
instance.setPreset("start", new PtyStartCommand());
|
||||
instance.setPreset("stop", new PtyStopCommand());
|
||||
instance.setPreset("resize", new PtyResizeCommand());
|
||||
}
|
||||
// Whether to enable Docker PTY mode
|
||||
|
@ -15,6 +15,8 @@ export default class GeneralKillCommand extends InstanceCommand {
|
||||
return instance.failure(new Error($t("TXT_CODE_6259357c")));
|
||||
}
|
||||
|
||||
instance.ignoreEventTaskOnce();
|
||||
|
||||
const task = instance?.asynchronousTask;
|
||||
if (task && task.stop) {
|
||||
task
|
||||
|
@ -8,11 +8,8 @@ export default class GeneralRestartCommand extends InstanceCommand {
|
||||
}
|
||||
|
||||
async exec(instance: Instance) {
|
||||
// If the automatic restart function is enabled, the setting is ignored once
|
||||
if (instance.config.eventTask && instance.config.eventTask.autoRestart)
|
||||
instance.config.eventTask.ignore = true;
|
||||
|
||||
try {
|
||||
instance.ignoreEventTaskOnce();
|
||||
instance.println("INFO", $t("TXT_CODE_restart.start"));
|
||||
instance.setLock(true);
|
||||
await instance.execPreset("stop");
|
||||
|
@ -8,15 +8,12 @@ export default class GeneralStopCommand extends InstanceCommand {
|
||||
}
|
||||
|
||||
async exec(instance: Instance) {
|
||||
// If the automatic restart function is enabled, the setting is ignored once
|
||||
if (instance.config.eventTask && instance.config.eventTask.autoRestart)
|
||||
instance.config.eventTask.ignore = true;
|
||||
|
||||
const stopCommand = instance.config.stopCommand;
|
||||
if (instance.status() === Instance.STATUS_STOP || !instance.process)
|
||||
return instance.failure(new Error($t("TXT_CODE_general_stop.notRunning")));
|
||||
|
||||
instance.status(Instance.STATUS_STOPPING);
|
||||
instance.ignoreEventTaskOnce();
|
||||
|
||||
const stopCommandList = stopCommand.split("\n");
|
||||
for (const stopCommand of stopCommandList) {
|
||||
@ -24,7 +21,8 @@ export default class GeneralStopCommand extends InstanceCommand {
|
||||
}
|
||||
|
||||
instance.print("\n");
|
||||
instance.println("INFO", $t("TXT_CODE_general_stop.execCmd", { stopCommand }));
|
||||
instance.println("INFO", $t("TXT_CODE_pty_stop.execCmd", { stopCommand: `\n${stopCommand}` }));
|
||||
|
||||
const cacheStartCount = instance.startCount;
|
||||
|
||||
// If the instance is still in the stopped state after 10 minutes, restore the state
|
||||
|
@ -1,38 +0,0 @@
|
||||
import { $t } from "../../../i18n";
|
||||
import Instance from "../../instance/instance";
|
||||
import InstanceCommand from "../base/command";
|
||||
|
||||
export default class PtyStopCommand extends InstanceCommand {
|
||||
constructor() {
|
||||
super("PtyStopCommand");
|
||||
}
|
||||
|
||||
async exec(instance: Instance) {
|
||||
let stopCommand = instance.config.stopCommand;
|
||||
|
||||
if (instance.status() === Instance.STATUS_STOP || !instance.process)
|
||||
return instance.failure(new Error($t("TXT_CODE_pty_stop.notRunning")));
|
||||
instance.status(Instance.STATUS_STOPPING);
|
||||
|
||||
instance.println("INFO", $t("TXT_CODE_pty_stop.execCmd", { stopCommand: stopCommand }));
|
||||
|
||||
const stopCommandList = stopCommand.split("\n");
|
||||
for (const stopCommand of stopCommandList) {
|
||||
await instance.execPreset("command", stopCommand);
|
||||
}
|
||||
|
||||
// If the instance is still in the stopped state after 10 minutes, restore the state
|
||||
const cacheStartCount = instance.startCount;
|
||||
setTimeout(() => {
|
||||
if (
|
||||
instance.status() === Instance.STATUS_STOPPING &&
|
||||
instance.startCount === cacheStartCount
|
||||
) {
|
||||
instance.println("ERROR", $t("TXT_CODE_pty_stop.stopErr"));
|
||||
instance.status(Instance.STATUS_RUNNING);
|
||||
}
|
||||
}, 1000 * 60 * 10);
|
||||
|
||||
return instance;
|
||||
}
|
||||
}
|
@ -288,22 +288,21 @@ export default class Instance extends EventEmitter {
|
||||
this.lifeCycleTaskManager.execLifeCycleTask(0);
|
||||
|
||||
// If automatic restart is enabled, the startup operation is performed immediately
|
||||
if (this.config.eventTask.autoRestart) {
|
||||
if (!this.config.eventTask.ignore) {
|
||||
this.execPreset("start")
|
||||
.then(() => {
|
||||
this.println($t("TXT_CODE_instanceConf.info"), $t("TXT_CODE_instanceConf.autoRestart"));
|
||||
})
|
||||
.catch((err) => {
|
||||
this.println(
|
||||
$t("TXT_CODE_instanceConf.error"),
|
||||
$t("TXT_CODE_instanceConf.autoRestartErr", { err: err })
|
||||
);
|
||||
});
|
||||
}
|
||||
this.config.eventTask.ignore = false;
|
||||
if (!this.config.eventTask.ignore && this.config.eventTask.autoRestart) {
|
||||
this.execPreset("start")
|
||||
.then(() => {
|
||||
this.println($t("TXT_CODE_instanceConf.info"), $t("TXT_CODE_instanceConf.autoRestart"));
|
||||
})
|
||||
.catch((err) => {
|
||||
this.println(
|
||||
$t("TXT_CODE_instanceConf.error"),
|
||||
$t("TXT_CODE_instanceConf.autoRestartErr", { err: err })
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
this.config.eventTask.ignore = false;
|
||||
|
||||
// Turn off the warning immediately after startup, usually the startup command is written incorrectly
|
||||
const currentTimestamp = new Date().getTime();
|
||||
const startThreshold = 2 * 1000;
|
||||
@ -312,6 +311,10 @@ export default class Instance extends EventEmitter {
|
||||
}
|
||||
}
|
||||
|
||||
ignoreEventTaskOnce() {
|
||||
if (this.config.eventTask) this.config.eventTask.ignore = true;
|
||||
}
|
||||
|
||||
// custom output method, formatting
|
||||
println(level: string, text: string) {
|
||||
const str = `[${level}] ${text}\n`;
|
||||
|
@ -13,6 +13,7 @@ import { INSTANCE_TYPE_TRANSLATION } from "@/hooks/useInstance";
|
||||
import { Dayjs } from "dayjs";
|
||||
import _ from "lodash";
|
||||
import { dayjsToTimestamp, timestampToDayjs } from "../../../tools/time";
|
||||
import { useDockerEnvEditDialog } from "@/components/fc";
|
||||
|
||||
interface FormDetail extends InstanceDetail {
|
||||
dayjsEndTime?: Dayjs;
|
||||
@ -96,6 +97,21 @@ const encodeFormData = () => {
|
||||
throw new Error("Ref Options is null");
|
||||
};
|
||||
|
||||
const handleEditDockerEnv = async () => {
|
||||
if (!options.value?.config) return;
|
||||
|
||||
const envs = options.value.config.docker.env?.map((v) => {
|
||||
const tmp = v.split("=");
|
||||
return {
|
||||
label: tmp[0] || "",
|
||||
value: tmp[1] || ""
|
||||
};
|
||||
});
|
||||
const result = await useDockerEnvEditDialog(envs);
|
||||
const envsArray = result.map((v) => `${v.label}=${v.value}`);
|
||||
options.value.config.docker.env = envsArray;
|
||||
};
|
||||
|
||||
defineExpose({
|
||||
openDialog
|
||||
});
|
||||
@ -217,7 +233,7 @@ defineExpose({
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
<a-col :xs="24" :offset="0">
|
||||
<a-col :xs="24" :lg="18" :offset="0">
|
||||
<a-form-item>
|
||||
<a-typography-title :level="5">{{ t("TXT_CODE_bb0b9711") }}</a-typography-title>
|
||||
<a-typography-paragraph>
|
||||
@ -236,6 +252,22 @@ defineExpose({
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
<a-col :xs="24" :lg="6" :offset="0">
|
||||
<a-form-item>
|
||||
<a-typography-title :level="5">{{ t("TXT_CODE_b916a8dc") }}</a-typography-title>
|
||||
<a-typography-paragraph>
|
||||
<a-typography-text type="secondary" :class="!isPhone && 'two-line-height'">
|
||||
{{ t("TXT_CODE_33ce1c5c") }}
|
||||
</a-typography-text>
|
||||
</a-typography-paragraph>
|
||||
<a-input-group compact>
|
||||
<a-button type="default" @click="handleEditDockerEnv">
|
||||
{{ t("TXT_CODE_ad207008") }}
|
||||
</a-button>
|
||||
</a-input-group>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
|
@ -4,12 +4,10 @@ call npm run preview-build
|
||||
cd daemon
|
||||
call npm install
|
||||
|
||||
cd ..
|
||||
cd panel
|
||||
cd ../panel
|
||||
call npm install
|
||||
|
||||
cd ..
|
||||
cd frontend
|
||||
cd ../frontend
|
||||
call npm install
|
||||
|
||||
pause
|
@ -2552,8 +2552,8 @@
|
||||
"TXT_CODE_c6d3bd8": "MC Pufferfish",
|
||||
"TXT_CODE_eee2a47f": "Image preview",
|
||||
"TXT_CODE_66f38b2e": "Normal users can only modify part of the settings",
|
||||
"TXT_CODE_a583cae4": "Allow normal users to edit the startup command",
|
||||
"TXT_CODE_bfbdf579": "This feature allows normal users to edit the 'start' and 'update' commands of Docker instances",
|
||||
"TXT_CODE_a583cae4": "Allow normal users to edit instance advanced configuration",
|
||||
"TXT_CODE_bfbdf579": "This feature allows ordinary users to edit the configuration of Docker instances such as the \"start\" and \"update\" commands",
|
||||
"TXT_CODE_36cae384": "You are using a private IP address",
|
||||
"TXT_CODE_ea6e5e5e": "This node may not work properly when accessing the panel using a public IP address",
|
||||
"TXT_CODE_678164d7": "You can find the node ID in the 'Node List' section of the merchant console"
|
||||
|
3780
languages/ru_RU.json
3780
languages/ru_RU.json
File diff suppressed because it is too large
Load Diff
@ -508,9 +508,9 @@
|
||||
"TXT_CODE_4306a0d0": "在线(正版)验证",
|
||||
"TXT_CODE_b214a52d": "是否允许玩家互相攻击",
|
||||
"TXT_CODE_cbb958f2": "如果开启,则没有 Mojang 签名公钥的玩家将无法连接到服务器。",
|
||||
"TXT_CODE_da234f4f": "游戏难度(peaceful, easy, normal,hard)",
|
||||
"TXT_CODE_da234f4f": "游戏难度(peaceful, easy, normal, hard)",
|
||||
"TXT_CODE_cafe41ab": "允许的挂机时间,单位为分钟 超过限制后自动踢出服务器",
|
||||
"TXT_CODE_deaf423c": "游戏模式(survival,creative,adventure,spectator)",
|
||||
"TXT_CODE_deaf423c": "游戏模式(survival, creative, adventure, spectator)",
|
||||
"TXT_CODE_b642de88": "服务器最大玩家数限制",
|
||||
"TXT_CODE_5bb8f14": "生成攻击型生物(怪物)",
|
||||
"TXT_CODE_711d4763": "服务器发送给客户端的数据量,决定玩家能设置的视野",
|
||||
@ -656,7 +656,7 @@
|
||||
"TXT_CODE_37f5901": "甜菜根生长速度",
|
||||
"TXT_CODE_f60ca79d": "胡萝卜生长速度",
|
||||
"TXT_CODE_193297ed": "土豆生长速度",
|
||||
"TXT_CODE_47dd244a": "火把花生长速度",
|
||||
"TXT_CODE_47dd244a": "海泡菜生长速度",
|
||||
"TXT_CODE_1135828": "小麦生长速度",
|
||||
"TXT_CODE_43984628": "地狱疣生长速度",
|
||||
"TXT_CODE_143f213e": "藤蔓生长速度",
|
||||
@ -1486,27 +1486,27 @@
|
||||
"TXT_CODE_2033383b": "波之间的延迟。值越低,生物越多",
|
||||
"TXT_CODE_226b6c9e": "启用永无止境的入侵事件",
|
||||
"TXT_CODE_85b01e01": "设置 PvP 模式。有效类型为:“normal”、“always”和“disabled”",
|
||||
"TXT_CODE_7b759c13": "防止默认瓷砖生成在生成保护半径内",
|
||||
"TXT_CODE_7b759c13": "防止默认方块生成在生成保护半径内",
|
||||
"TXT_CODE_965360cd": "生成保护半径",
|
||||
"TXT_CODE_443ac54f": "根据玩家与其瓷砖位置之间的距离启用或禁用反作弊范围检查",
|
||||
"TXT_CODE_443ac54f": "根据玩家与其放置方块之间的距离启用或禁用反作弊范围检查",
|
||||
"TXT_CODE_d092c3b": "仅允许 hardcore 玩家连接",
|
||||
"TXT_CODE_1a6d30de": "阻止 softcore 玩家连接",
|
||||
"TXT_CODE_b5ce1069": "阻止 non-softcore 玩家连接",
|
||||
"TXT_CODE_c8c91afc": "禁用放置、移动瓷砖",
|
||||
"TXT_CODE_c8c91afc": "禁用放置、移动方块",
|
||||
"TXT_CODE_3f739f9c": "禁用困难模式",
|
||||
"TXT_CODE_c9e4d5c1": "防止地牢守卫在将玩家送往其出生点时生成",
|
||||
"TXT_CODE_f51ce97e": "禁用小丑炸弹生成",
|
||||
"TXT_CODE_115e891f": "禁用雪球生成",
|
||||
"TXT_CODE_90912e04": "禁用玩家死亡时掉落墓碑",
|
||||
"TXT_CODE_ce953a4": "禁用 PrimeBombs",
|
||||
"TXT_CODE_b0b67785": "强制世界时间为正常时间,白天或黑",
|
||||
"TXT_CODE_b0b67785": "强制世界时间为正常、白天或黑夜",
|
||||
"TXT_CODE_584af0ab": "禁用隐身药水的效果",
|
||||
"TXT_CODE_d764908b": "禁止玩家可以移动的最大距离(以瓷砖为单位)",
|
||||
"TXT_CODE_d764908b": "禁止玩家可以移动的最大距离(以方块为单位)",
|
||||
"TXT_CODE_3b346a65": "区域保护是否应适用于箱子",
|
||||
"TXT_CODE_603cbc35": "区域保护是否适用于钻石宝石锁",
|
||||
"TXT_CODE_33c223c": "忽略检查以查看玩家是否“可以”更新射弹",
|
||||
"TXT_CODE_da65ecbd": "忽略检查玩家是否“可以”杀死射弹",
|
||||
"TXT_CODE_8c2ad2cb": "允许玩家打破无法建造的临时瓷砖(草、花盆等)",
|
||||
"TXT_CODE_8c2ad2cb": "允许玩家打破无法建造的临时方块(草、花盆等)",
|
||||
"TXT_CODE_ba1a222b": "允许玩家在无法建造的地方放置冰",
|
||||
"TXT_CODE_b30daa03": "当世界处于困难模式时,允许 CrimsonCreep",
|
||||
"TXT_CODE_372e97f4": "当世界处于困难模式时,允许腐败蔓延",
|
||||
@ -1515,7 +1515,7 @@
|
||||
"TXT_CODE_3b4260f8": "雕像在停止生成之前可以生成多少个 NPC。默认值 10。",
|
||||
"TXT_CODE_cd62c9d4": "阻止违禁物品生成或通过命令调出",
|
||||
"TXT_CODE_ed9bab79": "阻止玩家在死亡时与世界互动",
|
||||
"TXT_CODE_fe82609a": "防止玩家放置样式无效的瓷砖",
|
||||
"TXT_CODE_fe82609a": "防止玩家放置样式无效的方块",
|
||||
"TXT_CODE_b649a71a": "强制全年举办仅限圣诞节的活动",
|
||||
"TXT_CODE_ac52ad06": "强制全年举办仅限万圣节的活动",
|
||||
"TXT_CODE_3f3e734b": "允许禁止项目允许列表中的组生成被禁止的项目,即使 PreventBannedItemSpawn 设置为 true",
|
||||
@ -1524,7 +1524,7 @@
|
||||
"TXT_CODE_87e18bb5": "是否广播 Boss 生成或入侵开始",
|
||||
"TXT_CODE_3f470950": "在装备增益之前,玩家可以拥有的最大生命值",
|
||||
"TXT_CODE_95dfd5bd": "在装备增益之前,玩家可以拥有的最大 MP",
|
||||
"TXT_CODE_f71475e2": "炸弹从爆炸点开始可以影响瓷砖的射程(以格为单位)",
|
||||
"TXT_CODE_f71475e2": "炸弹从爆炸点开始可以影响方块的射程(以格为单位)",
|
||||
"TXT_CODE_260d96a0": "如果设置为 true,则给予玩家的物品将直接插入到他们的物品栏中。否则,给予玩家的物品将作为掉落的物品生成。实验性功能,可能无法正常工作或导致物品丢失",
|
||||
"TXT_CODE_cfd64e73": "新注册玩家的默认组名称",
|
||||
"TXT_CODE_90896d08": "未注册玩家的默认组名称",
|
||||
@ -1546,14 +1546,14 @@
|
||||
"TXT_CODE_ab7672dd": "新玩家帐户的最小密码长度。不能低于 4",
|
||||
"TXT_CODE_94002354": "阻止玩家使用其客户端 UUID 登录",
|
||||
"TXT_CODE_7141866a": "踢出不向服务器发送 UUID 的客户端",
|
||||
"TXT_CODE_6d912e27": "如果在 1 秒内绘制了此数量的瓷砖,则封禁玩家",
|
||||
"TXT_CODE_6d912e27": "如果在 1 秒内绘制了此数量的方块,则封禁玩家",
|
||||
"TXT_CODE_192078c6": "当玩家超过 TilePaint 阈值时,是否踢出",
|
||||
"TXT_CODE_5e6e46bb": "玩家 / NPC 可以造成的最大伤害",
|
||||
"TXT_CODE_e1af7c8b": "射弹可以造成的最大伤害",
|
||||
"TXT_CODE_57417f60": "当玩家超过 MaxDamage 阈值时是否踢出",
|
||||
"TXT_CODE_4fb66c81": "如果 1 秒内破坏超过此数量的瓷砖,则封禁玩家并恢复其操作",
|
||||
"TXT_CODE_4fb66c81": "如果 1 秒内破坏超过此数量的方块,则封禁玩家并恢复其操作",
|
||||
"TXT_CODE_4aba9745": "当玩家超过 TileKill 阈值时是否踢出玩家",
|
||||
"TXT_CODE_17cbacf6": "如果在 1 秒内放置了此数量的瓷砖,则封禁玩家",
|
||||
"TXT_CODE_17cbacf6": "如果在 1 秒内放置了此数量的方块,则封禁玩家",
|
||||
"TXT_CODE_617701dc": "当玩家超过 TilePlace 阈值时是否踢出玩家",
|
||||
"TXT_CODE_9394aadf": "当玩家超过 TileLiquid 阈值时是否踢出玩家",
|
||||
"TXT_CODE_c9c27711": "是否忽略水晶子弹的弹片以计算弹丸阈值",
|
||||
@ -1955,20 +1955,20 @@
|
||||
"TXT_CODE_9d1d244f": "程序启动失败,输入输出流不可读:{{pipeName}}",
|
||||
"TXT_CODE_ca030197": "实例有其他任务正在进行中,无法进行此操作!",
|
||||
"TXT_CODE_aae2918f": "实例进程启动失败,请检查启动命令和运行环境等配置!",
|
||||
"TXT_CODE_e543f6c0": "MC Purpur。",
|
||||
"TXT_CODE_e543f6c0": "MC Purpur",
|
||||
"TXT_CODE_98e50717": "Purpur配置文件,允许对高级参数及更具体的游戏设置进行进一步调整,极大地影响整体性能,并在Paper配置文件的功能基础上进行扩展。",
|
||||
"TXT_CODE_da76ea07": "此配置文件常用于 Purpur 服务器,它在 Paper 配置基础上进行了更全面的扩展。",
|
||||
"TXT_CODE_81cabec": "设置服务器是否应在启动时转储所有配置值到服务器日志",
|
||||
"TXT_CODE_c32eb04a": "切勿更改此设置!Purpur内部使用它来辅助自动更新配置。",
|
||||
"TXT_CODE_b75e6388": "<uptime>占位符用于正常运行时间命令输出的格式",
|
||||
"TXT_CODE_2de4c590": "命令.uptime.format选项中<day>占位符的输出",
|
||||
"TXT_CODE_816ae222": "在 command.uptime.format 选项中 <days> 占位符的输出。",
|
||||
"TXT_CODE_3752d436": "command.uptime.format选项中<小时>占位符输出",
|
||||
"TXT_CODE_bec552ee": "命令.uptime.format选项中<hours>占位符的输出",
|
||||
"TXT_CODE_80747f11": "command.uptime.format选项中的<minute>占位符输出格式",
|
||||
"TXT_CODE_1b78c12e": "command.uptime.format选项中的<minutes>占位符的输出",
|
||||
"TXT_CODE_b3796a8": "命令.uptime.format 选项中 <second> 占位符的输出",
|
||||
"TXT_CODE_a94e89ef": "命令.uptime.format 选项中 <seconds> 占位符的输出",
|
||||
"TXT_CODE_2de4c590": "command.uptime.format 选项中 <day> 占位符的输出",
|
||||
"TXT_CODE_816ae222": "command.uptime.format 选项中 <days> 占位符的输出",
|
||||
"TXT_CODE_3752d436": "command.uptime.format 选项中 <hour> 占位符的输出",
|
||||
"TXT_CODE_bec552ee": "command.uptime.format 选项中 <hours> 占位符的输出",
|
||||
"TXT_CODE_80747f11": "command.uptime.format 选项中 <minute> 占位符的输出",
|
||||
"TXT_CODE_1b78c12e": "command.uptime.format 选项中 <minutes> 占位符的输出",
|
||||
"TXT_CODE_b3796a8": "command.uptime.format 选项中 <second> 占位符的输出",
|
||||
"TXT_CODE_a94e89ef": "command.uptime.format 选项中 <seconds> 占位符的输出",
|
||||
"TXT_CODE_2b524bbf": "将游戏模式设置为true,以要求具备独立访问权限",
|
||||
"TXT_CODE_e4cf9ca3": "服务器运行/tpsbar命令时boss栏的显示格式。",
|
||||
"TXT_CODE_dc370276": "设置Bossbar的显示类型。选项有:PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12, NOTCHED_20",
|
||||
@ -2118,7 +2118,7 @@
|
||||
"TXT_CODE_f2168ca9": "末影水晶爆炸的威力。",
|
||||
"TXT_CODE_377a62dc": "设置为 true 以便末影水晶爆炸时产生火焰",
|
||||
"TXT_CODE_ab483b69": "允许耕地从正下方的水分中湿润",
|
||||
"TXT_CODE_3a8fdbf1": "若将围栏或鹅卵石墙置于耕地下面,可防止其被踩踏。",
|
||||
"TXT_CODE_3a8fdbf1": "若将围栏或圆石墙置于耕地下面,可防止其被踩踏。",
|
||||
"TXT_CODE_e948602a": "设置为true以让耕地绕过生物破坏规则。",
|
||||
"TXT_CODE_f309e464": "设为true则仅玩家可破坏耕地。",
|
||||
"TXT_CODE_ab90dc44": "设置为true以完全禁止踩踏。",
|
||||
@ -2132,9 +2132,9 @@
|
||||
"TXT_CODE_5635dd6b": "设为true以启用带冰霜行者附魔的靴子行走时的伤害。",
|
||||
"TXT_CODE_553c6ed2": "设为true以使用骨粉催生地狱疣。",
|
||||
"TXT_CODE_5ddf3123": "设为true以禁用观察者时钟。",
|
||||
"TXT_CODE_e9da0615": "设置为false以不允许生物在压实冰上生成",
|
||||
"TXT_CODE_e9da0615": "设置为false以不允许生物在浮冰上生成",
|
||||
"TXT_CODE_d15dc89c": "活塞能够推动的方块数量",
|
||||
"TXT_CODE_9dc4ee75": "设为true以允许粉雪忽略生物破坏游戏规则",
|
||||
"TXT_CODE_9dc4ee75": "设为true以允许细雪忽略生物破坏游戏规则",
|
||||
"TXT_CODE_b3581555": "由单一红石信号激活的动力铁轨的数量",
|
||||
"TXT_CODE_99fab05d": "是否允许重生锚爆炸。将此设置为false只会让重生锚消失。",
|
||||
"TXT_CODE_99f8edf0": "设置为true以在放置时将can_summon设置为true",
|
||||
@ -2552,8 +2552,8 @@
|
||||
"TXT_CODE_c6d3bd8": "MC Pufferfish",
|
||||
"TXT_CODE_eee2a47f": "图像预览",
|
||||
"TXT_CODE_66f38b2e": "普通用户仅可修改部分设置",
|
||||
"TXT_CODE_a583cae4": "准许普通用户编辑启动命令",
|
||||
"TXT_CODE_bfbdf579": "该功能允许普通用户编辑 Docker 实例的“启动”和“更新”命令",
|
||||
"TXT_CODE_a583cae4": "准许普通用户编辑实例高级配置",
|
||||
"TXT_CODE_bfbdf579": "该功能允许普通用户编辑 Docker 实例的“启动”和“更新”命令等配置",
|
||||
"TXT_CODE_36cae384": "你正使用私有 IP 地址",
|
||||
"TXT_CODE_ea6e5e5e": "使用公网地址访问面板时该节点可能无法正常工作",
|
||||
"TXT_CODE_678164d7": "在 “商家控制台 - 节点列表” 中可以找到节点ID"
|
||||
|
@ -508,9 +508,9 @@
|
||||
"TXT_CODE_4306a0d0": "線上(正版)驗證",
|
||||
"TXT_CODE_b214a52d": "是否允許玩家互相攻擊",
|
||||
"TXT_CODE_cbb958f2": "如果開啟,則沒有 Mojang 簽署公鑰的玩家將無法連線到伺服器。",
|
||||
"TXT_CODE_da234f4f": "遊戲難度(peaceful, easy, normal,hard)",
|
||||
"TXT_CODE_da234f4f": "遊戲難度(peaceful, easy, normal, hard)",
|
||||
"TXT_CODE_cafe41ab": "允許的掛機時間,單位為分鐘 超過限制後自動踢出伺服器",
|
||||
"TXT_CODE_deaf423c": "遊戲模式(survival,creative,adventure,spectator)",
|
||||
"TXT_CODE_deaf423c": "遊戲模式(survival, creative, adventure, spectator)",
|
||||
"TXT_CODE_b642de88": "伺服器最大玩家數限制",
|
||||
"TXT_CODE_5bb8f14": "生成攻擊型生物(怪獸)",
|
||||
"TXT_CODE_711d4763": "伺服器傳送給客戶端的資料量,決定玩家能設定的視野",
|
||||
@ -656,7 +656,7 @@
|
||||
"TXT_CODE_37f5901": "甜菜根生長速度",
|
||||
"TXT_CODE_f60ca79d": "胡蘿蔔生長速度",
|
||||
"TXT_CODE_193297ed": "馬鈴薯生長速度",
|
||||
"TXT_CODE_47dd244a": "火把花生長速度",
|
||||
"TXT_CODE_47dd244a": "海鞘生長速度",
|
||||
"TXT_CODE_1135828": "小麥生長速度",
|
||||
"TXT_CODE_43984628": "地獄疣生長速度",
|
||||
"TXT_CODE_143f213e": "藤蔓生長速度",
|
||||
@ -714,7 +714,7 @@
|
||||
"TXT_CODE_10430e01": "哨站種子",
|
||||
"TXT_CODE_8366db5a": "末地城種子",
|
||||
"TXT_CODE_f28ded80": "史萊姆塊種子",
|
||||
"TXT_CODE_2f900008": "下界種子",
|
||||
"TXT_CODE_2f900008": "地狱種子",
|
||||
"TXT_CODE_555b3625": "森林府邸種子",
|
||||
"TXT_CODE_313db7d2": "化石種子",
|
||||
"TXT_CODE_be26bb3c": "傳送門種子",
|
||||
@ -894,7 +894,7 @@
|
||||
"TXT_CODE_44454300": "經驗合併最大值",
|
||||
"TXT_CODE_4ca9e35f": "骷髏",
|
||||
"TXT_CODE_a5f7d835": "殭屍",
|
||||
"TXT_CODE_451f9968": "透過下界傳送門限制殭屍豬靈",
|
||||
"TXT_CODE_451f9968": "透過地狱傳送門限制殭屍豬靈",
|
||||
"TXT_CODE_981c59e6": "鸚鵡不受玩家移動影響",
|
||||
"TXT_CODE_2a2dfc09": "創造模式玩家不受夜魅攻擊",
|
||||
"TXT_CODE_8a9fd2b4": "夜魅只攻擊失眠者",
|
||||
@ -1486,27 +1486,27 @@
|
||||
"TXT_CODE_2033383b": "波之間的延遲。值越低,生物越多",
|
||||
"TXT_CODE_226b6c9e": "啟用永無止境的入侵事件",
|
||||
"TXT_CODE_85b01e01": "設定 PvP 模式。有效類型為:「normal」、「always」和「disabled」",
|
||||
"TXT_CODE_7b759c13": "防止預設磁磚產生在產生保護半徑內",
|
||||
"TXT_CODE_7b759c13": "防止預設方塊產生在產生保護半徑內",
|
||||
"TXT_CODE_965360cd": "產生保護半徑",
|
||||
"TXT_CODE_443ac54f": "根據玩家與其磁磚位置之間的距離啟用或停用反作弊範圍檢查",
|
||||
"TXT_CODE_443ac54f": "根據玩家與其放置方塊之間的距離啟用或停用反作弊範圍檢查",
|
||||
"TXT_CODE_d092c3b": "只允許 hardcore 玩家連線",
|
||||
"TXT_CODE_1a6d30de": "阻止 softcore 玩家連線",
|
||||
"TXT_CODE_b5ce1069": "阻止 non-softcore 玩家連線",
|
||||
"TXT_CODE_c8c91afc": "停用放置、移動磁磚",
|
||||
"TXT_CODE_c8c91afc": "停用放置、移動方塊",
|
||||
"TXT_CODE_3f739f9c": "停用困難模式",
|
||||
"TXT_CODE_c9e4d5c1": "防止地牢守衛在將玩家送到出生點時生成",
|
||||
"TXT_CODE_f51ce97e": "停用小丑炸彈產生",
|
||||
"TXT_CODE_115e891f": "停用雪球產生",
|
||||
"TXT_CODE_90912e04": "禁用玩家死亡時掉落墓碑",
|
||||
"TXT_CODE_ce953a4": "停用 PrimeBombs",
|
||||
"TXT_CODE_b0b67785": "強制世界時間為正常時間,白天或黑",
|
||||
"TXT_CODE_b0b67785": "強制世界時間為正常、白天或黑夜",
|
||||
"TXT_CODE_584af0ab": "停用隱身藥水的效果",
|
||||
"TXT_CODE_d764908b": "禁止玩家可以移動的最大距離(以磁磚為單位)",
|
||||
"TXT_CODE_d764908b": "禁止玩家可以移動的最大距離(以方塊為單位)",
|
||||
"TXT_CODE_3b346a65": "區域保護是否應適用於箱子",
|
||||
"TXT_CODE_603cbc35": "區域保護是否適用於鑽石寶石鎖",
|
||||
"TXT_CODE_33c223c": "忽略檢查以查看玩家是否「可以」更新彈體",
|
||||
"TXT_CODE_da65ecbd": "忽略檢查玩家是否「可以」殺死彈頭",
|
||||
"TXT_CODE_8c2ad2cb": "允許玩家打破無法建造的臨時磁磚(草、花盆等)",
|
||||
"TXT_CODE_8c2ad2cb": "允許玩家打破無法建造的臨時方塊(草、花盆等)",
|
||||
"TXT_CODE_ba1a222b": "允許玩家在無法建造的地方放置冰",
|
||||
"TXT_CODE_b30daa03": "當世界處於困難模式時,允許 CrimsonCreep",
|
||||
"TXT_CODE_372e97f4": "當世界處於困難模式時,允許腐敗蔓延",
|
||||
@ -1515,7 +1515,7 @@
|
||||
"TXT_CODE_3b4260f8": "雕像在停止產生之前可以產生多少 NPC。預設值 10。",
|
||||
"TXT_CODE_cd62c9d4": "阻止違禁物品產生或透過指令調出",
|
||||
"TXT_CODE_ed9bab79": "阻止玩家在死亡時與世界互動",
|
||||
"TXT_CODE_fe82609a": "防止玩家放置樣式無效的磁磚",
|
||||
"TXT_CODE_fe82609a": "防止玩家放置樣式無效的方塊",
|
||||
"TXT_CODE_b649a71a": "強制全年舉辦僅限聖誕節的活動",
|
||||
"TXT_CODE_ac52ad06": "強制全年舉辦僅限萬聖節的活動",
|
||||
"TXT_CODE_3f3e734b": "允許禁止項目允許清單中的群組產生被禁止的項目,即使 PreventBannedItemSpawn 設定為 true",
|
||||
@ -1524,7 +1524,7 @@
|
||||
"TXT_CODE_87e18bb5": "是否廣播 Boss 產生或入侵開始",
|
||||
"TXT_CODE_3f470950": "在裝備增益之前,玩家可以擁有的最大生命值",
|
||||
"TXT_CODE_95dfd5bd": "在裝備增益之前,玩家可以擁有的最大 MP",
|
||||
"TXT_CODE_f71475e2": "炸彈從爆炸點開始可以影響磁磚的射程(以格為單位)",
|
||||
"TXT_CODE_f71475e2": "炸彈從爆炸點開始可以影響方塊的射程(以格為單位)",
|
||||
"TXT_CODE_260d96a0": "如果設為true,則給予玩家的物品將直接插入到他們的物品欄中。否則,給予玩家的物品將作為掉落的物品生成。實驗性功能,可能無法正常工作或導致物品 丟失",
|
||||
"TXT_CODE_cfd64e73": "新註冊玩家的預設群組名稱",
|
||||
"TXT_CODE_90896d08": "未註冊玩家的預設群組名稱",
|
||||
@ -1546,14 +1546,14 @@
|
||||
"TXT_CODE_ab7672dd": "新玩家帳號的最小密碼長度。不能低於 4",
|
||||
"TXT_CODE_94002354": "阻止玩家使用其用戶端 UUID 登入",
|
||||
"TXT_CODE_7141866a": "踢出不向伺服器發送 UUID 的客戶端",
|
||||
"TXT_CODE_6d912e27": "如果在 1 秒內繪製了此數量的瓷磚,則封鎖玩家",
|
||||
"TXT_CODE_6d912e27": "如果在 1 秒內繪製了此數量的方塊,則封鎖玩家",
|
||||
"TXT_CODE_192078c6": "當玩家超過 TilePaint 閾值時,是否踢出",
|
||||
"TXT_CODE_5e6e46bb": "玩家 / NPC 可以造成的最大傷害",
|
||||
"TXT_CODE_e1af7c8b": "彈頭可以造成的最大傷害",
|
||||
"TXT_CODE_57417f60": "玩家超過 MaxDamage 閾值時是否踢出",
|
||||
"TXT_CODE_4fb66c81": "如果 1 秒內破壞超過此數量的瓷磚,則封鎖玩家並恢復其操作",
|
||||
"TXT_CODE_4fb66c81": "如果 1 秒內破壞超過此數量的方塊,則封鎖玩家並恢復其操作",
|
||||
"TXT_CODE_4aba9745": "玩家超過 TileKill 門檻時是否踢出玩家",
|
||||
"TXT_CODE_17cbacf6": "如果在 1 秒內放置了此數量的瓷磚,則封鎖玩家",
|
||||
"TXT_CODE_17cbacf6": "如果在 1 秒內放置了此數量的方塊,則封鎖玩家",
|
||||
"TXT_CODE_617701dc": "當玩家超過 TilePlace 門檻時是否踢出玩家",
|
||||
"TXT_CODE_9394aadf": "當玩家超過 TileLiquid 門檻時是否踢出玩家",
|
||||
"TXT_CODE_c9c27711": "是否忽略水晶子彈的彈片以計算彈丸閾值",
|
||||
@ -1955,20 +1955,20 @@
|
||||
"TXT_CODE_9d1d244f": "程式啟動失敗,無法讀取輸出入流:{{pipeName}}",
|
||||
"TXT_CODE_ca030197": "伺服器正在進行其他任務,無法進行此操作!",
|
||||
"TXT_CODE_aae2918f": "伺服器啟動失敗,請檢查啟動指令和執行環境等設定!",
|
||||
"TXT_CODE_e543f6c0": "MC Purpur。",
|
||||
"TXT_CODE_e543f6c0": "MC Purpur",
|
||||
"TXT_CODE_98e50717": "Purpur 設定檔,允許對進階參數及更具體的遊戲設定進行進一步調整,極大影響整體效能,並在 Paper 設定檔功能基礎上進行擴展。",
|
||||
"TXT_CODE_da76ea07": "此設定檔常用於 Purpur 伺服器,它在 Paper 設定基礎上進行了更全面的擴展。",
|
||||
"TXT_CODE_81cabec": "設定伺服器是否應在啟動時轉存所有設定值到伺服器日誌",
|
||||
"TXT_CODE_c32eb04a": "切勿更改此設定!Purpur 內部使用它來輔助自動更新設定。",
|
||||
"TXT_CODE_b75e6388": "<uptime> 佔位符用於正常運行時間指令輸出的格式",
|
||||
"TXT_CODE_2de4c590": "指令.uptime.format 選項中 <day> 佔位符的輸出",
|
||||
"TXT_CODE_816ae222": "在 command.uptime.format 選項中 <days> 佔位符的輸出。",
|
||||
"TXT_CODE_3752d436": "command.uptime.format 選項中 <小時> 佔位符輸出",
|
||||
"TXT_CODE_bec552ee": "指令.uptime.format 選項中 <hours> 佔位符的輸出",
|
||||
"TXT_CODE_80747f11": "command.uptime.format 選項中的 <minute> 佔位符輸出格式",
|
||||
"TXT_CODE_1b78c12e": "command.uptime.format 選項中的 <minutes> 佔位符的輸出",
|
||||
"TXT_CODE_b3796a8": "指令.uptime.format 選項中 <second> 佔位符的輸出",
|
||||
"TXT_CODE_a94e89ef": "指令.uptime.format 選項中 <seconds> 佔位符的輸出",
|
||||
"TXT_CODE_2de4c590": "command.uptime.format 選項中 <day> 佔位符的輸出",
|
||||
"TXT_CODE_816ae222": "command.uptime.format 選項中 <days> 佔位符的輸出",
|
||||
"TXT_CODE_3752d436": "command.uptime.format 選項中 <hour> 佔位符的輸出",
|
||||
"TXT_CODE_bec552ee": "command.uptime.format 選項中 <hours> 佔位符的輸出",
|
||||
"TXT_CODE_80747f11": "command.uptime.format 選項中 <minute> 佔位符的輸出",
|
||||
"TXT_CODE_1b78c12e": "command.uptime.format 選項中 <minutes> 佔位符的輸出",
|
||||
"TXT_CODE_b3796a8": "command.uptime.format 選項中 <second> 佔位符的輸出",
|
||||
"TXT_CODE_a94e89ef": "command.uptime.format 選項中 <seconds> 佔位符的輸出",
|
||||
"TXT_CODE_2b524bbf": "將遊戲模式設定為 true,以要求具備獨立存取權限",
|
||||
"TXT_CODE_e4cf9ca3": "伺服器執行 /tpsbar 指令時 boss 欄的顯示格式。",
|
||||
"TXT_CODE_dc370276": "設定 Bossbar 的顯示類型。選項有: PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12, NOTCHED_20",
|
||||
@ -2132,7 +2132,7 @@
|
||||
"TXT_CODE_5635dd6b": "設為true以啟用帶冰霜行者附魔的靴子行走時的傷害。",
|
||||
"TXT_CODE_553c6ed2": "設為true以使用骨粉催生地獄疣。",
|
||||
"TXT_CODE_5ddf3123": "設為true以停用觀察者時鐘。",
|
||||
"TXT_CODE_e9da0615": "設為false以不允許生物在壓實冰上生成",
|
||||
"TXT_CODE_e9da0615": "設為false以不允許生物在冰砖上生成",
|
||||
"TXT_CODE_d15dc89c": "活塞能夠推動的方塊數量",
|
||||
"TXT_CODE_9dc4ee75": "設為true以允許粉雪忽略生物破壞遊戲規則",
|
||||
"TXT_CODE_b3581555": "由單一紅石訊號啟動的動力鐵軌數量",
|
||||
@ -2416,7 +2416,7 @@
|
||||
"TXT_CODE_14688b70": "控制玩家首次生成於世界時的無敵持續時間。",
|
||||
"TXT_CODE_f0be5e98": "玩家下載資源包期間的無敵設定。",
|
||||
"TXT_CODE_db07cf9e": "若玩家超出世界邊界,將被傳送回出生點。",
|
||||
"TXT_CODE_d6e124c1": "若在下界頂層受傷,將傳送回出生點",
|
||||
"TXT_CODE_d6e124c1": "若在地狱頂層受傷,將傳送回出生點",
|
||||
"TXT_CODE_d73c037b": "允許透過終界折躍門漏洞連續與村民交易。",
|
||||
"TXT_CODE_b6d926ab": "允許不死圖騰在物品欄任意位置生效,不限副手。",
|
||||
"TXT_CODE_aaba7ab8": "允許生物或玩家在水中騎乘其他玩家",
|
||||
@ -2552,8 +2552,8 @@
|
||||
"TXT_CODE_c6d3bd8": "MC Pufferfish",
|
||||
"TXT_CODE_eee2a47f": "圖片預覽",
|
||||
"TXT_CODE_66f38b2e": "使用者只能修改部分設定",
|
||||
"TXT_CODE_a583cae4": "允許使用者編輯啟動指令",
|
||||
"TXT_CODE_bfbdf579": "該功能允許使用者編輯 Docker 伺服器的「啟動」和「更新」指令",
|
||||
"TXT_CODE_a583cae4": "允許使用者編輯實例高級設定",
|
||||
"TXT_CODE_bfbdf579": "該功能允許使用者編輯 Docker 伺服器的「啟動」和「更新」指令等設定",
|
||||
"TXT_CODE_36cae384": "你正使用虛擬 IP 位址",
|
||||
"TXT_CODE_ea6e5e5e": "使用公共 ip 存取面板時該節點可能無法正常運作",
|
||||
"TXT_CODE_678164d7": "在「商家控制台 - 節點清單」中可以找到節點ID"
|
||||
|
@ -13,6 +13,7 @@ import { ROLE } from "../entity/user";
|
||||
import axios from "axios";
|
||||
import { systemConfig } from "../setting";
|
||||
import { IQuickStartTemplate } from "common/global";
|
||||
import { checkInstanceAdvancedParams } from "../service/instance_service";
|
||||
|
||||
const router = new Router({ prefix: "/protected_instance" });
|
||||
|
||||
@ -422,33 +423,11 @@ router.put(
|
||||
const ie = !isEmpty(config.ie) ? toText(config?.ie) : null;
|
||||
const fileCode = toText(config.fileCode);
|
||||
const stopCommand = config.stopCommand ? toText(config.stopCommand) : null;
|
||||
const startCommand = toText(config.startCommand);
|
||||
const updateCommand = toText(config.updateCommand);
|
||||
|
||||
const remoteService = RemoteServiceSubsystem.getInstance(daemonId || "");
|
||||
const isTopPermission = isTopPermissionByUuid(getUserUuid(ctx));
|
||||
|
||||
const instance = await new RemoteRequest(remoteService).request("instance/detail", {
|
||||
instanceUuid
|
||||
});
|
||||
|
||||
const isCmdChanged = (cmd: string | null, instanceCmd: string) => cmd !== instanceCmd;
|
||||
const hasPermission = isTopPermissionByUuid(getUserUuid(ctx));
|
||||
|
||||
if (
|
||||
(startCommand || updateCommand) &&
|
||||
isCmdChanged(startCommand, instance.config.startCommand) &&
|
||||
isCmdChanged(updateCommand, instance.config.updateCommand)
|
||||
) {
|
||||
if (instance.config.processType !== "docker" && !hasPermission)
|
||||
return verificationFailed(ctx);
|
||||
|
||||
if (
|
||||
instance.config.processType === "docker" &&
|
||||
!systemConfig?.allowChangeCmd &&
|
||||
!hasPermission
|
||||
)
|
||||
return verificationFailed(ctx);
|
||||
}
|
||||
let advancedConfig = {};
|
||||
advancedConfig = checkInstanceAdvancedParams(config, isTopPermission);
|
||||
|
||||
const result = await new RemoteRequest(remoteService).request("instance/update", {
|
||||
instanceUuid,
|
||||
@ -467,8 +446,7 @@ router.put(
|
||||
enableRcon,
|
||||
tag: instanceTags,
|
||||
fileCode,
|
||||
startCommand: startCommand ?? instance.startCommand,
|
||||
updateCommand: updateCommand ?? instance.updateCommand
|
||||
...advancedConfig
|
||||
}
|
||||
});
|
||||
ctx.body = result;
|
||||
|
@ -2,6 +2,9 @@ import userSystem from "../service/user_service";
|
||||
import RemoteServiceSubsystem from "../service/remote_service";
|
||||
import RemoteRequest from "../service/remote_command";
|
||||
import { t } from "i18next";
|
||||
import { systemConfig } from "../setting";
|
||||
import { isEmpty, toText } from "common/dist";
|
||||
import { IGlobalInstanceConfig } from "common/global";
|
||||
|
||||
export enum INSTANCE_STATUS {
|
||||
BUSY = -1,
|
||||
@ -136,3 +139,27 @@ export async function getInstancesByUuid(
|
||||
token: ""
|
||||
};
|
||||
}
|
||||
|
||||
export function checkInstanceAdvancedParams(
|
||||
config: IGlobalInstanceConfig,
|
||||
isTopPermission: boolean = false
|
||||
) {
|
||||
const canChangeCmd = systemConfig?.allowChangeCmd;
|
||||
if (!isTopPermission) {
|
||||
if (!canChangeCmd) return {};
|
||||
if (config.processType !== "docker") return {};
|
||||
}
|
||||
|
||||
const startCommand = toText(config.startCommand);
|
||||
const updateCommand = toText(config.updateCommand);
|
||||
const dockerEnv =
|
||||
!isEmpty(config.docker.env) && Array.isArray(config.docker.env) ? config.docker.env : [];
|
||||
|
||||
return {
|
||||
startCommand,
|
||||
updateCommand,
|
||||
docker: {
|
||||
env: dockerEnv
|
||||
}
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user