Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions frontend/src/api/interface/container.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,6 @@ export namespace Container {
ipv4: string;
ipv6: string;
dns: Array<string>;
cmdStr: string;
entrypointStr: string;
memoryItem: number;
cmd: Array<string>;
workingDir: string;
Expand Down
3 changes: 1 addition & 2 deletions frontend/src/lang/modules/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -835,8 +835,7 @@ const message = {
containerExample: '80 or 80-88',
exposePort: 'Expose port',
exposeAll: 'Expose all',
cmdHelper: 'Example: nginx -g "daemon off;"',
entrypointHelper: 'Example: docker-entrypoint.sh',
cmdHelper: 'Enter a command and press Enter to continue inputting. Commands can be dragged to reorder.',
autoRemove: 'Auto remove',
cpuQuota: 'Number of CPU cores',
memoryLimit: 'Memory',
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/lang/modules/es-es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -838,8 +838,8 @@ const message = {
containerExample: '80 o 80-88',
exposePort: 'Exponer puerto',
exposeAll: 'Exponer todos',
cmdHelper: 'Ejemplo: nginx -g "daemon off;"',
entrypointHelper: 'Ejemplo: docker-entrypoint.sh',
cmdHelper:
'Ingrese un comando y presione Enter para continuar ingresando. Los comandos se pueden arrastrar para reordenar.',
autoRemove: 'Eliminar automáticamente',
cpuQuota: 'Cantidad de núcleos de CPU',
memoryLimit: 'Memoria',
Expand Down
3 changes: 1 addition & 2 deletions frontend/src/lang/modules/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -813,8 +813,7 @@ const message = {
containerExample: '80または80-88',
exposePort: 'ポートを公開します',
exposeAll: 'すべてを公開します',
cmdHelper: '例:nginx -g "daemon off;"',
entrypointHelper: '例:docker-entrypoint.sh',
cmdHelper: 'コマンドを入力後、Enterキーを押して入力を続行します。コマンドはドラッグで順序変更できます。',
autoRemove: '自動削除',
cpuQuota: 'CPUコアの数',
memoryLimit: 'メモリ',
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/lang/modules/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -807,8 +807,8 @@ const message = {
containerExample: '80 또는 80-88',
exposePort: '포트 노출',
exposeAll: '모든 포트 노출',
cmdHelper: '예시: nginx -g "daemon off;"',
entrypointHelper: '예시: docker-entrypoint.sh',
cmdHelper:
'명령어를 입력한 후 Enter 키를 눌러 입력을 계속합니다. 명령어는 드래그하여 순서를 변경할 수 있습니다.',
autoRemove: '자동 제거',
cpuQuota: 'CPU 코어 수',
memoryLimit: '메모리',
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/lang/modules/ms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -829,8 +829,8 @@ const message = {
containerExample: '80 atau 80-88',
exposePort: 'Dedahkan port',
exposeAll: 'Dedahkan semua',
cmdHelper: 'Contoh: nginx -g "daemon off;"',
entrypointHelper: 'Contoh: docker-entrypoint.sh',
cmdHelper:
'Masukkan satu arahan dan tekan Enter untuk terus memasukkan. Arahan boleh disusun semula dengan menyeret.',
autoRemove: 'Buang automatik',
cpuQuota: 'Bilangan teras CPU',
memoryLimit: 'Memori',
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/lang/modules/pt-br.ts
Original file line number Diff line number Diff line change
Expand Up @@ -825,8 +825,8 @@ const message = {
containerExample: '80 ou 80-88',
exposePort: 'Expor porta',
exposeAll: 'Expor todas',
cmdHelper: 'Exemplo: nginx -g "daemon off;"',
entrypointHelper: 'Exemplo: docker-entrypoint.sh',
cmdHelper:
'Digite um comando e pressione Enter para continuar a inserção. Os comandos podem ser arrastados para reordenar.',
autoRemove: 'Remover automaticamente',
cpuQuota: 'Número de núcleos de CPU',
memoryLimit: 'Memória',
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/lang/modules/ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -826,8 +826,8 @@ const message = {
containerExample: '80 или 80-88',
exposePort: 'Открыть порт',
exposeAll: 'Открыть все',
cmdHelper: 'Пример: nginx -g "daemon off;"',
entrypointHelper: 'Пример: docker-entrypoint.sh',
cmdHelper:
'Введите команду и нажмите Enter для продолжения ввода. Команды можно перетаскивать для изменения порядка.',
autoRemove: 'Автоудаление',
cpuQuota: 'Количество ядер CPU',
memoryLimit: 'Память',
Expand Down
3 changes: 1 addition & 2 deletions frontend/src/lang/modules/tr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -844,8 +844,7 @@ const message = {
containerExample: '80 veya 80-88',
exposePort: 'Portu göster',
exposeAll: 'Tümünü göster',
cmdHelper: 'Örnek: nginx -g "daemon off;"',
entrypointHelper: 'Örnek: docker-entrypoint.sh',
cmdHelper: "Bir komut girin ve girişe devam etmek için Enter'a basın. Komutlar sıralamak için sürüklenebilir.",
autoRemove: 'Otomatik kaldır',
cpuQuota: 'CPU çekirdek sayısı',
memoryLimit: 'Bellek',
Expand Down
3 changes: 1 addition & 2 deletions frontend/src/lang/modules/zh-Hant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -800,8 +800,7 @@ const message = {
containerExample: '80 或者 80-88',
exposePort: '暴露埠',
exposeAll: '暴露所有',
cmdHelper: '例: nginx -g "daemon off;"',
entrypointHelper: '例: docker-entrypoint.sh',
cmdHelper: '輸入一個命令後回車繼續輸入,命令可拖拽排序。',
autoRemove: '容器退出後自動刪除容器',
cpuQuota: 'CPU 限制',
memoryLimit: '記憶體限制',
Expand Down
3 changes: 1 addition & 2 deletions frontend/src/lang/modules/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -799,8 +799,7 @@ const message = {
containerExample: '80 或者 80-88',
exposePort: '暴露端口',
exposeAll: '暴露所有',
cmdHelper: '例: nginx -g "daemon off;"',
entrypointHelper: '例: docker-entrypoint.sh',
cmdHelper: '输入一个命令后回车继续输入,命令可拖拽顺序。',
autoRemove: '容器退出后自动删除容器',
cpuQuota: 'CPU 限制',
memoryLimit: '内存限制',
Expand Down
74 changes: 9 additions & 65 deletions frontend/src/views/container/container/operate/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -199,21 +199,21 @@
<el-tab-pane :label="$t('terminal.command')">
<el-row :gutter="20">
<el-col :xs="24" :sm="20" :md="20" :lg="20" :xl="20">
<el-form-item label="Command" prop="cmdStr">
<el-input
v-model="form.cmdStr"
:placeholder="$t('container.cmdHelper')"
/>
<el-form-item label="Command" prop="cmd">
<el-input-tag draggable v-model="form.cmd" />
<span class="input-help">{{ $t('container.cmdHelper') }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :xs="24" :sm="20" :md="20" :lg="20" :xl="20">
<el-form-item label="Entrypoint" prop="entrypointStr">
<el-input
v-model="form.entrypointStr"
:placeholder="$t('container.entrypointHelper')"
<el-form-item label="Entrypoint" prop="entrypoint">
<el-input-tag
draggable
v-model="form.entrypoint"
placeholder="docker-entrypoint.sh"
/>
<span class="input-help">{{ $t('container.cmdHelper') }}</span>
</el-form-item>
</el-col>
</el-row>
Expand Down Expand Up @@ -406,8 +406,6 @@ const form = reactive<Container.ContainerHelper>({
ipv4: '',
ipv6: '',
dns: [],
cmdStr: '',
entrypointStr: '',
memoryItem: 0,
cmd: [],
workingDir: '',
Expand Down Expand Up @@ -453,27 +451,8 @@ const search = async () => {
form.user = res.data.user;
form.workingDir = res.data.workingDir;

let itemCmd = '';
form.cmd = res.data.cmd || [];
for (const item of form.cmd) {
if (item.indexOf(' ') !== -1) {
itemCmd += `"${escapeQuotes(item)}" `;
} else {
itemCmd += item + ' ';
}
}
form.cmdStr = itemCmd.trimEnd();
let itemEntrypoint = '';
form.entrypoint = res.data.entrypoint || [];
for (const item of form.entrypoint) {
if (item.indexOf(' ') !== -1) {
itemEntrypoint += `"${escapeQuotes(item)}" `;
} else {
itemEntrypoint += item + ' ';
}
}
form.entrypointStr = itemEntrypoint.trimEnd();

form.labels = res.data.labels || [];
form.env = res.data.env || [];
form.exposedPorts = res.data.exposedPorts || [];
Expand Down Expand Up @@ -579,21 +558,7 @@ const onSubmit = async (formEl: FormInstance | undefined) => {
});
};
const submit = async () => {
form.cmd = [];
form.taskID = newUUID();
if (form.cmdStr) {
let itemCmd = splitStringIgnoringQuotes(form.cmdStr);
for (const item of itemCmd) {
form.cmd.push(item.replace(/(?<!\\)"/g, '').replaceAll('\\"', '"'));
}
}
form.entrypoint = [];
if (form.entrypointStr) {
let itemEntrypoint = splitStringIgnoringQuotes(form.entrypointStr);
for (const item of itemEntrypoint) {
form.entrypoint.push(item.replace(/(?<!\\)"/g, '').replaceAll('\\"', '"'));
}
}
if (form.publishAllPorts) {
form.exposedPorts = [];
} else {
Expand Down Expand Up @@ -687,27 +652,6 @@ const isFromApp = (rowData: Container.ContainerHelper) => {
return false;
};

const escapeQuotes = (input) => {
return input.replace(/(?<!\\)"/g, '\\"');
};

const splitStringIgnoringQuotes = (input) => {
input = input.replace(/\\"/g, '<quota>');
const regex = /"([^"]*)"|(\S+)/g;
const result = [];
let match;

while ((match = regex.exec(input)) !== null) {
if (match[1]) {
result.push(match[1].replaceAll('<quota>', '\\"'));
} else if (match[2]) {
result.push(match[2].replaceAll('<quota>', '\\"'));
}
}

return result;
};

const checkExist = async () => {
let params = {
page: 1,
Expand Down
Loading