From d50ea83f405d2eff5a04d3c1a101a444418d4631 Mon Sep 17 00:00:00 2001 From: wojiushixiaobai <296015668@qq.com> Date: Wed, 13 May 2020 15:21:04 +0800 Subject: [PATCH 01/22] =?UTF-8?q?[Fix]=E4=BF=AE=E6=94=B9=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 052952256..388186ddf 100644 --- a/README.md +++ b/README.md @@ -174,20 +174,19 @@ JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向 ## 安装及使用指南 -- [Docker 快速安装文档](http://docs.jumpserver.org/zh/docs/dockerinstall.html) -- [Step by Step 安装文档](http://docs.jumpserver.org/zh/docs/step_by_step.html) +- [快速安装文档](https://docs.jumpserver.org/zh/master/install/setup_by_fast/) +- [快速入门文档](https://docs.jumpserver.org/zh/master/admin-guide/quick_start/) - [完整文档](http://docs.jumpserver.org) -## 演示视频和截屏 +## 演示视频 我们提供了演示视频和系统截图可以让你快速了解 JumpServer: - [演示视频](https://jumpserver.oss-cn-hangzhou.aliyuncs.com/jms-media/%E3%80%90%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91%E3%80%91Jumpserver%20%E5%A0%A1%E5%9E%92%E6%9C%BA%20V1.5.0%20%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91%20-%20final.mp4) -- [系统截图](http://docs.JumpServer.org/zh/docs/snapshot.html) ## License & Copyright -Copyright (c) 2014-2019 飞致云 FIT2CLOUD, All rights reserved. +Copyright (c) 2014-2020 飞致云 FIT2CLOUD, All rights reserved. Licensed under The GNU General Public License version 2 (GPLv2) (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at From 4658a4c90f948c7750ac4701936a5ca80511bcd9 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 14 May 2020 11:00:24 +0800 Subject: [PATCH 02/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E5=90=91?= =?UTF-8?q?=E5=AF=BC=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 90002 -> 89992 bytes apps/locale/zh/LC_MESSAGES/django.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 72d6cdb438c46b07dbdd455422190ad8acaefa63..acc82a3552390f50429dc0e117e050835b453ab8 100644 GIT binary patch delta 350 zcmXZWy-Gp>6u|Lw2nA6n5+iWYKpHCS0g@mbqFf{cHBAUEIVi*hTODk0b`pvxdV!_{ zxn)x!^c2Aje1nFD{)c;~ALsjwW|846^6VY=vm$a^RjK1EKH+*zY{smxKYdv)Tt*N&U6u|Lw5-&u8kLqQQV7ItxR@U!~@LDUcg!5vzf8e9r08hio4 z;ev{{Ng>*N2R|U_75X3Uoqn9}^AslAVX`~C@OMPyt*TPT33f1FQ<>lxTlid8Imcf- z!GnfM0&j5}?{E*>xPf1Bej3MrX#Fcql@vPYV5X_QY^g|=#3_mWmP!S0&<4h6kA34R z7A_-;XorqsU9`m>rtu12@d0ga(~Igkw0IY7|Djim3dbbuqqDfNj2Yqv+QMtJgZ|^v h4VJEs)?V&Qx}IJHz1c@Nd+*PCgZbby7*_Si`3Dh6JM;hm diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index db84b6b14..5ad5d3edc 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -5598,7 +5598,7 @@ msgstr "上一步" #: users/templates/users/first_login_done.html:31 msgid "Welcome to use jumpserver, visit " -msgstr "欢迎使用JumpServer开源跳板机系统" +msgstr "欢迎使用 JumpServer 堡垒机" #: users/templates/users/first_login_done.html:32 msgid "Use guide" From d878089ebd7648fa307ef0486566009c93451c85 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 14 May 2020 14:26:00 +0800 Subject: [PATCH 03/22] =?UTF-8?q?[Update]=20=E7=94=A8=E6=88=B7=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E8=AF=A6=E6=83=85Modal=E6=B7=BB=E5=8A=A0comment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/templates/assets/user_asset_list.html | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/assets/templates/assets/user_asset_list.html b/apps/assets/templates/assets/user_asset_list.html index fa2c9830c..3c5cdc4a1 100644 --- a/apps/assets/templates/assets/user_asset_list.html +++ b/apps/assets/templates/assets/user_asset_list.html @@ -78,6 +78,7 @@ $(document).ready(function () { 'platform': "{% trans 'Platform' %}", 'system_users_join': "{% trans 'System user' %}", 'domain': "{% trans 'Domain' %}", + 'comment': "{% trans 'Comment' %}", }; var value; for (var i = 0; i < data.results.length; i++) { From e951b64b0a268928d8cca82003e56769bf2a1ef1 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 14 May 2020 16:14:17 +0800 Subject: [PATCH 04/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B71.5.9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/jumpserver/const.py b/apps/jumpserver/const.py index 2a97a00d2..b7caa6114 100644 --- a/apps/jumpserver/const.py +++ b/apps/jumpserver/const.py @@ -7,6 +7,6 @@ __all__ = ['BASE_DIR', 'PROJECT_DIR', 'VERSION', 'CONFIG', 'DYNAMIC'] BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) PROJECT_DIR = os.path.dirname(BASE_DIR) -VERSION = '1.5.8' +VERSION = '1.5.9' CONFIG = ConfigManager.load_user_config() DYNAMIC = ConfigManager.get_dynamic_config(CONFIG) From 5ae6e81a1d770638ed69267553afc358af2a5b46 Mon Sep 17 00:00:00 2001 From: maninhill <41712985+maninhill@users.noreply.github.com> Date: Sun, 17 May 2020 00:02:35 +0800 Subject: [PATCH 05/22] Update README.md --- README.md | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 388186ddf..43803762c 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,28 @@ # JumpServer 多云环境下更好用的堡垒机 [![Python3](https://img.shields.io/badge/python-3.6-green.svg?style=plastic)](https://www.python.org/) -[![Django](https://img.shields.io/badge/django-2.1-brightgreen.svg?style=plastic)](https://www.djangoproject.com/) -[![Ansible](https://img.shields.io/badge/ansible-2.4.2.0-blue.svg?style=plastic)](https://www.ansible.com/) -[![Paramiko](https://img.shields.io/badge/paramiko-2.4.1-green.svg?style=plastic)](http://www.paramiko.org/) +[![Django](https://img.shields.io/badge/django-2.2-brightgreen.svg?style=plastic)](https://www.djangoproject.com/) -JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 机制的运维安全审计系统。 +JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 规范的运维安全审计系统。 -JumpServer 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。 +JumpServer 使用 Python / Django 为主进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。 JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。 改变世界,从一点点开始。 -注: [KubeOperator](https://github.com/KubeOperator/KubeOperator) 是 JumpServer 团队在 Kubernetes 领域的的又一全新力作,欢迎关注和使用。 +> 注: [KubeOperator](https://github.com/KubeOperator/KubeOperator) 是 JumpServer 团队在 Kubernetes 领域的的又一全新力作,欢迎关注和使用。 -## 核心功能列表 +## 特色优势 + +- 开源: 零门槛,线上快速获取和安装; +- 分布式: 轻松支持大规模并发访问; +- 无插件: 仅需浏览器,极致的 Web Terminal 使用体验; +- 多云支持: 一套系统,同时管理不同云上面的资产; +- 云端存储: 审计录像云端存储,永不丢失; +- 多租户: 一套系统,多个子公司和部门同时使用。 + +## 功能列表 @@ -172,17 +179,22 @@ JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向
-## 安装及使用指南 - -- [快速安装文档](https://docs.jumpserver.org/zh/master/install/setup_by_fast/) -- [快速入门文档](https://docs.jumpserver.org/zh/master/admin-guide/quick_start/) -- [完整文档](http://docs.jumpserver.org) +## 快速开始 -## 演示视频 +- [极速安装](https://docs.jumpserver.org/zh/master/install/setup_by_fast/) +- [完整文档](https://docs.jumpserver.org) +- [演示视频](https://jumpserver.oss-cn-hangzhou.aliyuncs.com/jms-media/%E3%80%90%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91%E3%80%91Jumpserver%20%E5%A0%A1%E5%9E%92%E6%9C%BA%20V1.5.0%20%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91%20-%20final.mp4) -我们提供了演示视频和系统截图可以让你快速了解 JumpServer: +## 案例研究 -- [演示视频](https://jumpserver.oss-cn-hangzhou.aliyuncs.com/jms-media/%E3%80%90%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91%E3%80%91Jumpserver%20%E5%A0%A1%E5%9E%92%E6%9C%BA%20V1.5.0%20%E6%BC%94%E7%A4%BA%E8%A7%86%E9%A2%91%20-%20final.mp4) +- [JumpServer 堡垒机护航顺丰科技超大规模资产安全运维](https://blog.fit2cloud.com/?p=1147); +- [JumpServer 堡垒机让“大智慧”的混合 IT 运维更智慧](https://blog.fit2cloud.com/?p=882); +- [携程 JumpServer 堡垒机部署与运营实战](https://blog.fit2cloud.com/?p=851); +- [小红书的JumpServer堡垒机大规模资产跨版本迁移之路](https://blog.fit2cloud.com/?p=516); +- [JumpServer堡垒机助力中手游提升多云环境下安全运维能力](https://blog.fit2cloud.com/?p=732); +- [中通快递:JumpServer主机安全运维实践](https://blog.fit2cloud.com/?p=708); +- [东方明珠:JumpServer高效管控异构化、分布式云端资产](https://blog.fit2cloud.com/?p=687); +- [江苏农信:JumpServer堡垒机助力行业云安全运维](https://blog.fit2cloud.com/?p=666)。 ## License & Copyright From 2f7b1694054fb60cccb85523685ab38a5480432d Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 18 May 2020 15:24:55 +0800 Subject: [PATCH 06/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E7=94=A8=E6=88=B7/=E7=94=A8=E6=88=B7=E7=BB=84?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=88=A0=E9=99=A4=E7=94=A8=E6=88=B7=E7=BB=84?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/templates/perms/asset_permission_user.html | 2 +- apps/perms/templates/perms/database_app_permission_user.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/perms/templates/perms/asset_permission_user.html b/apps/perms/templates/perms/asset_permission_user.html index bb9ca375a..088d80c75 100644 --- a/apps/perms/templates/perms/asset_permission_user.html +++ b/apps/perms/templates/perms/asset_permission_user.html @@ -218,7 +218,7 @@ function addGroups(groupsId) { } function removeGroup(groupId) { - var theUrl = "{% url 'api-perms:asset-permissions-user-groups-relation-list' %}?assetpermission={{ object.id }}"; + var theUrl = "{% url 'api-perms:asset-permissions-user-groups-relation-list' %}?assetpermission={{ object.id }}&usergroup=groupId"; theUrl = theUrl.replace("groupId", groupId); var success = function(data) { location.reload(); diff --git a/apps/perms/templates/perms/database_app_permission_user.html b/apps/perms/templates/perms/database_app_permission_user.html index 603f60a6e..8b109fa1a 100644 --- a/apps/perms/templates/perms/database_app_permission_user.html +++ b/apps/perms/templates/perms/database_app_permission_user.html @@ -218,7 +218,7 @@ function addGroups(groupsId) { } function removeGroup(groupId) { - var theUrl = "{% url 'api-perms:database-app-permissions-user-groups-relation-list' %}?databaseapppermission={{ object.id }}"; + var theUrl = "{% url 'api-perms:database-app-permissions-user-groups-relation-list' %}?databaseapppermission={{ object.id }}&usergroup=groupId"; theUrl = theUrl.replace("groupId", groupId); var success = function(data) { location.reload(); From 75edc26a10d7a667387e1dab83dbfdfd61b8684b Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 18 May 2020 15:25:24 +0800 Subject: [PATCH 07/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=EF=BC=8C=E7=A6=81=E7=94=A8=E8=B5=84=E4=BA=A7=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=B8=8D=E6=94=AF=E6=8C=81ansible=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 89992 -> 89985 bytes apps/locale/zh/LC_MESSAGES/django.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index acc82a3552390f50429dc0e117e050835b453ab8..8ce97ff575ac8bb7ed55c47ded03104bd285200d 100644 GIT binary patch delta 8833 zcmXZhcYIa#{m1ch6%Z1p3Ckcu!VW2lL1x*=NF^G=5HZmTMJynoVxfA3qOtNrMp$YY z5^yl8h#)8xl_6NH1uTk{VOezmf9V$e&2sR&*$^q-}61^-rPL9rRR+HXT*o zz&0)Uwnb{J9@{w6-8K8#LG}Tck3%i>aeM@S@A9+u3YI6IdTk=AiRq}BWnp#fXYWJJ zWa71na1Wj&p}m`qTIxL1#9ni}9(A*KI{wD-d8|ynQkh^K+rqZTN|g7pgHQ_?jvDX5 zGTZ}QOmN}}TWn{eX8MxjW!QyywezQ(KaV;bSDde0HY}hzYC$*I9NQZ;?$DSEotELK zfu6%QINR|~)XG1z|8_o6F4QlN>Zl58$7(y@*l|n8?XfZCU9ky{#4#Ap;zA9tqGnq0 zx)9exttbn1?>gGMQ1wP)22Mt`U*P<5$L~1a=J*TL0*^WVKE!eKvkR`epj`Pda2l%P zhNyhT5Wk;O%(X zrXy6WH(gsJ-ZXg%sK`epG`Ct)v;Me87&gPogF^-M)%C zBU>HsLoMWt^Oqb~sOVdY>bD^#Z)ruIe>J#`gto3LChsYx5|2VPcnmerA8d&&MeW!+ zy9>3D!;XKpl`DmMnb@52_Navnuf+4Oizy^@FBhR^wgolt4!h4Dv8PZw^=D$&PuVI}5>ZRyn^6N5 z+7b8y@o2}_RSo^dm3@(cYS0ulfnPZ8?DAeV9~)9$gxa}jb}6LxXJF0k!qLu@w$={C|#@pceA?k`Hf5i>q;U zoQ(G9KdxCjE%ca$`ZQ>VYS9Vx!P^5ha)I*?p{6|EaqRdR)M+h2y~7t_7Jh`9*_kws zw_fJ;)5FVm5b725B&y*&RL4u~YShv;+1>Uq>TsMxwTr5Ub}6CS+Ld-K>NIY2ya%Q^aK-GK08q`iicag}$o>+?A z@LL>#SvQ2OEkOT`A2W zQg0JoI?eHP#|s@Vv8z$b-Q@DEs5kc~sIQn8@K(Hn>DcO@UP-MGc5_u2=jhR0CLI*Y3JGY-Vmy5Xg9KWbY>V10ZF^=!Y4x?daZ*1CQM z|3*R`9zhLo(w;{Rkf;|rOh?7psCr!;-{JT^)BzY{i=AJJ`V3uz8fQ0Z2lvHX=!PD& zr%(4(U!!i`@9Z4A%5FnV=^(29cc^iqMj@Zp z$j?cA61uA`QG0c(<3iMwN7#q$Bs&fDVfs93pgE{F{}RXBPy_BkE#w$#!sk)Pwo>Cb zB(fTZiak*i8H}27A*$m??Npb~wDVB|EJB@vHywY7dQd;dzIYndPrD|;UN%4WMG>l_ z(Wsd|<#?9kQd9@)><7+&ikk32Y=*~Buc*pRL%utzU0*v0wWAL>j>mAJ4kn|H(NxEa zQ4?8V*P}YxZui>5sEPmJ_$sQuip@g(G*n#QHnG{kk}4g`#(D*IBv$`Lb~LKrNvL_u zK+SKF^P8OCjk={@quO7$P z)I!eKi>MAS+msd|u8FFb>9_@IA#EM^vxDvM7MwwKG@gXcT#RZk&lO%nO>jNx&~8Vq z=oqSgxva3_I;ihItx)v`qxu<%>VLBH&tfCug{XTK+``|T0?9jc@AsE!jY zLkH=o!=Hi5XQBG(jH=%U^@<(ne4+CXq81cC=EOYIjFzD~dL0MjX3WCs+2Kd4Zm5oj z+wqv}2-SWuY62@9zk#}i8ytUzYQG;DCytJCp$;yFL{$A3p+ZyCR_35O?rC#fp6|E_ zHQ;aTIG0bh&)RvYg)Ot|u{z^NJDoUW&)PDr!V9e?Y6Tr_0cyfyP!pShn&@2A%9h); z_I;QC)&3LJ-}hKfKL?b#IT8H_@f7!n6{Ku$ob)RDw{8ww<6e(OZyfu8=%C_xn57b`tM@^&< z^`JfIc&2^9mZE-(U4vT40eb{B;gj~fP2}*V&`c}mgbEE%dzFpK_ppOpJ_mmIIM8|`+~&D!hudsP2F$1X^1lZbkd$VAQbLDWExIex}*32NX{REH~ZByM$_ zbz8{yMD=qoYUdtu{3xpZRLAijeK8;PmM=wp;J<^K;nyxdWB+F>v<(B)z%1%DMD1Lj z^CM6LO>jI3%MuqmKO-1NbGgtNcnLM*S5PZohg#uQ)C#^vo%0je8Oyf|^?RcRDzNuB z|7*t&qrTBhbUYdL7uM8d%#%8s3w^U#=n8M4Cb9{&q8(TUzjpo`)Xto?iS}Wl>9!@R zeJ`7js$XO$pceFu)SF@!7h1uKsD>}2R{m!kgdd|isMjHQ3!WwJiFNR{jv+q))$TW_ zex5=NG{f-%)Hur>ufpU%4mLWm9W~Hi$H(nCd(~F#6b7h`+RDbLTb6?wpr^}oQ4<`3 zn#g0$KV@fh^0(C&op=@1!P}1CvpelSP-oy@sCs378U90&iuzNeA>M?!b}VW~=GaxJ z32j5|&^N#I^M9IzR+8u(erKqP`T%Z$+L4Z^0s5mFK92S9Y1F623e*m4bNT0}`rn`? zl+q={EwLBzKx~JLVlLWp@dfH$SM8dJ=Hp0IeAV%wZec>FQJ)G|u|Brx9)2hsgxZ;> zQ7e8G=imo80rPu=Pn(ZX3p#4!i@vDPGyLIO$F|1aRP2lTy`cp4UFZPnUM6~lok&G> zSj%w>+ZK~&!Er8*rQQ(Sj=PXs5l1s`4}X2F#w-dBqP8fdcY=T3@naVjU@>-5IqC(K z(I@Ow7aTzR1>TQYeG}0ToQZeix7ZSU^h-p!I35S%7VMyJ3bk@|5k&(~GoFQ7(E`+O z5-U-^zHPC4P-oz%{n1`VwNLp~c+*uwy?AP(b}R!`-pFQQ@*fASU7;6FqCy_(XY;?J z8hn8|jE7Jiok30TlH-bZgnSKD{raf0&;<1Y>w~Iah&rs}QHOOl#=3Z!3$17^s^a^O z_n^uTp&pylE>G-sP8FUgoaQf6bT+eJnOW-Qyw8@`uTkZ>elQ;?btDwUq&r7t~wxebc1bo*c}T{x8?=ZM34Y?0B)Irn|zC#VsW^j15b;3r(V^DiC7xik|fTdV%NFw?e*W)mJ z;%=S`y?p<9ci4l>p<%%LP|H4~ZzMfSrl! z4-4VTrL z0){C#7z$`*6s@9Qsf!_4tPfy=SQ$#BPgO)H>-k*gzW#dO-+O%T@f+vlWcH3Kb9YpE zZEAMBRTM?ru0+vw_=WuzRe!;8=GD;N4l}4PaC`?gAfA9}INL6A{W?_MovzHI5*3-)Di({{Vt=fKGf@NQqb6E_O1K7_;bzC5q89!os(utL0 zTiJGT7dpB_7sve^54NN2J#L?l+Oft@#oxRAysdIgEJ~q14eMh%YJs^}7jL)m2^6&A zS*VphiaNpts2#6x{hu6fM_u#%j=y$%5wEAdPExSB?O+SB2JM6FXk-KNXd(qoc%PkV zAF*Y232LD)IDQ$s6K`?-S=V1g-6K`1g#L9=8*7Bx&`q`=VLXZkQqTg%p>CRqsEMA& zj=03}e$>uCv;XJ%l;qIACMr)o)Pzl4-^OvC<3emndmqeV{%A6VdvP&pU~<*4(%PuF zC2B{xsB72LjzH~bGN$7kRR5K(-{ANi$9o(fMQyMW;~Mb2E3Vq)l#r+fYT|~Dvrz*( zxxOpvM1G0dd8yl{*y*m1qvo0C`f{vC{A@}ro=CXW9p17Zy5m1Ei;n-q+c2qGNK}Mc z$OzPlj72?;51>wD3F>a&;CMG`0Tqr<+soB>{?$UOzA3<&8 zoa>|OLR)K4zfOe<_badR??E`EHHmAK5b%OKlI=qE=7cRrgsD&>{4SCntjhJ};w@}bT zJ5e1ExI+bYCO(e3woTGPd%o>~I{Jaw9>+Oe=y)w^BmZlU+7p;c{kLg6|2ncOR47r? z+F^oR)Tdi_RDxcpkK_KRg^YCl{ip@caQv9#CsB9*GSn-5HMYi&PzybWdbMZO;rVY# zVRW7FMtT%Aa0M#yTDt|cz@7G>J&C$kE}+I$tsBOr+6>eNavXPX+zoXCy>F(Vfy3P} z4mI)Js0kl%JP*~c+&;IkSzhh9QolisZpR&{_z)_?7xr7!JM;qTESl8|?Y->~)ZH`I z@k6LQ^Xwm8zZf;oYShZ!uE)jGLUn)HjUXjt|%8;_0?M>5k{@Wz=1j)F4dU5|ywUDq&wc2sLprHo?14 z{T@N(EkpHRiMspNpcc3d)$iRn1s%yA{23m%r%)?BjcxIQZFNH|x}CTfe}U_<2mS}g zV{XH6w98Nvzk*uGR@6fOhBx3R_yVR?QkX=cEIm9Im(myZ=$M_jE%F=1qC%PqP-ADI za?W?W!0{@_YwZ@)=61S$H}am2K0$qUY z<9yWpvjBCK)}Y>EAE5eIq7t4*^}CA0FfAjz6YfSG!X#{pkE6a!yo9P!qjuUqkhK-Nye$L5V-X!~)!K7WH>s ztXUY4jY`}Jb!`h>-_I7K^4#V4LHme(+O9-BARB`5XuBKsp%NTH-9%?l3u=%VcH9c} z3MfRK%yiVds0{UAPW2nCowSi9dHrE%U7V;ZxpwIOGQ303Q&2|s!S{+9X_zpE;)fSln=+Q20Hpq*{!V_YAd&rr}rOHr@=wT}0oCOm}NNhNBb7g2X{ot7ca zMfEE}Eo2O8!Q)YRAF}h@UT&Xl$@8y)tEtdU@j5F05cS-Cj{WdQRHE)#!2!0!mZHW@ zMJ@Dk$BP}WM~#2ee&G5~v*KaJ$Emo94wa}kR^3*iz8`AfU^^Ohr1vf(Kc%6tiHW3}vXu^OY^vAL-Bp{V}jvi*|&9Tl2jt~)G2O|-_oiyBaY zI+JtuGAdzGPB7JGp!(%F?tt1zH^;ZzF*#f$C79@n8K~RqG1Pz+uKyEif!k5H=U&u~ zDpCDwv<^FNj{26<3DtiLD$iupJab(C6t*B<6{nz;zGwHM?t+81!k)6(9?TF}d=M6cm++=Z>NQQPnnRbN!% ziFO7m&ts_ZYfuZ==y)6I629&DGh}=`s-U2WPNNcBcHF34n4lf%C<{=Di|i1$mpCp( zO?a=J?)EwMDZ2tS-^&SkNp7d0Yq;MHC+vA!y?uCfWuSJ@(~d+fcp7S9i%<()jyjnQ z_6_@<+y8F=g^8E+_Y{<%`p;w0?=cOPpxnNQiA#ZcDt4jze}P)~Nz}xbP#+k!YJ9%yd!Q!n>-LeZ zA8#k2`cKXE^FP}aWp+6#!Atfn*ME%qcK11U$8Ydj%+3qu+wQhM>STtY7CIjF*xl#2 zJdfvJ4bQn^J?e+pt*9eDW>2A3{BL{FrsRi()-*c$Zl8i$&@5E`vbY*{Gu{ zc85u*iDo*Uja7)tT))UJN8JN2pcecJYUgjFcDNh0fv-?^{Tb|rHE&UWp8tUqG|@0FFOk+Y{7I6HnZ!fv1E>>OYB!@6 zvlenNa-58clY4}CG-^RVqCO*%d&Z)s81F)%4TaIDqj>_g z<5zJ3et^Hll3wA%=VR24PTR}2)-S@}zs+rD>_fl7s2>@Yp}rX%LtV<0-iedoOF9K5 zY!WJ>4z?R6?ghs~a5DYI;(K@ibt%ek3x9-d!PdmbQ74qzCl=-7a2$$d*hTHA7gT0n zoea<4Z4`b*#ZerGx&30%2rS1E{157c`uC4TMK}Y8+^`>ipdhukSjx5vdt!*x9qRws~fHR4UQNNY{9krmN zsB3=$mFFC4T=Ywxe^u0`ARD6wWTEbbwx~DQAk={IsGD^L>SkSHUqbEZ4OGAP93OJ~ z3Dl+f(d}siL!K4`dHyv)FDmrSrUaGX0aU_yw%opmdKzAHe9#`VXHet+>$t|C5I02S zYvZ^x>LwpBC>|QdyW+R*@C0hWDy)Ya9q+OSP$y8~_>BE8>LjZU4yIyv;&jx>j>I8& zCu*Uu$K9~oe&U8hs0k`D1uwci>Gm+NI%=W})V7 z{&+tMT1g4&^Lvux*{C1g7ojfAe$eAn1)fJO>=J50)kg9-#P~lYb|cOj6<(dC zsQ%kW@jPi|JE_pl(nkkdpeAZ(d!P~zMP1BsxCHMrR9dgaBj{|`17dw>7{ diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 5ad5d3edc..562154404 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -1671,7 +1671,7 @@ msgstr "定期测试系统用户可连接性: {}" #: assets/tasks/utils.py:17 msgid "Asset has been disabled, skipped: {}" -msgstr "资产或许不支持ansible, 跳过: {}" +msgstr "资产已经被禁用, 跳过: {}" #: assets/tasks/utils.py:21 msgid "Asset may not be support ansible, skipped: {}" From 041d99f0beb168eafbcd2d76d56caeabb8989f56 Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 18 May 2020 15:40:54 +0800 Subject: [PATCH 08/22] =?UTF-8?q?[Update]=20=E6=9B=B4=E6=96=B0remote-app?= =?UTF-8?q?=E7=94=A8=E6=88=B7/=E7=94=A8=E6=88=B7=E7=BB=84=E6=97=B6?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=B7=E6=96=B0=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/templates/perms/remote_app_permission_user.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/perms/templates/perms/remote_app_permission_user.html b/apps/perms/templates/perms/remote_app_permission_user.html index d222dfb7c..9fa623585 100644 --- a/apps/perms/templates/perms/remote_app_permission_user.html +++ b/apps/perms/templates/perms/remote_app_permission_user.html @@ -179,9 +179,13 @@ var body = { user_groups: groups }; + var success = function(data) { + location.reload(); + }; requestApi({ url: the_url, - body: JSON.stringify(body) + body: JSON.stringify(body), + success: success }); } $(document).ready(function () { From 01a52812f07c4502f10f99b0c2ba6d5ed5753dec Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 18 May 2020 15:49:53 +0800 Subject: [PATCH 09/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E7=94=A8?= =?UTF-8?q?=E6=88=B7MFA=E7=A6=81=E7=94=A8/=E6=9B=B4=E6=96=B0=E7=9A=84View?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/views/profile/otp.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/users/views/profile/otp.py b/apps/users/views/profile/otp.py index 2d823f5ab..83918114e 100644 --- a/apps/users/views/profile/otp.py +++ b/apps/users/views/profile/otp.py @@ -83,7 +83,7 @@ class UserOtpEnableBindView(TemplateView, FormView): return super().get_context_data(**kwargs) -class UserVerifyMFAView(FormView): +class UserDisableMFAView(FormView): template_name = 'users/user_verify_mfa.html' form_class = forms.UserCheckOtpCodeForm success_url = reverse_lazy('users:user-otp-settings-success') @@ -95,6 +95,8 @@ class UserVerifyMFAView(FormView): valid = user.check_mfa(otp_code) if valid: + user.disable_mfa() + user.save() return super().form_valid(form) else: error = _('MFA code invalid, or ntp sync server time') @@ -102,15 +104,18 @@ class UserVerifyMFAView(FormView): return super().form_invalid(form) -class UserDisableMFAView(UserVerifyMFAView): +class UserOtpUpdateView(FormView): + template_name = 'users/user_verify_mfa.html' + form_class = forms.UserCheckOtpCodeForm + success_url = reverse_lazy('users:user-otp-enable-bind') + permission_classes = [IsValidUser] + def form_valid(self, form): user = self.request.user otp_code = form.cleaned_data.get('otp_code') valid = user.check_mfa(otp_code) if valid: - user.disable_mfa() - user.save() return super().form_valid(form) else: error = _('MFA code invalid, or ntp sync server time') @@ -118,10 +123,6 @@ class UserDisableMFAView(UserVerifyMFAView): return super().form_invalid(form) -class UserOtpUpdateView(UserVerifyMFAView): - success_url = reverse_lazy('users:user-otp-enable-bind') - - class UserOtpSettingsSuccessView(TemplateView): template_name = 'flash_message_standalone.html' From e98626988bac4d085eda5e738d4f6564fb5cf841 Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 18 May 2020 18:02:37 +0800 Subject: [PATCH 10/22] =?UTF-8?q?[Update]=20=E8=A7=A3=E5=86=B3=E5=BC=80?= =?UTF-8?q?=E5=90=AFOpenID=EF=BC=8C=E4=B8=BA=E7=94=A8=E6=88=B7=E5=BC=BA?= =?UTF-8?q?=E5=88=B6=E5=90=AF=E7=94=A8MFA=E5=AF=BC=E8=87=B4=EF=BC=8C?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=B6=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/views/profile/password.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/users/views/profile/password.py b/apps/users/views/profile/password.py index c9bb97f38..bb7caa9a1 100644 --- a/apps/users/views/profile/password.py +++ b/apps/users/views/profile/password.py @@ -67,7 +67,7 @@ class UserVerifyPasswordView(FormView): def form_valid(self, form): user = get_user_or_pre_auth_user(self.request) password = form.cleaned_data.get('password') - user = authenticate(username=user.username, password=password) + user = authenticate(request=self.request, username=user.username, password=password) if not user: form.add_error("password", _("Password invalid")) return self.form_invalid(form) From 73c3de97b86fd8ddbb29d856ebc3455138ef40ad Mon Sep 17 00:00:00 2001 From: Bai Date: Mon, 18 May 2020 18:14:19 +0800 Subject: [PATCH 11/22] =?UTF-8?q?[Update]=20=E5=8F=96=E6=B6=88=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=B5=84=E4=BA=A7=E9=A1=B5=E9=9D=A2=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E8=B5=84=E4=BA=A7=E8=AF=A6=E6=83=85=E7=B3=BB=E7=BB=9F=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=80=BC=E4=B8=BAundefine=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/templates/assets/user_asset_list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/assets/templates/assets/user_asset_list.html b/apps/assets/templates/assets/user_asset_list.html index 3c5cdc4a1..2a8c8cf64 100644 --- a/apps/assets/templates/assets/user_asset_list.html +++ b/apps/assets/templates/assets/user_asset_list.html @@ -76,7 +76,7 @@ $(document).ready(function () { 'ip': "{% trans 'IP' %}", 'protocols': "{% trans 'Protocols' %}", 'platform': "{% trans 'Platform' %}", - 'system_users_join': "{% trans 'System user' %}", + {#'system_users_join': "{% trans 'System user' %}",#} 'domain': "{% trans 'Domain' %}", 'comment': "{% trans 'Comment' %}", }; From 728e4b7edd57fb8a37d89c102360a6b41531cf9d Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 19 May 2020 11:47:49 +0800 Subject: [PATCH 12/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E5=A4=8D=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E6=A8=A1=E5=9D=97=E7=9A=84=E4=BF=A1=E5=8F=B7=E5=A4=84?= =?UTF-8?q?=E7=90=86=E7=9B=91=E5=90=AC=E4=B8=8D=E5=88=B0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/apps.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/perms/apps.py b/apps/perms/apps.py index d40373e08..5bb7420bb 100644 --- a/apps/perms/apps.py +++ b/apps/perms/apps.py @@ -5,3 +5,7 @@ from django.apps import AppConfig class PermsConfig(AppConfig): name = 'perms' + + def ready(self): + super().ready() + from . import signals_handler From 96afd82341199a431f9b25c7b2ebb8e6829e0199 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 19 May 2020 15:15:17 +0800 Subject: [PATCH 13/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E5=A4=8D=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=88=97=E8=A1=A8=EF=BC=8C=E6=89=A7=E8=A1=8C=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E4=B8=ADstat=E6=B1=87=E6=80=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/serializers/adhoc.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/ops/serializers/adhoc.py b/apps/ops/serializers/adhoc.py index afdd659fc..8d9e18e24 100644 --- a/apps/ops/serializers/adhoc.py +++ b/apps/ops/serializers/adhoc.py @@ -19,10 +19,13 @@ class AdHocExecutionSerializer(serializers.ModelSerializer): @staticmethod def get_stat(obj): + count_failed_hosts = len(obj.failed_hosts) + count_success_hosts = len(obj.success_hosts) + count_total = count_success_hosts + count_failed_hosts return { - "total": obj.hosts_amount, - "success": len(obj.summary.get("contacted", [])), - "failed": len(obj.summary.get("dark", [])), + "total": count_total, + "success": count_success_hosts, + "failed": count_failed_hosts } def get_field_names(self, declared_fields, info): From be3fdac8a95aac5c432ff830b1f70bf80abd00e8 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 19 May 2020 15:28:31 +0800 Subject: [PATCH 14/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E5=A4=8DAPI-key?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E5=88=A0=E9=99=A4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/authentication/_access_key_modal.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apps/authentication/templates/authentication/_access_key_modal.html b/apps/authentication/templates/authentication/_access_key_modal.html index f0b34cf30..71b1f67f5 100644 --- a/apps/authentication/templates/authentication/_access_key_modal.html +++ b/apps/authentication/templates/authentication/_access_key_modal.html @@ -135,6 +135,19 @@ $(document).ready(function () { } }; requestApi(data) +}).on('click', '.btn-api-keydel', function (){ + var url = "{% url "api-auth:access-key-detail" pk=DEFAULT_PK %}"; + url = url.replace("{{ DEFAULT_PK }}", $(this).data("id")) ; + var data = { + url: url, + method: "DELETE", + success: function () { + ak_table.ajax.reload(); + }, + success_message: "{% trans 'Delete success' %}" + + }; + requestApi(data) }) {% endblock %} From b97deec1de68bfaf3847fa7afda89036994ff571 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 19 May 2020 18:24:26 +0800 Subject: [PATCH 15/22] =?UTF-8?q?[Update]=20openid=20=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=85=8D=E7=BD=AE=E9=A1=B9=20base=5Fsite=5Fu?= =?UTF-8?q?rl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jumpserver/conf.py | 4 ++-- apps/jumpserver/settings/auth.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index dc0e9eae6..5da97cfb7 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -173,11 +173,12 @@ class Config(dict): # OpenID 配置参数 # OpenID 公有配置参数 (version <= 1.5.8 或 version >= 1.5.8) 'AUTH_OPENID': False, + 'BASE_SITE_URL': None, 'AUTH_OPENID_CLIENT_ID': 'client-id', 'AUTH_OPENID_CLIENT_SECRET': 'client-secret', 'AUTH_OPENID_SHARE_SESSION': True, 'AUTH_OPENID_IGNORE_SSL_VERIFICATION': True, - # OpenID 新配置参数 (version >= 1.5.8) + # OpenID 新配置参数 (version >= 1.5.9) 'AUTH_OPENID_PROVIDER_ENDPOINT': 'https://op-example.com/', 'AUTH_OPENID_PROVIDER_AUTHORIZATION_ENDPOINT': 'https://op-example.com/authorize', 'AUTH_OPENID_PROVIDER_TOKEN_ENDPOINT': 'https://op-example.com/token', @@ -193,7 +194,6 @@ class Config(dict): 'AUTH_OPENID_USE_NONCE': True, 'AUTH_OPENID_ALWAYS_UPDATE_USER': True, # OpenID 旧配置参数 (version <= 1.5.8 (discarded)) - 'BASE_SITE_URL': 'http://localhost:8080', 'AUTH_OPENID_SERVER_URL': 'http://openid', 'AUTH_OPENID_REALM_NAME': None, diff --git a/apps/jumpserver/settings/auth.py b/apps/jumpserver/settings/auth.py index 516671980..b7633ace7 100644 --- a/apps/jumpserver/settings/auth.py +++ b/apps/jumpserver/settings/auth.py @@ -48,6 +48,7 @@ AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS = CONFIG.AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS # 参考: https://django-oidc-rp.readthedocs.io/en/stable/settings.html # ============================================================================== AUTH_OPENID = CONFIG.AUTH_OPENID +BASE_SITE_URL = CONFIG.BASE_SITE_URL AUTH_OPENID_CLIENT_ID = CONFIG.AUTH_OPENID_CLIENT_ID AUTH_OPENID_CLIENT_SECRET = CONFIG.AUTH_OPENID_CLIENT_SECRET AUTH_OPENID_PROVIDER_ENDPOINT = CONFIG.AUTH_OPENID_PROVIDER_ENDPOINT From d704a35ead5b83edc03ac46e9e4b2365e87c31c7 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 19 May 2020 18:33:33 +0800 Subject: [PATCH 16/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E7=89=88=E6=9C=AC=E5=8F=B7=20jumpserver-django-oidc-r?= =?UTF-8?q?p=3D=3D0.3.7.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 50e4a1862..59e86f1ac 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -96,4 +96,4 @@ ipython huaweicloud-sdk-python==1.0.21 django-redis==4.11.0 python-redis-lock==3.5.0 -jumpserver-django-oidc-rp==0.3.7.3 +jumpserver-django-oidc-rp==0.3.7.4 From 216e0f28b955600573046c50a43b09ad232e4514 Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 19 May 2020 18:36:56 +0800 Subject: [PATCH 17/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config_example.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config_example.yml b/config_example.yml index 30cfabc3e..fd8710c78 100644 --- a/config_example.yml +++ b/config_example.yml @@ -56,6 +56,7 @@ REDIS_PORT: 6379 # Use OpenID Authorization # 使用 OpenID 进行认证设置 # AUTH_OPENID: False # True or False +# BASE_SITE_URL: None # AUTH_OPENID_CLIENT_ID: client-id # AUTH_OPENID_CLIENT_SECRET: client-secret # AUTH_OPENID_PROVIDER_ENDPOINT: https://op-example.com/ From 63ff868553346917d8ffa80e2442d012e8a2da1b Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 19 May 2020 19:36:19 +0800 Subject: [PATCH 18/22] =?UTF-8?q?[Update]=20=E6=8E=88=E6=9D=83=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E6=A0=91=E8=BF=94=E5=9B=9Eorg=5Fid=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/utils/asset_permission.py | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/perms/utils/asset_permission.py b/apps/perms/utils/asset_permission.py index cd6e1805e..80b1c19e5 100644 --- a/apps/perms/utils/asset_permission.py +++ b/apps/perms/utils/asset_permission.py @@ -477,6 +477,7 @@ class ParserNode: 'platform': asset.platform_base, 'domain': asset.domain_id, 'org_name': asset.org_name, + 'org_id': asset.org_id }, } } From 7c44f7406864cbc3c7d53f6a7259583220633385 Mon Sep 17 00:00:00 2001 From: Bai Date: Wed, 20 May 2020 18:20:01 +0800 Subject: [PATCH 19/22] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E5=A4=8D=E5=8F=AA?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BD=93=E5=89=8D=E8=8A=82=E7=82=B9=E4=B8=8B?= =?UTF-8?q?=E8=B5=84=E4=BA=A7=E4=B8=8D=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/filters.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/assets/filters.py b/apps/assets/filters.py index b68d9d127..94a49a3f5 100644 --- a/apps/assets/filters.py +++ b/apps/assets/filters.py @@ -58,7 +58,9 @@ class AssetByNodeFilterBackend(filters.BaseFilterBackend): if query_all: pattern = node.get_all_children_pattern(with_self=True) else: - pattern = node.get_children_key_pattern(with_self=True) + # pattern = node.get_children_key_pattern(with_self=True) + # 只显示当前节点下资产 + pattern = r"^{}$".format(node.key) return self.perform_query(pattern, queryset) From 2e0eab9289c6987270bc40592796fd1c71c93c70 Mon Sep 17 00:00:00 2001 From: Bai Date: Wed, 20 May 2020 19:35:35 +0800 Subject: [PATCH 20/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 89985 -> 90157 bytes apps/locale/zh/LC_MESSAGES/django.po | 116 +++++++++++++++------------ 2 files changed, 63 insertions(+), 53 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 8ce97ff575ac8bb7ed55c47ded03104bd285200d..c51d13e46ca681bcb48fee10eafab7ee7fe40e4d 100644 GIT binary patch delta 26542 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 Ir%aLm0~=T#zyJUM delta 26358 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 562154404..8207c4b7a 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-11 16:53+0800\n" +"POT-Creation-Date: 2020-05-20 19:25+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -26,7 +26,7 @@ msgstr "自定义" #: applications/templates/applications/remote_app_list.html:27 #: applications/templates/applications/user_remote_app_list.html:18 #: assets/forms/domain.py:15 assets/forms/label.py:13 -#: assets/models/asset.py:353 assets/models/authbook.py:27 +#: assets/models/asset.py:352 assets/models/authbook.py:27 #: assets/models/gathered_user.py:14 assets/serializers/admin_user.py:32 #: assets/serializers/asset_user.py:47 assets/serializers/asset_user.py:84 #: assets/serializers/system_user.py:44 assets/serializers/system_user.py:176 @@ -112,7 +112,7 @@ msgstr "运行参数" #: applications/templates/applications/user_database_app_list.html:16 #: applications/templates/applications/user_remote_app_list.html:16 #: assets/forms/asset.py:21 assets/forms/domain.py:77 assets/forms/user.py:74 -#: assets/forms/user.py:96 assets/models/asset.py:146 assets/models/base.py:232 +#: assets/forms/user.py:96 assets/models/asset.py:145 assets/models/base.py:232 #: assets/models/cluster.py:18 assets/models/cmd_filter.py:21 #: assets/models/domain.py:20 assets/models/group.py:20 #: assets/models/label.py:18 assets/templates/assets/_node_detail_modal.html:27 @@ -204,7 +204,7 @@ msgstr "主机" #: applications/models/database_app.py:27 #: applications/templates/applications/database_app_detail.html:60 #: applications/templates/applications/database_app_list.html:26 -#: assets/forms/asset.py:25 assets/models/asset.py:192 +#: assets/forms/asset.py:25 assets/models/asset.py:191 #: assets/models/domain.py:50 #: assets/templates/assets/domain_gateway_list.html:64 msgid "Port" @@ -227,7 +227,7 @@ msgstr "数据库" #: applications/templates/applications/remote_app_list.html:28 #: applications/templates/applications/user_database_app_list.html:20 #: applications/templates/applications/user_remote_app_list.html:19 -#: assets/models/asset.py:151 assets/models/asset.py:227 +#: assets/models/asset.py:150 assets/models/asset.py:226 #: assets/models/base.py:237 assets/models/cluster.py:29 #: assets/models/cmd_filter.py:23 assets/models/cmd_filter.py:56 #: assets/models/domain.py:21 assets/models/domain.py:53 @@ -244,7 +244,8 @@ msgstr "数据库" #: assets/templates/assets/platform_detail.html:64 #: assets/templates/assets/platform_list.html:18 #: assets/templates/assets/system_user_detail.html:112 -#: assets/templates/assets/system_user_list.html:29 ops/models/adhoc.py:37 +#: assets/templates/assets/system_user_list.html:29 +#: assets/templates/assets/user_asset_list.html:81 ops/models/adhoc.py:37 #: orgs/models.py:18 perms/models/base.py:56 #: perms/templates/perms/asset_permission_detail.html:97 #: perms/templates/perms/database_app_permission_detail.html:93 @@ -309,7 +310,7 @@ msgstr "参数" #: applications/models/remote_app.py:39 #: applications/templates/applications/database_app_detail.html:72 #: applications/templates/applications/remote_app_detail.html:68 -#: assets/models/asset.py:225 assets/models/base.py:240 +#: assets/models/asset.py:224 assets/models/base.py:240 #: assets/models/cluster.py:28 assets/models/cmd_filter.py:26 #: assets/models/cmd_filter.py:59 assets/models/group.py:21 #: assets/templates/assets/admin_user_detail.html:63 @@ -335,7 +336,7 @@ msgstr "创建者" #: applications/models/remote_app.py:42 #: applications/templates/applications/database_app_detail.html:68 #: applications/templates/applications/remote_app_detail.html:64 -#: assets/models/asset.py:226 assets/models/base.py:238 +#: assets/models/asset.py:225 assets/models/base.py:238 #: assets/models/cluster.py:26 assets/models/domain.py:23 #: assets/models/gathered_user.py:19 assets/models/group.py:22 #: assets/models/label.py:25 assets/templates/assets/admin_user_detail.html:59 @@ -737,7 +738,7 @@ msgstr "不能移除资产的管理用户账号" msgid "Latest version could not be delete" msgstr "最新版本的不能被删除" -#: assets/forms/asset.py:83 assets/models/asset.py:196 +#: assets/forms/asset.py:83 assets/models/asset.py:195 #: assets/models/user.py:109 assets/templates/assets/asset_detail.html:186 #: assets/templates/assets/asset_detail.html:194 #: assets/templates/assets/system_user_assets.html:118 @@ -748,7 +749,7 @@ msgstr "最新版本的不能被删除" msgid "Nodes" msgstr "节点" -#: assets/forms/asset.py:86 assets/models/asset.py:200 +#: assets/forms/asset.py:86 assets/models/asset.py:199 #: assets/models/cluster.py:19 assets/models/user.py:65 #: assets/templates/assets/admin_user_list.html:62 #: assets/templates/assets/asset_detail.html:72 templates/_nav.html:44 @@ -766,7 +767,7 @@ msgstr "管理用户" msgid "Label" msgstr "标签" -#: assets/forms/asset.py:92 assets/models/asset.py:195 +#: assets/forms/asset.py:92 assets/models/asset.py:194 #: assets/models/domain.py:26 assets/models/domain.py:52 #: assets/templates/assets/asset_detail.html:76 #: assets/templates/assets/user_asset_list.html:80 @@ -774,8 +775,8 @@ msgstr "标签" msgid "Domain" msgstr "网域" -#: assets/forms/asset.py:95 assets/models/asset.py:170 -#: assets/models/asset.py:194 assets/serializers/asset.py:67 +#: assets/forms/asset.py:95 assets/models/asset.py:169 +#: assets/models/asset.py:193 assets/serializers/asset.py:67 #: assets/templates/assets/asset_detail.html:100 #: assets/templates/assets/user_asset_list.html:78 msgid "Platform" @@ -980,24 +981,24 @@ msgstr "SFTP的起始路径,tmp目录, 用户home目录或者自定义" msgid "Username is dynamic, When connect asset, using current user's username" msgstr "用户名是动态的,登录资产时使用当前用户的用户名登录" -#: assets/models/asset.py:147 xpack/plugins/cloud/providers/base.py:16 +#: assets/models/asset.py:146 xpack/plugins/cloud/providers/base.py:16 msgid "Base" msgstr "基础" -#: assets/models/asset.py:148 assets/templates/assets/platform_detail.html:56 +#: assets/models/asset.py:147 assets/templates/assets/platform_detail.html:56 msgid "Charset" msgstr "编码" -#: assets/models/asset.py:149 assets/templates/assets/platform_detail.html:60 +#: assets/models/asset.py:148 assets/templates/assets/platform_detail.html:60 #: tickets/models/ticket.py:38 msgid "Meta" msgstr "元数据" -#: assets/models/asset.py:150 +#: assets/models/asset.py:149 msgid "Internal" msgstr "内部的" -#: assets/models/asset.py:187 assets/models/domain.py:49 +#: assets/models/asset.py:186 assets/models/domain.py:49 #: assets/serializers/asset_user.py:46 #: assets/templates/assets/_asset_list_modal.html:47 #: assets/templates/assets/_asset_user_list.html:20 @@ -1014,7 +1015,7 @@ msgstr "内部的" msgid "IP" msgstr "IP" -#: assets/models/asset.py:188 assets/serializers/asset_user.py:45 +#: assets/models/asset.py:187 assets/serializers/asset_user.py:45 #: assets/serializers/gathered_user.py:20 #: assets/templates/assets/_asset_list_modal.html:46 #: assets/templates/assets/_asset_user_auth_update_modal.html:9 @@ -1031,7 +1032,7 @@ msgstr "IP" msgid "Hostname" msgstr "主机名" -#: assets/models/asset.py:191 assets/models/domain.py:51 +#: assets/models/asset.py:190 assets/models/domain.py:51 #: assets/models/user.py:114 assets/templates/assets/asset_detail.html:68 #: assets/templates/assets/domain_gateway_list.html:65 #: assets/templates/assets/system_user_detail.html:78 @@ -1043,84 +1044,84 @@ msgstr "主机名" msgid "Protocol" msgstr "协议" -#: assets/models/asset.py:193 assets/serializers/asset.py:69 +#: assets/models/asset.py:192 assets/serializers/asset.py:69 #: assets/templates/assets/asset_create.html:24 #: assets/templates/assets/user_asset_list.html:77 #: perms/serializers/user_permission.py:60 msgid "Protocols" msgstr "协议组" -#: assets/models/asset.py:197 assets/models/cmd_filter.py:22 +#: assets/models/asset.py:196 assets/models/cmd_filter.py:22 #: assets/models/domain.py:54 assets/models/label.py:22 #: assets/templates/assets/asset_detail.html:108 authentication/models.py:45 msgid "Is active" msgstr "激活" -#: assets/models/asset.py:203 assets/templates/assets/asset_detail.html:64 +#: assets/models/asset.py:202 assets/templates/assets/asset_detail.html:64 msgid "Public IP" msgstr "公网IP" -#: assets/models/asset.py:204 assets/templates/assets/asset_detail.html:116 +#: assets/models/asset.py:203 assets/templates/assets/asset_detail.html:116 msgid "Asset number" msgstr "资产编号" -#: assets/models/asset.py:207 assets/templates/assets/asset_detail.html:80 +#: assets/models/asset.py:206 assets/templates/assets/asset_detail.html:80 msgid "Vendor" msgstr "制造商" -#: assets/models/asset.py:208 assets/templates/assets/asset_detail.html:84 +#: assets/models/asset.py:207 assets/templates/assets/asset_detail.html:84 msgid "Model" msgstr "型号" -#: assets/models/asset.py:209 assets/templates/assets/asset_detail.html:112 +#: assets/models/asset.py:208 assets/templates/assets/asset_detail.html:112 msgid "Serial number" msgstr "序列号" -#: assets/models/asset.py:211 +#: assets/models/asset.py:210 msgid "CPU model" msgstr "CPU型号" -#: assets/models/asset.py:212 +#: assets/models/asset.py:211 msgid "CPU count" msgstr "CPU数量" -#: assets/models/asset.py:213 +#: assets/models/asset.py:212 msgid "CPU cores" msgstr "CPU核数" -#: assets/models/asset.py:214 +#: assets/models/asset.py:213 msgid "CPU vcpus" msgstr "CPU总数" -#: assets/models/asset.py:215 assets/templates/assets/asset_detail.html:92 +#: assets/models/asset.py:214 assets/templates/assets/asset_detail.html:92 msgid "Memory" msgstr "内存" -#: assets/models/asset.py:216 +#: assets/models/asset.py:215 msgid "Disk total" msgstr "硬盘大小" -#: assets/models/asset.py:217 +#: assets/models/asset.py:216 msgid "Disk info" msgstr "硬盘信息" -#: assets/models/asset.py:219 assets/templates/assets/asset_detail.html:104 +#: assets/models/asset.py:218 assets/templates/assets/asset_detail.html:104 msgid "OS" msgstr "操作系统" -#: assets/models/asset.py:220 +#: assets/models/asset.py:219 msgid "OS version" msgstr "系统版本" -#: assets/models/asset.py:221 +#: assets/models/asset.py:220 msgid "OS arch" msgstr "系统架构" -#: assets/models/asset.py:222 +#: assets/models/asset.py:221 msgid "Hostname raw" msgstr "主机名原始" -#: assets/models/asset.py:224 assets/templates/assets/asset_create.html:46 +#: assets/models/asset.py:223 assets/templates/assets/asset_create.html:46 #: assets/templates/assets/asset_detail.html:220 templates/_nav.html:46 msgid "Labels" msgstr "标签管理" @@ -1449,8 +1450,7 @@ msgid "SFTP Root" msgstr "SFTP根路径" #: assets/models/user.py:195 assets/templates/assets/system_user_list.html:73 -#: assets/templates/assets/user_asset_list.html:79 audits/models.py:21 -#: audits/templates/audits/ftp_log_list.html:53 +#: audits/models.py:21 audits/templates/audits/ftp_log_list.html:53 #: audits/templates/audits/ftp_log_list.html:76 #: perms/forms/asset_permission.py:95 perms/forms/remote_app_permission.py:49 #: perms/models/asset_permission.py:82 @@ -1771,7 +1771,7 @@ msgstr "获取认证信息错误" #: assets/templates/assets/_asset_user_auth_view_modal.html:101 #: assets/templates/assets/_node_detail_modal.html:67 #: assets/templates/assets/_user_asset_detail_modal.html:23 -#: authentication/templates/authentication/_access_key_modal.html:142 +#: authentication/templates/authentication/_access_key_modal.html:155 #: authentication/templates/authentication/_mfa_confirm_modal.html:53 #: settings/templates/settings/_ldap_list_users_modal.html:171 #: templates/_modal.html:22 tickets/models/ticket.py:68 @@ -1817,6 +1817,7 @@ msgid "Push" msgstr "推送" #: assets/templates/assets/_asset_user_list.html:167 +#: authentication/templates/authentication/_access_key_modal.html:147 msgid "Delete success" msgstr "删除成功" @@ -2769,7 +2770,7 @@ msgid "" msgstr "账号已被锁定(请联系管理员解锁 或 {}分钟后重试)" #: authentication/errors.py:48 users/views/profile/otp.py:63 -#: users/views/profile/otp.py:100 users/views/profile/otp.py:116 +#: users/views/profile/otp.py:102 users/views/profile/otp.py:121 msgid "MFA code invalid, or ntp sync server time" msgstr "MFA验证码不正确,或者服务器端时间不对" @@ -2881,8 +2882,8 @@ msgid "More login options" msgstr "更多登录方式" #: authentication/templates/authentication/login.html:61 -msgid "Keycloak" -msgstr "" +msgid "OpenID" +msgstr "OpenID" #: authentication/templates/authentication/login_otp.html:17 msgid "One-time password" @@ -6183,19 +6184,19 @@ msgstr "首次登录" msgid "Profile setting" msgstr "个人信息设置" -#: users/views/profile/otp.py:144 +#: users/views/profile/otp.py:145 msgid "MFA enable success" msgstr "多因子认证启用成功" -#: users/views/profile/otp.py:145 +#: users/views/profile/otp.py:146 msgid "MFA enable success, return login page" msgstr "多因子认证启用成功,返回到登录页面" -#: users/views/profile/otp.py:147 +#: users/views/profile/otp.py:148 msgid "MFA disable success" msgstr "多因子认证禁用成功" -#: users/views/profile/otp.py:148 +#: users/views/profile/otp.py:149 msgid "MFA disable success, return login page" msgstr "多因子认证禁用成功,返回登录页面" @@ -6585,7 +6586,19 @@ msgstr "东北-大连" msgid "CN South-Guangzhou" msgstr "华南-广州" -#: xpack/plugins/cloud/providers/qcloud.py:14 +#: xpack/plugins/cloud/providers/huaweicloud.py:30 +msgid "CN Southwest-Guiyang1" +msgstr "西南-贵阳一" + +#: xpack/plugins/cloud/providers/huaweicloud.py:31 +msgid "EU-Paris" +msgstr "欧洲-巴黎" + +#: xpack/plugins/cloud/providers/huaweicloud.py:32 +msgid "LA-Santiago" +msgstr "拉美-圣地亚哥" + +#: xpack/plugins/cloud/providers/qcloud.py:17 msgid "Tencent Cloud" msgstr "腾讯云" @@ -6981,9 +6994,6 @@ msgstr "密码匣子" msgid "vault create" msgstr "创建" -#~ msgid "LA-Santiago" -#~ msgstr "拉美-圣地亚哥" - #~ msgid "Total hosts" #~ msgstr "主机总数" From 6804f23b51f70be3bea4c7faaada4add1a3333b3 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 21 May 2020 20:01:53 +0800 Subject: [PATCH 21/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 43803762c..21fc8e36a 100644 --- a/README.md +++ b/README.md @@ -196,6 +196,16 @@ JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向 - [东方明珠:JumpServer高效管控异构化、分布式云端资产](https://blog.fit2cloud.com/?p=687); - [江苏农信:JumpServer堡垒机助力行业云安全运维](https://blog.fit2cloud.com/?p=666)。 +## 安全说明 + +JumpServer是一款安全产品,请参考 [基本安全建议](https://docs.jumpserver.org/zh/master/install/install_security/) 部署安装. + +如果你发现安全问题,可以直接联系我们: + +- ibuler@fit2cloud.com +- support@fit2cloud.com +- 400-052-0755 + ## License & Copyright Copyright (c) 2014-2020 飞致云 FIT2CLOUD, All rights reserved. From 3861943518e6366088180c5fd2ade544a573d57c Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 26 May 2020 14:23:04 +0800 Subject: [PATCH 22/22] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E7=89=88=E6=9C=AC=E5=8F=B7=20jumpserver-django-oidc-r?= =?UTF-8?q?p=3D=3D0.3.7.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 59e86f1ac..bd65081c3 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -96,4 +96,4 @@ ipython huaweicloud-sdk-python==1.0.21 django-redis==4.11.0 python-redis-lock==3.5.0 -jumpserver-django-oidc-rp==0.3.7.4 +jumpserver-django-oidc-rp==0.3.7.5