Merge branch 'v4' of github.com:jumpserver/jumpserver into v4

pull/13378/head
ibuler 2024-06-04 19:08:51 +08:00
commit 263bcbb566
26 changed files with 2425 additions and 2194 deletions

View File

@ -11,8 +11,12 @@ on:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
component: [core]
version: [v4]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
@ -21,21 +25,10 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Base Image
uses: docker/build-push-action@v5
with:
context: .
push: true
file: Dockerfile.base
tags: ghcr.io/jumpserver/core:v4-base
platforms: linux/amd64
build-args: |
APT_MIRROR=http://deb.debian.org
PIP_MIRROR=https://pypi.org/simple
outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Prepare Build
run: |
sed -i 's@^FROM registry.fit2cloud.com/jumpserver@FROM ghcr.io/jumpserver@g' Dockerfile-ee
- name: Build CE Image
uses: docker/build-push-action@v5
@ -43,34 +36,28 @@ jobs:
context: .
push: true
file: Dockerfile
tags: ghcr.io/jumpserver/core:v4-lite
tags: ghcr.io/jumpserver/${{ matrix.component }}:${{ matrix.version }}-ce
platforms: linux/amd64
build-args: |
VERSION=v4
VERSION=${{ matrix.version }}
APT_MIRROR=http://deb.debian.org
BASE_IMAGE=ghcr.io/jumpserver/core
PIP_MIRROR=https://pypi.org/simple
outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Prepare EE Image
run: |
sed -i 's@^FROM registry.fit2cloud.com/jumpserver/xpack@# FROM registry.fit2cloud.com/jumpserver/xpack@' Dockerfile-ee
sed -i 's@^FROM registry.fit2cloud.com/jumpserver@FROM ghcr.io/jumpserver@g' Dockerfile-ee
sed -i 's@^COPY --from=build-xpack@# COPY --from=build-xpack@g' Dockerfile-ee
- name: Build EE Image
uses: docker/build-push-action@v5
with:
context: .
push: false
file: Dockerfile-ee
tags: jumpserver/core:v4
tags: ghcr.io/jumpserver/${{ matrix.component }}:${{ matrix.version }}
platforms: linux/amd64
build-args: |
VERSION=v4
VERSION=${{ matrix.version }}
APT_MIRROR=http://deb.debian.org
BASE_IMAGE=ghcr.io/jumpserver/core
PIP_MIRROR=https://pypi.org/simple
outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@ -1,7 +1,4 @@
ARG VERSION
ARG BASE_IMAGE=jumpserver/core
FROM python:3.11-slim-bullseye as stage-1
FROM debian:bullseye-slim as stage-1
ARG TARGETARCH
ARG DEPENDENCIES=" \
@ -9,8 +6,8 @@ ARG DEPENDENCIES=" \
wget"
ARG APT_MIRROR=http://mirrors.ustc.edu.cn
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core \
--mount=type=cache,target=/var/lib/apt,sharing=locked,id=core \
set -ex \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache \
@ -48,15 +45,44 @@ RUN echo > /opt/jumpserver/config.yml \
sed -i "s@VERSION = .*@VERSION = '${VERSION}'@g" apps/jumpserver/const.py; \
fi
FROM ${BASE_IMAGE}:${VERSION}-base as stage-2
FROM python:3.11-slim-bullseye as stage-2
ARG TARGETARCH
ARG BUILD_DEPENDENCIES=" \
g++ \
make \
pkg-config"
ARG DEPENDENCIES=" \
default-libmysqlclient-dev \
freetds-dev \
gettext \
libkrb5-dev \
libldap2-dev \
libsasl2-dev"
ARG APT_MIRROR=http://mirrors.ustc.edu.cn
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core \
--mount=type=cache,target=/var/lib/apt,sharing=locked,id=core \
set -ex \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache \
&& sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
&& apt-get update \
&& apt-get -y install --no-install-recommends ${BUILD_DEPENDENCIES} \
&& apt-get -y install --no-install-recommends ${DEPENDENCIES} \
&& echo "no" | dpkg-reconfigure dash
WORKDIR /opt/jumpserver
RUN --mount=type=cache,target=/root/.cache,sharing=locked \
--mount=type=bind,source=poetry.lock,target=/opt/jumpserver/poetry.lock \
--mount=type=bind,source=pyproject.toml,target=/opt/jumpserver/pyproject.toml \
ARG PIP_MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple
RUN --mount=type=cache,target=/root/.cache,sharing=locked,id=core \
--mount=type=bind,source=poetry.lock,target=poetry.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
set -ex \
&& python3 -m venv /opt/py3 \
&& pip install poetry -i ${PIP_MIRROR} \
&& poetry config virtualenvs.create false \
&& . /opt/py3/bin/activate \
&& poetry install --only main
@ -75,9 +101,7 @@ ENV LANG=en_US.UTF-8 \
ARG DEPENDENCIES=" \
libldap2-dev \
libpq-dev \
libx11-dev \
libxmlsec1-openssl"
libx11-dev"
ARG TOOLS=" \
ca-certificates \
@ -86,8 +110,8 @@ ARG TOOLS=" \
sshpass"
ARG APT_MIRROR=http://mirrors.ustc.edu.cn
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core \
--mount=type=cache,target=/var/lib/apt,sharing=locked,id=core \
set -ex \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache \

View File

@ -1,20 +1,35 @@
ARG VERSION
ARG BASE_IMAGE=registry.fit2cloud.com/jumpserver/core
FROM registry.fit2cloud.com/jumpserver/xpack:${VERSION} as build-xpack
FROM registry.fit2cloud.com/jumpserver/core:${VERSION}-base as build-core
ARG TARGETARCH
FROM python:3.11-slim-bullseye as build-core
ARG BUILD_DEPENDENCIES=" \
g++"
ARG APT_MIRROR=http://mirrors.ustc.edu.cn
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core \
--mount=type=cache,target=/var/lib/apt,sharing=locked,id=core \
set -ex \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache \
&& sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
&& apt-get update \
&& apt-get -y install --no-install-recommends ${BUILD_DEPENDENCIES} \
&& echo "no" | dpkg-reconfigure dash
WORKDIR /opt/jumpserver
RUN --mount=type=cache,target=/root/.cache,sharing=locked \
ARG PIP_MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple
RUN --mount=type=cache,target=/root/.cache,sharing=locked,id=core \
--mount=type=bind,source=poetry.lock,target=/opt/jumpserver/poetry.lock \
--mount=type=bind,source=pyproject.toml,target=/opt/jumpserver/pyproject.toml \
set -ex \
&& python3 -m venv /opt/py3 \
&& pip install poetry -i ${PIP_MIRROR} \
&& poetry config virtualenvs.create false \
&& . /opt/py3/bin/activate \
&& poetry install --only xpack
FROM ${BASE_IMAGE}:${VERSION}-lite
FROM registry.fit2cloud.com/jumpserver/core:${VERSION}-ce
ARG TARGETARCH
ARG TOOLS=" \
@ -27,8 +42,8 @@ ARG TOOLS=" \
wget"
ARG APT_MIRROR=http://mirrors.ustc.edu.cn
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core \
--mount=type=cache,target=/var/lib/apt,sharing=locked,id=core \
set -ex \
&& apt-get update \
&& apt-get -y install --no-install-recommends ${TOOLS}

View File

@ -1,55 +0,0 @@
FROM python:3.11-slim-bullseye
ARG TARGETARCH
ARG BUILD_DEPENDENCIES=" \
g++ \
make \
pkg-config"
ARG DEPENDENCIES=" \
freetds-dev \
gettext \
libffi-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libpq-dev \
libsasl2-dev \
libssl-dev \
libxml2-dev \
libxmlsec1-dev \
libxmlsec1-openssl \
freerdp2-dev \
libaio-dev"
ARG TOOLS=" \
ca-certificates \
curl \
default-libmysqlclient-dev \
default-mysql-client \
git \
git-lfs \
unzip \
xz-utils \
wget"
ARG APT_MIRROR=http://mirrors.ustc.edu.cn
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
set -ex \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache \
&& sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& apt-get update \
&& apt-get -y install --no-install-recommends ${BUILD_DEPENDENCIES} \
&& apt-get -y install --no-install-recommends ${DEPENDENCIES} \
&& apt-get -y install --no-install-recommends ${TOOLS} \
&& echo "no" | dpkg-reconfigure dash
ARG PIP_MIRROR=https://pypi.org/simple
RUN --mount=type=cache,target=/root/.cache,sharing=locked \
set -ex \
&& python3 -m venv /opt/py3 \
&& pip install poetry -i ${PIP_MIRROR} \
&& poetry config virtualenvs.create false

View File

@ -54,10 +54,13 @@ class ChangeSecretAutomationSerializer(AuthValidateMixin, BaseAutomationSerializ
'ssh_key_change_strategy', 'passphrase', 'recipients', 'params'
]
extra_kwargs = {**BaseAutomationSerializer.Meta.extra_kwargs, **{
'accounts': {'required': True},
'accounts': {'required': True, 'help_text': _('Please enter your account username')},
'recipients': {'label': _('Recipient'), 'help_text': _(
"Currently only mail sending is supported"
)},
'params': {'help_text': _(
"Secret parameter settings, currently only effective for assets of the host type."
)},
}}
@property

