feat: 容器端口跳转增加 IPv4 IPv6 判断 (#3212)

This commit is contained in:
ssongliu 2023-12-07 14:36:07 +08:00 committed by GitHub
parent 02f41ba45d
commit cb6b9965ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 23 additions and 7 deletions

View file

@ -24,15 +24,15 @@
import { ref } from 'vue';
import { getSettingInfo } from '@/api/modules/setting';
import i18n from '@/lang';
import { MsgError } from '@/utils/message';
import { MsgError, MsgWarning } from '@/utils/message';
import { useRouter } from 'vue-router';
import { checkDomain, checkIp } from '@/utils/util';
const router = useRouter();
const dialogVisible = ref();
interface DialogProps {
port: any;
ip: string;
protocol: string;
}
@ -47,11 +47,19 @@ const acceptParams = async (params: DialogProps): Promise<void> => {
dialogVisible.value = true;
return;
}
if (!checkIp(res.data.systemIP) || !checkDomain(res.data.systemIP)) {
if (res.data.systemIP.indexOf(':') === -1) {
if (params.ip && params.ip === 'ipv6') {
MsgWarning(i18n.global.t('setting.systemIPWarning1', ['IPv4']));
return;
}
window.open(`${protocol}://${res.data.systemIP}:${params.port}`, '_blank');
return;
} else {
if (params.ip && params.ip === 'ipv4') {
MsgWarning(i18n.global.t('setting.systemIPWarning1', ['IPv6']));
return;
}
window.open(`${protocol}://[${res.data.systemIP}]:${params.port}`, '_blank');
}
window.open(`${protocol}://[${res.data.systemIP}]:${params.port}`, '_blank');
};
const goRouter = async (path: string) => {

View file

@ -1180,6 +1180,7 @@ const message = {
'If you do not operate the panel for more than {0} seconds, the panel automatically logs out',
systemIP: 'System Address',
systemIPWarning: 'The server address is not currently set. Please set it in the control panel first!',
systemIPWarning1: 'The current server address is set to {0}, and quick redirection is not possible!',
defaultNetwork: 'Network Card',
syncTime: 'Server Time',
timeZone: 'Time Zone',

View file

@ -1121,6 +1121,7 @@ const message = {
sessionTimeoutHelper: '如果用戶超過 {0} 秒未操作面板面板將自動退出登錄',
systemIP: '服務器地址',
systemIPWarning: '當前未設置服務器地址請先在面板設置中設置',
systemIPWarning1: '當前服務器地址設置為 {0}無法快速跳轉',
defaultNetwork: '默認網卡',
changePassword: '密碼修改',
oldPassword: '原密碼',

View file

@ -1122,6 +1122,7 @@ const message = {
sessionTimeoutHelper: '如果用户超过 {0} 秒未操作面板面板将自动退出登录',
systemIP: '服务器地址',
systemIPWarning: '当前未设置服务器地址请先在面板设置中设置',
systemIPWarning1: '当前服务器地址设置为 {0}无法快速跳转',
defaultNetwork: '默认网卡',
changePassword: '密码修改',
oldPassword: '原密码',

View file

@ -330,12 +330,15 @@ const goDashboard = async (port: any) => {
MsgWarning(i18n.global.t('container.unExposedPort'));
return;
}
if (!port || port.indexOf(':') === -1 || port.indexOf('->') === -1) {
if (port.indexOf(':') === -1) {
MsgWarning(i18n.global.t('commons.msg.errPort'));
return;
}
let portEx = port.match(/:(\d+)/)[1];
dialogPortJumpRef.value.acceptParams({ port: portEx });
let matches = port.match(new RegExp(':', 'g'));
let ip = matches && matches.length > 1 ? 'ipv6' : 'ipv4';
dialogPortJumpRef.value.acceptParams({ port: portEx, ip: ip });
};
const goSetting = async () => {

View file

@ -128,6 +128,7 @@ const checkExist = (data: App.CheckInstalled) => {
endpoint: '/api/v1/databases/redis/exec',
args: '',
error: '',
initCmd: '',
});
});
}
@ -141,6 +142,7 @@ const initTerminal = async () => {
endpoint: '/api/v1/databases/redis/exec',
args: '',
error: '',
initCmd: '',
});
});
}