66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
/** 商品模块分类和操作系统图标选择;模块标识仍按后端协议保留,不作为面向会员的文案。 */
|
|
var e = {
|
|
cloud: [
|
|
`mf_cloud`,
|
|
`kky_ecs`,
|
|
`whmcs_cloud`,
|
|
`mf_finance`,
|
|
`remf_finance`,
|
|
`jy_cloud`,
|
|
],
|
|
dcim: [
|
|
`mf_dcim`,
|
|
`remf_dcim`,
|
|
`mf_finance_dcim`,
|
|
`remf_finance_dcim`,
|
|
`whmcs_dcim`,
|
|
`jy_dcim`,
|
|
],
|
|
common: [`idcsmart_common`, `mf_finance_common`],
|
|
};
|
|
/** 优先采用合法站内/HTTP(S)图片地址;否则从 e/n 的系统描述推断本地图标。 */
|
|
function t(e, t, n) {
|
|
let r = String(e ?? ``).trim();
|
|
if (r && !/[\u0000-\u0020\u007f\\]/.test(r)) {
|
|
if (/^\/(?!\/)/.test(r)) return r;
|
|
try {
|
|
let e = new URL(r.startsWith(`//`) ? `https:${r}` : r);
|
|
if (/^(https?:)$/.test(e.protocol) && !e.username && !e.password)
|
|
return r;
|
|
} catch {}
|
|
}
|
|
// t 是恢复导出的保留参数;当前实现以 e 和 n 匹配系统别名,未知系统显示 Other。
|
|
let i = [
|
|
[`Windows`, [`windows`, `winserver`]],
|
|
[`Ubuntu`, [`ubuntu`]],
|
|
[`Debian`, [`debian`]],
|
|
[`TencentOS-Server`, [`tencentos`]],
|
|
[`CentOS`, [`centos`]],
|
|
[`Rocky`, [`rocky`]],
|
|
[`AlmaLinux`, [`almalinux`]],
|
|
[`OpenEuler`, [`openeuler`, `euleros`]],
|
|
[`RedHat`, [`redhat`, `rhel`]],
|
|
[`Fedora`, [`fedora`, `fedroa`]],
|
|
[`ArchLinux`, [`archlinux`]],
|
|
[`FreeBSD`, [`freebsd`]],
|
|
[`ESXi`, [`esxi`]],
|
|
[`XenServer`, [`xenserver`]],
|
|
[`OpenClaw`, [`openclaw`]],
|
|
],
|
|
a = [e, n].map((e) =>
|
|
String(e ?? ``)
|
|
.toLowerCase()
|
|
.replace(/[\s_.\-/]+/g, ``),
|
|
);
|
|
for (let e of a) {
|
|
let t = i.find(([, t]) => t.some((t) => e.includes(t)));
|
|
if (t) return `/images/os/${t[0]}.svg`;
|
|
}
|
|
return a.some((e) => /linux|alpine|opensuse|suse/.test(e))
|
|
? `/images/os/Linux.svg`
|
|
: e || n
|
|
? `/images/os/Other.svg`
|
|
: ``;
|
|
}
|
|
export { t as n, e as t };
|