View File

@ -264,7 +264,7 @@ class UserSession(models.Model):
user_agent = models.CharField(max_length=254, blank=True, null=True, verbose_name=_("User agent"))
type = models.CharField(choices=LoginTypeChoices.choices, max_length=2, verbose_name=_("Login type"))
backend = models.CharField(max_length=32, default="", verbose_name=_("Auth backend"))
date_created = models.DateTimeField(null=True, blank=True, verbose_name=_('Date created'))
date_created = models.DateTimeField(null=True, blank=True, verbose_name=_('Login date'))
user = models.ForeignKey(
'users.User', verbose_name=_('User'), related_name='sessions', on_delete=models.CASCADE
)

77
apps/i18n/chen/en.json Normal file
View File

@ -0,0 +1,77 @@
{
"action": {
"refresh": "Refresh",
"new": "New",
"new_query": "New Query",
"view_data": "View Data",
"show_properties": "Show Properties",
"label": {
"name": "Name",
"type": "Type",
"version": "Version",
"user": "User",
"jdbc_url": "JDBC URL",
"driver_class": "Driver Class",
"driver_version": "Driver Version"
}
},
"title": {
"query": "Query",
"properties": "Properties",
"datasource_properties": "Datasource Properties"
},
"state": {
"connected": "Connected"
},
"msg": {
"error": {
"fetch_error": "Error while fetching data",
"connect_error": "Error while connecting",
"change_context_error": "Error while changing context",
"parse_error": "Error while parsing",
"execute_error": "Error while executing",
"already_first_page": "It's already the first page",
"already_last_page": "It's already the last page",
"perms_expired": "Permissions associated with this session expired on %s",
"over_max_idle_time": "Since this sessioon has been idle for more than %d minutes, it has been closed",
"over_max_session_time": "Since this session has been active for more than %d hours, it has been closed",
"command_review_timeout": "Command review request has timed out",
"command_review_reject": "Command review request has been rejected by %s",
"session_closed_by": "This session has been closed by %s.",
"user_cancel_command_review": "The user has cancelled the command review.",
"session_locked": "This session has been paused and cannot continue executing commands",
"no_permission": " You do not have permission to perform this action",
"acl_reject": " Command rejected by ACL"
},
"success": {
"execute_success": "Executed successfully",
"connect_success": "Connected successfully"
},
"info": {
"affected_rows": "Affected rows"
},
"dialog": {
"session_locked": "This session is locked by %s, please wait for the session to be unlocked.",
"session_unlocked": "This session has been unlocked by %s.",
"title": {
"init_datasource": "Initialize Datasource",
"init_datasource_failed": "Initialize Datasource Failed",
"error_message": "Error Message",
"session_finished": "Session Finished",
"command_review": "Command Review"
},
"message": {
"init_datasource": "Initializing data source, please wait...",
"init_datasource_failed": "Connection failed, please check if the database connection configuration is correct",
"command_review": "The command you entered requires verification before it can be executed. Would you like to initiate a review request?",
"wait_command_review": "The review request has been initiated, please wait for the review results"
}
}
},
"btn": {
"label": {
"submit": "Submit",
"cancel": "Cancel"
}
}
}

77
apps/i18n/chen/ja.json Normal file
View File

@ -0,0 +1,77 @@
{
"action": {
"refresh": "更新",
"new": "新規",
"new_query": "新規クエリ",
"view_data": "データ表示",
"show_properties": "プロパティ表示",
"label": {
"name": "名前",
"type": "タイプ",
"version": "バージョン",
"user": "ユーザー",
"jdbc_url": "JDBC URL",
"driver_class": "ドライバクラス",
"driver_version": "ドライババージョン"
}
},
"title": {
"query": "クエリ",
"properties": "プロパティ",
"datasource_properties": "データソースのプロパティ"
},
"state": {
"connected": "接続済み"
},
"msg": {
"error": {
"fetch_error": "データ取得エラー",
"connect_error": "接続エラー",
"change_context_error": "コンテキスト変更エラー",
"parse_error": "解析エラー",
"execute_error": "実行エラー",
"already_first_page": "すでに最初のページです",
"already_last_page": "すでに最後のページです",
"perms_expired": "このセッションの権限が%sに失効しました",
"over_max_idle_time": "このセッションは%d分以上アイドル状態が続いたため、閉じられました",
"over_max_session_time": "このセッションは%d时以上継続したため、閉じられました",
"command_review_timeout": "コマンドレビューリクエストがタイムアウトしました",
"command_review_reject": "コマンドレビューリクエストは%sによって拒否されました",
"session_closed_by": "このセッションは%sによって閉じられました。",
"user_cancel_command_review": "ユーザーがコマンドレビューをキャンセルしました。",
"session_locked": "このセッションは一時停止されており、コマンドを続行できません",
"no_permission": " この操作を行う権限がありません",
"acl_reject": " この操作はACLによって拒否されました"
},
"success": {
"execute_success": "正常に実行されました",
"connect_success": "正常に接続されました"
},
"info": {
"affected_rows": "影響を受けた行数"
},
"dialog": {
"session_locked": "このセッションは%sロックされており、コマンドを実行できません",
"session_unlocked": "このセッションは%sロック解除されており、コマンドを実行できます",
"title": {
"init_datasource": "データソースの初期化",
"init_datasource_failed": "データソースの初期化失敗",
"error_message": "エラーメッセージ",
"session_finished": "セッション終了",
"command_review": "コマンドレビュー"
},
"message": {
"init_datasource": "データソースを初期化しています、お待ちください...",
"init_datasource_failed": "接続に失敗しました、データベース接続設定が正しいことを確認してください",
"command_review": "入力したコマンドは、実行前に検証が必要です。レビューリクエストを開始しますか?",
"wait_command_review": "レビューリクエストが開始されました、レビュー結果をお待ちください"
}
}
},
"btn": {
"label": {
"submit": "送信",
"cancel": "キャンセル"
}
}
}

77
apps/i18n/chen/zh.json Normal file
View File

@ -0,0 +1,77 @@
{
"action": {
"refresh": "刷新",
"new": "新建",
"new_query": "新建查询",
"view_data": "查看数据",
"show_properties": "属性",
"label": {
"name": "名称",
"type": "类型",
"version": "版本",
"user": "用户",
"jdbc_url": "JDBC 链接",
"driver_class": "驱动类",
"driver_version": "驱动版本"
}
},
"title": {
"query": "查询",
"properties": "属性",
"datasource_properties": "数据源属性"
},
"state": {
"connected": "已连接"
},
"msg": {
"error": {
"fetch_data": "获取数据失败",
"connect_error": "连接失败",
"change_context_error": "切换上下文错误",
"parse_error": "解析错误",
"execute_error": "执行错误",
"already_first_page": "已经是第一页",
"already_last_page": "已经是最后一页",
"user_cancel_command_review": "用户取消命令复核",
"command_review_timeout": "命令复核超时",
"command_review_reject": "命令复核被 %s 拒绝",
"perms_expired": "此会话关联的权限已于 %s 过期",
"over_max_idle_time": "由于此会话空闲时间大于 %d 分钟,已经被关闭",
"over_max_session_time": "由于此会话时间大于 %d 小时,已经被关闭",
"session_closed_by": "当前会话被管理员 %s 关闭",
"session_locked": "当前会话已被锁定,无法继续执行命令",
"no_permission": " 没有执行此操作的权限",
"acl_reject": " 此命令禁止被执行"
},
"success": {
"execute_success": "执行成功",
"connect_success": "连接成功"
},
"info": {
"affected_rows": "受影响行数"
},
"dialog": {
"session_locked": "此会话已被 %s 锁定,无法继续执行命令",
"session_unlocked": "此会话已被 %s 解锁,可以继续执行命令",
"title": {
"init_datasource": "初始化数据源",
"init_datasource_failed": "初始化数据源失败",
"error_message": "错误消息",
"session_finished": "会话已结束",
"command_review": "命令复核"
},
"message": {
"init_datasource": "正在初始化数据源,请稍候...",
"init_datasource_failed": "连接失败,请检查数据库连接配置是否正确",
"command_review": "您输入的命令需要复核后才可以执行, 是否发起复核请求?",
"wait_command_review": "复核请求已发起, 请等待复核结果"
}
}
},
"btn": {
"label": {
"submit": "提交",
"cancel": "取消"
}
}
}

View File

@ -0,0 +1,77 @@
{
"action": {
"refresh": "刷新",
"new": "新建",
"new_query": "新建查詢",
"view_data": "查看數據",
"show_properties": "屬性",
"label": {
"name": "名稱",
"type": "類型",
"version": "版本",
"user": "用戶",
"jdbc_url": "JDBC 連結",
"driver_class": "驅動類",
"driver_version": "驅動版本"
}
},
"title": {
"query": "查詢",
"properties": "屬性",
"datasource_properties": "數據源屬性"
},
"state": {
"connected": "已連接"
},
"msg": {
"error": {
"fetch_data": "獲取數據失敗",
"connect_error": "連接失敗",
"change_context_error": "切換上下文錯誤",
"parse_error": "解析錯誤",
"execute_error": "執行錯誤",
"already_first_page": "已經是第一頁",
"already_last_page": "已經是最後一頁",
"user_cancel_command_review": "用戶取消命令覆核",
"command_review_timeout": "命令覆核超時",
"command_review_reject": "命令覆核被 %s 拒絕",
"perms_expired": "此會話關聯的權限已於 %s 過期",
"over_max_idle_time": "由於此會話空閒時間大於 %d 分鐘,已經被關閉",
"over_max_session_time": "由於此會話時間大於 %d 小時,已經被關閉",
"session_closed_by": "當前會話被管理員 %s 關閉",
"session_locked": "當前會話已被鎖定,無法繼續執行命令",
"no_permission": " 沒有執行此操作的權限",
"acl_reject": " 此命令禁止被執行"
},
"success": {
"execute_success": "執行成功",
"connect_success": "連接成功"
},
"info": {
"affected_rows": "受影響行數"
},
"dialog": {
"session_locked": "此會話已被 %s 鎖定,無法繼續執行命令",
"session_unlocked": "此會話已被 %s 解鎖,可以繼續執行命令",
"title": {
"init_datasource": "初始化數據源",
"init_datasource_failed": "初始化數據源失敗",
"error_message": "錯誤消息",
"session_finished": "會話已結束",
"command_review": "命令覆核"
},
"message": {
"init_datasource": "正在初始化數據源,請稍候...",
"init_datasource_failed": "連接失敗,請檢查資料庫連接配置是否正確",
"command_review": "您輸入的命令需要覆核後才可以執行, 是否發起覆核請求?",
"wait_command_review": "覆核請求已發起, 請等待覆核結果"
}
}
},
"btn": {
"label": {
"submit": "提交",
"cancel": "取消"
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

52
apps/i18n/koko/en.json Normal file
View File

@ -0,0 +1,52 @@
{
"ShareUser": "ForUser",
"ShareUserHelpText": "If left blank, everyone could join the session.",
"GetShareUser": "Enter username",
"UploadSuccess": "Upload success",
"MustSelectOneFile": "Must select one file",
"MustOneFile": "Only support to select one file",
"DownloadSuccess": "Download success",
"Download": "Download",
"Upload": "Upload",
"Cancel": "Cancel",
"UploadTitle": "file upload",
"UploadTips": "Drag file here or click to upload",
"Share": "Share",
"CopyShareURLSuccess": "Copy Share URL Success",
"ThemeConfig": "Theme",
"OnlineUsers": "Online Users",
"User": "User",
"VerifyCode": "Verify Code",
"LinkAddr": "Link",
"ExpiredTime": "Expired",
"SelectAction": "Select",
"CreateSuccess": "Success",
"CreateLink": "Create Share Link",
"CopyLink": "Copy Link Address and Code",
"NoLink": "No Link",
"ConfirmBtn": "Confirm",
"Settings": "Settings",
"Theme": "Theme",
"SelectTheme": "Select Theme",
"ThemeColors": "Theme Colors",
"ExceedTransferSize": "exceed max transfer size",
"WaitFileTransfer": "Wait file transfer to finish",
"EndFileTransfer": "File transfer end",
"ReadOnly": "Read-Only",
"Writable" : "Writable",
"ActionPerm": "Actions",
"Self": "Self",
"RemoveShareUser": "You have been removed from the shared session.",
"JoinShare": "Join Session",
"LeaveShare": "Leave Session",
"Remove": "Remove",
"RemoveShareUserConfirm": "Are you sure to remove the user from the shared session?",
"Minute": "Minute",
"Minutes": "Minutes",
"PauseSession" : "Pause Session",
"ResumeSession" : "Resume Session",
"SyncUserPreferenceSuccess": "Sync user preference success",
"SyncUserPreferenceFailed": "Sync user preference failed",
"Sync": "Sync",
"InputVerifyCode": "Input Verify Code"
}

52
apps/i18n/koko/ja.json Normal file
View File

@ -0,0 +1,52 @@
{
"ShareUser": "共有ユーザー",
"ShareUserHelpText": "ユーザーが選択されていません。つまり、すべての人が参加できます。",
"GetShareUser": "ユーザー名の入力",
"UploadSuccess": "アップロード成功",
"MustSelectOneFile": "ファイルを選択する必要があります",
"MustOneFile": "ファイルを1つだけ選択できます",
"DownloadSuccess": "ダウンロードに成功しました",
"Download": "ダウンロード",
"Upload": "アップロード",
"Cancel": "キャンセル",
"UploadTitle": "ファイルのアップロード",
"UploadTips": "ファイルをここにドラッグするか、アップロードをクリックします",
"Share": "シェア",
"CopyShareURLSuccess": "レプリケーション共有住所成功",
"ThemeConfig": "テーマ",
"OnlineUsers": "オンラインスタッフ",
"User": "ユーザー",
"VerifyCode": "認証コード",
"LinkAddr": "リンク先",
"ExpiredTime": "有効期限",
"SelectAction": "選択してください",
"CreateSuccess": "作成に成功しました",
"CreateLink": "シェアリンクの作成",
"CopyLink": "リンクと認証コードのコピー",
"NoLink": "住所なし",
"ConfirmBtn": "確定",
"Settings": "設定",
"Theme": "テーマ",
"SelectTheme": "テーマを選択してください",
"ThemeColors": "テーマカラー",
"ExceedTransferSize": "最大転送サイズを超えています",
"WaitFileTransfer": "ファイル転送終了待ち",
"EndFileTransfer": "ファイル転送終了",
"ReadOnly": "読み取り専用",
"Writable" : "書き込み可能",
"ActionPerm": "アクション権限",
"Self": "自分",
"RemoveShareUser": "あなたはすでに共有セッションから削除されました」という意味です",
"JoinShare": "共有セッションに参加",
"LeaveShare": "共有セッションから退出",
"Remove": "削除",
"RemoveShareUserConfirm": "共有セッションから削除してもよろしいですか?",
"Minute": "分間",
"Minutes": "分間",
"PauseSession" : "セッションを一時停止",
"ResumeSession" : "セッションを再開",
"SyncUserPreferenceSuccess": "ユーザー設定の同期に成功しました",
"SyncUserPreferenceFailed": "ユーザー設定の同期に失敗しました",
"Sync": "同期",
"InputVerifyCode": "認証コードを入力してください"
}

52
apps/i18n/koko/zh.json Normal file
View File

@ -0,0 +1,52 @@
{
"ShareUser": "分享用户",
"ShareUserHelpText": "未选择用户,即允许所有人加入",
"GetShareUser": "输入用户名",
"UploadSuccess": "上传成功",
"MustSelectOneFile": "必须选择一个文件",
"MustOneFile": "只能选择一个文件",
"DownloadSuccess": "下载成功",
"Download": "下载",
"Upload": "上传",
"Cancel": "取消",
"UploadTitle": "上传文件",
"UploadTips": "将文件拖到此处,或点击上传",
"Share": "分享",
"CopyShareURLSuccess": "复制分享地址成功",
"ThemeConfig": "主题",
"OnlineUsers": "在线人员",
"User": "用户",
"VerifyCode": "验证码",
"LinkAddr": "链接地址",
"ExpiredTime": "有效期限",
"SelectAction": "请选择",
"CreateSuccess": "创建成功",
"CreateLink": "创建分享链接",
"CopyLink": "复制链接及验证码",
"NoLink": "无地址",
"ConfirmBtn": "确定",
"Settings": "设置",
"Theme": "主题",
"SelectTheme": "请选择主题",
"ThemeColors": "主题颜色",
"ExceedTransferSize": "超过最大传输大小",
"WaitFileTransfer": "等待文件传输结束",
"EndFileTransfer": "文件传输结束",
"ReadOnly": "只读",
"Writable" : "读写",
"ActionPerm": "操作权限",
"Self": "我",
"RemoveShareUser": "你已经被移除共享会话",
"JoinShare": "加入共享",
"LeaveShare": "离开共享",
"Remove": "移除",
"RemoveShareUserConfirm": "确定要移除该用户吗?",
"Minute": "分钟",
"Minutes": "分钟",
"PauseSession" : "暂停此会话",
"ResumeSession" : "恢复此会话",
"SyncUserPreferenceSuccess": "同步设置成功",
"SyncUserPreferenceFailed": "同步设置失败",
"Sync": "同步",
"InputVerifyCode": "请输入验证码"
}

View File

@ -0,0 +1,52 @@
{
"ShareUser": "分享用戶",
"ShareUserHelpText": "未選擇用戶,即允許所有人加入",
"GetShareUser": "輸入使用者名稱",
"UploadSuccess": "上傳成功",
"MustSelectOneFile": "必須選擇一個文件",
"MustOneFile": "只能選擇一個文件",
"DownloadSuccess": "下載成功",
"Download": "下載",
"Upload": "上傳",
"Cancel": "取消",
"UploadTitle": "上傳文件",
"UploadTips": "將文件拖到此處,或點擊上傳",
"Share": "分享",
"CopyShareURLSuccess": "複製分享地址成功",
"ThemeConfig": "主題",
"OnlineUsers": "在線人員",
"User": "用戶",
"VerifyCode": "驗證碼",
"LinkAddr": "連結地址",
"ExpiredTime": "有效期限",
"SelectAction": "請選擇",
"CreateSuccess": "創建成功",
"CreateLink": "創建分享連結",
"CopyLink": "複製連結及驗證碼",
"NoLink": "無地址",
"ConfirmBtn": "確定",
"Settings": "設置",
"Theme": "主題",
"SelectTheme": "請選擇主題",
"ThemeColors": "主題顏色",
"ExceedTransferSize": "超過最大傳輸大小",
"WaitFileTransfer": "等待文件傳輸結束",
"EndFileTransfer": "文件傳輸結束",
"ReadOnly": "只讀",
"Writable": "讀寫",
"ActionPerm": "操作權限",
"Self": "我",
"RemoveShareUser": "你已經被移除共享會話",
"JoinShare": "加入共享",
"LeaveShare": "離開共享",
"Remove": "移除",
"RemoveShareUserConfirm": "確定要移除該用戶嗎?",
"Minute": "分鐘",
"Minutes": "分鐘",
"PauseSession": "暫停此會話",
"ResumeSession": "恢復此會話",
"SyncUserPreferenceSuccess": "同步設定成功",
"SyncUserPreferenceFailed": "同步設定失敗",
"Sync": "同步",
"InputVerifyCode": "請輸入驗證碼"
}

View File

@ -1,6 +1,6 @@
{
"ACLs": "ACLs",
"APIKey": "Api key",
"APIKey": "API key",
"AWS_China": "AWS(China)",
"AWS_Int": "AWS(International)",
"About": "About",
@ -42,7 +42,7 @@
"ActionCount": "Action count",
"PermAction": "Permission Action",
"ActionSetting": "Action setting",
"Actions": "Action",
"Actions": "Actions",
"ActionsTips": "The effects of each authority's agreement are different, click on the icon behind the authority to view",
"Activate": "Activate",
"ActivateSelected": "Activate selected",
@ -86,7 +86,7 @@
"Announcement": "Announcement",
"AnonymousAccount": "Anonymous account",
"AnonymousAccountTip": "Connect to assets without using username and password, only support web type and custom type assets",
"ApiKey": "Api key",
"ApiKey": "API key",
"ApiKeyList": "Authenticate via api key in the header of each request, which differs from one request to another, offering greater security than token method. please consult the documentation for usage.<br>to minimize the risk of leaks, the secret can only be viewed upon creation, and each user can create up to 10",
"ApiKeyWarning": "To reduce the risk of accesskey leakage, the secret is only provided at creation and cannot be queried later, please keep it safe.",
"AppEndpoint": "App access address",
@ -149,7 +149,7 @@
"AssetProtocolHelpText": "! The protocols supported by the assets are restricted by the platform. Click the settings button to view the protocol settings. If updates are required, please update the platform",
"AssetTree": "Asset tree",
"Assets": "Assets",
"AssetsAmount": "Asset amount",
"AssetsOfNumber": "Number of asset",
"AssetsTotal": "Total assets",
"AssignedInfo": "Approval information",
"Assignee": "Handler",
@ -158,6 +158,7 @@
"AttrValue": "Attribute value",
"Audits": "Audits",
"Auth": "Authentication",
"AuthConfig": "Authentication",
"AuthLimit": "Login restriction",
"AuthSAMLCertHelpText": "Save after uploading the certificate key, then view sp metadata",
"AuthSAMLKeyHelpText": "Sp certificates and keys are used for encrypted communication with idp",
@ -169,7 +170,7 @@
"AutoPush": "Auto push",
"Automations": "Automations",
"AverageTimeCost": "Average spend time",
"AwaitingMyApproval": "Approval pending",
"AwaitingMyApproval": "Assigned",
"Azure": "Azure (china)",
"Backup": "Backup",
"BackupAccountsHelpText": "Backup account information externally. it can be stored in an external system or sent via email, supporting segmented delivery.",
@ -207,7 +208,6 @@
"CACertificate": "Ca certificate",
"CAS": "CAS",
"CMPP2": "Cmpp v2.0",
"CTYunPrivate": "Tianyi private cloud",
"CalculationResults": "Error in cron expression",
"CanDragSelect": "Select time period by dragging mouse",
"Cancel": "Cancel",
@ -223,7 +223,7 @@
"ChangeOrganization": "Change organization",
"ChangePassword": "Change password",
"EditRecipient": "Edit recipient",
"ChangeSecretParams": "Change password parameters",
"ChangeSecretParams": "Change secret parameters",
"ChangeViewHelpText": "Click to switch different views",
"Chat": "Chat",
"ChatHello": "Hello! Can i help you?",
@ -251,12 +251,13 @@
"Closed": "Completed",
"CloudAccountCreate": "Create a cloud account",
"CloudAccountDetail": "Details of cloud account",
"CloudAccountList": "Cloud accounts",
"CloudAccountList": "Accounts",
"CloudAccountUpdate": "Update the cloud account",
"CloudCreate": "Create asset - cloud",
"CloudRegionTip": "The region was not obtained, please check the account",
"CloudSource": "Sync source",
"CloudSync": "Cloud provider",
"CloudSyncConfig": "Cloud sync settings",
"CloudUpdate": "Update the asset - cloud",
"Cluster": "Cluster",
"CollectionSucceed": "Collection successful",
@ -373,6 +374,7 @@
"DatePasswordLastUpdated": "Last password update date",
"DateStart": "Start date",
"DateSync": "Sync date",
"Datetime": "Datetime",
"DateUpdated": "Update date",
"Day": "Day",
"DeclassificationLogNum": "Password change logs",
@ -592,7 +594,7 @@
"IsActive": "Active",
"IsAlwaysUpdate": "Keeping assets up to date",
"IsAlwaysUpdateHelpTip": "Whether to synchronize and update asset information, including hostname, ip, platform, domain, node, etc. each time a synchronization task is performed",
"IsFinished": "Is it done",
"IsFinished": "Finished",
"IsLocked": "Suspend",
"IsSuccess": "Success",
"IsSyncAccountHelpText": "Upon collection completion, the collected account will be synced to asset",
@ -654,7 +656,7 @@
"LoginNum": "Total login logs",
"LoginPasswordSetting": "Login password",
"LoginRequiredMsg": "The account has logged out, please login again.",
"LoginSSHKeySetting": "Login SSH Key",
"LoginSSHKeySetting": "Login SSH key",
"LoginSucceeded": "Login successful",
"LoginTitleTip": "Note: it will be displayed on the enterprise edition user ssh login koko login page (e.g.: welcome to use jumpserver open source bastion)",
"LoginUserRanking": "Login user ranking",
@ -701,7 +703,7 @@
"MoveAssetToNode": "Move assets to nodes",
"MsgSubscribe": "Subscription",
"MyAssets": "My assets",
"MyTickets": "I initiated",
"MyTickets": "Submitted",
"Name": "Name",
"NavHelp": "Navigation",
"NeedReLogin": "Need to re-login",
@ -713,7 +715,7 @@
"NewFile": "Create new file",
"NewPassword": "New password",
"NewPublicKey": "New Public Key",
"NewSSHKey": "New SSH Key",
"NewSSHKey": "New SSH key",
"NewSyncCount": "New sync",
"Next": "Next",
"No": "No",
@ -725,7 +727,7 @@
"NoPermissionVew": "No permission to view the current page",
"NoUnreadMsg": "You have unread notifications",
"Node": "Node",
"NodeAmount": "Nodes",
"NodeOfNumber": "Number of node",
"NodeInformation": "Node information",
"NodeSearchStrategy": "Node search strategy",
"NormalLoad": "Normal",
@ -790,7 +792,7 @@
"PasskeyAddDisableInfo": "Your authentication source is {source}, and adding a passkey is not supported",
"Passphrase": "Key password",
"Password": "Password",
"PasswordAndSSHKey": "Password & SSH Key",
"PasswordAndSSHKey": "Password & SSH key",
"PasswordChangeLog": "Password change",
"PasswordExpired": "Password expired",
"PasswordPlaceholder": "Please enter password",
@ -828,6 +830,7 @@
"Port": "Port",
"Ports": "Port",
"Preferences": "Preferences",
"PrepareSyncTask": "Preparing to perform synchronization task...",
"Primary": "Primary",
"Priority": "Priority",
"PrivateCloud": "Private cloud",
@ -882,6 +885,8 @@
"RegularlyPerform": "Periodic execution",
"Reject": "Reject",
"Rejected": "Rejected",
"ReleaseAssets": "Release assets",
"ReleaseAssetsHelpTips": "Whether to automatically delete assets synchronized through this task and released on the cloud at the end of the task",
"ReleasedCount": "Released",
"RelevantApp": "Application",
"RelevantAsset": "Assets",
@ -967,10 +972,10 @@
"SMS": "Message",
"SMSProvider": "SMS service provider",
"SMTP": "Server",
"SSHKey": "SSH Key",
"SSHKey": "SSH key",
"SSHKeyOfProfileSSHUpdatePage": "You can reset and download the SSH public key by clicking the button below, or copy your SSH public key and submit it.",
"SSHPort": "SSH Port",
"SSHSecretKey": "SSH Key",
"SSHSecretKey": "SSH secret key",
"SafeCommand": "Secure command",
"SameAccount": "Same account",
"SameAccountTip": "Account with the same username as authorized users",
@ -1005,6 +1010,7 @@
"SelectLabelFilter": "Select tag for search",
"SelectPlatforms": "Select platform",
"SelectProperties": "Attributes",
"SelectProviderMsg": "Please select a cloud platform",
"SelectResource": "Select resources",
"SelectTemplate": "Select template",
"SelectValueOrCreateNew": "Select tag value or create new one",
@ -1068,6 +1074,7 @@
"Startswith": "Starts with...",
"State": "Status",
"StateClosed": "Is closed",
"StatePrivate": "State private",
"Status": "Status",
"StatusGreen": "Recently in good condition",
"StatusRed": "Last task execution failed",
@ -1096,6 +1103,7 @@
"SupportedProtocol": "Protocols",
"SupportedProtocolHelpText": "Set supported protocols for the asset, you can modify the custom configurations, such as sftp directory, rdp ad domain, etc., by clicking on the set button",
"Sync": "Sync",
"SyncAction": "Synchronized action",
"SyncDelete": "Sync deletion",
"SyncDeleteSelected": "Sync deletion selected",
"SyncErrorMsg": "Sync failed",
@ -1106,11 +1114,15 @@
"SyncInstanceTaskList": "Synchronization task",
"SyncInstanceTaskUpdate": "Update the sync task",
"SyncProtocolToAsset": "Sync protocols to assets",
"SyncManual": "Manual sync",
"SyncOnline": "Online sync",
"SyncRegion": "Sync region",
"SyncSelected": "Sync selected",
"SyncSetting": "Sync settings",
"SyncStrategy": "Sync policy",
"SyncSuccessMsg": "Sync succeeded",
"SyncTask": "Sync tasks",
"SyncTiming": "Timing sync",
"SyncUpdateAccountInfo": "Sync new secret to accounts",
"SyncUser": "Sync users",
"SyncedCount": "Synchronized",
@ -1179,6 +1191,9 @@
"TotalJobFailed": "Failed execution actions",
"TotalJobLog": "Total job executions",
"TotalJobRunning": "Running jobs",
"TotalSyncAsset": "Number of assets",
"TotalSyncRegion": "Number of regions",
"TotalSyncStrategy": "Number of strategies",
"Transfer": "Transfer",
"Tuesday": "Tue",
"TwoAssignee": "Subscribe to authorization id",
@ -1226,7 +1241,7 @@
"UseSSL": "Use ssl/tls",
"User": "User",
"UserAclLists": "Login ACLs",
"UserAssetActivity": "User/asset activity",
"UserAssetActivity": "User/Asset activity",
"UserCreate": "Create user",
"UserData": "User",
"UserDetail": "User details",
@ -1252,7 +1267,7 @@
"UsernamePlaceholder": "Please enter username",
"Users": "User",
"UsersAmount": "User",
"UsersAndUserGroups": "Users/user groups",
"UsersAndUserGroups": "Users/groups",
"UsersTotal": "Total accounts",
"Valid": "Valid",
"Variable": "Variable",

View File

@ -34,10 +34,10 @@
"AccountTemplateList": "アカウントテンプレートリスト",
"AccountTemplateUpdateSecretHelpText": "テンプレートによって作成されたアカウントをアカウントリストに表示します。秘密の文を更新すると、テンプレートで作成されたアカウントの秘密の文も更新されます。",
"Accounts": "アカウント",
"Action": "Action",
"Action": "動作",
"ActionCount": "Action数",
"ActionSetting": "Action設定",
"Actions": "Action",
"Actions": "操作",
"ActionsTips": "各権限の役割はプロトコルにより異なります、アイコンをクリックして確認してください",
"Activate": "有効化",
"ActivateSelected": "選択を有効化",
@ -152,6 +152,7 @@
"AttrValue": "プロパティ値",
"Audits": "監査台",
"Auth": "認証設定",
"AuthConfig": "資格認定構成",
"AuthLimit": "ログイン制限",
"AuthSAMLCertHelpText": "証明書キーをアップロードした後で保存し、SP Metadataを確認してください",
"AuthSAMLKeyHelpText": "SP 証明書とキーはIDPとの暗号化通信用です",
@ -261,6 +262,8 @@
"CloudRegionTip": "地域が取得できませんでした。アカウントを確認してください",
"CloudSource": "同期ソース",
"CloudSync": "クラウド同期",
"CloudSyncConfig": "クラウド同期構成",
"Clouds": "クラウド プラットフォーム",
"CloudUpdate": "資産の更新-クラウドプラットフォーム",
"Cluster": "クラスター",
"CollectionSucceed": "お気に入り登録成功",
@ -376,6 +379,7 @@
"DatePasswordLastUpdated": "最終パスワード更新日",
"DateStart": "開始日",
"DateSync": "同期日",
"Datetime": "日時",
"DateUpdated": "更新日",
"Day": "日",
"DeclassificationLogNum": "パスワード変更ログ数",
@ -591,7 +595,7 @@
"IsActive": "Activate",
"IsAlwaysUpdate": "最新の資産を保持",
"IsAlwaysUpdateHelpTip": "同期タスクを実行するたびに、資産情報ホスト名、ip、プラットフォーム、ドメイン、ードなどを同期更新するかどうか",
"IsFinished": "完了したか",
"IsFinished": "完了",
"IsLocked": "一時停止しますか",
"IsSuccess": "成功",
"IsSyncAccountHelpText": "収集が完了すると、収集したアカウントが資産に同期されます",
@ -725,6 +729,10 @@
"NoPermission": "権限なし",
"NoPermission403": "403 権限がありません",
"NoPermissionVew": "現在のページを表示する権限がありません",
"NoPublished": "未発表",
"NoResourceImport": "インポートできるリソースがありません",
"NoSQLProtocol": "非リレーショナルデータベース",
"NoSystemUserWasSelected": "選択されていないシステムユーザー",
"NoUnreadMsg": "未読メッセージなし",
"Node": "ノード",
"NodeAmount": "ノード数",
@ -830,6 +838,9 @@
"PolicyName": "ポリシー名称",
"Port": "ポート",
"Ports": "ポート",
"PrepareSyncTask": "同期タスクの実行準備中...",
"PrimaryProtocol": "主要協議は、資産にとって最も基本的で最も一般的に使用されるプロトコルであり、1つのみ設定でき、必ず設定する必要があります",
"PriorityHelpMessage": "1-100、1最低優先度、100最高優先度。複数のユーザーを許可する場合、優先度の高いシステムユーザーはデフォルトのログインユーザーになります",
"Preferences": "好みの設定",
"Primary": "主な",
"Priority": "優先順位",
@ -999,6 +1010,8 @@
"Select": "選択",
"SelectAdhoc": "コマンドの選択",
"SelectAll": "全選択",
"SelectCreateMethod": "作り方を選ぶ",
"SelectProviderMsg": "クラウドプラットフォームを選択してください",
"SelectAtLeastOneAssetOrNodeErrMsg": "アセットまたはノードは少なくとも一つ選択してください",
"SelectAttrs": "属性の選択",
"SelectByAttr": "プロパティフィルタ",
@ -1097,21 +1110,33 @@
"SuperAdmin": "スーパー管理者",
"SuperOrgAdmin": "スーパー管理者+組織管理",
"Support": "サポート",
"SupportedProtocol": "サポートされるプロトコル",
"SupportedProtocolHelpText": "資産がサポートするプロトコルを設定します。設定ボタンをクリックして、SFTPディレクトリ、RDP ADドメインなどのプロトコルのカスタム構成を変更します。",
"SwitchPage": "ビューを切り替える",
"SwitchToUser": "Suユーザー",
"SwitchToUserListTips": "次のユーザーからアセットに接続すると、現在のシステムユーザーログインを使用して切り替えます。",
"SymbolSet": "特殊記号集合",
"SymbolSetHelpText": "このタイプのデータベースでサポートされている特殊記号の集合を入力してください。生成されたランダムパスワードにこのようなデータベースでサポートされていない特殊文字があると、変更計画は失敗します",
"Sync": "同期する",
"SyncAction": "同期アクション",
"SyncDelete": "同期削除",
"SupportedProtocol": "サポートされているプロトコル",
"SupportedProtocolHelpText": "資産がサポートするプロトコルを設定します。設定ボタンをクリックして、プロトコルのカスタム設定を変更することができます。例えば、SFTPディレクトリやRDP ADドメインなど",
"Sync": "同期化",
"SyncDelete": "同時に削除",
"SyncDeleteSelected": "選択を同期削除",
"SyncErrorMsg": "同期失敗:",
"SyncInstanceTaskCreate": "同期タスクを作成",
"SyncInstanceTaskDetail": "同期タスクの詳細",
"SyncInstanceTaskHistoryAssetList": "インスタンスリストの同期",
"SyncInstanceTaskHistoryList": "履歴リストを同期する",
"SyncInstanceTaskHistoryList": "履歴リストの同期",
"SyncManual": "手動同期",
"SyncOnline": "オンライン同期",
"SyncRegion": "地域を同期",
"SyncSelected": "選択した同期",
"SyncInstanceTaskList": "同期タスクリスト",
"SyncInstanceTaskUpdate": "同期タスクの更新",
"SyncProtocolToAsset": "同期プロトコルを資産へ",
"SyncSelected": "選択したものを同期",
"SyncSetting": "同期設定",
"SyncTiming": "タイミング同期",
"SyncStrategy": "同期方針",
"SyncSuccessMsg": "同期成功",
"SyncTask": "同期化シスクリプト",
@ -1183,6 +1208,10 @@
"TotalJobFailed": "実行に失敗したジョブ数",
"TotalJobLog": "タスク実行総数",
"TotalJobRunning": "実行中のジョブ数",
"TotalSyncAsset": "同期資産数(個)",
"TotalSyncRegion": "同期地域数(個)",
"TotalSyncStrategy": "バインドポリシー数(個)",
"True": "はい",
"Transfer": "転送",
"Tuesday": "火曜日",
"TwoAssignee": "二次受理者",
@ -1304,4 +1333,4 @@
"ZoneHelpMessage": "エリアとはアセットの位置で、データセンターやパブリッククラウド、あるいはVPCが該当します。エリアにはゲートウェイを設定でき、ネットワークが直接接続できない場合、ゲートウェイを経由してアセットにログインすることができます",
"ZoneList": "地域リスト",
"ZoneUpdate": "更新エリア"
}
}

View File

@ -8,6 +8,7 @@
"AccessIP": "IP 白名单",
"SuEnabled": "启用开关",
"AccessKey": "访问密钥",
"AccessKeys": "访问密钥",
"AccountTemplateList": "账号模版列表",
"HistoryRecord": "历史记录",
"UserPasswordChangeLog": "用户密码修改日志",
@ -59,9 +60,8 @@
"Accounts": "账号",
"Action": "动作",
"ActionCount": "动作数量",
"PermAction": "授权动作",
"ActionSetting": "动作设置",
"Actions": "作",
"Actions": "作",
"ActionsTips": "各个权限作用协议不尽相同,点击权限后面的图标查看",
"Activate": "激活",
"Active": "激活中",
@ -173,12 +173,12 @@
"AttrValue": "属性值",
"Audits": "审计台",
"Auth": "认证设置",
"AuthConfig": "配置认证",
"AuthLimit": "登录限制",
"AuthSAMLCertHelpText": "上传证书密钥后保存, 然后查看 SP Metadata",
"AuthSAMLKeyHelpText": "SP 证书和密钥 是用来和 IDP 加密通信的",
"AuthSaml2UserAttrMapHelpText": "左侧的键为 SAML2 用户属性,右侧的值为认证平台用户属性",
"AuthSecurity": "认证安全",
"PasswordAndSSHKey": "认证设置",
"AuthSettings": "认证配置",
"AddInDetailText": "创建或更新成功后,添加详细信息",
"AuthUserAttrMapHelpText": "左侧的键为 JumpServer 用户属性,右侧的值为认证平台用户属性",
@ -271,6 +271,7 @@
"CloudRegionTip": "未获取到地域,请检查账号",
"CloudSource": "同步源",
"CloudSync": "云同步",
"CloudSyncConfig": "云同步配置",
"CloudUpdate": "更新资产-云平台",
"Cluster": "集群",
"CollectionSucceed": "收藏成功",
@ -302,6 +303,7 @@
"ConceptContent": "我想让你像一个 Python 解释器一样行事。我将给你 Python 代码,你将执行它。不要提供任何解释。除了代码的输出,不要用任何东西来回应。",
"ConceptTitle": "🤔 Python 解释器 ",
"Config": "配置",
"Configured": "已配置",
"Confirm": "确认",
"ConfirmPassword": "确认密码",
"ConnectAssets": "连接资产",
@ -345,8 +347,8 @@
"CriticalLoad": "严重",
"CronExpression": "crontab完整表达式",
"CrontabOfCreateUpdatePage": "例如:每周日 03:05 执行 <5 3 * * 0> <br/> 使用5位 Linux crontab 表达式 <分 时 日 月 星期> <a href=\"https://tool.lu/crontab/\" target=\"_blank\">在线工具</a> <br/> 如果同时设置了定期执行和周期执行,优先使用定期执行",
"CurrentConnections": "当前连接数",
"CurrentConnectionUsers": "当前会话用户数",
"CurrentConnections": "当前连接数",
"CurrentUserVerify": "验证当前用户",
"Custom": "自定义",
"CustomCol": "自定义列表字段",
@ -384,6 +386,7 @@
"DatePasswordLastUpdated": "最后更新密码日期",
"DateStart": "开始日期",
"DateSync": "同步日期",
"Datetime": "日期时间",
"DateUpdated": "更新日期",
"Day": "日",
"DeclassificationLogNum": "改密日志数",
@ -408,6 +411,7 @@
"DeviceUpdate": "更新资产-网络设备",
"Digit": "数字",
"DingTalk": "钉钉",
"DingTalkOAuth": "钉钉认证",
"DingTalkTest": "测试",
"Disable": "禁用",
"DisplayName": "名称",
@ -476,6 +480,7 @@
"FaviconTip": "提示:网站图标(建议图片大小为: 16px*16px",
"Features": "功能设置",
"FeiShu": "飞书",
"FeiShuOAuth": "飞书认证",
"FeiShuTest": "测试",
"FieldRequiredError": "此字段是必填项",
"FileExplorer": "文件浏览",
@ -512,6 +517,7 @@
"Generate": "生成",
"GenerateAccounts": "重新生成账号",
"GenerateSuccessMsg": "账号生成成功",
"GenericSetting": "通用配置",
"GoHomePage": "去往首页",
"Goto": "转到",
"GrantedAssets": "授权的资产",
@ -564,6 +570,7 @@
"Inactive": "禁用",
"Index": "索引",
"Info": "信息",
"InformationModification": "信息更改",
"InheritPlatformConfig": "继承自平台配置,如需更改,请更改平台中的配置。",
"InitialDeploy": "初始化部署",
"Input": "输入",
@ -585,7 +592,7 @@
"IpGroupHelpText": "* 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64",
"IsActive": "激活",
"IsAlwaysUpdate": "资产保持最新",
"IsFinished": "是否完成",
"IsFinished": "完成",
"IsLocked": "是否暂停",
"IsSuccess": "成功",
"IsSyncAccountHelpText": "收集完成后会把收集的账号同步到资产",
@ -609,6 +616,7 @@
"TagList": "标签列表",
"TagUpdate": "更新标签",
"Language": "语言",
"LarkOAuth": "Lark 认证",
"Last30": "最近 30 次",
"Last30Days": "近30天",
"Last7Days": "近7天",
@ -630,7 +638,6 @@
"LockedIP": "已锁定 IP {count} 个",
"Log": "日志",
"LogData": "日志数据",
"LoginLogTotal": "登录成功日志数",
"Logging": "日志记录",
"LoginAssetConfirm": "资产登录复核",
"LoginAssetToday": "今日活跃资产数",
@ -642,9 +649,11 @@
"LoginFrom": "登录来源",
"LoginImageTip": "提示:将会显示在企业版用户登录页面(建议图片大小为: 492*472px",
"LoginLog": "登录日志",
"LoginLogTotal": "登录成功日志数",
"LoginNum": "登录数",
"LoginPasswordSetting": "登录密码",
"LoginRequiredMsg": "账号已退出,请重新登录",
"LoginSSHKeySetting": "登录 SSH 公钥",
"LoginSucceeded": "登录成功",
"LoginTitleTip": "提示:将会显示在企业版用户 SSH 登录 KoKo 登录页面eg: 欢迎使用JumpServer开源堡垒机)",
"LoginUserRanking": "登录账号排名",
@ -678,7 +687,6 @@
"MenuPermissions": "授权管理",
"MenuUsers": "用户管理",
"Message": "消息",
"NotificationConfiguration": "通知设置",
"MessageType": "消息类型",
"MfaLevel": "多因子认证",
"Min": "分钟",
@ -703,6 +711,8 @@
"NewDirectory": "新建目录",
"NewFile": "新建文件",
"NewPassword": "新密码",
"NewPublicKey": "新 SSH 公钥",
"NewSSHKey": "SSH 公钥",
"NewSyncCount": "新同步",
"Next": "下一步",
"No": "否",
@ -712,6 +722,7 @@
"NoPermission": "暂无权限",
"NoPermission403": "403 暂无权限",
"NoPermissionVew": "没有权限查看当前页面",
"NoResourceImport": "没有资源可导入",
"NoUnreadMsg": "暂无未读消息",
"Node": "节点",
"NodeAmount": "节点数量",
@ -722,6 +733,7 @@
"NotSet": "未设置",
"NotSpecialEmoji": "不允许输入特殊表情符号",
"Nothing": "无",
"NotificationConfiguration": "通知设置",
"Notifications": "通知设置",
"Now": "现在",
"Number": "编号",
@ -736,7 +748,6 @@
"OfflineUpload": "离线上传",
"OldPassword": "原密码",
"OldPublicKey": "旧 SSH 公钥",
"NewPublicKey": "新 SSH 公钥",
"OneAssignee": "一级受理人",
"OneAssigneeType": "一级受理人类型",
"OneClickReadMsg": "你确定全部标记为已读吗?",
@ -776,6 +787,7 @@
"PasskeyAddDisableInfo": "你的认证来源是 {source}, 不支持添加 Passkey",
"Passphrase": "密钥密码",
"Password": "密码",
"PasswordAndSSHKey": "认证设置",
"PasswordChangeLog": "改密日志",
"PasswordExpired": "密码过期了",
"PasswordPlaceholder": "请输入密码",
@ -790,11 +802,13 @@
"PauseTaskSendSuccessMsg": "暂停任务已下发,请稍后刷新查看",
"Pending": "待处理",
"PermAccount": "授权账号",
"PermAction": "授权动作",
"PermUserList": "授权用户",
"PermissionCompany": "授权公司",
"PermissionName": "授权规则名称",
"Permissions": "权限",
"PersonalInformationImprovement": "个人信息完善",
"PersonalSettings": "个人设置",
"Plan": "计划",
"Platform": "平台",
"PlatformCreate": "创建平台",
@ -810,6 +824,8 @@
"PolicyName": "策略名称",
"Port": "端口",
"Ports": "端口",
"Preferences": "偏好设置",
"PrepareSyncTask": "准备执行同步任务中...",
"Priority": "优先级",
"PrivateCloud": "私有云",
"PrivateKey": "私钥",
@ -818,6 +834,7 @@
"PrivilegedOnly": "仅特权账号",
"PrivilegedTemplate": "特权的",
"Product": "产品",
"Profile": "个人信息",
"ProfileSetting": "个人信息设置",
"Project": "项目名",
"Prompt": "提示词",
@ -863,6 +880,8 @@
"RegularlyPerform": "定期执行",
"Reject": "拒绝",
"Rejected": "已拒绝",
"ReleaseAssets": "同步释放资产",
"ReleaseAssetsHelpTips": "是否在任务结束时,自动删除通过此任务同步下来且已经在云上释放的资产",
"ReleasedCount": "已释放",
"RelevantApp": "应用",
"RelevantAsset": "资产",
@ -948,7 +967,6 @@
"SMTP": "邮件服务器",
"SSHKey": "SSH公钥",
"SSHKeyOfProfileSSHUpdatePage": "你可以点击下面的按钮重置并下载 SSH 公钥,或者复制你的 SSH 公钥并提交。",
"LoginSSHKeySetting": "登录 SSH 公钥",
"SSHPort": "SSH 端口",
"SSHSecretKey": "SSH 密钥",
"SafeCommand": "安全命令",
@ -984,6 +1002,7 @@
"SelectTagFilter": "选择标签搜索",
"SelectPlatforms": "选择平台",
"SelectProperties": "选择属性",
"SelectProviderMsg": "请选择一个云平台",
"SelectResource": "选择资源",
"SelectTemplate": "选择模版",
"SelectValueOrCreateNew": "选择标签值或创建新的",
@ -1014,15 +1033,11 @@
"SessionsAudit": "会话审计",
"SessionsNum": "会话数",
"Set": "已设置",
"DingTalkOAuth": "钉钉认证",
"SetFailed": "设置失败",
"FeiShuOAuth": "飞书认证",
"LarkOAuth": "Lark 认证",
"SetMFA": "MFA 认证",
"SlackOAuth": "Slack 认证",
"Configured": "已配置",
"SetSuccess": "设置成功",
"SetToDefault": "设为默认",
"SetToDefaultStorage": "设置为默认存储",
"WeComOAuth": "企业微信认证",
"Setting": "设置",
"SettingInEndpointHelpText": "在 系统设置 / 组件设置 / 服务端点 中配置服务地址和端口",
@ -1037,6 +1052,7 @@
"Skip": "忽略当前资产",
"Skipped": "已跳过",
"Slack": "Slack",
"SlackOAuth": "Slack 认证",
"Source": "来源",
"SourceIP": "源地址",
"SourcePort": "源端口",
@ -1090,6 +1106,7 @@
"SupportedProtocol": "支持的协议",
"SupportedProtocolHelpText": "设置资产支持的协议,点击设置按钮可以为协议修改自定义配置,如 SFTP 目录RDP AD 域等",
"Sync": "同步",
"SyncAction": "同步动作",
"SyncDelete": "同步删除",
"SyncDeleteSelected": "同步删除所选",
"SyncErrorMsg": "同步失败: ",
@ -1099,11 +1116,15 @@
"SyncInstanceTaskHistoryList": "同步历史列表",
"SyncInstanceTaskList": "同步任务列表",
"SyncInstanceTaskUpdate": "更新同步任务",
"SyncManual": "手动同步",
"SyncOnline": "在线同步",
"SyncRegion": "正在同步地域",
"SyncSelected": "同步所选",
"SyncSetting": "同步设置",
"SyncStrategy": "同步策略",
"SyncSuccessMsg": "同步成功",
"SyncTask": "同步任务",
"SyncTiming": "定时同步",
"SyncUpdateAccountInfo": "同步更新账号信息",
"SyncUser": "同步用户",
"SyncedCount": "已同步",
@ -1168,6 +1189,9 @@
"TotalJobFailed": "执行失败作业数",
"TotalJobLog": "作业执行总数",
"TotalJobRunning": "运行中作业数",
"TotalSyncAsset": "同步资产数(个)",
"TotalSyncRegion": "同步地域数(个)",
"TotalSyncStrategy": "绑定策略数(个)",
"Transfer": "传输",
"Tuesday": "周二",
"TwoAssignee": "二级受理人",
@ -1198,7 +1222,6 @@
"UpdateNodeAssetHardwareInfo": "更新节点资产硬件信息",
"UpdatePlatformHelpText": "只有资产的原平台类型与所选平台类型相同时才会进行更新,若更新前后的平台类型不同则不会更新。",
"UpdateSSHKey": "更新SSH公钥",
"NewSSHKey": "SSH 公钥",
"UpdateSelected": "更新所选",
"UpdateSuccessMsg": "更新成功",
"Updated": "已更新",
@ -1233,9 +1256,7 @@
"UserLoginAclUpdate": "更新用户登录控制",
"UserLoginLimit": "用户登录限制",
"UserLoginTrend": "账号登录趋势",
"PersonalSettings": "个人设置",
"UserSession": "用户会话",
"Preferences": "偏好设置",
"UserUpdate": "更新用户",
"Username": "用户名",
"UsernamePlaceholder": "请输入用户名",
@ -1263,6 +1284,7 @@
"Volcengine": "火山引擎",
"Warning": "警告",
"WeCom": "企业微信",
"WeComOAuth": "企业微信认证",
"WeComTest": "测试",
"WebCreate": "创建资产-Web",
"WebHelpMessage": "Web 类型资产依赖于远程应用,请前往系统设置在远程应用中配置",
@ -1279,6 +1301,7 @@
"Workbench": "工作台",
"Workspace": "工作空间",
"Yes": "是",
"YourProfile": "个人信息",
"ZStack": "ZStack",
"Zone": "区域",
"ZoneCreate": "创建区域",
@ -1286,8 +1309,6 @@
"ZoneHelpMessage": "区域是资产所在的位置,可以是机房,公有云 或者 VPC。区域中可以设置网关当网络不能直达的时候可以使用网关跳转登录到资产",
"ZoneList": "区域列表",
"ZoneUpdate": "更新区域",
"YourProfile": "个人信息",
"InformationModification": "信息更改",
"Phone": "手机",
"TailLog": "追踪日志",
"NoLog": "无日志",

View File

@ -43,7 +43,7 @@
"Action": "動作",
"ActionCount": "動作數量",
"ActionSetting": "動作設置",
"Actions": "權限",
"Actions": "操作",
"Activate": "啟用",
"Active": "活躍",
"ActiveAsset": "近期被登入過",
@ -190,6 +190,7 @@
"Auditor": "審計員",
"Audits": "審計台",
"Auth": "認證設置",
"AuthConfig": "配寘認證資訊",
"AuthLimit": "登入限制",
"AuthMethod": "認證方式",
"AuthSecurity": "認證安全",
@ -301,6 +302,7 @@
"CloudPlatform": "雲平台",
"CloudSource": "同步源",
"CloudSync": "雲同步",
"CloudSyncConfig": "雲同步配寘",
"CloudUpdate": "更新資產-雲平台",
"Clouds": "雲平台",
"Cluster": "集群",
@ -442,6 +444,7 @@
"DatePasswordUpdated": "密碼更新日期",
"DateStart": "開始日期",
"DateSync": "同步日期",
"Datetime": "日期時間",
"DateUpdated": "更新日期",
"DeactiveSelected": "禁用所選",
"DeclassificationLogNum": "改密日誌數",
@ -729,7 +732,6 @@
"LockedIP": "已鎖定 IP {count} 個",
"Log": "日誌",
"LogData": "日誌數據",
"LoginLogTotal": "登入成功日誌數",
"Logging": "日誌記錄",
"Login": "用戶登入",
"LoginAssetConfirm": "資產登入覆核",
@ -744,6 +746,7 @@
"LoginIP": "登入IP",
"LoginImageTip": "提示:將會顯示在企業版使用者登入頁面(建議圖片大小為: 492*472px",
"LoginLog": "登入日誌",
"LoginLogTotal": "登入成功日誌數",
"LoginModeHelpMessage": "如果選擇手動登入模式,使用者名稱和密碼可以不填寫",
"LoginModel": "登入模式",
"LoginNum": "登入數",
@ -832,6 +835,7 @@
"NoPermission403": "403 暫無權限",
"NoPermissionVew": "沒有權限查看當前頁面",
"NoPublished": "未發布",
"NoResourceImport": "沒有資源可導入",
"NoSQLProtocol": "非關係資料庫",
"NoSystemUserWasSelected": "未選擇系統用戶",
"NoUnreadMsg": "暫無未讀消息",
@ -963,6 +967,7 @@
"PleaseSelect": "請選擇",
"PolicyName": "策略名稱",
"Ports": "埠",
"PrepareSyncTask": "準備執行同步任務中...",
"Primary": "主要",
"PrimaryProtocol": "主要協議, 資產最基本最常用的協議,只能且必須設置一個",
"PriorityHelpMessage": "1-100, 1最低優先度100最高優先度。授權多個用戶時高優先度的系統用戶將會作為默認登入用戶",
@ -1037,6 +1042,8 @@
"RelNot": "非",
"RelOr": "或",
"Relation": "關係",
"ReleaseAssets": "同步釋放資產",
"ReleaseAssetsHelpTips": "是否在任務結束時,自動删除通過此任務同步下來且已經在雲上釋放的資產",
"ReleasedCount": "已釋放",
"RelevantApp": "應用",
"RelevantAsset": "資產",
@ -1166,6 +1173,7 @@
"SelectLabelFilter": "選擇標籤搜索",
"SelectPlatforms": "選擇平台",
"SelectProperties": "選擇屬性",
"SelectProviderMsg": "請選擇一個雲平臺",
"SelectResource": "選擇資源",
"SelectTemplate": "選擇模板",
"SelectValueOrCreateNew": "選擇標籤值或創建新的",
@ -1267,6 +1275,7 @@
"SymbolSet": "特殊符號集合",
"SymbolSetHelpText": "請輸入此類型資料庫支持的特殊符號集合,若生成的隨機密碼中有此類資料庫不支持的特殊字元,改密計劃將會失敗",
"Sync": "同步",
"SyncAction": "同步動作",
"SyncDelete": "同步刪除",
"SyncInstanceTaskCreate": "創建同步任務",
"SyncInstanceTaskDetail": "同步任務詳情",
@ -1274,12 +1283,16 @@
"SyncInstanceTaskHistoryList": "同步歷史列表",
"SyncInstanceTaskList": "同步任務列表",
"SyncInstanceTaskUpdate": "更新同步任務",
"SyncManual": "手動同步",
"SyncOnline": "線上同步",
"SyncProtocolToAsset": "同步協議到資產",
"SyncRegion": "正在同步地域",
"SyncSelected": "同步所選",
"SyncSetting": "同步設定",
"SyncStrategy": "同步策略",
"SyncSuccessMsg": "同步成功",
"SyncTask": "同步任務",
"SyncTiming": "定時同步",
"SyncUpdateAccountInfo": "同步更新帳號資訊",
"SyncUser": "同步用戶",
"SyncedCount": "已同步",
@ -1365,6 +1378,9 @@
"TotalJobFailed": "執行失敗作業數",
"TotalJobLog": "作業執行總數",
"TotalJobRunning": "運行中作業數",
"TotalSyncAsset": "同步資產數(個)",
"TotalSyncRegion": "同步地域數(個)",
"TotalSyncStrategy": "綁定策略數(個)",
"Transfer": "傳輸",
"True": "是",
"Tuesday": "週二",
@ -1700,7 +1716,7 @@
"ip_group": "IP 組",
"ips": "請輸入逗號分割的IP位址組",
"isEffective": "已生效的",
"isFinished": "是否完成",
"IsFinished": "完成",
"isSuccess": "成功",
"isValid": "有效",
"is_locked": "是否暫停",

View File

@ -3,6 +3,7 @@ from channels.db import database_sync_to_async
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
from django.core.handlers.asgi import ASGIRequest
from django.conf import settings
from authentication.backends.drf import (
SignatureAuthentication,
@ -20,6 +21,10 @@ urlpatterns = ops_urlpatterns + \
setting_urlpatterns + \
terminal_urlpatterns
if settings.XPACK_ENABLED:
from xpack.plugins.cloud.urls.ws_urls import urlpatterns as xcloud_urlpatterns
urlpatterns += xcloud_urlpatterns
@database_sync_to_async
def get_signature_user(scope):

View File

@ -165,8 +165,8 @@ CELERY_RESULT_SERIALIZER = 'pickle'
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
CELERY_ACCEPT_CONTENT = ['json', 'pickle']
CELERY_RESULT_EXPIRES = 600
CELERY_WORKER_TASK_LOG_FORMAT = '%(message)s'
CELERY_WORKER_LOG_FORMAT = '%(message)s'
CELERY_WORKER_TASK_LOG_FORMAT = '%(asctime).19s %(message)s'
CELERY_WORKER_LOG_FORMAT = '%(asctime).19s %(message)s'
CELERY_TASK_EAGER_PROPAGATES = True
CELERY_WORKER_REDIRECT_STDOUTS = True
CELERY_WORKER_REDIRECT_STDOUTS_LEVEL = "INFO"

View File

@ -39,7 +39,7 @@ class AssetPermissionSerializer(ResourceLabelsMixin, BulkOrgResourceModelSeriali
user_groups_amount = serializers.IntegerField(read_only=True, label=_("Groups amount"))
assets_amount = serializers.IntegerField(read_only=True, label=_("Assets amount"))
nodes_amount = serializers.IntegerField(read_only=True, label=_("Nodes amount"))
actions = ActionChoicesField(required=False, allow_null=True, label=_("Actions"))
actions = ActionChoicesField(required=False, allow_null=True, label=_("Action"))
is_valid = serializers.BooleanField(read_only=True, label=_("Is valid"))
is_expired = serializers.BooleanField(read_only=True, label=_("Is expired"))
accounts = serializers.ListField(label=_("Accounts"), required=False)
@ -61,7 +61,7 @@ class AssetPermissionSerializer(ResourceLabelsMixin, BulkOrgResourceModelSeriali
fields = fields_mini + fields_m2m + fields_generic
read_only_fields = ["created_by", "date_created", "from_ticket"]
extra_kwargs = {
"actions": {"label": _("Actions")},
"actions": {"label": _("Action")},
"is_expired": {"label": _("Is expired")},
"is_valid": {"label": _("Is valid")},
}

View File

@ -68,7 +68,7 @@ class NativeClient(TextChoices):
@classmethod
def xpack_methods(cls):
return [cls.mstsc]
return [cls.mstsc, cls.db_client]
@classmethod
def get_methods(cls, os='windows'):
@ -151,6 +151,7 @@ class ConnectMethodUtil:
Protocol.mysql, Protocol.mariadb,
Protocol.sqlserver, Protocol.postgresql,
Protocol.oracle
],
# 限制客户端的协议,比如 koko 虽然也支持 数据库的 ssh 连接,但是不再这里拉起
# Listen协议: [Asset协议]

View File

@ -16,7 +16,7 @@ class SimpleSessionCommandSerializer(serializers.ModelSerializer):
user = serializers.CharField(label=_("User")) # 限制 64 字符,见 validate_user
asset = serializers.CharField(max_length=128, label=_("Asset"))
input = serializers.CharField(label=_("Command"))
session = serializers.CharField(max_length=36, label=_("Session ID"))
session = serializers.CharField(max_length=36, label=_("Session"))
risk_level = LabeledChoiceField(
choices=RiskLevelChoices.choices,
required=False, label=_("Risk level"),