Compare commits

...

1483 Commits

Author SHA1 Message Date
wangruidong
23874460da fix: 控制台-仪表盘会话用户,资产排名不对 2024-04-19 17:16:01 +08:00
Bai
913c0d140d fix: 修复 Celery Execution 任务保存失败导致 View 事务回滚的问题(首次登录用户修改密码失败) 2024-04-18 21:20:19 +08:00
Bryan
60d9db7707 Merge pull request #13063 from jumpserver/master
v3.10.8 master to v3.10
2024-04-18 18:05:30 +08:00
Bryan
f20b9e01ab Merge pull request #13062 from jumpserver/dev
v3.10.8 dev to master
2024-04-18 18:01:20 +08:00
fit2bot
d4f9e30306 perf: translate (#13061)
Co-authored-by: feng <1304903146@qq.com>
2024-04-18 17:28:55 +08:00
Bryan
8cf8a3701b Merge pull request #13059 from jumpserver/dev
v3.10.8
2024-04-18 17:16:37 +08:00
Aaron3S
1b221d1cb6 fix: celery kwargs 参数解析问题 2024-04-18 17:06:09 +08:00
halo
fbf42ebbf9 perf: 更新客户端版本 2024-04-18 15:58:50 +08:00
Aaron3S
a0c4eae04c perf: 优化变量名, 防止和翻译方法冲突 2024-04-18 14:31:44 +08:00
Aaron3S
d1c293940a fix: 修复 celery task not found 的问题 2024-04-18 14:31:44 +08:00
Aaron3S
6f2d04a029 fix: 修复自动化任务重包含多个playbook runtime 目录被提前删除的问题 2024-04-18 14:10:34 +08:00
wangruidong
29dbc2e4d4 perf: 用户详情页-资产授权规则字段排序优化 2024-04-18 13:14:16 +08:00
wangruidong
e8d717d174 fix: 资产不存在指定用户的时候,没有用特权用户任务未执行 2024-04-17 20:17:24 +08:00
Aaron3S
138a3a2f46 fix: 修复 receptor_ctl 的并发安全问题 2024-04-17 18:58:20 +08:00
fit2bot
cade2cfa13 fix: 改密推送没有更新版本 (#13044)
Co-authored-by: feng <1304903146@qq.com>
2024-04-17 16:14:40 +08:00
wangruidong
ac988a76b4 fix: 重启服务禁用的定时任务会执行问题 2024-04-17 14:25:10 +08:00
ibuler
5a9815481a perf: 修改 token expire 逻辑 2024-04-17 14:23:56 +08:00
feng
bfbddfdead fix: 【账号改密】任务列表-详情:获取任务记录tab报错 2024-04-17 11:27:18 +08:00
Aaron3S
3cf526fdf3 fix: 修复测试根节点连接性 task 找不到的问题 2024-04-16 19:27:56 +08:00
Aaron3S
f6a4ee54d0 fix: 补充遗漏的网关参数 2024-04-16 19:27:56 +08:00
wangruidong
5755d281d7 perf: ldap测试登录前端不需要先测试连接 2024-04-16 18:13:45 +08:00
Aaron3S
1569524583 fix: 修复调用 ssh_ping 模块测试走网关的资产连接性失败 2024-04-16 17:14:30 +08:00
fit2bot
7ba876eb0a fix: 登录复核 审批后 刷新页面工单没清除 (#13031)
Co-authored-by: feng <1304903146@qq.com>
2024-04-16 14:04:18 +08:00
wangruidong
a31ea77b3c fix: 会话详情中文件传输显示有误 2024-04-16 10:38:05 +08:00
Aaron3S
44445a9482 fix: 修复一些因使用 receptor runner 造成的 bug 2024-04-15 19:42:36 +08:00
Bai
b8449a6efa fix: Export csv file can run program for windows 2024-04-15 19:42:03 +08:00
fit2bot
ccf6b00084 perf: 迁移文件和翻译 (#13024)
Co-authored-by: feng <1304903146@qq.com>
2024-04-15 17:57:47 +08:00
fit2bot
4423f842e0 fix: 历史账号数量计算错误 (#13023)
Co-authored-by: feng <1304903146@qq.com>
2024-04-15 17:17:11 +08:00
fit2bot
7660e3228e fix: 【账号推送】创建账号推送失败 (#13021)
Co-authored-by: feng <1304903146@qq.com>
2024-04-15 14:48:58 +08:00
wangruidong
482f5613e4 fix: 会话详情中文件传输显示有误 2024-04-15 14:42:18 +08:00
Bai
3cfb46f798 fix: Update jms-storage version 0.0.57 2024-04-15 14:34:58 +08:00
fit2bot
f0d1279a42 perf: 修改user session 权限判断 (#13019)
Co-authored-by: feng <1304903146@qq.com>
2024-04-15 11:26:22 +08:00
halo
140118c9c6 perf: 更新copyright年份 2024-04-15 10:33:45 +08:00
wangruidong
637b9b1b15 perf: 申请工单-指定账号信息优化 2024-04-12 13:26:23 +08:00
Aaron3S
969069dde0 feat: receptor 中添加环境变量 2024-04-12 13:24:54 +08:00
Jiangweidong
84a71c8b3a perf: 火山引擎翻译 2024-04-12 13:24:32 +08:00
fit2bot
f3bd727c32 perf: 改密失败发给收件人 (#13009)
Co-authored-by: feng <1304903146@qq.com>
2024-04-12 11:53:47 +08:00
Aaron3S
2ac87e4ad6 feat: 修改重复的删除目录的逻辑 2024-04-12 11:35:51 +08:00
fit2bot
3740a4ad6f fix: 开启仅一台设置登录 退出失败 (#13007)
Co-authored-by: feng <1304903146@qq.com>
2024-04-12 11:16:58 +08:00
fit2bot
3bc8db7c3d fix: 改密任务记录搜索失败 (#13006)
Co-authored-by: feng <1304903146@qq.com>
2024-04-12 11:02:47 +08:00
fit2bot
f3d19ad9f4 fix: 【Lark】绑定时,一些报错信息优化 (#13004)
Co-authored-by: feng <1304903146@qq.com>
2024-04-12 10:39:49 +08:00
Bai
d2396afdd5 fix: User my assets sorted by connectivity did not take effect 2024-04-12 10:39:34 +08:00
Eric
43f9c07838 perf: 优化任务日志输出 2024-04-11 22:27:44 +08:00
Aaron3S
6052306c04 feat: ansible receptor kill 进程 2024-04-11 22:26:01 +08:00
Aaron3S
6a12bc39e9 feat: ansible receptor 适配文件上传 2024-04-11 22:22:29 +08:00
Bai
3f67b40975 fix: Export excel file can running instructions(csv no need deal) 2024-04-11 20:37:17 +08:00
fit2bot
0adc854721 perf: 优化审计台命令记录代码 (#12998)
Co-authored-by: feng <1304903146@qq.com>
2024-04-11 18:32:00 +08:00
fit2bot
ab76745a9f perf: 优化审计台仪表盘命令记录总数统计数据库和所有es数据 (#12997)
Co-authored-by: feng <1304903146@qq.com>
2024-04-11 18:29:02 +08:00
Aaron3S
574639d5e1 feat: 支持 ansible receptor private 方式认证, 支持运行完成工作空间清理 2024-04-11 17:51:22 +08:00
fit2bot
fa5d9d3df4 fix: 二级审批通过,一级审批人员查看不到工单 (#12993)
Co-authored-by: feng <1304903146@qq.com>
2024-04-11 16:35:00 +08:00
Aaron3S
0c31925131 feat: 设置默认的 ansible 配置文件 2024-04-11 15:10:39 +08:00
wangruidong
94b5d8b9e9 perf: 处理停止任务异常情况 2024-04-11 14:25:40 +08:00
Bai
bffc9f4b1d fix: Fix session Duration label 2024-04-11 11:00:46 +08:00
wangruidong
6b5d18222e fix: 全局组织-组织角色用户数量不对 2024-04-10 18:20:05 +08:00
Aaron3S
2b05fd5276 fix: 修复 ansible receptor playbook 无法执行的问题 2024-04-10 18:18:32 +08:00
fit2bot
3e46d72ba3 fix: 修复lark登录 Backend错误问题 (#12981)
Co-authored-by: feng <1304903146@qq.com>
2024-04-10 17:07:48 +08:00
feng
6502adb772 perf: 切换zh hant 2024-04-10 14:39:58 +08:00
fit2bot
a8112c86e3 feat: 全面修改 ansible 执行方式为 receptor (#12975)
* feat: 修复 receptor kill job  的问题

* feat: 全面修改 ansible 执行方式为 receptor

---------

Co-authored-by: Aaron3S <chenyang@fit2cloud.com>
2024-04-10 11:35:38 +08:00
wangruidong
8911c9c649 fix: Luna引导下载版本更新 2024-04-09 20:10:30 +08:00
Bai
3b70b4cf9e feat: LDAP User Auth support cache user_dn 2024-04-09 20:09:50 +08:00
wangruidong
1e0ea3905e fix: 忘记密码短信验证码过期 2024-04-09 20:05:34 +08:00
fit2bot
79f8480ae4 perf: core celery 不做报警 (#12970)
Co-authored-by: feng <1304903146@qq.com>
2024-04-09 17:07:48 +08:00
Bai
dec502e025 perf: Update user orgs roles 2024-04-09 16:52:11 +08:00
Aaron3S
c7b5cc7d89 feat: 暂时注释ansible runner write pid 逻辑 2024-04-09 16:46:56 +08:00
Aaron3S
bc76ce50e1 feat: 修改 receptor 启动参数 2024-04-09 15:59:14 +08:00
Bai
be90bf6b28 perf: Update user orgs roles 2024-04-09 15:43:27 +08:00
hzhfit2cloud
dfa68d1ca8 支持中文繁体 2024-04-09 15:18:36 +08:00
hzhfit2cloud
0237edf6c1 支持中文繁体 2024-04-09 15:18:36 +08:00
吴小白
6a87221c2a fix: 修正构建错误 2024-04-09 10:11:04 +08:00
ibuler
f0e87ef3f8 perf: rdp token 复用
perf: connection token
2024-04-08 19:03:47 +08:00
fit2bot
cd19a276c9 fix: 修复工单申请人过滤问题 (#12957)
Co-authored-by: feng <1304903146@qq.com>
2024-04-08 18:56:59 +08:00
jiangweidong
5ea4bba676 perf: 优化资产修改激活状态记录操作日志 2024-04-08 18:52:46 +08:00
Bryan
8c93d419fe Merge pull request #12956 from jumpserver/revert-12949-dev
Revert "feat: 支持中文繁体"
2024-04-08 18:05:45 +08:00
Bryan
2530827d07 Revert "feat: 支持中文繁体" 2024-04-08 18:04:38 +08:00
Bryan
8e54c446bc Merge pull request #12949 from elf168/dev
feat: 支持中文繁体
2024-04-08 18:02:31 +08:00
Bryan
3456e9ac5b Merge branch 'dev' into dev 2024-04-08 18:01:55 +08:00
fit2bot
689f858f97 feat: 支持 ansible 沙盒运行 (#12953)
* feat: 支持 ansible 沙盒运行

* feat: 修改 receptor sock 默认路径

* feat: 增加 adhoc 执行命令的 local connection 权限

---------

Co-authored-by: Aaron3S <chenyang@fit2cloud.com>
Co-authored-by: Bai <baijiangjie@gmail.com>
2024-04-08 17:54:34 +08:00
jiangweidong
93eebd7876 perf: 依赖包去掉多余的内容 2024-04-08 17:38:49 +08:00
jiangweidong
82cc21ef59 perf: 增加火山引擎依赖包volcengine-python-sdk 2024-04-08 17:38:49 +08:00
wangruidong
e61f9efbf2 perf: 内置平台置顶 2024-04-08 16:33:44 +08:00
Bai
45bac09dc7 perf: ROOT Org show orgs-and-roles in user-detail page 2024-04-08 14:00:57 +08:00
Eddie
989a970a7c 簡轉繁 2024-04-07 10:57:48 +00:00
Eddie
0296df0480 簡轉繁 2024-04-07 10:31:04 +00:00
wangruidong
9776d35140 perf: 批量上传添加权限校验 2024-04-07 15:49:41 +08:00
fit2bot
0aeea414f5 fix: 支持 SSO 用户登录时校验 (#12923)
Co-authored-by: feng <1304903146@qq.com>
2024-04-07 14:57:38 +08:00
Bai
9817154234 perf: 优化所有View默认排序规则(name) 2024-04-03 19:10:34 +08:00
Bai
39ae14877b perf: 优化所有View默认排序规则(name) 2024-04-03 18:33:00 +08:00
Bai
9c238a9147 perf: 优化所有View默认排序规则(name) 2024-04-03 18:12:15 +08:00
fit2bot
42d7e983e4 perf: 翻译 (#12937)
Co-authored-by: feng <1304903146@qq.com>
2024-04-03 16:53:08 +08:00
fit2bot
611d0b71e8 fix: 修复用户下线失败问题 SESSION_EXPIRE_AT_BROWSER_CLOSE 可配置 (#12936)
Co-authored-by: feng <1304903146@qq.com>
2024-04-03 16:41:37 +08:00
Bai
d78d55091c fix: 修复过滤用户组织角色不生效的问题 2024-04-03 15:52:52 +08:00
ibuler
3b8aab8c25 perf: 修改 export 使用的 serializer 2024-04-02 19:15:48 +08:00
Eric
2f16bdc4be perf: 优化针对低版本 ssh 版本的任务 2024-04-02 19:01:21 +08:00
wangruidong
22d70eb416 fix: 华为交换机执行快捷命令报错 2024-04-02 18:48:40 +08:00
wangruidong
afa1ba4f6b fix: 统一成模板 2024-04-02 17:21:47 +08:00
ibuler
39d3e5477c perf: migrate label model with the id 2024-04-02 16:47:38 +08:00
fit2bot
d499b94e04 fix: gpt 配置取消长度限制 (#12907)
Co-authored-by: feng <1304903146@qq.com>
2024-03-29 18:53:24 +08:00
fit2bot
7a6468530f fix: 修复测试rdp资产可连接性时使用的python解释器路径不对问题 (#12902)
Co-authored-by: feng <1304903146@qq.com>
2024-03-29 16:09:42 +08:00
fit2bot
02893c2a2b perf: 翻译 (#12899)
Co-authored-by: feng <1304903146@qq.com>
2024-03-29 15:18:54 +08:00
Eric
4470b68de9 perf: 优化代码,避免录像下载异常 2024-03-29 11:37:47 +08:00
wangruidong
d3d89b0853 perf: 去掉工单重新打开状态 2024-03-29 11:06:51 +08:00
wangruidong
681cecc52b perf: 优化所有资源列表的默认排序规则 2024-03-29 10:48:54 +08:00
fit2bot
3336a4526b fix: 解决beat无法在redis-ssl下运行报错的问题 (#12893)
Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>
2024-03-28 18:44:52 +08:00
feng
bca0863952 fix: 【标签】标签绑定资源api需校验正确的uuid 2024-03-28 18:43:00 +08:00
fit2bot
bf1a29fac2 fix: 修改content type 权限 (#12890)
Co-authored-by: feng <1304903146@qq.com>
2024-03-28 15:22:26 +08:00
wangruidong
47ceaf967c fix: 查看作业命令任务执行结果添加用户隔离 2024-03-28 14:42:08 +08:00
feng
00c5b3c0a2 fix: 【资产登录】属性为标签时,规则不生效 2024-03-28 14:36:17 +08:00
fit2bot
3aeadc2f03 fix: 修复收藏文件夹中的资产时不时莫名的丢失 (#12886)
Co-authored-by: feng <1304903146@qq.com>
2024-03-27 16:04:16 +08:00
wangruidong
f0cbd77310 perf: 优化资产、网域、网关的操作体验 2024-03-27 16:02:08 +08:00
fit2bot
f11852c60d perf: lark logo (#12878)
Co-authored-by: feng <1304903146@qq.com>
2024-03-26 17:46:16 +08:00
feng
8b870678df perf: 翻译 2024-03-26 17:34:27 +08:00
feng
470a088a9f feat: 拆分 feishu lark 2024-03-26 17:10:25 +08:00
jiangweidong
ccd4f3ada4 fix: tcpdump想捕捉所有ip时,空ip被解析成0.0.0.0,导致捕捉不到的问题 2024-03-22 17:31:03 +08:00
ibuler
ae7a562b85 fix: ansible playbook render and run in localhost 2024-03-22 17:06:19 +08:00
wangruidong
be6d8566da perf: 去掉enabled字段默认值 2024-03-22 16:02:25 +08:00
wangruidong
f264bf03ff feat: 支持开启、关闭定时任务执行 2024-03-21 18:23:41 +08:00
fit2bot
02c2ee8c54 perf: 登录界面文案优化 (#12849)
Co-authored-by: feng <1304903146@qq.com>
2024-03-21 16:21:44 +08:00
Eric
d71374ca8a perf: 优化代码 2024-03-21 16:08:34 +08:00
Eric
0589f7fe33 perf: 支持发布机卸载远程应用 2024-03-21 16:08:34 +08:00
fit2bot
a5e8792092 perf: 翻译 (#12847)
Co-authored-by: feng <1304903146@qq.com>
2024-03-21 11:32:23 +08:00
fit2bot
15acfe84b0 perf: 改密记录可查看密文 (#12821)
* perf: 改密记录可查看密文

* perf: 自动化任务错误处理

* feat: 改密记录可批量重试 新增更多过滤选项

* perf: 改密任务失败添加消息通知

---------

Co-authored-by: feng <1304903146@qq.com>
2024-03-21 11:05:04 +08:00
jiangweidong
08b483140c fix: 解决FTP审计文件无法清理的问题 2024-03-20 19:06:30 +08:00
Bai
cf1e048328 perf: 优化 Session 支持 duration 字段 2024-03-20 15:51:33 +08:00
wangruidong
a6228f145d fix: 作业命令用户隔离执行 2024-03-19 11:25:46 +08:00
ibuler
b6ab3df038 perf: 优化 celery task log 权限控制 2024-03-18 19:00:04 +08:00
ibuler
e9f591b33b perf: 优化 ops task 2024-03-18 18:54:48 +08:00
wangruidong
90d4914280 perf: 删除job-execution/asset-detail接口 2024-03-18 18:54:27 +08:00
wangruidong
80a506e99f perf:LDAP报错信息不对 2024-03-18 15:56:57 +08:00
Eric
d8a891a7d7 perf: 支持发布机仅初始化配置 2024-03-18 15:52:42 +08:00
wangruidong
d71c41e384 perf: 提高短信发送任务优先级 2024-03-18 15:50:00 +08:00
fit2bot
bb27ff7f8a fix: 批量上传文件关闭作业中心配置后上传会报错 (#12814)
* fix: 批量上传文件关闭作业中心配置后上传会报错

* fix: format

---------

Co-authored-by: wangruidong <940853815@qq.com>
Co-authored-by: Bai <baijiangjie@gmail.com>
2024-03-18 15:49:13 +08:00
wangruidong
0671e56d65 fix: Another user can use this job id to spoof both the file name and
its contents
2024-03-18 14:22:17 +08:00
feng
73a4ce0943 perf: 优化user secret key 处理逻辑 2024-03-15 11:39:59 +08:00
fit2bot
902fac61e9 perf: playbook api 去掉多余的rbac_perms (#12813)
Co-authored-by: feng <1304903146@qq.com>
2024-03-14 14:27:31 +08:00
wangruidong
dcd7f9f7e6 perf: 支持终断批量快捷命令执行的任务 2024-03-14 14:20:47 +08:00
Bai
80035e7cb6 fix: 修复 Playbook 脚本文件问题 2024-03-14 10:26:30 +08:00
Eric
e2d14f5e4b perf: 支持 razor 的监控 2024-03-13 19:36:26 +08:00
刘瑞斌
a27cc22596 chore: edit readme_en 2024-03-13 15:47:04 +08:00
ibuler
72362274ce perf: 优化 console_orgs 的选择问题 2024-03-13 10:58:30 +08:00
feng
cfb1d306a3 perf: 优化user session 逻辑 2024-03-13 10:58:03 +08:00
wangruidong
e5cb99d682 perf: 登录页面排版优化 2024-03-12 17:05:03 +08:00
fit2bot
cbd812ab5f feat: 自定义footer (#12795)
Co-authored-by: feng <1304903146@qq.com>
Co-authored-by: feng626 <57284900+feng626@users.noreply.github.com>
2024-03-12 14:36:20 +08:00
Bai
d0117b5a91 perf: 优化邮箱校验逻辑 2024-03-11 18:41:50 +08:00
jiangweidong
afe3777895 perf: 减少一次邮箱的判断 2024-03-11 18:41:50 +08:00
jiangweidong
e45676edc4 perf: 优化获取邮箱后缀代码位置 2024-03-11 18:41:50 +08:00
jiangweidong
60e4b19d07 perf: 优化三方登录创建的用户邮箱会校验,非法邮箱会重置成默认格式 2024-03-11 18:41:50 +08:00
Bai
86d76c53d6 perf: 优化 MongoDB 数据库支持 authSource 认证数据库配置 2024-03-11 18:27:57 +08:00
fit2bot
b50f1a662d fix: 优化手动输入的账号username遵循登录资产的ACL控制 (#12774)
Co-authored-by: feng <1304903146@qq.com>
2024-03-11 15:10:51 +08:00
fit2bot
b3e4c10bc2 perf: 用户个人设置操作记录翻译 (#12788)
Co-authored-by: feng <1304903146@qq.com>
2024-03-11 15:10:15 +08:00
Bai
ba11e646d6 fix: 修复 redis lock 导致 celery 异步任务卡住不执行的问题 2024-03-11 14:12:18 +08:00
wangruidong
6de524c797 perf: 不满足自动登录勾选条件时从禁用修改为隐藏 2024-03-08 18:35:18 +08:00
Bai
2e067a7950 perf: 优化升级 django-celery-beat==2.6.0; 删除之前修复的 celery-beat 的代码 2024-03-08 17:47:07 +08:00
fit2bot
a3658136e2 feat: 支持配置资产连接默认打开方式 (#12781)
Co-authored-by: feng <1304903146@qq.com>
2024-03-08 10:47:18 +08:00
Bai
4108415894 perf: 优化 issue 提交模版 2024-03-08 10:33:04 +08:00
Bai
ae2fdff9a7 perf: 优化 issue 提交模版 2024-03-07 18:58:28 +08:00
Bryan
b9422c096e fix: 修复连接 Token 时报错的问题((1139, "Got error empty (sub)expression from regexp")) (#12768) 2024-03-07 12:37:33 +08:00
fit2bot
b3e73605b0 perf: 创建网域时资产不用必选 (#12766)
Co-authored-by: feng <1304903146@qq.com>
2024-03-07 11:20:40 +08:00
fit2bot
6c89349194 perf: 优化会话 命令记录 分片删除 (#12763)
Co-authored-by: feng <1304903146@qq.com>
2024-03-06 15:22:55 +08:00
jiangweidong
670eac49b6 perf: 优化oauth2登录未激活用户时,会重复跳转登录问题 2024-03-06 15:03:58 +08:00
feng
a7a099f290 perf: 支持配置文件配置限制的最大数量 2024-03-06 14:53:48 +08:00
feng
5157514c62 perf: 优化会话清理任务使用分片删除过期的会话和命令 2024-03-06 14:50:19 +08:00
jiangweidong
533d2ab98a perf: 优化自定义短信测试总是成功的问题 2024-03-06 14:32:58 +08:00
wangruidong
40730b741d fix: 个别页面搜索不生效的问题 2024-03-05 11:21:20 +08:00
halo
786cb23f98 perf: 优化ansible_winrm执行超时时间 2024-03-01 17:02:48 +08:00
fit2bot
518ae3fa09 perf: 自动化资产探活支持Telnet方式 (#12728)
Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>
2024-03-01 15:05:34 +08:00
ibuler
18707d365b perf: 优化标签搜索资产使用的关系 2024-03-01 15:05:01 +08:00
Bryan
7ba24293d1 Merge pull request #12736 from jumpserver/pr@dev@master_fix
fix: 解决冲突
2024-02-29 16:38:43 +08:00
Bai
f10114c9ed fix: 解决冲突 2024-02-29 16:37:10 +08:00
Bryan
cf31cbfb07 Merge pull request #12729 from jumpserver/dev
v3.10.4
2024-02-29 16:19:59 +08:00
feng
f0ffa2408d fix: 哨兵redis 密码里有@ 无法连接 2024-02-29 16:19:33 +08:00
jiangweidong
b557e264bc fix: 账号备份选择SFTP有多个时,重复编码password会导致任务异常 2024-02-29 16:10:21 +08:00
wangruidong
457d2b2359 fix: 作业管理资产根据标签过滤获取不对 2024-02-28 15:50:46 +05:00
Bai
8ebc99339b perf: 更新 poetry.lock 文件 2024-02-28 07:22:16 +05:00
wangruidong
e71e335f5c fix: 终断任务时接口报错 2024-02-27 16:22:06 +05:00
masix
7517e77af9 指定lxml版本为4.9.3
修复SAML2认证回调/core/auth/saml2/callback/时偶发出现http 502错误
2024-02-27 08:16:10 +05:00
wangruidong
889cdca3b0 fix: 操作日志资源类型搜索无效 2024-02-26 16:36:05 +05:00
wangruidong
4cfd1bc047 fix: 远程应用列表接口报错 2024-02-26 16:03:34 +05:00
Eric
fc0891ceee perf: 会话生命周期日志翻译 2024-02-26 15:33:11 +05:00
feng
cea16fc41f perf: 命令上传 取消input长度限制 2024-02-26 14:29:13 +05:00
fit2bot
4b7c0b8437 perf: 用户列表翻译超级管理员,组织管理员 2024-02-26 14:27:19 +05:00
fit2bot
09432b01a7 fix: 自动化任务密钥为 None 报错 (#12709)
Co-authored-by: feng <1304903146@qq.com>
2024-02-26 14:47:19 +08:00
wangruidong
d7f8ba58ad perf: 作业日志添加任务类型 2024-02-26 13:43:49 +08:00
吴小白
f660c38d80 fix: 添加 psycopg2 缺失依赖 2024-02-22 19:08:18 +08:00
wangruidong
edf0630cef fix: 用户列表导出优化 2024-02-22 17:44:56 +08:00
wangruidong
c4342567ba fix: 远程应用README国际化 2024-02-22 16:11:43 +08:00
fit2bot
d4e53be7ce perf: 修改core celery 组件状态 (#12684)
Co-authored-by: feng <1304903146@qq.com>
2024-02-22 14:47:26 +08:00
wangruidong
d4721e90d5 fix: LDAP用户导入会超时 2024-02-22 11:37:30 +08:00
jiangweidong
bb6c6c8f6a perf: jms-storage==0.0.56 2024-02-22 11:36:33 +08:00
fit2bot
753ab77c46 perf: 关闭页面等待ws的最大重连时间改为6秒 (#12677)
Co-authored-by: feng <1304903146@qq.com>
2024-02-21 17:51:06 +08:00
jiangweidong
ba127c506d feat: 支持工单链接直接免密审批 2024-02-21 11:39:01 +08:00
fit2bot
c21ca70158 perf: 账号收集添加资产名称模糊搜索 (#12673)
Co-authored-by: feng <1304903146@qq.com>
2024-02-20 18:42:11 +08:00
wangruidong
135fb7c6f9 perf: 终断批量快捷命令执行的任务 2024-02-20 15:09:39 +08:00
feng
f592f19b08 perf: 自动化任务按优先级默认排序 2024-02-19 18:19:14 +08:00
fit2bot
dce68cd011 perf: 授权用户不显示组件用户 (#12664)
Co-authored-by: feng <1304903146@qq.com>
2024-02-19 14:48:31 +08:00
fit2bot
d7b1903fb7 perf: 修改登录页面定期 check 的时间 (#12660)
Co-authored-by: feng <1304903146@qq.com>
2024-02-19 10:57:40 +08:00
feng
6e506e3146 fix: 【登录超时】修复登录页面提示 <登录超时,请重新登录> 问题 2024-02-19 10:21:13 +08:00
fit2bot
58d30e7f85 perf: 记录会话活动日志 (#12523)
* perf: 更新会话生命周期日志

* perf: 优化错误原因

* perf: 增加错误类型

---------

Co-authored-by: Eric <xplzv@126.com>
2024-02-06 18:28:31 +08:00
wangruidong
2062778ab8 fix: 资产登录未发送提醒 2024-02-06 15:24:41 +08:00
wangruidong
eaca296bd0 perf: 支持改密日志记录保留天数 2024-02-05 18:09:45 +08:00
Bai
1051c6af04 fix: 修复用户登录后仪表盘显示403的问题(用户在非Default组织下是组织管理员权限) 2024-02-05 16:52:09 +08:00
wangruidong
aa69353474 perf: 支持远程应用描述文案的国际化 2024-02-05 10:46:47 +08:00
jiangweidong
d1f31f078b perf: 账号支持批量更新 2024-02-04 17:28:31 +08:00
ibuler
be80663436 perf: 优化日志显示避免太长 2024-02-04 17:23:37 +08:00
wangruidong
1ae363d6bd perf: MFA认证App支持自定义下载二维码 2024-02-04 17:19:04 +08:00
fit2bot
31b0d345ad perf: 使用新的钉钉登录接口 (#12635)
* perf: 暂存

* perf: 使用新的钉钉登录接口

---------

Co-authored-by: halo <wuyihuangw@gmail.com>
2024-02-04 17:05:11 +08:00
Bai
cabda0a32f perf: 修改依赖 2024-02-04 17:02:07 +08:00
wangruidong
f606dd8920 perf: 增加国际电话区号选择 2024-02-04 14:52:15 +08:00
wangruidong
973df0360c fix: 控制台-仪表盘会话用户,资产排名不对 2024-02-04 11:42:58 +08:00
wangruidong
f9f1d96674 fix: 资产过期消息提示发送失败 2024-02-04 11:42:15 +08:00
wangruidong
0edad24d5d fix: 资产过期消息提示发送失败 2024-02-04 11:41:48 +08:00
feng
8cb74976e1 perf: 优化用户session 会话过期 2024-02-02 17:52:50 +08:00
wangruidong
279109c9a6 perf: 使用winrm协议批量上传文件 2024-01-30 11:12:24 +08:00
jiangweidong
8c7ba4a497 perf: 优化工单审批时间不准确问题 2024-01-29 16:40:03 +08:00
feng
9cc048267b feat: 批量测试账号可连接性 2024-01-29 16:39:24 +08:00
wangruidong
78d0e3f485 perf: 使用winrm协议执行快捷命令 2024-01-29 11:21:30 +08:00
wangruidong
8aefacd7ed perf: 安全模式返回授权的资产 2024-01-25 17:07:37 +08:00
ibuler
ef8db68db1 perf: 优化组织刷新资源 2024-01-25 14:48:15 +08:00
fit2bot
00256f86df perf: OAuth2协议获取token支持配置json或者data (#12602)
* perf: OAuth2协议获取token支持配置json或者data

* perf: 优化注释

---------

Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>
2024-01-25 14:00:13 +08:00
ibuler
77569c554b perf: 去掉资产查询的默认排序 2024-01-25 13:49:49 +08:00
jiangweidong
7897462e32 perf: jms_storage==0.0.55 2024-01-25 13:48:34 +08:00
Bai
aee11827c4 feat: 修改 jms-storage 0.0.55 2024-01-25 11:48:16 +08:00
fit2bot
a6bf592046 perf: 翻译 (#12600)
Co-authored-by: feng <1304903146@qq.com>
2024-01-24 19:50:05 +08:00
Bryan
1dea424104 Revert "fix: 修复 OAuth2 认证时 POST 方式获取 access_token API 使用 json 传递数据" 2024-01-24 18:23:29 +08:00
Bai
1f5554d945 fix: 修复 OAuth2 认证时 POST 方式获取 access_token API 使用 json 传递数据 2024-01-24 16:53:11 +08:00
ibuler
0303408be8 perf: 优化授权树的刷新,同步解决同步异步的问题 2024-01-24 16:44:19 +08:00
fit2bot
f5802ace02 fix: oracle 用户是sysdba类型的 改密推送 验证账号可连接性失败 (#12596)
Co-authored-by: feng <1304903146@qq.com>
2024-01-24 16:39:43 +08:00
fit2bot
8bde45d9dc perf: 改密添加最后汇总信息 (#12595)
Co-authored-by: feng <1304903146@qq.com>
2024-01-24 16:20:44 +08:00
ibuler
e8bbc44647 perf: 优化授权的资产,速度快 10 倍 2024-01-24 16:00:18 +08:00
ibuler
34aa48d18c fix: 修复定时检测用户是否活跃任务无法执行的问题 2024-01-23 09:29:00 +00:00
ibuler
1f1c1a9157 fix: 修复定时检测用户是否活跃任务无法执行的问题 2024-01-23 09:28:38 +00:00
jiangweidong
7aa6613e69 perf: 更新jms-storage版本 2024-01-23 03:42:59 +00:00
fit2bot
503034299e fix: windows 收集账号 收集失败 (#12583)
Co-authored-by: feng <1304903146@qq.com>
2024-01-23 11:07:56 +08:00
feng
6c9d271ae1 fix: redis 密码有特殊字符celery beat启动失败 2024-01-22 06:18:34 +00:00
Bai
6ff852e225 perf: 修复 Count 时没有去重的问题 2024-01-22 06:16:25 +00:00
fit2bot
0c74e92bfb perf: 优化 labels 在 json field 中的筛选 (#12577)
* perf: 优化 labels 在 json field 中的筛选

* perf: 修改 labels 搜索

---------

Co-authored-by: ibuler <ibuler@qq.com>
2024-01-21 23:36:18 -04:00
wangruidong
3853d0bcc6 fix:绑定的端点Default下载RDP文件中的地址是空的 2024-01-19 10:38:52 +00:00
feng
cd0348cca1 perf: 优化任务列表执行时间 性能快了10倍 2024-01-19 10:33:41 +00:00
Eric
ce94348d45 perf: ignore some err 2024-01-19 12:56:46 +08:00
Eric
f74f8b7d8c perf: 优化 delay_run 执行 2024-01-19 12:56:46 +08:00
Bai
dc79346bdc perf: 修复 Count 时没有去重的问题 2024-01-19 12:54:14 +08:00
wangruidong
37a0d831da perf:ldap sync add no user msg 2024-01-18 10:31:53 +00:00
feng
e509568fe5 fix: redis 密码有特殊字符celery beat启动失败 2024-01-18 10:30:00 +00:00
Bryan
baa75dc735 Merge pull request #12566 from jumpserver/master
v3.10.2
2024-01-17 07:34:28 -04:00
Bryan
8a9f0436b8 Merge pull request #12565 from jumpserver/dev
v3.10.2
2024-01-17 07:23:30 -04:00
fit2bot
2c2c3eb21a perf: 翻译 (#12564)
Co-authored-by: feng <1304903146@qq.com>
2024-01-17 19:18:00 +08:00
fit2bot
18681d1f50 perf: 连接k8s 添加错误处理 (#12563)
Co-authored-by: feng <1304903146@qq.com>
2024-01-17 18:41:29 +08:00
feng
86ef984c02 perf: 查看授权用户 不展示组件用户 2024-01-17 03:13:39 -07:00
feng
e4d8ce097a fix: 创建资产失败 2024-01-17 18:05:30 +08:00
Eric
ae68241812 perf: 修复录像在线播放问题 2024-01-17 00:02:00 -07:00
feng
13d4177531 fix: 工单批量更新没有权限 2024-01-16 20:01:36 -07:00
feng
641e75a905 fix: 用户组列表 用户数量不准确 2024-01-16 02:19:36 -07:00
ibuler
a2d6e41816 perf: labels getter and setter for inherite model 2024-01-16 15:00:46 +08:00
wangruidong
6cd3672604 fix: sync LDAP notification error 2024-01-15 23:08:55 -07:00
Bai
3c3c1499b7 perf: Add requirement for exchangelib==5.1.0 2024-01-15 22:55:58 -07:00
fit2bot
e29e51121d perf: 优化账号版本计算策略 (#12547)
Co-authored-by: feng <1304903146@qq.com>
2024-01-16 11:33:21 +08:00
ibuler
fabee37e9e fix: user permed type tree recurse root node 2024-01-15 19:50:14 +08:00
ibuler
2994ea6f68 perf: revert asset labels api 2024-01-15 19:49:55 +08:00
halo
644eada8a1 fix: 解决openssh低版本时测试可连接失败问题 2024-01-15 10:39:34 +08:00
wangruidong
000a3038e1 fix: 终端输入错误的MFA无日志记录 2024-01-14 18:32:33 -08:00
ibuler
9c8635b230 perf: 优化授权资产 api,很多资产也不怕 2024-01-14 18:30:57 -08:00
wangruidong
e428eb351b feat: 同步ldap用户消息通知 2024-01-12 11:17:23 +05:00
fit2bot
1275087f19 perf: 添加LC_ALL环境变量C.UTF-8 解决ansible无法初始化首选语言环境问题 (#12530)
Co-authored-by: feng <1304903146@qq.com>
2024-01-12 11:21:27 +08:00
feng
311c01242b fix: 分页后排序失效 2024-01-12 10:18:05 +08:00
ibuler
bab5b67c52 fix: 修复自定义 applet 导入的 bug 2024-01-11 15:41:10 +05:00
fit2bot
3eb0b768a6 fix: 改密账号更新日期没有更新 (#12524)
Co-authored-by: feng <1304903146@qq.com>
2024-01-11 16:57:23 +07:00
fit2bot
6dcc74a388 fix: 账号备份只导出一条记录 (#12517)
Co-authored-by: wangruidong <940853815@qq.com>
2024-01-10 18:52:45 +08:00
ibuler
2b15fc5e8b perf: 兼用处理一下 tree 2024-01-10 11:23:16 +05:00
wangruidong
df655f304a fix: 登录日志不显示 2024-01-10 11:21:29 +05:00
Bai
25223719cb perf: 支持配置 RADIUS_ATTRIBUTES 属性 2024-01-09 18:36:16 +08:00
jiangweidong
814dbeb749 fix: 解决手机号加密导致忘记密码判断总是失败问题 2024-01-08 16:24:28 +05:00
jiangweidong
630bb56601 fix: 解决手机号加密导致忘记密码判断总是失败问题 2024-01-08 16:24:28 +05:00
ibuler
496b72aaee perf: 优化导入错误 2024-01-08 17:44:49 +08:00
吴小白
b57e943990 build(deps): 更新依赖版本 2024-01-08 17:03:08 +08:00
jiangweidong
b4c1dd2944 perf: slack消息解析优化-mistune升级 2024-01-08 12:35:26 +05:00
jiangweidong
9ede3670a7 perf: 邮箱支持exchange协议 2024-01-08 12:35:01 +05:00
Eric
2a29cd0e70 perf: 使用 nginx 处理静态资源 2024-01-03 17:20:14 +08:00
ibuler
15ac81a422 perf: 优化标签绑定,仅绑定到资产上 2024-01-03 17:08:15 +08:00
fit2bot
eb5a53b91b perf: 翻译 (#12487)
Co-authored-by: feng <1304903146@qq.com>
2024-01-03 11:25:45 +08:00
feng
4dd72b109f feat: 历史账号定期删除 可设置保留数量 2024-01-03 07:52:24 +05:00
fit2bot
2fcbfe9f21 perf: 优化 tree nodes 避免太慢 (#12472)
* perf: 优化 tree nodes 避免太慢

perf: 优化大量资产上的资产数生成比较慢

perf: 优化节点树

perf: 修改 tree nooooooooodes

perf: 优化一些 api 比较大的问题

perf: 优化平台 api

perf: 分页返回同步树

perf: 优化节点树

perf: 深度优化节点树

* perf: remove unused config

---------

Co-authored-by: ibuler <ibuler@qq.com>
2024-01-02 16:11:56 +08:00
wangruidong
e80a0e41ba fix: 同步LDAP用户时,用户组只移除LDAP同步过来的 2024-01-02 12:04:25 +05:00
吴小白
7cdba3ef38 build(deps): bump pyfreerdp from 0.0.1 to 0.0.2 2024-01-02 08:13:28 +05:00
feng
2d6e815b3d fix: 如 Redis密码信息包含特殊字符时,服务启动失败 2024-01-02 08:11:12 +05:00
Bryan
38642024be Update README.md (#12463) 2023-12-29 16:23:02 +08:00
faming.zhou
257ee205ac fix: UNION 的类型 character varying 和 uuid 不匹配 2023-12-29 12:14:31 +05:00
Bryan
a9620a3cbe Merge pull request #12461 from jumpserver/master
v3.10.1
2023-12-29 11:33:05 +05:00
Bryan
769e7dc8a0 Merge pull request #12460 from jumpserver/dev
v3.10.1
2023-12-29 11:20:36 +05:00
feng
4b961a626b perf: 用户组列表中的用户添加 is_service_account 属性 2023-12-29 11:11:19 +05:00
Bryan
2a70449411 Merge pull request #12458 from jumpserver/dev
v3.10.1
2023-12-29 11:01:13 +05:00
wangruidong
653a6752b6 fix: 用户组删除用户权限问题 2023-12-29 13:36:39 +08:00
wangruidong
32255c6077 fix: 更新用户组权限问题 2023-12-29 07:42:10 +05:00
feng626
7a708156ee Revert "fix: 特定key paramiko 测试可连接性失败"
This reverts commit a4d0e3fd17.
2023-12-28 14:34:42 +05:00
Bai
b72a446bbd fix: 修复label关联用户时不显示服务账号 2023-12-28 14:21:38 +05:00
feng
219fad9b62 fix: 账号备份密码如 t08\x08fIE 备份失败 2023-12-28 13:53:57 +05:00
Bai
6c1c8b241e perf: 优化资产管理中的标签权限位不显示 2023-12-28 15:27:20 +08:00
feng
a4d0e3fd17 fix: 特定key paramiko 测试可连接性失败 2023-12-27 13:13:03 +05:00
fit2bot
af44ffab0a fix: 资产账号不存在时 同步删除资产账号任务报错 (#12437)
Co-authored-by: feng <1304903146@qq.com>
2023-12-27 14:39:11 +08:00
fit2bot
a09b7b29e2 fix: 【账号收集】账号收集任务,关闭同步到资产时,只收集了一个资产的账号,其他资产的账号未收集 (#12428)
Co-authored-by: feng <1304903146@qq.com>
2023-12-26 16:05:28 +08:00
wangruidong
8f67922c80 perf: 资产登录提醒和用户登录提醒能显示用户名称 2023-12-26 12:54:28 +05:00
feng
f1db5d6f44 perf: 重写GenericForeignKey 2023-12-26 12:51:09 +05:00
fit2bot
33ea5eb41f perf: 资产可以通过address 排序 (#12427)
Co-authored-by: feng <1304903146@qq.com>
2023-12-26 14:23:04 +08:00
fit2bot
48bcbc6c53 perf: 翻译 (#12426)
Co-authored-by: feng <1304903146@qq.com>
2023-12-26 14:16:11 +08:00
Bai
3e090eb701 fix: 修复 连接远程应用时标签匹配失败的问题 2023-12-25 16:20:38 +05:00
Bai
6ac956c626 fix: 修复 api/docs 报错问题 2023-12-25 19:04:44 +08:00
wangruidong
edb2d1bd7b fix: 我的资产列表标签信息没有显示 2023-12-25 16:02:16 +05:00
feng
81b4909016 fix: 【用户登录会话失效问题】SESSION_COOKIE_AGE 配置不生效的问题 2023-12-25 13:10:58 +05:00
wangruidong
f6f1be423c perf: 统计任务执行结果 2023-12-22 14:18:25 +05:00
Bryan
fae5392a03 Update README.md 2023-12-22 12:30:11 +05:00
Bryan
d5224968bc Update README.md 2023-12-22 12:30:11 +05:00
feng
6565f8c0a8 perf: 在 ansible 中切换用户时 添加超时操作 2023-12-22 12:23:19 +05:00
Bryan
8df720f19e Merge pull request #12401 from jumpserver/dev
v3.10
2023-12-21 15:14:19 +05:00
ibuler
bc5494bbb0 perf: 优化 label choice 2023-12-21 16:51:36 +08:00
fit2bot
febf08629a fix: 翻译 (#12400)
Co-authored-by: feng <1304903146@qq.com>
2023-12-21 16:15:20 +08:00
fit2bot
b6774aa749 perf: 更新全局组织名字 添加唯一性校验 (#12399)
Co-authored-by: feng <1304903146@qq.com>
2023-12-21 16:07:11 +08:00
fit2bot
bc668f3e9f fix: applet 压缩包名字(1).zip时 上传失败} (#12397)
Co-authored-by: feng <1304903146@qq.com>
2023-12-21 15:42:09 +08:00
fit2bot
dc56b019b1 perf: 权限树翻译 (#12396)
Co-authored-by: feng <1304903146@qq.com>
2023-12-21 15:00:46 +08:00
ibuler
a38624d198 perf: 修改同名账号登录报错 2023-12-21 14:04:09 +08:00
ibuler
ca026040fe perf: 优化导入账号报错 2023-12-21 12:40:59 +08:00
ibuler
88b9a4d693 perf: 修改搜索 2023-12-20 17:50:40 +05:00
ibuler
4d15e46ceb perf: 修改搜索 2023-12-20 17:50:40 +05:00
fit2bot
55575e9f7f perf: 用户账号导出去除is_service_account (#12388)
Co-authored-by: feng <1304903146@qq.com>
2023-12-20 19:24:09 +08:00
wangruidong
98c9cddcbf fix: es命令记录可以看到其他资产执行的命令 2023-12-20 16:00:35 +05:00
fit2bot
9f67ba573c perf: dockerfile 添加 freerdp2-dev 依赖 (#12386)
Co-authored-by: feng <1304903146@qq.com>
2023-12-20 18:48:37 +08:00
fit2bot
533f13c634 perf: 优化创建账号密码校验逻辑 (#12383)
Co-authored-by: feng <1304903146@qq.com>
2023-12-20 16:35:36 +08:00
fit2bot
c66b1db784 fix: 自动化任务网关连接数 自定义ansible rdp 测试可连接性端口错误 (#12373)
Co-authored-by: feng <1304903146@qq.com>
2023-12-20 16:02:13 +08:00
Eric
d03ba7c391 perf: 页面配置是否启用 Vitual App 2023-12-20 13:01:50 +05:00
fit2bot
6544f8ade8 perf: 修改 labels 搜索 (#12379)
* perf: 修改标签的搜索

* perf: 修改 labels 搜索

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-12-20 14:31:03 +08:00
ibuler
ac5991fc43 perf: 修改标签的搜索 2023-12-20 10:57:58 +05:00
wangruidong
9b2b71dddc fix: 工单列表类型没有翻译 2023-12-20 10:57:29 +05:00
fit2bot
e18e019460 fix: 账号列表,添加账号模版 500 (#12375)
Co-authored-by: feng <1304903146@qq.com>
2023-12-20 11:05:42 +08:00
fit2bot
ef1875d9b5 perf: 优化工单显示 (#12368)
Co-authored-by: wangruidong <940853815@qq.com>
2023-12-19 19:06:39 +08:00
ibuler
0b7552a6ee perf: 修改 labels 绑定引起的问题 2023-12-19 16:06:05 +05:00
fit2bot
45425b11d2 perf: 优化 labels 支持多个搜索 (#12367)
Co-authored-by: ibuler <ibuler@qq.com>
2023-12-19 18:46:02 +08:00
jiangweidong
fda3e6ec9b perf: model_to_dict无法转换不可编辑字段,导致消息中有的值为None 2023-12-19 14:30:13 +05:00
huailei
2b41486f2a Merge pull request #12369 from jumpserver/pr@dev@chat_ai_test
fix: chatAI代理配置错误,服务器报错500
2023-12-19 15:42:06 +08:00
feng
59d9a3d4ec fix: chatAI代理配置错误,服务器报错500 2023-12-19 15:39:22 +08:00
wangruidong
3c7ba029dd perf: 工单显示优化 2023-12-19 12:10:34 +05:00
huailei
1335556272 Merge pull request #12366 from jumpserver/pr@dev@command
fix: 命令组模糊搜索,500
2023-12-19 15:07:50 +08:00
feng
8eab87f40d fix: 命令组模糊搜索,500 2023-12-19 15:05:35 +08:00
huailei
c441e5bb92 Merge pull request #12365 from jumpserver/pr@dev@ansible
fix: 修复ansible 任务 {{123}} 这样的密码失败问题
2023-12-19 14:59:23 +08:00
feng
da8d78f384 fix: 修复ansible 任务 {{123}} 这样的密码失败问题 2023-12-19 14:57:51 +08:00
jiangweidong
83b91cb739 perf: 优化命令禁止发送消息时,slack消息会包含html标签内容 2023-12-19 11:40:18 +05:00
fit2bot
1afad40dd3 perf: 优化 labels 绑定资源 (#12361)
* perf: 优化 labels 绑定资源

* perf: 优化 labels list 显示

* perf: add migrations

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-12-19 10:20:11 +08:00
ibuler
1358cf532f perf: 修改 labels 和 role 搜索 2023-12-18 18:23:06 +05:00
huailei
1e7f268f0c Merge pull request #12360 from jumpserver/pr@dev@translate
perf: 翻译
2023-12-18 18:38:21 +08:00
feng
d6b5590505 perf: 翻译 2023-12-18 18:36:44 +08:00
huailei
79b3b31492 Merge pull request #12358 from jumpserver/pr@dev@makemigrations
perf: 迁移文件
2023-12-18 17:46:23 +08:00
feng
4f2b3fbb43 perf: 迁移文件 2023-12-18 17:44:59 +08:00
fit2bot
1f2db65dba fix: ansible 密码支持 {{ }} {% %} (#12354)
Co-authored-by: feng <1304903146@qq.com>
2023-12-18 17:31:35 +08:00
halo
006faac326 perf: 配置xpack后logo没有修改 2023-12-18 14:51:28 +08:00
ibuler
f7fee0f430 perf: 修复标签搜索 2023-12-15 18:34:44 +08:00
fit2bot
714c44fbf4 perf: 授权创建时 通过模版创建账号 给账号添加来源 (#12345)
Co-authored-by: feng <1304903146@qq.com>
2023-12-15 18:28:48 +08:00
fit2bot
84b316e2c1 fix: 修复自动禁用用户默认排除 admin 用户 (#12346)
Co-authored-by: Bai <baijiangjie@gmail.com>
2023-12-15 18:28:24 +08:00
wangruidong
6955a3db11 perf: ldap测试登录提示优化&上产文件名长度限制 2023-12-15 18:06:47 +08:00
huailei
d92736e624 Merge pull request #12343 from jumpserver/pr@dev@perf_password_rules
perf: 优化校验密码规则 特殊字符校验
2023-12-15 17:16:04 +08:00
feng
9d0da64ea1 perf: 优化校验密码规则 特殊字符校验 2023-12-15 17:14:34 +08:00
wangruidong
b9e1d6093e perf: 翻译 2023-12-15 15:21:52 +08:00
Bai
c3820b30b8 fix: 修复远程应用连接 labels 过滤问题 2023-12-15 13:26:01 +08:00
huailei
6955fc1734 Merge pull request #12337 from jumpserver/pr@dev@prompt
perf: 修改默认prompt顺序
2023-12-15 10:57:18 +08:00
feng
32178b2344 perf: 修改默认prompt顺序 2023-12-15 10:48:04 +08:00
fit2bot
e3c0518cfb perf: 上传目标目录指定在/tmp下 (#12334)
Co-authored-by: wangruidong <940853815@qq.com>
2023-12-14 19:44:53 +08:00
jiangweidong
438e9dee2a fix: 解决第三方登录一个不存在的本地用户时,改密日志会增加的问题 2023-12-14 19:36:06 +08:00
Bai
3c9239eb09 fix: 修复 Release 应用账号的逻辑,解决首次连接远程应用可能出现没有可用账号的问题 2023-12-14 19:35:05 +08:00
Eric
81fb080c67 perf: 调整搜索字段 2023-12-14 18:28:55 +08:00
feng
6cf05435bf feat: chat prompt 2023-12-14 17:39:15 +08:00
wangruidong
65718c5a84 perf: 接口返回上传文件大小限制 2023-12-14 11:26:44 +08:00
wangruidong
27daebbe1b perf: 上传文件大小限制 2023-12-14 10:34:58 +08:00
huailei
dce1079fdc Merge pull request #12324 from jumpserver/pr@dev@perm_label
perf: 修改下线用户会话的权限位label
2023-12-13 17:39:15 +08:00
feng
d07db68426 perf: 修改下线用户会话的权限位label 2023-12-13 17:28:57 +08:00
huailei
6d37300a30 Merge pull request #12323 from jumpserver/pr@dev@gather_account
fix: 收集账号过滤asset_id 失败
2023-12-13 16:35:17 +08:00
feng
0c96af32c2 fix: 手机账号过滤asset_id 失败 2023-12-13 16:33:50 +08:00
huailei
1c6b1b0625 Merge pull request #12321 from jumpserver/pr@dev@translate
perf: 翻译
2023-12-13 16:16:50 +08:00
feng
4f7b4842f6 perf: 翻译 2023-12-13 16:15:34 +08:00
fit2bot
c4fef5899c perf: 连接 RDP 协议会话时,高级选项支持 session bpp:i 参数配置;默认 32; (#12319)
Co-authored-by: feng <1304903146@qq.com>
2023-12-13 15:51:22 +08:00
wangruidong
5b51a8231c fix: 点击备案号未跳转到指定链接 2023-12-13 11:22:41 +08:00
huailei
54417dd6d3 Merge pull request #12312 from jumpserver/pr@dev@chat_setting
fix: chat ai测试可连接性时失败
2023-12-12 19:15:26 +08:00
feng
2c7ad90524 fix: chat ai测试可连接性时失败 2023-12-12 19:14:13 +08:00
ibuler
01fcdad489 perf: 优化用户不活跃检测 2023-12-12 17:19:19 +08:00
feng
8801003461 perf: 支持 西班牙 Keyboard Layout 2023-12-12 17:16:55 +08:00
huailei
696397fdb0 Merge pull request #12306 from jumpserver/pr@dev@translate
perf: 翻译
2023-12-12 15:37:37 +08:00
feng
87a24991f1 perf: 翻译 2023-12-12 15:34:13 +08:00
Eric
3ec93b8f04 perf: 添加录像不支持 2023-12-12 14:56:45 +08:00
ibuler
4f1826d3ed perf: get request ip, only using x-forwarded-for 2023-12-12 14:44:57 +08:00
ibuler
9260f26c99 perf: 优化 db constrains 2023-12-12 14:44:11 +08:00
fit2bot
93da3e58f2 perf: 【优化系统任务】支持显示 执行周期、下次开始时间 字段 (#12298)
Co-authored-by: feng <1304903146@qq.com>
2023-12-12 14:18:26 +08:00
wangruidong
1eff33f3f7 perf: 优化获取同名文件列表 2023-12-12 10:39:23 +08:00
wangruidong
8e89d42343 perf: 同名文件处理 2023-12-12 10:39:23 +08:00
wangruidong
d0b0c87d3c feat: 支持批量发送文件 2023-12-12 10:39:23 +08:00
ibuler
e3ac26e377 perf: 修改 rbac labels node 2023-12-11 14:43:15 +08:00
Eric
4ea20a9103 perf: 优化迁移文件 verbose_name 2023-12-11 14:40:21 +08:00
fit2bot
dd57b14562 feat: 增加 sqlserver 支持 (#12288)
* feat: 增加 sqlserver 支持

* feat: 删除一些  migrations

---------

Co-authored-by: Aaron3S <chenyang@fit2cloud.com>
2023-12-11 13:57:35 +08:00
wangruidong
c312cdb625 perf: 优化资产授权过期提示信息 2023-12-11 11:41:52 +08:00
huailei
85fedf0704 Merge pull request #12287 from jumpserver/pr@dev@public_api
perf: PublicSetting API 添加GPT参数
2023-12-08 17:54:06 +08:00
feng
8b05260a6c perf: PublicSetting API 添加GPT参数 2023-12-08 17:46:40 +08:00
Bai
47cb6b1ec0 perf: 优化资产列表支持通过 创建日期 进行排序 2023-12-08 16:39:13 +08:00
huailei
79b5dff210 Merge pull request #12286 from jumpserver/pr@dev@password_rule
fix: 改密计划创建更新失败
2023-12-08 16:36:04 +08:00
feng
b08e1f6a47 fix: 改密计划创建更新失败 2023-12-08 16:34:46 +08:00
Bai
2e3184cbd6 fix: 修复 Endpoint 获取错误问题 2023-12-08 16:33:27 +08:00
huailei
fb903e53a4 Merge pull request #12284 from jumpserver/pr@dev@translate
perf: 翻译
2023-12-08 16:18:36 +08:00
feng
cc7220a4ad perf: 翻译 2023-12-08 16:17:20 +08:00
fit2bot
81de527e32 perf: 解决Slack解绑用户404问题 (#12283)
Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>
2023-12-08 15:11:49 +08:00
huailei
7ad2abe104 Merge pull request #12280 from jumpserver/pr@dev@migrate
perf: 修改迁移文件
2023-12-08 14:22:55 +08:00
feng
9a2da98bd4 perf: 修改迁移文件 2023-12-08 14:21:10 +08:00
feng
eca50874f0 feat: 同步删除远程机器账号 2023-12-08 14:13:55 +08:00
fit2bot
8f82ca9856 perf: 优化操作日志 (#12249)
* perf: 优化操作日志

* perf: 修改migrations中关于Nodes的verbose_name

* perf: 优化代码逻辑

* perf: 优化日志详情展示逻辑

* perf: 代码优雅一下

---------

Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>
2023-12-05 17:26:47 +08:00
Eric
e193d7a942 perf: 完善 yaml 加载 2023-12-05 17:25:25 +08:00
fit2bot
d2429f7883 feat: 支持 virtual app (#12199)
* feat: 支持 virtual app

* perf: 增加 virtual host

* perf: 新增 virtual app 上传接口

* perf: 更名为 app provider

* perf: 优化代码

---------

Co-authored-by: Eric <xplzv@126.com>
2023-12-05 16:52:11 +08:00
ibuler
a43bb25b5a perf: 优化 applet 账号选择 2023-12-05 16:19:56 +08:00
ibuler
ffe3e8a70c perf: 优化 for tidb 2023-12-05 16:13:16 +08:00
ibuler
0e7e499a1e perf: 修改 labels 创建 2023-12-05 15:22:47 +08:00
ibuler
e812e3ff89 fix: 优化 endpoint 的 ipv6 支持 2023-12-05 14:56:05 +08:00
halo
d2eacad97b perf: 更新客户端 v2.1.0 2023-12-05 14:02:33 +08:00
fit2bot
8291a81efd perf: 支持全局的 labels (#12043)
* perf: 支持全局的 labels

* perf: stash

* stash

* stash

* stash

* stash

* perf: 优化 labels

* stash

* perf: add debug sql

* perf: 修改 labels

* perf: 优化提交

* perf: 优化提交 labels

* perf: 基本完成

* perf: 完成 labels 搜索

* perf: 优化 labels

* perf: 去掉不用 debug

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-12-05 11:16:34 +08:00
fit2bot
a91cb1afd5 feat: 系统设置可配置gpt (#12207)
* feat: 系统设置可配置gpt

* perf: 添加gpt的terminal config

---------

Co-authored-by: feng <1304903146@qq.com>
2023-12-05 10:58:19 +08:00
wangruidong
2cad97065f feat: 资产详情页面添加历史执行命令列表页面 2023-12-04 16:38:28 +08:00
fit2bot
cf18300360 fix: 添加Slack认证发送消息格式包 (#12229)
Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>
2023-11-30 14:38:43 +08:00
wangruidong
3cd22f05d2 perf: 优化工单处理提示消息页面 2023-11-30 10:15:26 +08:00
吴小白
eee41008cc perf: 优化 celery health 判断 2023-11-30 10:09:42 +08:00
fit2bot
0fdae00722 perf: 支持slack通知和认证 (#12193)
* perf: 支持slack通知和认证

* perf: 生成迁移文件

* perf: 优化获取access_token逻辑

---------

Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>
2023-11-29 17:45:44 +08:00
吴小白
575562c416 Merge pull request #12216 from jumpserver/pr@dev@patch_greenlet
build(deps): bump github.com/python-greenlet/greenlet from 2.0.2 to 3.0.1
2023-11-28 16:26:25 +08:00
吴小白
e2b7f67fdc build(deps): bump github.com/python-greenlet/greenlet from 2.0.2 to 3.0.1
Signed-off-by: 吴小白 <296015668@qq.com>
2023-11-28 16:14:48 +08:00
fit2bot
d2498c0d53 fix: sftp不能设置为默认存储 (#12213)
Co-authored-by: wangruidong <940853815@qq.com>
2023-11-28 15:21:40 +08:00
huailei
01e40fd238 Merge pull request #12211 from jumpserver/pr@dev@random
perf: 随机密码生成规则添加可排除字符选项
2023-11-28 14:49:35 +08:00
feng
370ef11486 perf: 随机密码生成规则添加可排除字符选项 2023-11-28 14:46:51 +08:00
ibuler
089cadeae3 perf: 优化 queryset count 2023-11-28 12:54:04 +08:00
wangruidong
6b748e5ac5 feat: 用户详情展示所有会话 2023-11-28 12:52:11 +08:00
fit2bot
6d611bbbbd feat: 作业中心数据库支持网域命令执行 (#12117)
Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>
2023-11-27 11:22:34 +08:00
wangruidong
18670d493e perf: 优化工单处理提示消息页面 2023-11-27 11:14:27 +08:00
ibuler
ba38852354 perf: 优化跳转页 2023-11-24 17:00:39 +08:00
wangruidong
64f3509c8c feat: 支持备案配置 2023-11-24 13:55:47 +08:00
huailei
805c78c0de Merge pull request #12188 from jumpserver/pr@dev@perf_ldap_user_websocket
perf: ldap接口请求换成websocket连接
2023-11-23 15:09:15 +08:00
huailei
11accf8854 Merge pull request #12189 from jumpserver/pr@dev@translate
perf: 国际化翻译
2023-11-22 18:33:06 +08:00
feng
18f6ffe0ce perf: 国际化翻译 2023-11-22 18:30:56 +08:00
wangruidong
6b7119ea74 perf: ldap接口请求换成websocket连接 2023-11-22 16:56:31 +08:00
huailei
efc7ca1164 Merge pull request #12182 from jumpserver/pr@dev@translate
perf: 修改翻译
2023-11-22 11:12:45 +08:00
feng
a6de9bdde6 perf: 修改翻译 2023-11-22 11:09:16 +08:00
feng
6e7074ba40 fix: mysql 开始ssl后 再关闭测试失败 2023-11-20 15:38:53 +08:00
feng
2edcb2f2d3 fix: mysql 开启ssl 再关闭 测试可连接性失败 2023-11-20 10:52:23 +08:00
ibuler
07e1918fa1 perf: 优化延迟运行
fix: 延迟执行设置超时

perf: 修改 delay run

perf: 优化 delay_run 执行

perf: 修改 delay run
2023-11-20 10:29:51 +08:00
feng
452b383278 fix: redis 开启 ssl websocket连接失败 2023-11-20 10:23:21 +08:00
ibuler
ed92f10208 fix: 修复自动禁用非活跃用户任务 2023-11-17 15:41:16 +08:00
Chenyang Shen
e8331ca708 Merge pull request #12148 from jumpserver/pr@dev@fix_delete_debug_info
fix: 删除debug信息
2023-11-17 11:33:52 +08:00
Aaron3S
814130204a fix: 删除debug信息 2023-11-17 10:45:44 +08:00
吴小白
e7dc9a2f6f perf: 优化 Dockerfile 2023-11-17 10:39:17 +08:00
老广
dabbb45f6e Merge pull request #12144 from jumpserver/dev
v3.9.0
2023-11-16 18:23:05 +08:00
ibuler
ded1b4bba1 perf: 优化 api key 认证记录用户的时间 2023-11-16 18:17:22 +08:00
fit2bot
2630ea39a1 perf: windows 改密推送添加新的方式 最后测试可连接性的时候采用rdp的方式测试 (#12141)
Co-authored-by: feng <1304903146@qq.com>
2023-11-16 18:12:22 +08:00
Bryan
9e10029bdd Revert "fix: 修复平台自动化翻译 (#12078)" (#12138)
This reverts commit 69c0eb2f50.
2023-11-16 16:35:08 +08:00
Aaron3S
d1391cb5d5 fix: 修复 sqlserver 命令执行问题 2023-11-16 16:24:39 +08:00
Aaron3S
44f029774d fix: 修复playbook部分不可执行问题 2023-11-16 16:07:31 +08:00
fit2bot
23fce9e426 perf: 翻译 (#12135)
Co-authored-by: feng <1304903146@qq.com>
2023-11-16 15:35:34 +08:00
fit2bot
0778a39894 perf: 在线会话添加活跃状态过滤 (#12134)
Co-authored-by: feng <1304903146@qq.com>
2023-11-16 14:41:35 +08:00
fit2bot
9cc6d6a9af perf: dockerfile add libx11-dev (#12133)
Co-authored-by: feng <1304903146@qq.com>
2023-11-16 13:21:16 +08:00
fit2bot
8f309dee92 fix: 资产测试可连接性选错账号 (#12130)
Co-authored-by: feng <1304903146@qq.com>
2023-11-16 11:26:05 +08:00
Bai
d166b26252 perf: 优化处理telnet协议资产端点的端口问题 2023-11-16 11:13:37 +08:00
fit2bot
1ef51563b5 perf: account 迁移文件 (#12128)
Co-authored-by: feng <1304903146@qq.com>
2023-11-16 10:18:54 +08:00
老广
3e7b4682e4 Merge pull request #12124 from jumpserver/pr@dev@perf_device_icon
perf: 修改 tree 硬件设备的 icon
2023-11-15 17:02:05 +08:00
ibuler
994b42aa93 perf: 修改 tree 硬件设备的 icon 2023-11-15 17:00:12 +08:00
fit2bot
d6aea54722 fix: 账号收集未同步资产时 变更数据错误 (#12123)
Co-authored-by: feng <1304903146@qq.com>
2023-11-15 16:44:35 +08:00
ibuler
88afabdd1d perf: 设置 winrm 用户端不可以连接 2023-11-15 15:34:38 +08:00
fit2bot
b2327c0c5a fix: 账号改密 root密钥无法替换 (#12121)
Co-authored-by: feng <1304903146@qq.com>
2023-11-15 15:33:10 +08:00
Aaron3S
7610f64433 perf: 优化获取当前 python 执行路径的方式 2023-11-15 15:21:56 +08:00
fit2bot
b15c314384 fix: 资产多协议时 计算协议端口错误 (#12120)
Co-authored-by: feng <1304903146@qq.com>
2023-11-15 14:59:40 +08:00
wangruidong
7a5cffac91 fix: 对象存储下拉无法自动加载 2023-11-15 14:58:33 +08:00
feng
8667943443 fix: celery事物 数据库未保存 2023-11-14 19:42:21 +08:00
Aaron3S
7c51d90a3d fix: 修复快捷命令找不到mssql module 的问题 2023-11-14 19:28:46 +08:00
wangruidong
9996b200f9 fix: 作业执行历史日志未按配置天数清理 2023-11-14 19:22:14 +08:00
wangruidong
ae364ac373 fix: 录像存储下载报错 2023-11-14 19:21:33 +08:00
wangruidong
fef4a97931 fix: 作业日志筛选用户出错 2023-11-14 19:20:52 +08:00
fit2bot
d63c4d6cc4 fix: mysql 测试可连接性失败 (#12104)
Co-authored-by: feng <1304903146@qq.com>
2023-11-14 17:03:20 +08:00
fit2bot
4e5a44bd98 fix: 账号收集通知 同步资产时 计算新增账号错误 (#12101)
Co-authored-by: feng <1304903146@qq.com>
2023-11-14 14:50:33 +08:00
fit2bot
fcce03f7bd fix: 改密记录搜索失败 (#12098)
Co-authored-by: feng <1304903146@qq.com>
2023-11-14 12:48:02 +08:00
fit2bot
5f121934a7 perf: 交换机切换至卡住 (#12096)
Co-authored-by: feng <1304903146@qq.com>
2023-11-14 10:58:57 +08:00
fit2bot
521c1f0dfa perf: 修改授权动作翻译 (#12095)
Co-authored-by: feng <1304903146@qq.com>
2023-11-14 10:41:00 +08:00
ibuler
5673698a57 perf: 修改账号选择 2023-11-14 10:18:24 +08:00
fit2bot
d6b75ac700 perf: 修改默认 ansible_python_interpreter (#12093)
Co-authored-by: feng <1304903146@qq.com>
2023-11-13 18:09:09 +08:00
fit2bot
0ee14e6d85 perf: 修改翻译 (#12092)
Co-authored-by: feng <1304903146@qq.com>
2023-11-13 17:50:10 +08:00
wangruidong
9babe977d8 fix: 修改sftp账号备份文件名及任务日志提示 2023-11-13 17:05:21 +08:00
fit2bot
0f9223331c perf: 修改 m2m json filter (#12087)
* perf: 修改 m2m json filter

* perf: 修复 json 过滤问题

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-11-13 15:04:27 +08:00
fit2bot
f8a4a0e108 fix: 修复UserOtpDisableView 视图函数获取模版错误 (#12084)
Co-authored-by: feng <1304903146@qq.com>
2023-11-10 17:59:28 +08:00
ibuler
ba76f30af9 perf: 修改 applet option 2023-11-10 17:18:40 +08:00
Eric_Lee
e5e0c841a2 Revert "perf: 调整 secret 长度为32位"
This reverts commit c41fdf1786.
2023-11-10 15:27:57 +08:00
Eric
c41fdf1786 perf: 调整 secret 长度为32位 2023-11-10 15:03:51 +08:00
fit2bot
69c0eb2f50 fix: 修复平台自动化翻译 (#12078)
Co-authored-by: feng <1304903146@qq.com>
2023-11-09 17:25:32 +08:00
Bryan
e077afe2cc Update README.md 2023-11-09 14:53:49 +08:00
wangruidong
c1f572df05 fix: 【账号备份】创建账号备份存储,选择SFTP,发送服务器为空。修改执行任务的日志提示 2023-11-09 14:22:04 +08:00
fit2bot
d60fe464ca fix:修复es6.8查询不到数据问题 (#12069)
Co-authored-by: feng <1304903146@qq.com>
2023-11-09 14:18:49 +08:00
fit2bot
f47895b8a8 perf: 优化仪表盘查询sftp数量sql (#12075)
Co-authored-by: feng <1304903146@qq.com>
2023-11-09 14:16:41 +08:00
Eric
3eb1583c69 perf: 增加分享权限位 2023-11-08 19:05:51 +08:00
feng
5ab8ff4fde perf: 在线用户根据websocket添加用户是否活跃状态 2023-11-08 17:02:47 +08:00
feng
7746491e19 perf: 在线用户添加是否活跃的属性 2023-11-08 17:02:47 +08:00
Eric
5e54792d94 perf: 优化发布机终端名称 2023-11-08 13:53:24 +08:00
Eric
621c7a31fe fix: 修复发布机名称因含特殊字符部署失败的问题 2023-11-08 13:26:04 +08:00
fit2bot
75bab70ccf fix: 账号迁移文件 (#12059)
Co-authored-by: feng <1304903146@qq.com>
2023-11-08 10:33:49 +08:00
halo
30683ed859 perf: 优化连接信息超长,客户端拉起无响应问题 2023-11-07 15:47:22 +08:00
Bai
7c52cec5fb perf: Upgrade requements jms-storage-sdk==0.0.53 2023-11-07 15:46:48 +08:00
fit2bot
f01bfc44b8 perf: 账号备份增加sftp方式 (#12032)
* perf: 添加sftp支持

* perf: 账号备份增加sftp方式

---------

Co-authored-by: wangruidong <940853815@qq.com>
Co-authored-by: Bryan <jiangjie.bai@fit2cloud.com>
2023-11-07 15:10:46 +08:00
fit2bot
54b89f6fee feat: 账号收集添加资产账号信息变化通知 (#12009)
Co-authored-by: feng <1304903146@qq.com>
2023-11-07 13:00:09 +08:00
Bai
c0de0b0d8e fix: Remove repetition code 2023-11-07 11:30:53 +08:00
huailei
06275a09ac Merge pull request #12042 from jumpserver/pr@dev@ansible
perf: 密码中支持特殊字符比如"
2023-11-06 18:19:34 +08:00
feng
7b86938b58 perf: 密码中支持特殊字符比如" 2023-11-06 17:53:18 +08:00
fit2bot
44624d0ce0 feat: 工作台支持配置显示系统工具 (#12013)
Co-authored-by: halo <wuyihuangw@gmail.com>
2023-11-03 17:33:44 +08:00
wangruidong
9b8c817a16 perf: 修改字段翻译 2023-11-03 10:45:17 +08:00
ibuler
927fe1f128 perf: 修改资产协议 xpack 2023-11-03 10:43:34 +08:00
fit2bot
eee119eba1 feat: 个人设置 rdp smart size可配置 (#12021)
Co-authored-by: feng <1304903146@qq.com>
2023-11-02 18:51:17 +08:00
老广
53d8f716eb Merge pull request #12007 from jumpserver/pr@dev@json_field_support_m2m_all
perf: JSONManyToMany 中的 m2m 方式支持包含所有
2023-11-02 10:35:28 +08:00
吴小白
f48aec2bcb Merge pull request #12011 from jumpserver/pr@dev@perf_tinker_chrome
perf: 更新 chrome 和 chromedriver
2023-11-01 20:34:53 +08:00
吴小白
78e9f51786 perf: 移除旧版本 Chrome 文件 2023-11-01 18:49:38 +08:00
吴小白
af33ad6631 perf: 移除 python3 环境变量 2023-11-01 18:35:10 +08:00
吴小白
864da49ae6 perf: 更新 chrome 和 chromedriver 2023-11-01 18:10:03 +08:00
huailei
e6b8b3982d Merge pull request #12010 from jumpserver/pr@dev@perf_mobile_login
perf: 优化登录页样式
2023-11-01 17:02:28 +08:00
“huailei000”
49b3df218e perf: 优化登录页样式 2023-11-01 17:01:14 +08:00
ibuler
0858d67098 fix: 修改可能迁移的问题 2023-11-01 03:11:47 -05:00
ibuler
ffa242e635 perf: JSONManyToMany 中的 m2m 方式支持包含所有 2023-11-01 15:38:03 +08:00
wangruidong
4021b1955e fix: 组件启动失败 2023-10-31 19:18:35 +08:00
Bryan
204258f058 Update README.md 2023-10-31 18:20:01 +08:00
wangruidong
dc841650cf perf: AKSK添加访问IP控制 2023-10-31 02:43:33 -05:00
feng
bc54685a31 feat: 改密记录 推送记录可单独执行 2023-10-31 00:57:47 -05:00
ibuler
ee586954f8 feat: 发布机支持使用同名账号连接 2023-10-31 10:18:30 +08:00
ibuler
e56a37afd2 fix: 优化选择发布机 2023-10-30 16:07:02 +08:00
老广
7669744312 Merge pull request #11981 from jumpserver/pr@dev@feat_perm_add_protocols
perf: 资产授权添加协议
2023-10-30 10:12:45 +08:00
ibuler
ad8aba88a3 perf: 资产授权添加协议 2023-10-30 10:11:36 +08:00
wangruidong
7659846df4 perf: 兼容SERVER_NAME值多种情况 2023-10-27 16:45:42 +08:00
ibuler
f93979eb2d perf: 资产授权添加协议 2023-10-27 16:15:59 +08:00
fit2bot
badf83c560 perf: 命令存储为本地数据库时 搜索资产时支持模糊搜索 (#11978)
Co-authored-by: feng <1304903146@qq.com>
2023-10-26 17:10:27 +08:00
halo
f6466a3a20 fix: 修复DB2平台已经存在的问题 2023-10-26 01:25:47 -05:00
ibuler
996394ba29 perf: 优化 profile field 2023-10-25 05:09:15 -05:00
fit2bot
09f8470d34 fix: 改密校验可连接性失败 (#11964)
Co-authored-by: feng <1304903146@qq.com>
2023-10-25 16:21:45 +08:00
Bai
fdb3f6409c fix: 修复登录日志和在线用户会话的 IP 地址获取方式 2023-10-25 01:40:16 -05:00
ibuler
73b0b23910 perf: 修改rsa key 默认长度 2023-10-25 10:05:58 +08:00
ibuler
c1185e989a perf: 修复资产类型的 bug 2023-10-24 16:19:08 +08:00
fit2bot
1239082649 fix: change secret perm 没有生成 (#11948)
Co-authored-by: feng <1304903146@qq.com>
2023-10-24 14:07:07 +08:00
fit2bot
ff073185f1 fix: 改密切换至检测可连接性 失败 (#11946)
Co-authored-by: feng <1304903146@qq.com>
2023-10-24 11:30:26 +08:00
老广
d7a682b462 Merge pull request #11945 from jumpserver/pr@dev@perf_oauth2_access_token_content_type
perf: 优化OAuth2.0获取Access_token的content_type
2023-10-24 11:29:10 +08:00
Eric_Lee
4df2bdd9b6 Merge pull request #11944 from jumpserver/pr@dev@upgrade_tinker_python
perf: 更新 tinker python 版本
2023-10-24 10:39:36 +08:00
吴小白
2437072768 perf: 清理旧版本 chromedriver PATH 2023-10-24 10:29:14 +08:00
jiangweidong
08a2d96213 perf: 优化OAuth2.0获取Access_token的content_type 2023-10-24 10:26:38 +08:00
吴小白
de7d7b41c0 perf: 更新 tinker python 版本 2023-10-24 08:46:17 +08:00
jiangweidong
b04c7f022f perf: 使用scan命令扫描在线用户 2023-10-23 04:34:12 -05:00
feng
bf0d9f4b80 fix: 删除错误的改密权限 2023-10-23 04:32:00 -05:00
wangruidong
314257f790 perf: 作业中心执行历史增加保留天数配置 2023-10-23 04:13:35 -05:00
ibuler
6d2a62e413 fix: 优化替换 DOMAINS 中端口 的问题 2023-10-22 22:32:04 -05:00
老广
1734ddc2bd Merge pull request #11926 from jumpserver/pr@dev@database_list
fix: 资产数据库 不分页时list接口错误
2023-10-20 03:51:07 -05:00
feng
7c796e8201 fix: 资产数据库 不分页时list接口错误 2023-10-20 16:35:39 +08:00
老广
62a74418ea Merge pull request #11852 from jumpserver/pr@dev@perf_core
perf: 按照需求添加 core-ce 镜像
2023-10-19 21:35:23 -05:00
fit2bot
32461078fe perf: ticket 迁移文件 (#11920)
Co-authored-by: feng <1304903146@qq.com>
2023-10-19 20:00:47 +08:00
Bai
939b517e34 fix: 修复账号改密密码规则提交不生效的问题 2023-10-19 04:30:49 -05:00
jiangweidong
66eac762ff fix: 可以清空云同步中的策略 2023-10-19 03:57:00 -05:00
Bryan
ce24c1c3fd Merge pull request #11914 from jumpserver/dev
v3.8.0
2023-10-19 03:37:39 -05:00
fit2bot
db9ee71ab3 perf: 翻译 (#11913)
Co-authored-by: feng <1304903146@qq.com>
2023-10-19 16:24:25 +08:00
fit2bot
db2331521d fix: 修复工单复合通知无账号信息 (#11912)
Co-authored-by: feng <1304903146@qq.com>
2023-10-19 15:56:14 +08:00
fit2bot
4aa4c6854b perf: 更新ops ticket announcement settings 权限 (#11911)
Co-authored-by: feng <1304903146@qq.com>
2023-10-19 15:15:02 +08:00
fit2bot
26a18a1f5c perf: 批量创建资产 账号格式错误提醒 (#11909)
Co-authored-by: feng <1304903146@qq.com>
2023-10-19 13:44:24 +08:00
fit2bot
6870df6d75 fix: cas ldap 登录失败 (#11908)
Co-authored-by: feng <1304903146@qq.com>
2023-10-19 12:24:56 +08:00
jiangweidong
03d1a187df perf: 工单直接审批者访问链接无认证跳转到登录页面 (#11902)
* perf: 工单直接审批者访问链接无认证跳转到登录页面

* perf: 修改重定向登录地址

* perf: 跳转字段标识更新
2023-10-18 22:21:08 -05:00
Eric_Lee
ca0dca26c7 Merge pull request #11900 from jumpserver/pr@dev@perf_task
perf: 完善僵尸会话清理
2023-10-18 19:17:04 +08:00
Eric
25a1989157 perf: 完善僵尸会话清理 2023-10-18 19:13:42 +08:00
ibuler
fef26c38fe perf: 去掉创建记录报错 2023-10-18 06:06:50 -05:00
fit2bot
a2fcc47436 fix: cas oidc 登录失败 (#11899)
Co-authored-by: feng <1304903146@qq.com>
2023-10-18 18:51:28 +08:00
fit2bot
00450121bc perf: 命令组加命令过滤搜索 (#11898)
Co-authored-by: feng <1304903146@qq.com>
2023-10-18 18:46:49 +08:00
ibuler
bdd885069f perf: 优化登录时创建 activity 的问题 2023-10-18 04:10:20 -05:00
老广
25d0c021e1 Merge pull request #11894 from jumpserver/pr@dev@perf_window_default_verify_account_by_rdp
perf: 修改windows校验账号的默认方式
2023-10-18 03:46:08 -05:00
ibuler
095c23ea4f perf: 修改windows校验账号的默认方式 2023-10-18 16:44:38 +08:00
fit2bot
3c3c112b07 perf: 更新appletpublication applethostdeployment 权限位 (#11893)
Co-authored-by: feng <1304903146@qq.com>
2023-10-18 16:35:08 +08:00
老广
d95a44fe44 Merge pull request #11892 from jumpserver/pr@dev@perf_bind_wecom_logout
perf: 企业微信绑定后退出
2023-10-18 03:10:41 -05:00
ibuler
e713bdab0b perf: 企业微信绑定后退出 2023-10-18 16:09:17 +08:00
fit2bot
78f1b2b002 perf: user session 表去掉过期时间字段 (#11890)
Co-authored-by: feng <1304903146@qq.com>
2023-10-18 16:04:02 +08:00
fit2bot
e0762573ae perf: 在线用户动态过期时间 (#11889)
Co-authored-by: feng <1304903146@qq.com>
2023-10-18 15:50:38 +08:00
老广
16e8c7faba Merge pull request #11888 from jumpserver/pr@dev@perf_protocols_lose
perf: 修复协议丢失的问题
2023-10-18 02:42:12 -05:00
ibuler
9b019e45ae perf: 修复协议丢失的问题 2023-10-18 15:40:52 +08:00
fit2bot
71d70501d6 perf: 优化数据库必填 (#11887)
Co-authored-by: ibuler <ibuler@qq.com>
2023-10-18 02:22:17 -05:00
老广
5cd44ebfce Merge pull request #11865 from jumpserver/pr@dev@fix_corntab
fix: 修复crontab语义
2023-10-18 01:13:15 -05:00
老广
03c27ab5b8 Merge pull request #11875 from jumpserver/pr@dev@perf_update_clients_version
perf: 更新clients版本
2023-10-18 01:12:36 -05:00
fit2bot
d3a283232f perf: 优化 xpack license 检查 (#11885)
Co-authored-by: ibuler <ibuler@qq.com>
2023-10-18 01:10:24 -05:00
fit2bot
f088bbce12 perf: 连接方式,动作去掉: 通知 (#11878)
Co-authored-by: feng <1304903146@qq.com>
2023-10-17 19:21:59 +08:00
fit2bot
b313598227 fix: 修复账号批量添加模版账号时name没同步过来,资产创建时使用模版账号没有切换自,资产克隆时生成的账号没有切换自 (#11877)
Co-authored-by: feng <1304903146@qq.com>
2023-10-17 19:15:46 +08:00
halo
3a118b6753 perf: 更新clients版本 2023-10-17 17:13:30 +08:00
Eric_Lee
578c2af57c Merge pull request #11870 from jumpserver/pr@dev@perf_acl_ip
perf: 增加针对 ip 的获取
2023-10-17 16:25:24 +08:00
Eric
b5ef239c6c perf: 增加针对 ip 的获取 2023-10-17 15:57:15 +08:00
fit2bot
e88e4438ba fix: acl 记录操作日志 账号信息为空 (#11869)
Co-authored-by: feng <1304903146@qq.com>
2023-10-17 15:01:21 +08:00
fit2bot
73b75df524 perf: 资产acl拒绝后没记录操作日志 (#11868)
Co-authored-by: feng <1304903146@qq.com>
2023-10-17 14:28:19 +08:00
Bai
772684d24c fix: 修复crontab语义 2023-10-17 11:19:13 +08:00
fit2bot
741705b85b perf: 修改定期清理日志默认时间180天 (#11864)
Co-authored-by: feng <1304903146@qq.com>
2023-10-17 11:11:55 +08:00
fit2bot
f5176bcc6f perf: 修改迁移文件 (#11863)
Co-authored-by: feng <1304903146@qq.com>
2023-10-17 11:04:05 +08:00
fit2bot
c917d8f346 fix: 系统设置 安全设置权限为错误 (#11860)
Co-authored-by: feng <1304903146@qq.com>
2023-10-16 19:33:13 +08:00
fit2bot
5c0905b3b5 fix: 操作日志全局组织数量不对 (#11859)
Co-authored-by: feng <1304903146@qq.com>
2023-10-16 18:51:26 +08:00
fit2bot
bda23b3d2a fix: 调API创建与父节点同名的子节点报错:同级别节点名称不能重复 (#11858)
Co-authored-by: feng <1304903146@qq.com>
2023-10-16 18:15:53 +08:00
fit2bot
8b6526211c perf: 工单动作添加操作日志 (#11857)
Co-authored-by: feng <1304903146@qq.com>
2023-10-16 16:40:21 +08:00
fit2bot
86e8f3a80b fix: 组织管理员不能创建用户 (#11856)
Co-authored-by: feng <1304903146@qq.com>
2023-10-16 15:06:47 +08:00
fit2bot
70661242c1 fix: 在线用户 下线权限错误 导致审计员无权限下线用户 (#11853)
Co-authored-by: feng <1304903146@qq.com>
2023-10-16 14:22:20 +08:00
吴小白
6f4082f800 fix: 修正 actions 测试构建任务 2023-10-16 14:00:40 +08:00
吴小白
edd65f965b perf: 按照需求添加 core-ce 镜像 2023-10-16 13:30:51 +08:00
fit2bot
7dcae1e05a perf: 命令过滤中 去掉通知动作 (#11851)
Co-authored-by: feng <1304903146@qq.com>
2023-10-16 13:27:37 +08:00
fit2bot
0a28c5650c perf: 三方用户登录通知 (#11846)
Co-authored-by: feng <1304903146@qq.com>
2023-10-16 11:28:53 +08:00
fit2bot
f55c84ce3b fix: 发布机500 (#11841)
Co-authored-by: feng <1304903146@qq.com>
2023-10-13 17:19:05 +08:00
fit2bot
ac11790192 perf: 替换iphone mfa 二维码图片 (#11839)
Co-authored-by: feng <1304903146@qq.com>
2023-10-13 16:51:34 +08:00
老广
f80ff279d0 perf: 用户确认和access key
Merge branch 'dev' of github.com:jumpserver/jumpserver into dev
2023-10-13 16:37:45 +08:00
ibuler
d7ac08f6d9 perf: 去掉 debug 2023-10-13 16:36:23 +08:00
ibuler
b5714f7e14 Merge branch 'pr@dev@perf_user_confirm' into pr@dev@perf_change_access_key_create 2023-10-13 16:34:19 +08:00
ibuler
d6b450f32a perf: 修改 ak 2023-10-13 16:33:25 +08:00
ibuler
1daf1acaf3 perf: 修改 access key 2023-10-13 16:31:05 +08:00
fit2bot
ea0e852412 fix: rdp 测试可连接性失败 (#11837)
Co-authored-by: feng <1304903146@qq.com>
2023-10-13 16:21:20 +08:00
ibuler
ce976f215f Merge branch 'dev' of github.com:jumpserver/jumpserver into dev 2023-10-13 16:10:40 +08:00
fit2bot
ffc057f844 fix: 账号改密-执行列表-详情-任务记录:模糊搜索500 (#11835)
Co-authored-by: feng <1304903146@qq.com>
2023-10-13 15:33:35 +08:00
fit2bot
588723a76c perf: 优化资产登录通知信息 (#11834)
Co-authored-by: feng <1304903146@qq.com>
2023-10-13 15:08:56 +08:00
ibuler
1ca912373f perf: 修改用户确认 2023-10-13 14:59:58 +08:00
ibuler
452ee1224c perf: 修改用户确认 2023-10-13 14:40:40 +08:00
fit2bot
7eb497f9d3 fix: 资产登录被限制,没有记录到当前组织的操作日志,而是记录到全局组织 (#11827)
Co-authored-by: feng <1304903146@qq.com>
2023-10-12 20:13:21 +08:00
fit2bot
58fd578ddd perf: 资产登录提示添加账号信息 (#11826)
Co-authored-by: feng <1304903146@qq.com>
2023-10-12 20:04:28 +08:00
fit2bot
e1278360af fix: 资产创建失败 (#11824)
Co-authored-by: feng <1304903146@qq.com>
2023-10-12 19:46:04 +08:00
fit2bot
c0de27ff7a perf: 资产批量更新平台字段,根据平台约束协议自动生效 (#11818)
Co-authored-by: feng <1304903146@qq.com>
2023-10-12 18:11:51 +08:00
ibuler
116d0ba5c6 perf: 优化任务记录 activity 2023-10-12 17:06:12 +08:00
fit2bot
9f042cfa04 Merge branch 'dev' into pr@dev@change_import (#11815)
* perf: 修改获取 ip

* perf: 修改导入

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-10-12 03:17:32 -05:00
Eric_Lee
ce63ea7528 Merge pull request #11812 from jumpserver/pr@dev@fix_get_real_ip
perf: 修改获取 ip
2023-10-12 16:13:57 +08:00
ibuler
8b3fd2c117 perf: 修改获取 ip 2023-10-12 16:09:22 +08:00
ibuler
23ccd6df8c perf: mysql mariadb 数据库不再必填 2023-10-12 14:50:09 +08:00
Bai
614e019f14 fix: 修改迁移文件choices和翻译文件 2023-10-11 21:15:47 -05:00
ibuler
38aa828eb8 perf: passkey 只允许本地用户开启 2023-10-11 04:52:54 -05:00
Bai
7cd2736e82 perf: 优化用户传递的 phone 处理 2023-10-11 04:50:45 -05:00
ibuler
443f6d25e8 perf: Windows 默认使用 rdping 测试 2023-10-11 04:22:08 -05:00
Eric
e8652af054 perf: 更新格式 2023-10-11 04:21:00 -05:00
Eric
fd6a8dd807 perf: 增加错误类型 2023-10-11 04:21:00 -05:00
Eric
499eedd83e perf: 会话新增 error_reason 字段 2023-10-11 04:21:00 -05:00
feng
ca7d164034 perf: 账号模版信息同步到所关联的账号 2023-10-11 04:20:11 -05:00
Bai
3ef8e9603a perf: 优化 otp windows 最小支持设置 0 2023-10-11 04:06:17 -05:00
Bai
09f71d80eb perf: 优化LDAP用户导入列表时任务状态设置 2023-10-11 04:05:51 -05:00
jiangweidong
73db1bf50c feat: 支持LDAP用户组变更时,JS同步变更 2023-10-10 06:37:28 -05:00
fit2bot
6017f804a6 perf: 用户 phone wechat 加密 (#11789)
Co-authored-by: feng <1304903146@qq.com>
2023-10-10 19:11:08 +08:00
ibuler
affa562384 perf: 优化禁用用户 2023-10-10 19:00:00 +08:00
fit2bot
0d101bc5ad perf: 不活跃了用户默认90天检测一下 (#11790)
Co-authored-by: feng <1304903146@qq.com>
2023-10-10 18:48:35 +08:00
jiangweidong
70f0f55ddb feat: 支持自定义短信认证(文件) (#11784)
* feat: 支持自定义短信认证(文件)

* perf: 翻译

* perf: 还原注释
2023-10-10 05:23:54 -05:00
fit2bot
333746e7c4 perf: 优化用户 access key 的使用和创建 (#11776)
* perf: 优化用户 access key 的使用和创建

* perf: 优化 access key api

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-10-10 04:52:52 -05:00
fit2bot
30b19d31eb fix: 账号批量更新失败 (#11785)
Co-authored-by: feng <1304903146@qq.com>
2023-10-10 17:24:56 +08:00
Eric
a844ce23e4 perf: 调整格式 2023-10-10 07:40:48 +05:00
Eric
d6c0139fef perf: 支持持久化设置个人终端主题 2023-10-10 07:40:48 +05:00
jiangweidong
11157563ba perf: 优化跳转接口参数 2023-10-09 16:00:36 +05:00
jiangweidong
95e7bde5d7 perf: 优化翻译 2023-10-09 16:00:36 +05:00
jiangweidong
814350ab80 perf: 翻译 2023-10-09 16:00:36 +05:00
jiangweidong
3ac35eec68 perf: 优化OIDC用户未激活时,会循环跳转登录页面 2023-10-09 16:00:36 +05:00
fit2bot
3d27986c96 perf: asset login 消息通知添加操作日志记录 (#11774)
Co-authored-by: feng <1304903146@qq.com>
2023-10-09 17:16:38 +08:00
fit2bot
c981e9cd9f perf: 主机名包含/ 可以执行ansible任务 (#11772)
Co-authored-by: feng <1304903146@qq.com>
2023-10-09 16:05:42 +08:00
Bai
e00c804a5a perf: 优化校验登录城市名1 2023-10-09 14:43:48 +08:00
fit2bot
ef2b7b464e perf: ansible 用户切换至 (#11766)
Co-authored-by: feng <1304903146@qq.com>
2023-10-09 14:35:21 +08:00
feng
ae5d4257ad fix: 修复账号批量更新失败问题 2023-10-09 10:05:50 +08:00
halo
b42014d58e feat: 支持DB2数据库 2023-10-09 10:04:14 +08:00
feng
e71e8cd595 perf: 优化清除日志天数系统配置校验逻辑 2023-10-08 07:39:19 +05:00
fit2bot
dd50044b89 perf: 翻译 (#11748)
Co-authored-by: feng <1304903146@qq.com>
2023-10-07 17:58:42 +08:00
fit2bot
68707085fa perf: 日志保存时间不少于6个月 (#11742)
Co-authored-by: feng <1304903146@qq.com>
2023-10-07 17:41:45 +08:00
fit2bot
60399fae29 feat: 登录资产消息提醒 (#11747)
Co-authored-by: feng <1304903146@qq.com>
2023-10-07 17:41:20 +08:00
ibuler
f206d963a0 perf: 优化会话 api 2023-10-07 15:57:15 +08:00
fit2bot
42b4e7697d feat: 资产登录acl动作增加操作日志 (#11741)
Co-authored-by: feng <1304903146@qq.com>
2023-10-07 15:50:28 +08:00
fit2bot
0c1f4d99f8 fix: 修复工单引入html错误问题 (#11744)
Co-authored-by: feng <1304903146@qq.com>
2023-10-07 15:28:40 +08:00
ibuler
2aed3fcaea perf: 修改随机数生成,避免使用 random 库 2023-10-07 11:30:45 +05:00
ibuler
28196573bb perf: 修改随机使用secrets 2023-10-07 11:30:45 +05:00
ibuler
27c505853b perf: 优化忘记密码 2023-10-07 11:18:55 +05:00
jiangweidong
896d42c53e perf: 更新jms-storage版本 2023-09-28 18:08:39 +05:00
feng
f79084c2df fix: 账号授权过滤指定账号api 失效问题 2023-09-27 13:11:48 +05:00
ibuler
15a5dda9e0 perf: 修改默认的邮箱地址 2023-09-27 15:15:15 +08:00
ibuler
2069fee795 perf: 优化发送邮件 2023-09-27 08:27:12 +05:00
feng
56a26481a4 perf: 账号模版 生成随机密码密钥及账号批量更新500 2023-09-26 12:55:54 +08:00
ibuler
cbe3d66b39 fix: pubkey auth require svc sign 2023-09-25 23:29:42 +08:00
Bryan
7c67d882aa Revert "fix: pubkey auth require svc sign"
This reverts commit 9bde2ff6e1.
2023-09-25 23:24:52 +08:00
ibuler
9bde2ff6e1 fix: pubkey auth require svc sign 2023-09-25 23:08:55 +08:00
Bai
1f00c00183 fix: 修复验证码校验逻辑和报错信息 2023-09-25 23:03:32 +08:00
ibuler
c369b5478c fix: 修复暴力校验验证码 2023-09-25 22:06:57 +08:00
fit2bot
10363dcc5b fix: 修复用户username 中文 登录失败问题 (#11692)
Co-authored-by: feng <1304903146@qq.com>
2023-09-25 21:39:16 +08:00
jiangweidong
42bdb2cf14 perf: 优化找回密码时区号带加号无法匹配的问题 2023-09-25 16:42:30 +08:00
fit2bot
d64e77db30 perf: 去掉print (#11687)
Co-authored-by: feng <1304903146@qq.com>
2023-09-25 16:37:00 +08:00
fit2bot
4065baf785 feat: 用户登录堡垒机时通知管理员 (#11686)
Co-authored-by: feng <1304903146@qq.com>
2023-09-25 16:25:44 +08:00
Bai
0f3ddc3bf1 fix: 修复系统用户同步同时包含pwd/ssh-key导致创建账号id冲突报错的问题 2023-09-25 16:22:47 +08:00
吴小白
138adeff76 perf: 添加 ping 命令 2023-09-25 10:50:53 +08:00
ibuler
0cf17310e1 fix: 修复 DOMAINS 添加 80和443 不生效的问题 2023-09-22 17:47:43 +08:00
吴小白
43dbb4c226 perf: 添加 patch 命令 2023-09-22 15:20:49 +08:00
Bai
cefd9f4ab2 fix: 解决节点资产数量方法计算不准确的问题 2023-09-22 15:18:22 +08:00
fit2bot
7128593502 perf: CeleryTaskExecution 添加默认排序 (#11663)
Co-authored-by: feng <1304903146@qq.com>
2023-09-22 15:06:58 +08:00
maninhill
5d4fa22058 chore: 优化 README 文案 2023-09-22 10:24:21 +08:00
Bryan
3c54c82ce9 Merge pull request #11636 from jumpserver/dev
v3.7.0
2023-09-21 17:02:48 +08:00
fit2bot
91dce82b38 fix: 安全设置开启仅已存在用户登录,企业微信等扫描登录,如果用户不存在,还是会自动创建用户登录成功。 (#11651)
Co-authored-by: feng <1304903146@qq.com>
2023-09-21 17:01:03 +08:00
Bryan
d102db7a7b Merge pull request #11650 from jumpserver/pr@dev@dev_master
fix: 解决 master 冲突
2023-09-21 16:53:09 +08:00
Bai
1de7af4984 fix: 解决 master 冲突 2023-09-21 16:51:54 +08:00
Aaron3S
9892ff7dd6 feat: 代码片段支持 oracle 和 mariadb 2023-09-21 16:37:16 +08:00
老广
4cb499953c Revert "perf: 修复事务中任务执行"
This reverts commit cdbe5d31e9.
2023-09-21 15:40:39 +08:00
老广
0397bdeb46 Revert "perf: 修复 task id 不对的问题"
This reverts commit 1d6d92c160.
2023-09-21 15:39:29 +08:00
ibuler
1d6d92c160 perf: 修复 task id 不对的问题 2023-09-21 15:20:16 +08:00
ibuler
cdbe5d31e9 perf: 修复事务中任务执行 2023-09-21 15:04:58 +08:00
fit2bot
b023ca0c69 fix: saml 用户没现在记录 (#11641)
Co-authored-by: feng <1304903146@qq.com>
2023-09-21 14:02:09 +08:00
ibuler
803d590096 perf: 修改生成 applet accounts 2023-09-21 13:06:02 +08:00
ibuler
e11367088a perf: 修改 acl 登录限制问题 2023-09-21 11:33:28 +08:00
jiangweidong
1c74dd00ba fix: 解决sqlserver无法推送和改密的问题 (#11637) 2023-09-20 21:45:21 +08:00
Aaron3S
ed832af631 fix: 修复运行job 组织切换问题 2023-09-20 18:26:47 +08:00
fit2bot
948c499d9e fix: 修复仪表板图表时间范围不准 (#11633)
Co-authored-by: feng <1304903146@qq.com>
2023-09-20 17:41:35 +08:00
fit2bot
a51549cf1c perf: ansible任务 未激活的时候关闭定时任务 (#11631)
Co-authored-by: feng <1304903146@qq.com>
2023-09-20 15:30:29 +08:00
fit2bot
39baf88055 fix: ansible postgresql (#11629)
Co-authored-by: feng <1304903146@qq.com>
2023-09-20 14:29:53 +08:00
fit2bot
90131db55a perf: 修改任务检查 (#11609)
* perf: 修改任务检查

* perf: 修改翻译

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-09-20 11:12:15 +08:00
“huailei000”
ea3ff1ebcb perf: 优化登录页面移动端布局 2023-09-19 20:20:28 +08:00
Aaron3S
f3ca45aa74 perf: 优化 Playbook 文件创建逻辑 2023-09-19 18:49:16 +08:00
老广
74cc174d7a Merge pull request #11622 from jumpserver/pr@dev@perf_random_error
fix: 修复 random error
2023-09-19 18:15:50 +08:00
ibuler
0eba6d2175 fix: 修复 random error 2023-09-19 18:11:27 +08:00
fit2bot
58592a13e3 fix: 解锁ip失败问题 (#11611)
Co-authored-by: feng <1304903146@qq.com>
2023-09-19 17:38:46 +08:00
fit2bot
b8fb23a0a0 perf: user setting (#11610)
Co-authored-by: feng <1304903146@qq.com>
2023-09-19 16:30:48 +08:00
Bai
f5c43488fd perf: 优化 es host 中包含 # 字符时提示错误 2023-09-19 15:31:02 +08:00
Eric
19c76ba01c perf: 删除发布机执行的任务目录 2023-09-19 15:02:02 +08:00
Eric
68c4cd5928 perf: 修复发布机安装应用的报错 2023-09-19 15:01:37 +08:00
fit2bot
e5bfa29c7b fix: 创建用户推送失败问题 (#11606)
Co-authored-by: feng <1304903146@qq.com>
2023-09-19 14:53:43 +08:00
fit2bot
cbb772def7 fix: 修复connection token 获取user错误 (#11603)
Co-authored-by: feng <1304903146@qq.com>
2023-09-19 11:09:58 +08:00
fit2bot
e6fe7c489e perf: 修改账号生成 (#11591)
* perf: 修改账号生成

* perf: 修改账号模版支持策略

* perf: 修改特殊字符数量

* perf: 修改 model 继承

* perf: 修改顺序

* perf: 修改 requirements

* perf: 修改翻译

* perf: 修改随机生成密码

* perf: 修改密钥生成

* perf: 修复 bug

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-09-19 10:59:33 +08:00
fit2bot
0b30f5cf88 perf: 翻译 (#11602)
Co-authored-by: feng <1304903146@qq.com>
2023-09-19 10:36:03 +08:00
fit2bot
018f1a0e8d perf: 删除管理用户错误提醒 (#11596)
Co-authored-by: feng <1304903146@qq.com>
2023-09-18 18:42:02 +08:00
fit2bot
24ed57b98a fix: 三方登录用户无法下线 (#11592)
Co-authored-by: feng <1304903146@qq.com>
2023-09-18 16:20:55 +08:00
ibuler
04a790c4ee perf: 优化 account template platform required 2023-09-18 14:29:41 +08:00
ibuler
2d9a3ef7d4 perf: 修改 migrations,不生成新的迁移文件 2023-09-18 14:29:24 +08:00
ibuler
0d2adeccf2 perf: 优化 applet account delete 2023-09-18 14:18:24 +08:00
Eric
886f977311 perf: 修复 chrome 部分元素定位失败的问题 2023-09-18 14:10:24 +08:00
fit2bot
9367e79bcf perf: 翻译 (#11583)
Co-authored-by: feng <1304903146@qq.com>
2023-09-18 11:11:12 +08:00
fit2bot
af733ecbad fix: 修改平台id序列化属性 改为非只读 (#11581)
Co-authored-by: feng <1304903146@qq.com>
2023-09-17 16:07:05 +08:00
fit2bot
09f9775eab fix: 平台无category type 过滤 (#11580)
Co-authored-by: feng <1304903146@qq.com>
2023-09-17 12:50:31 +08:00
feng
1c2a362beb perf: 修改usersession 模块位置 2023-09-15 17:25:06 +08:00
Eric_Lee
bb1e674367 Merge pull request #11578 from jumpserver/pr@dev@perf_host_deploy_log
perf: 修复发布机历史执行任务日志无法查看的问题
2023-09-15 17:18:45 +08:00
Eric
a75677ab08 perf: 修复发布机历史执行任务日志无法查看的问题 2023-09-15 17:15:12 +08:00
fit2bot
b1daa4d357 fix: 修改不常登录用户锁定逻辑 (#11576)
Co-authored-by: feng <1304903146@qq.com>
2023-09-15 16:39:49 +08:00
fit2bot
c32271ec6f fix: mysql 没配置ssl ansible 连接失败问题 (#11574)
Co-authored-by: feng <1304903146@qq.com>
2023-09-15 16:16:04 +08:00
Aaron3S
beb4f14be9 perf: 优化 jobexecution 创建 2023-09-15 14:39:16 +08:00
fit2bot
e719904874 fix: 修复工单回复报500 (#11571)
Co-authored-by: feng <1304903146@qq.com>
2023-09-15 11:26:13 +08:00
Eric_Lee
664bc2a4d9 Merge pull request #11568 from jumpserver/pr@dev@perf_deplay_task
perf: 优化推送部署任务,事务提交后再执行
2023-09-14 18:30:16 +08:00
ibuler
b91db8c146 perf: 优化推送部署任务,事务提交后再执行 2023-09-14 18:17:22 +08:00
fit2bot
500aeeb77f perf: 升级flower (#11567)
Co-authored-by: feng <1304903146@qq.com>
2023-09-14 18:15:25 +08:00
feng
3abc8bddfa feat: 用户在线session控制 2023-09-14 16:21:57 +08:00
老广
5cbbf9e737 Merge pull request #11561 from jumpserver/pr@dev@perf_i18n
perf: 优化翻译
2023-09-14 14:30:53 +08:00
ibuler
7204a86f87 perf: 优化翻译 2023-09-14 14:26:17 +08:00
老广
829194420a Merge pull request #11559 from jumpserver/pr@dev@limit_super_privilege
feat: 限制超级权限
2023-09-14 13:54:20 +08:00
老广
61dc95d9ae Merge pull request #11560 from jumpserver/pr@dev@perf_i18n
perf: 优化翻译
2023-09-14 11:29:28 +08:00
ibuler
a9f60a9117 perf: 优化翻译 2023-09-14 11:26:12 +08:00
ibuler
82f96d6ed2 feat: 限制超级权限 2023-09-14 10:42:16 +08:00
feng
f6c56d4979 perf: 网络设备 ansible enables true 2023-09-13 19:29:01 +08:00
老广
54d0a1b871 Merge pull request #11554 from jumpserver/pr@dev@perf_add_tip
perf: 添加tips
2023-09-13 17:44:45 +08:00
老广
5b4a267ccd Merge pull request #11553 from jumpserver/pr@dev@feat_support_ansbile_raw
feat: 作业中心支持 raw (网络设备使用)
2023-09-13 17:44:10 +08:00
ibuler
a6d78834e7 perf: 添加tips 2023-09-13 17:43:29 +08:00
Aaron3S
07da98e438 feat: 作业中心支持 raw (网络设备使用) 2023-09-13 17:25:42 +08:00
老广
7c973616cd Merge pull request #11552 from jumpserver/pr@dev@add_api_check_for_unauth
perf: 添加 check api,检测所有 api
2023-09-13 17:24:40 +08:00
ibuler
b9997b07db perf: 去掉不用的 backend 2023-09-13 17:22:50 +08:00
ibuler
bcda879f3b perf: 修改 ticket 认证的 2023-09-13 17:19:13 +08:00
ibuler
d0f79c2df2 perf: 添加 check api 避免未认证 2023-09-13 17:05:01 +08:00
ibuler
1249935bab perf: 优化设置项名称 2023-09-13 10:09:56 +08:00
ibuler
5fa1ae9ee5 perf: 修改说明 2023-09-12 15:59:25 +08:00
Bai
d0755c4719 fix: 修复系统任务支持通过 id、name 进行搜索 2023-09-12 15:35:11 +08:00
fit2bot
72b215ed03 feat: 支持 passkey 登录 (#11519)
* perf: 基本完成功能

* perf: 优化 passkey

* perf: 优化 passkey

* perf: 完成 passkey

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-09-11 18:15:03 +08:00
fit2bot
d7ca1a09d4 perf: connectiontoken 添加 connect_options file_name_conflict_resolution参数 给koko处理冲冲突文件名 (#11535)
Co-authored-by: feng <1304903146@qq.com>
2023-09-11 16:22:11 +08:00
fit2bot
04e341a1bb perf: 翻译 (#11534)
Co-authored-by: feng <1304903146@qq.com>
2023-09-11 15:26:50 +08:00
fit2bot
a41909ec8d feat: 个人设置 (#11494)
Co-authored-by: feng <1304903146@qq.com>
2023-09-11 14:38:07 +08:00
ibuler
f9d6de9c39 fix: 修复 private storage permission 2023-09-11 11:20:12 +08:00
halo
816b284a51 perf: 支持windows客户端msi格式 2023-09-11 11:15:17 +08:00
Eric
d4c5dcf069 perf: 修改变更时间 2023-09-07 19:30:59 +08:00
Eric
73037c21e8 perf: chrome 代填进度条最大 30s 超时 2023-09-07 19:30:59 +08:00
halo
c7f9259a2e perf: 更新客户端 v2.0.1 2023-09-07 19:30:25 +08:00
feng
8632bd2480 fix: 修复ip被锁定列表展示数据不准问题 2023-09-07 19:28:11 +08:00
ibuler
23723f4eda perf: 优化 ftp log 索引 2023-09-07 19:27:49 +08:00
Bai
38601a84c2 perf: 优化 GitHub Labels 2023-09-06 16:42:42 +08:00
fit2bot
e50189e284 fix: 修复工单审计员切换其他资产,原资产未删除问题 (#11511)
Co-authored-by: feng <1304903146@qq.com>
2023-09-06 15:13:02 +08:00
jiangweidong
da9bd11db5 feat: 系统工具支持traceroute (#11474) 2023-09-06 10:30:55 +08:00
Bai
9acb7d6183 perf: 优化 GitHub 默认 Assignees 2023-09-04 14:43:18 +05:00
Bai
dbd9a9fdac perf: 优化 GitHub 默认 Assignees 2023-09-04 12:03:16 +05:00
fit2bot
25301aa396 perf: 修改 sftp 的说明文案 (#11490)
* perf: 修改 sftp 的说明文案

* perf: 修改翻译问题

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-09-04 13:48:53 +08:00
老广
8cc1ca2770 Merge pull request #11483 from jumpserver/pr@dev@perf_db_cli
perf: 修改数据库 cli 连接方式的支持
2023-08-31 19:03:20 +08:00
Eric
bad01aefa2 perf: 修改数据库 cli 连接方式的支持 2023-08-31 18:23:30 +08:00
老广
56a989bfb9 Merge pull request #11481 from jumpserver/pr@dev@perf_online_num
perf: 修改在线数量
2023-08-31 17:44:25 +08:00
fit2bot
578f66d5e2 fix: 账号推送定时任务不执行 (#11482)
Co-authored-by: feng <1304903146@qq.com>
2023-08-31 17:43:52 +08:00
ibuler
8d6083bfb2 perf: 修改在线数量 2023-08-31 17:42:21 +08:00
fit2bot
1138cd3334 perf: 添加 session 在线数量 (#11464)
* perf: 添加 session 在线数量

* perf: 优化会话数量

* perf: 优化会话数量

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-08-31 17:00:03 +08:00
fit2bot
db0b43ee84 perf: 优化 dashboard api (#11478)
Co-authored-by: feng <1304903146@qq.com>
2023-08-31 15:05:05 +08:00
Bai
40a460870a fix: 优化 db_port 日志显示 2023-08-31 10:52:41 +05:00
fit2bot
51910ea2c1 fix: 修复历史会话为负数的情况 (#11472)
Co-authored-by: feng <1304903146@qq.com>
2023-08-30 18:18:08 +08:00
fit2bot
266a360a97 feat: 可查看全局被限制的ip 并且可以解锁 (#11394)
Co-authored-by: feng <1304903146@qq.com>
2023-08-30 17:31:59 +08:00
fit2bot
24194b4e4d perf: 翻译 (#11468)
Co-authored-by: feng <1304903146@qq.com>
2023-08-30 16:01:16 +08:00
fit2bot
992e34d652 feat: mysql 证书 (#11465)
Co-authored-by: feng <1304903146@qq.com>
2023-08-30 15:15:49 +08:00
老广
894249a3d1 Merge pull request #11452 from jumpserver/pr@dev@feat_audit_view_download_replay
feat: 查看/下载录像记录在操作及活动日志中
2023-08-30 13:48:53 +08:00
老广
21c6fe19a1 Merge pull request #11459 from jumpserver/pr@dev@metics
perf: dashboard date metrics
2023-08-30 13:26:31 +08:00
老广
e4e4f82143 Merge pull request #11461 from jumpserver/pr@dev@fix_cas_login_failed
fix: 解决CAS无法登陆问题
2023-08-30 13:25:30 +08:00
jiangweidong
2a5c635dc5 fix: 修改日志内容 2023-08-30 11:32:54 +08:00
jiangweidong
7dbaa28539 fix: 解决CAS无法登陆问题 2023-08-30 11:28:17 +08:00
feng
5bae4cde58 perf: dashboard date metrics 2023-08-29 22:04:08 +08:00
老广
35c0d7be35 Merge pull request #11455 from jumpserver/pr@dev@feat_settings_tool_ping_telnet_multi
feat: telnet、ping支持批量测试
2023-08-29 19:05:56 +08:00
jiangweidong
1f2a4b0fb5 feat: telnet、ping支持批量测试 2023-08-29 17:02:51 +08:00
jiangweidong
7c3a3d599b perf: 参数修改 2023-08-29 15:18:51 +08:00
jiangweidong
d70770775a perf: 翻译 2023-08-29 15:16:02 +08:00
jiangweidong
bc217e1bad Merge branch 'dev' of https://github.com/jumpserver/jumpserver into pr@dev@feat_audit_view_download_replay 2023-08-29 14:21:11 +08:00
jiangweidong
d4469aeaf7 feat: 查看/下载录像被记录在活动日志中 2023-08-29 14:21:06 +08:00
老广
904406c5c1 Merge pull request #11442 from jumpserver/pr@dev@fix_migrate_sftp
fix: 修复迁移的 sftp 数量不对
2023-08-28 19:03:28 +08:00
ibuler
09db2ad3e1 fix: 修复迁移的 sftp 数量不对 2023-08-28 16:48:22 +08:00
fit2bot
859268f7f3 perf: 优化账号创建 (#11440)
* feat: 支持账号模版自动推送
* perf: 修改模版
* perf: 优化账号创建

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-08-28 15:43:45 +08:00
老广
72bb5a4037 Merge pull request #11439 from jumpserver/pr@dev@change_tips
perf: 修改同名账号的提示
2023-08-28 11:25:55 +08:00
ibuler
6f3871d5fe perf: 修改同名账号的提示 2023-08-28 11:24:54 +08:00
“huailei000”
2f0c346365 perf: 优化不能生成MFA二维码问题 2023-08-25 12:01:51 +05:00
老广
e9c090f656 Merge pull request #11410 from hoilc/hoilc-patch-1
perf: 通过网域连接k8s时支持默认端口
2023-08-24 18:25:14 +08:00
老广
7b0b07cf52 Merge pull request #11415 from jumpserver/pr@dev@perf_select_host
perf: 优化 applet 发布机选择
2023-08-24 18:14:08 +08:00
ibuler
bebb90f688 perf: 优化 applet 发布机选择 2023-08-24 18:00:19 +08:00
hoilc
ac14a70c51 perf: 通过网域连接k8s时支持默认端口 2023-08-24 16:10:29 +08:00
jiangweidong
642f92c0a3 fix: saml2无法登陆问题 2023-08-24 11:05:50 +05:00
fit2bot
04f4ecb3d1 perf: 优化文案 (#11405)
Co-authored-by: ibuler <ibuler@qq.com>
2023-08-24 10:58:27 +08:00
老广
60703c920c Merge pull request #11381 from jumpserver/pr@dev@sqlserver_add_version
perf: sql server 添加驱动标识
2023-08-24 10:55:48 +08:00
ibuler
9634f397df perf: 不允许修改自己的角色 2023-08-23 16:11:05 +05:00
ibuler
f9a7a95191 fix: 修复 Host name 中包含 [ 导致 ansible 错误的问题 2023-08-23 16:07:58 +05:00
ibuler
bced33fd93 perf: sql server 添加驱动标识 2023-08-22 13:40:41 +08:00
老广
1044ff004b Merge pull request #11372 from jumpserver/pr@dev@device_add_sftp
perf: 网络设备支持 sftp
2023-08-21 15:40:30 +08:00
ibuler
e11c7a264e perf: 网络设备支持 sftp 2023-08-21 15:20:58 +08:00
老广
3c497aa81e Merge pull request #11361 from jumpserver/pr@dev@perf_login_csrf
perf: 修改 csrf 登录时判断
2023-08-18 20:44:25 +08:00
ibuler
c8a1f4b092 perf: 修改 csrf 登录时判断 2023-08-18 20:36:58 +08:00
老广
9dd2dc8907 Merge pull request #11358 from jumpserver/pr@dev@perf_csrf_token_error
perf: 修改 csrf token 提示
2023-08-18 18:42:50 +08:00
ibuler
56285d906f perf: 修改 csrf token 提示 2023-08-18 18:41:10 +08:00
ibuler
44b536a23b perf: 去掉 migrate 提示 2023-08-18 15:17:41 +05:00
老广
a97003a03a Merge pull request #11353 from jumpserver/pr@dev@perf_login_info
perf: 优化登录页面提示判断,可能没有端口
2023-08-18 18:00:26 +08:00
ibuler
4315cbe6d0 perf: 优化登录页面提示判断,可能没有端口
perf: 修改 login 检测
2023-08-18 17:59:13 +08:00
老广
b2d9670721 Merge pull request #11349 from jumpserver/pr@dev@perf_info
perf: 修改说明
2023-08-18 17:01:31 +08:00
ibuler
78f66c46e8 perf: 修改说明 2023-08-18 16:59:07 +08:00
老广
f3af9c3108 Merge pull request #11346 from jumpserver/pr@dev@fix_sessionshare
fix: 修复创建会话分享不填写用户报错的问题
2023-08-18 16:52:07 +08:00
ibuler
822a124dbc perf: 优化登录提示 2023-08-18 13:51:27 +05:00
Bai
20799ece93 fix: 修复创建会话分享不填写用户报错的问题 2023-08-18 08:46:14 +00:00
老广
4e2c7d7aab Merge pull request #11343 from jumpserver/pr@dev@allow_hosts_to_all
perf: 修改 allowed hosts
2023-08-18 16:17:25 +08:00
ibuler
75e4895314 perf: 修改 allowed hosts 2023-08-18 16:15:25 +08:00
Bai
ea7b409a7f fix: 修复资产树子节点创建后没有获取到的问题 2023-08-18 13:03:54 +05:00
老广
01d10a25e9 Merge pull request #11337 from jumpserver/pr@dev@perf_change_depends
perf: 修改依赖
2023-08-18 15:27:57 +08:00
ibuler
61ce39b4ba perf: 修改依赖 2023-08-18 15:19:26 +08:00
feng
7506c7ea43 fix: 修复密钥校验ansible不支持{% 2023-08-17 16:16:34 +05:00
老广
f6f162ec3a Merge pull request #11324 from jumpserver/pr@master@perf_django_ca_version
perf: 修改 django cas version
2023-08-17 17:43:23 +08:00
老广
2e840e3b05 Merge pull request #11323 from jumpserver/pr@dev@perf_django_ca_version
perf: 修改 django cas version
2023-08-17 17:43:04 +08:00
ibuler
ff4560c2a7 perf: 修改 django cas version 2023-08-17 09:42:27 +00:00
ibuler
deeb8da226 perf: 修改 django cas version 2023-08-17 17:39:58 +08:00
Bryan
03273b2ec4 Merge pull request #11322 from jumpserver/dev
v3.6.0
2023-08-17 13:56:25 +05:00
老广
737cae8d03 Merge pull request #11320 from jumpserver/pr@dev@fix_operatelog_not_record_component
fix: 操作日志判断is_service_account为匿名用户会报错
2023-08-17 16:29:04 +08:00
jiangweidong
cf6ce0fa2e fix: 操作日志判断is_service_account为匿名用户会报错 2023-08-17 16:21:30 +08:00
fit2bot
7dd6ee5f1a perf: translate (#11319)
Co-authored-by: feng <1304903146@qq.com>
2023-08-17 15:34:50 +08:00
老广
91432f0e8f Merge pull request #11318 from jumpserver/pr@dev@update_poetry_lock
perf: 更新 poetry lock
2023-08-17 15:28:51 +08:00
ibuler
6c36b5be92 perf: 更新 poetry lock 2023-08-17 15:25:44 +08:00
Bai
7b89055fbf fix: 账号备份参数控制 2023-08-17 11:50:17 +05:00
jiangweidong
c0f3769f9f perf: 优化组件的操作行为不记录到操作日志中 2023-08-17 11:49:57 +05:00
fit2bot
b20abb494f perf: 优化 vault 配置 (#11313)
Co-authored-by: feng <1304903146@qq.com>
2023-08-17 12:12:58 +08:00
老广
a084bc9962 Merge pull request #11310 from jumpserver/pr@dev@perf_applet_deploy
perf: 优化发布机的注册名称,避免重复
2023-08-17 10:59:53 +08:00
老广
cbb615e2ce Merge pull request #11311 from jumpserver/pr@dev@perf_applet_enterprise
perf: applet 上传检查版本
2023-08-17 10:57:53 +08:00
ibuler
769d5fbd96 perf: applet 上传检查版本 2023-08-17 10:54:35 +08:00
Eric
bbd36fea03 perf: 优化发布机的注册名称,避免重复 2023-08-17 10:33:59 +08:00
老广
9317d9e35e Merge pull request #11307 from jumpserver/pr@dev@perf_add_xframe_option
perf: add iframe option
2023-08-17 10:21:53 +08:00
ibuler
f697033252 perf: add iframe option 2023-08-17 10:18:27 +08:00
老广
eb8d80d417 Merge pull request #11302 from jumpserver/pr@dev@fix_ops_shell_run_failed
fix: 修复 shell 批量命令无法执行的问题
2023-08-16 18:43:35 +08:00
老广
d5ac8b16f1 Merge pull request #11305 from jumpserver/pr@dev@perf_task_err
perf: 修复发布机任务执行失败的问题
2023-08-16 18:43:02 +08:00
老广
ed54cc8507 Merge pull request #11306 from jumpserver/pr@dev@perf_chrome_ext
fix: 修复 chrome 插件不生效的问题
2023-08-16 18:33:14 +08:00
ibuler
40248077cd fix: 修复 chrome 插件不生效的问题 2023-08-16 18:30:29 +08:00
Eric
45e1723aa9 perf: 修复发布机任务执行失败的问题 2023-08-16 18:17:32 +08:00
Aaron3S
af9f7060be fix: 修复 shell 批量命令无法执行的问题 2023-08-16 17:01:35 +08:00
Eric
8f10b84e94 perf: 修复 Chrome 执行脚本失败,页面卡在进度条界面的问题 2023-08-16 13:48:00 +05:00
halo
d02cbcc3a3 perf: linux客户端文件后缀 2023-08-16 13:47:30 +05:00
ibuler
689fd12141 perf: windows 可以添加 sftp 2023-08-16 12:24:56 +05:00
Eric
3c9c494979 perf: 修复发布机因同名账号创建造成的部署异常 2023-08-16 12:15:02 +05:00
老广
16ceb79427 Merge pull request #11292 from jumpserver/pr@dev@k8s_add_icon
perf: 修改 k8s icon
2023-08-16 13:44:51 +08:00
老广
cd5e53e3dc Merge pull request #11293 from jumpserver/pr@dev@oracledb_thin_mode
perf: python-oracledb Thin Mode
2023-08-16 13:44:26 +08:00
吴小白
df1aa73723 perf: python-oracledb Thin Mode 2023-08-16 13:11:48 +08:00
ibuler
ceee2e1633 perf: 修改 k8s icon 2023-08-16 11:42:36 +08:00
吴小白
91867fa01d Merge pull request #11291 from jumpserver/pr@dev@perf_Dockerfile
perf: 优化构建企业版本镜像
2023-08-16 11:24:18 +08:00
吴小白
dfde9258c7 perf: 优化构建企业版本镜像 2023-08-16 11:17:53 +08:00
fit2bot
fc595bc4e4 perf: 启动 ssh 隧道错误处理优化 (#11287)
Co-authored-by: feng <1304903146@qq.com>
2023-08-15 18:50:48 +08:00
老广
48aa48e7a3 Merge pull request #11262 from jumpserver/pr@dev@revert_dockerfile
revert: 还原构建
2023-08-15 18:37:56 +08:00
老广
479378aa46 Merge branch 'dev' into pr@dev@revert_dockerfile 2023-08-15 18:37:38 +08:00
fit2bot
362c2a9509 perf: 修改翻译 账号模版批量添加 config配置文件 (#11286)
Co-authored-by: feng <1304903146@qq.com>
2023-08-15 18:24:01 +08:00
老广
a423d241a5 Merge pull request #11285 from jumpserver/pr@dev@perf_settings
perf: 再次修改 setting
2023-08-15 17:00:14 +08:00
ibuler
9e6221443e perf: 再次修改 setting 2023-08-15 16:58:41 +08:00
fit2bot
12744a08af perf: vault 日志 (#11282)
Co-authored-by: feng <1304903146@qq.com>
2023-08-15 15:09:25 +08:00
老广
5e29c7e7bf Merge pull request #11275 from jumpserver/pr@dev@perf_setting
perf: 优化设置布局
2023-08-15 13:52:54 +08:00
ibuler
02f38fe37a perf: merge with dev 2023-08-15 13:51:59 +08:00
ibuler
663ccbca6f perf: 修改翻译 2023-08-15 13:49:56 +08:00
ibuler
c4528612d5 perf: 修改完成 2023-08-15 13:45:44 +08:00
Bai
7707101379 perf: 优化飞书信息通知文案 2023-08-15 08:17:24 +05:00
BoringCat
873e6d1ab9 修复飞书markdown信息渲染问题 2023-08-15 07:47:21 +05:00
fit2bot
7ba261c4f0 perf: vault 同步日志 (#11278)
Co-authored-by: feng <1304903146@qq.com>
2023-08-15 10:32:03 +08:00
fit2bot
1f8428ac1c perf: vault 同步速度问题 (#11277)
Co-authored-by: feng <1304903146@qq.com>
2023-08-14 22:32:53 +08:00
ibuler
8e0c04c84c perf: 优化设置布局 2023-08-14 19:40:21 +08:00
Bai
a6e49b730b fix: 修复忘记密码不包含左侧 + 字符 2023-08-14 15:42:32 +05:00
fit2bot
c11ba16e4e perf: oidc 替换原有的is_ajax方法,优化accountbackupexecution 迁移文件 (#11274)
Co-authored-by: feng <1304903146@qq.com>
2023-08-14 18:37:28 +08:00
Eric
efe57b3ebe perf: 修复手动登陆账号密码无法赋值问题 2023-08-14 14:46:51 +05:00
Eric
4899f6bb69 fix: 修复发布机网关选择 2023-08-14 14:45:37 +05:00
jiangweidong
ef0c2f41ac perf: 翻译 2023-08-14 14:38:47 +05:00
jiangweidong
98b4f51cbb fix: 修复云同步策略权限位置显示不正常问 2023-08-14 14:38:47 +05:00
fit2bot
da52180976 perf: 组织角色添加connectiontoken权限 (#11268)
Co-authored-by: feng <1304903146@qq.com>
2023-08-14 16:37:56 +08:00
fit2bot
bd642a0281 perf: 翻译 (#11266)
Co-authored-by: feng <1304903146@qq.com>
2023-08-14 14:47:51 +08:00
吴小白
dc88e4f420 fix: 添加 nmap 包 2023-08-14 14:25:08 +08:00
老广
7a3a0b2d8e Merge pull request #11264 from jumpserver/pr@dev@fix_recursive_expansion
fix: 解决类型树展开全部时,根节点无限递归展开问题
2023-08-14 11:26:59 +08:00
老广
eac1b287e4 Merge pull request #11265 from jumpserver/pr@dev@perf_jms-storage
perf: jms-storage==0.0.51
2023-08-14 11:25:54 +08:00
Bai
d2f7396689 perf: jms-storage==0.0.51 2023-08-14 11:20:58 +08:00
jiangweidong
db4f05afbe fix: 解决类型树展开全部时,根节点无限递归展开问题 2023-08-14 11:07:28 +08:00
吴小白
339fe1b73b revert: 还原构建 2023-08-14 11:06:04 +08:00
fit2bot
237c71f921 perf: vault 同步日志优化 (#11261)
Co-authored-by: feng <1304903146@qq.com>
2023-08-14 10:57:59 +08:00
吴小白
bd7c5f8e65 revert: 还原构建 2023-08-14 10:57:40 +08:00
“huailei000”
c3ea5300a3 perf: 优化任务日志页面时间显示兼容问题 2023-08-14 07:11:11 +05:00
fit2bot
e2de744398 perf: 优化vault 配置 (#11254)
Co-authored-by: feng <1304903146@qq.com>
2023-08-11 16:01:05 +08:00
Bai
a890a8d535 perf: 发布机获取账号API移除日志 2023-08-11 12:17:01 +05:00
老广
c39e134834 Merge pull request #11250 from jumpserver/pr@dev@perf_applet_gen_private_account
perf: 账号生成时,排除 [ 开头的
2023-08-10 18:28:36 +08:00
ibuler
e9e5fbb4c2 perf: 账号生成时,排除 [ 开头的 2023-08-10 18:23:53 +08:00
Bai
3203c298e5 perf: 发布机获取账号API增加日志 2023-08-10 14:57:50 +05:00
老广
e416a5d5d7 Merge pull request #11247 from jumpserver/pr@dev@perf_change_edition
perf: 修改翻译
2023-08-10 17:32:06 +08:00
ibuler
7ea61c0f22 perf: 修改翻译 2023-08-10 17:30:04 +08:00
老广
b2108ec624 Merge pull request #11245 from jumpserver/pr@dev@perf_account_perm
perf: 修复账号权限问题
2023-08-10 16:03:22 +08:00
ibuler
433324ec8c perf: 修复账号权限问题 2023-08-10 15:56:31 +08:00
老广
ac20bfe024 Merge pull request #11243 from jumpserver/pr@dev@perf_update_clients_version
perf: 更新clients版本
2023-08-10 15:18:09 +08:00
老广
a116c7db39 Merge pull request #11244 from jumpserver/pr@dev@perf_merge_migrate
perf: 合并 migrations
2023-08-10 15:13:48 +08:00
ibuler
71e69782b7 perf: 合并 migrations 2023-08-10 15:11:52 +08:00
老广
7611d4e7ce Merge pull request #11242 from jumpserver/pr@dev@perf_applet_enterprise
perf: 修改 applet 企业版
2023-08-10 14:42:52 +08:00
ibuler
a778a40b21 perf: 修改 applet 企业版 2023-08-10 14:41:43 +08:00
老广
4e254493bc Merge pull request #11241 from jumpserver/pr@dev@perf_core_host
perf: 优化 CORE_HOST
2023-08-10 13:07:14 +08:00
ibuler
07530bc56b perf: 优化 CORE_HOST 2023-08-10 12:23:40 +08:00
老广
259daaab38 Merge pull request #11240 from jumpserver/pr@dev@perf_i18n
perf: 修改翻译
2023-08-10 12:22:31 +08:00
老广
c769c06202 Merge pull request #11239 from jumpserver/pr@dev@default_add_core
perf: 修改默认添加 core 到 allow hosts
2023-08-10 11:24:31 +08:00
ibuler
e0463420fa perf: 修改默认添加 core 到 allow hosts 2023-08-10 11:23:42 +08:00
ibuler
1944e80418 perf: 修改翻译 2023-08-10 11:19:17 +08:00
fit2bot
4b72099053 perf: 连接方式新增 guide 模式 (#11237)
Co-authored-by: ibuler <ibuler@qq.com>
2023-08-09 19:59:53 +05:00
Aaron3S
dcf113b87c feat: 增加作业中心 sql 支持 2023-08-09 17:32:35 +08:00
Bai
ab6d0d2484 perf: 优化账号 API 支持 comment 模糊搜索 2023-08-09 17:05:21 +08:00
Eric
7bef4b07ff feat: 增加会话最大连接时长设置 2023-08-09 10:37:38 +08:00
fit2bot
f486c843bf feat: 支持拉起本地客户端 (#10865)
* perf: 拉起本地客户端应用接口提供更多数据

* fix: rdp客户端拉起后窗口标题中文乱码

* perf: ssh客户端连接选项显示优化

* feat: 增加本地sftp客户端选项

* perf: 合并支持sftp协议

* perf: sftp与ssh使用相同端口

---------

Co-authored-by: halo <wuyihuangw@gmail.com>
2023-08-09 10:36:54 +08:00
halo
90038e41f9 perf: 更新clients版本 2023-08-08 19:09:24 +08:00
fit2bot
33ee84633f perf: 修改terminal metrics接口 加入terminal name (#11228)
Co-authored-by: feng <1304903146@qq.com>
2023-08-08 18:45:10 +08:00
ibuler
419806aa57 perf: 去掉 requirements.txt 2023-08-08 17:52:44 +08:00
fit2bot
8ea3c3288b perf: 改密替换校验可连接性方法 (#11224)
Co-authored-by: feng <1304903146@qq.com>
2023-08-08 17:26:29 +08:00
老广
99ce2bc946 Merge pull request #11222 from jumpserver/pr@dev@perf_change_help_text
perf: 优化 applet 选择账号调度
2023-08-08 16:50:17 +08:00
ibuler
9bf76ae07a perf: 优化 applet 选择账号调度 2023-08-08 16:15:44 +08:00
ibuler
a33540710e perf: 优化 applet 选择账号调度 2023-08-08 15:58:24 +08:00
ibuler
680d31dad2 perf: 优化 applet 账号选择 2023-08-08 15:58:24 +08:00
Bai
a297355a0d fix: 修复 accounts 迁移文件编号冲突 2023-08-08 14:07:08 +08:00
ibuler
e891283925 perf: System 组织不允许删除 2023-08-08 10:33:28 +08:00
ibuler
c72ec5ea78 perf: 组织属性添加 internal 2023-08-08 10:33:28 +08:00
fit2bot
b764827003 perf: 虚拟账号增加密码选项 (#11201)
* perf: 修改账号配置

* perf: 修改 account

* perf: 修改 virtual account

* perf: 虚拟账号增加密码选项

* perf: 修改获取虚拟账号

* perf: 修改 virtual account

* perf: 修改一些写法

* perf: 添加说明

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-08-08 10:16:23 +08:00
Eric
a261b2de3c perf: 优化用户个人 ssh 公钥校验 2023-08-07 18:52:45 +08:00
Eric
e939776da0 chore: 更新 poetry.lock 2023-08-07 18:48:38 +08:00
fit2bot
0a9726d845 feat: 账号备份密钥拆分 (#11199)
Co-authored-by: feng <1304903146@qq.com>
2023-08-07 15:50:09 +08:00
fit2bot
c21fcacf70 perf: 检测不常用账号 (#11205)
Co-authored-by: feng <1304903146@qq.com>
2023-08-07 14:55:17 +08:00
jiangweidong
f588a112fb perf: 修改nmap位置 2023-08-07 14:01:58 +08:00
jiangweidong
ecca64ef42 perf: Dockerfile中安装nmap工具 2023-08-07 14:01:58 +08:00
吴小白
56a657827a Merge pull request #11210 from jumpserver/pr@dev@fix_huaweicloud_sdk
fix: 添加华为云依赖包
2023-08-07 12:18:59 +08:00
jiangweidong
38803518fc perf: 类型树右击可以获取节点下所有的资产 2023-08-07 12:15:50 +08:00
jiangweidong
c2f1e4f4f6 fix: 添加华为云依赖包 2023-08-07 11:07:28 +08:00
Eric
49662b308d feat: Chrome 应用通过平台的安全模式动态加载扩展 2023-08-07 11:03:18 +08:00
jiangweidong
7636255533 feat: 系统工具改为异步,增加tcpdump工具 2023-08-07 10:18:51 +08:00
吴小白
8accd296b8 Merge pull request #11202 from jumpserver/pr@dev@perf_dockerfile
perf: 优化 Dockerfile
2023-08-05 14:34:42 +08:00
吴小白
e424e3c311 perf: 优化 Dockerfile 2023-08-05 14:18:27 +08:00
老广
e38dd96d6f Merge pull request #11191 from jumpserver/pr@dev@perf_http_support_unsafe_mode
perf: 修改 safe mode
2023-08-04 14:02:42 +08:00
吴小白
170f1e40d6 Merge pull request #11190 from jumpserver/pr@dev@perf_dockerfile
perf: 优化构建
2023-08-03 20:29:20 +08:00
Bai
2aacb07b15 fix: 修复 MAX_LIMIT_PER_PAGE, 默认值以及数据类型转换 2023-08-03 18:38:58 +08:00
ibuler
6b9f40d5c1 perf: 修改 safe mode 2023-08-03 16:52:21 +08:00
ibuler
27c4e1d895 perf: web 平台增加高级选项,可以控制是否安全模式 2023-08-03 16:09:54 +08:00
吴小白
65916a469c perf: 优化构建 2023-08-03 14:33:22 +08:00
jiangweidong
ff2aace569 feat: ssh_ping及custom_command支持sudo及su切换用户 (#11180) 2023-08-03 14:09:13 +08:00
fit2bot
8cfec07faa fix: 修复 在AWS公有云环境中,rds等资产的域名解析长度超过JumpServer资产限制的128字节导致连接失败问题 (#11188)
Co-authored-by: feng <1304903146@qq.com>
2023-08-03 11:21:30 +08:00
老广
4dc6bd3660 Merge pull request #11186 from jumpserver/pr@dev@perf_merge_migrations
perf: 合并 migrations
2023-08-03 10:53:25 +08:00
ibuler
ee874f3ddc perf: 合并 migrations 2023-08-03 10:52:13 +08:00
老广
9691125c7a Merge pull request #11182 from jumpserver/pr@dev@perf_telnet_prompt
perf: 修改 telnet 平台 setting
2023-08-02 18:27:10 +08:00
ibuler
41fa1d65ff perf: 修改 telnet 平台 setting 2023-08-02 17:54:11 +08:00
fit2bot
6d2e7cf7f4 perf: 任务添加过滤项 (#11181)
Co-authored-by: feng <1304903146@qq.com>
2023-08-02 17:51:58 +08:00
ibuler
4ef05a1cd4 perf: 修改 telnet 平台,支持自定义 prompt 2023-08-02 16:53:47 +08:00
老广
207d015497 Merge pull request #11177 from jumpserver/pr@dev@perf_del_remote
perf: 不能 remove
2023-08-02 15:49:53 +08:00
ibuler
85058f8599 perf: 不能 remove 2023-08-02 15:45:13 +08:00
老广
55dad53934 Merge pull request #11175 from jumpserver/pr@dev@no_virtual_env
perf: 不创建 venv
2023-08-02 15:40:43 +08:00
ibuler
958290529a perf: 不创建 venv 2023-08-02 15:37:30 +08:00
老广
ba128e99f9 perf: 添加清华源 (#11174) 2023-08-02 15:30:20 +08:00
fit2bot
89c4a8d5c4 perf: 去掉 lock 中的 source (#11173)
* perf: 去掉 lock 中的 source

* perf: 去掉格式化

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-08-02 15:17:21 +08:00
fit2bot
6d758bdb59 fix: k8s 支持网关 (#11171)
Co-authored-by: feng <1304903146@qq.com>
2023-08-02 15:07:22 +08:00
老广
eb8e7c5f8a Merge pull request #11170 from jumpserver/pr@dev@add_mirror
perf: using mirror
2023-08-02 14:54:56 +08:00
ibuler
ef4f1ddb74 perf: using mirror 2023-08-02 14:52:12 +08:00
老广
e14e5b523a Merge pull request #11166 from jumpserver/pr@dev@using_poetry_requirements
perf: 使用 poetry 管理依赖
2023-08-02 13:51:35 +08:00
ibuler
99ae0066ae perf: 使用 poetry 管理依赖 2023-08-02 13:45:15 +08:00
fit2bot
d486dfc7f7 fix: 修复因vault 改密500 问题 (#11168)
Co-authored-by: feng <1304903146@qq.com>
2023-08-02 13:11:46 +08:00
fit2bot
93ba4443dd perf: windows ssh 协议 默认开启 (#11158)
Co-authored-by: feng <1304903146@qq.com>
2023-08-01 19:48:32 +08:00
fit2bot
d182d14e26 perf: 账号备份日志优化 (#11151)
Co-authored-by: feng <1304903146@qq.com>
2023-08-01 18:17:02 +08:00
fit2bot
8ed823d587 feat: 批量不是发布机 (#11150)
Co-authored-by: feng <1304903146@qq.com>
2023-08-01 17:42:16 +08:00
fit2bot
44397caad4 perf: 支持在线会话暂停操作 (#11146)
* perf: 支持在线会话暂停操作

* perf: 优化代码

---------

Co-authored-by: Eric <xplzv@126.com>
2023-08-01 16:40:38 +08:00
fit2bot
d17e2cde06 feat: 终端会话增加字段: cmd_amount(命令数量) (#11136)
* feat: 终端会话增加字段: command_amount(命令数量)

* perf: 优化已产生会话的命令数量计算方式

* Update 0065_session_command_amount.py

* Update session.py

* Update session.py

* perf: 优化会话命令数量的计算逻辑

* perf: 优化命令数量获取

---------

Co-authored-by: fangfang.dong <fangfang.dong@fit2cloud.com>
Co-authored-by: Bai <baijiangjie@gmail.com>
2023-08-01 16:14:40 +08:00
feng
681988f450 fix: ansible task 500 2023-08-01 16:07:07 +08:00
ibuler
6b333adc05 perf: 修改 ansible version 2023-08-01 10:50:54 +08:00
ibuler
5207b99696 perf: 修改 inventory 2023-08-01 10:49:40 +08:00
fangfang.dong
b93b64255b perf: 统一用户名称的label显示 2023-07-31 20:11:44 +08:00
Aaron3S
f9c9c9d525 fix: 禁止一些 ansible 变量 2023-07-31 19:46:33 +08:00
fit2bot
1ad0a20627 fix: 启动500 (#11133)
Co-authored-by: feng <1304903146@qq.com>
2023-07-31 18:31:11 +08:00
老广
0ed929a3b2 Merge pull request #11129 from jumpserver/pr@dev@fix_common_elasticsearch
fix: 修复es7创建index的错误
2023-07-31 17:54:13 +08:00
nut
2ffadcb9bc Update es.py 2023-07-31 17:53:08 +08:00
fit2bot
3b615719fe feat: 账号密钥用vault储存 (#10830)
* feat: 账号密钥用vault储存

* perf: 优化 Vault

* perf: 重构 Vault Backend 设计架构 (未完成)

* perf: 重构 Vault Backend 设计架构 (未完成2)

* perf: 重构 Vault Backend 设计架构 (未完成3)

* perf: 重构 Vault Backend 设计架构 (未完成4)

* perf: 重构 Vault Backend 设计架构 (未完成5)

* perf: 重构 Vault Backend 设计架构 (已完成)

* perf: 重构 Vault Backend 设计架构 (已完成)

* perf: 重构 Vault Backend 设计架构 (已完成)

* perf: 小优化

* perf: 优化

---------

Co-authored-by: feng <1304903146@qq.com>
Co-authored-by: Bai <baijiangjie@gmail.com>
Co-authored-by: feng626 <57284900+feng626@users.noreply.github.com>
2023-07-31 17:39:30 +08:00
ibuler
7776158279 perf: 修改 django_cas_ng 的版本 2023-07-31 17:25:32 +08:00
fangfang.dong
47dd73eb4c fix: 修复es7创建index的错误 2023-07-31 14:54:35 +08:00
老广
bf30be2084 Merge pull request #11122 from jumpserver/pr@dev@fix_rdpfilemultimon
feat: rdp file 支持设置多屏显示 (multimon)
2023-07-31 09:22:40 +08:00
老广
39d651dd9b Merge pull request #11123 from jumpserver/pr@dev@fix_rdpfile
feat: rdp file 支持设置多屏显示
2023-07-31 09:22:27 +08:00
Bai
07f4fdd92d feat: rdp file 支持设置多屏显示 2023-07-28 18:06:38 +08:00
Bai
53c8c2d9ea feat: rdp file 支持设置多屏显示 (multimon) 2023-07-28 17:45:20 +08:00
fit2bot
c201914bc8 perf: change secret perf (#11120)
Co-authored-by: feng <1304903146@qq.com>
2023-07-28 17:00:55 +08:00
老广
83917cb440 Merge pull request #11118 from jumpserver/pr@dev@perf_filter_and_default_group
perf: 添加到默认组织中
2023-07-28 16:52:00 +08:00
ibuler
b55eb1236f perf: 添加到默认组织中 2023-07-28 16:15:12 +08:00
fit2bot
38cee8eaa4 fix: 修复migrations文件错误 (#11116)
Co-authored-by: fangfang.dong <fangfang.dong@fit2cloud.com>
2023-07-28 15:14:49 +08:00
jiangweidong
e339a56042 feat: 云同步增加同步策略 (#11001) 2023-07-28 14:34:38 +08:00
fit2bot
384b639dd3 perf: 优化隐藏 Chrome 的代填操作 (#11114)
Co-authored-by: Eric <xplzv@126.com>
2023-07-28 14:33:09 +08:00
jiangweidong
c86b28a305 feat: 支持批量审批工单 (#11014) 2023-07-28 14:32:31 +08:00
老广
dbfb9db5c5 Merge pull request #11113 from jumpserver/pr@dev@perf_account_select
perf: 修改发布机账号选择
2023-07-28 11:17:02 +08:00
ibuler
93350faa08 perf: 修改账号选择 2023-07-28 11:15:24 +08:00
ibuler
107fda0f99 perf: 修改发布机账号选择 2023-07-28 11:13:48 +08:00
老广
58124af1ce Merge pull request #11111 from jumpserver/pr@dev@perf_applet_host_account_create
perf: 修改应用发布机账号创建
2023-07-28 11:07:18 +08:00
ibuler
1a4c5dca33 perf: 修改翻译 2023-07-28 11:06:01 +08:00
ibuler
5380dc0c2d perf: 修改翻译 2023-07-28 11:02:21 +08:00
ibuler
2c22396093 perf: 修改去掉冲突 2023-07-28 10:49:33 +08:00
ibuler
31da139eb3 merge: with dev 2023-07-28 10:46:34 +08:00
ibuler
962354c50d perf: 修改应用发布机账号创建 2023-07-28 10:41:37 +08:00
jiangweidong
1907c795c3 feat: 系统工具增加服务器时间及nmap工具 (#11078) 2023-07-28 10:40:48 +08:00
fangfang.dong
1239ffd4c8 perf: 优化会话分享url的构造 2023-07-28 10:22:47 +08:00
nut
7a37f91964 Update sharing.py 2023-07-28 10:22:47 +08:00
fangfang.dong
2741d7cbdc feat: 终端会话分享增加消息通知功能 2023-07-28 10:22:47 +08:00
fit2bot
99adb6ab7a perf: 改造username_suggestions api 改为post请求 (#11110)
Co-authored-by: feng <1304903146@qq.com>
2023-07-27 14:04:29 +08:00
Bai
665c833479 fix: 修复创建 ES 存储 get_mapping index 使用位置参数 2023-07-27 10:43:21 +08:00
Bai
77944cc91b fix: 修复创建资产 is_valid 使用kw参数 2023-07-27 10:21:22 +08:00
ibuler
b5fc865cc6 perf: Oracle 支持 2023-07-26 19:27:34 +08:00
ibuler
3b6c2fc0c0 perf: 修改 sftp 的一些处理 2023-07-26 19:25:39 +08:00
Bai
114645732a perf: 用户授权账号 API 返回 id 字段 2023-07-26 19:24:58 +08:00
老广
1b338a9cd3 Merge pull request #11093 from jumpserver/pr@dev@fix_user_account
fix: 修复同名账号用户名代填问题
2023-07-26 19:16:45 +08:00
老广
59f12a3c14 Merge pull request #11091 from jumpserver/pr@dev@ssh_to_sftp
perf: 修改 sftp 协议
2023-07-26 18:21:45 +08:00
Eric
3fc52cbb68 fix: 修复同名账号用户名代填问题 2023-07-26 17:13:38 +08:00
ibuler
b0b6d19bc0 perf: 修改 sftp 协议 2023-07-26 15:31:02 +08:00
老广
9deb48b16b Merge pull request #11080 from jumpserver/pr@dev@fix_bulk_update_asset_error
perf: 修复批量更新资产导致的错误
2023-07-26 09:51:45 +08:00
ibuler
48510e98a2 merge: with dev 2023-07-25 17:13:38 +08:00
ibuler
c135837372 perf: 修改 connect method 2023-07-25 17:12:06 +08:00
老广
92ed189453 Merge pull request #11083 from jumpserver/pr@dev@perf_koko_support
perf: 移除 Koko 的部分数据库支持
2023-07-25 16:33:58 +08:00
Eric
418ac5a5ba perf: 移除 Koko 的部分数据库支持 2023-07-25 15:45:48 +08:00
fit2bot
539a6161e6 perf: 翻译 (#11082)
Co-authored-by: feng <1304903146@qq.com>
2023-07-25 15:40:57 +08:00
ibuler
806baeb136 perf: 修复批量更新资产导致的错误 2023-07-25 14:45:24 +08:00
老广
ae0daddbea Merge pull request #11077 from jumpserver/pr@dev@change_ansible_pkg
perf: 使用瘦身后的 ansible
2023-07-25 11:22:29 +08:00
ibuler
76903977eb perf: 使用瘦身后的 ansible 2023-07-25 11:21:01 +08:00
老广
c9fffa50a8 Merge pull request #11076 from jumpserver/pr@dev@perf_django_version
perf: 降级 Django 版本
2023-07-25 10:57:53 +08:00
ibuler
6478727cd2 perf: 修改依赖包 2023-07-25 10:53:14 +08:00
ibuler
a20b210514 perf: 降级 Django 版本 2023-07-25 10:41:16 +08:00
老广
04a34e8456 Merge pull request #11075 from jumpserver/pr@dev@perf_domains_get
perf: 优化 domains 获取
2023-07-25 10:23:35 +08:00
ibuler
4d2c4a9602 perf: 优化 domains 获取 2023-07-25 10:11:57 +08:00
老广
2a24fcc1bb Merge pull request #11073 from jumpserver/pr@dev@perf_req
perf: 修改 uvicon  的版本
2023-07-24 23:28:33 +08:00
ibuler
366693783c perf: 修改 uvicon 的版本 2023-07-24 23:27:25 +08:00
老广
0a611a4ce9 Merge pull request #11072 from jumpserver/pr@dev@perf_ws_asgi
perf: 优化 asgi 的位置
2023-07-24 23:23:36 +08:00
ibuler
5fedb5440c perf: 设置 application 到 __all__ 2023-07-24 23:23:04 +08:00
ibuler
160c99a01a perf: 修改 requirements 2023-07-24 23:21:30 +08:00
ibuler
089d769eb0 perf: 优化 asgi 的位置 2023-07-24 23:20:05 +08:00
老广
9195d4c43d Merge pull request #11071 from jumpserver/pr@dev@remove_unuse_app
perf: 去掉不用的 app
2023-07-24 22:54:08 +08:00
ibuler
f1d984898b perf: 去掉不用的 app 2023-07-24 22:53:10 +08:00
老广
ecfd9449f2 Merge pull request #11070 from jumpserver/pr@dev@remove_loong64
perf: 拆分 loong64 架构
2023-07-24 21:22:53 +08:00
吴小白
94d40efcad perf: 预构建 ansible-core 2023-07-24 21:17:53 +08:00
吴小白
d5461fe66f perf: 拆分 loong64 架构 2023-07-24 21:09:02 +08:00
老广
00f4ae97ed Merge pull request #11068 from jumpserver/pr@dev@perf_deps
perf: 修改版本以来
2023-07-24 19:31:34 +08:00
ibuler
554c1da38b perf: 修改版本以来 2023-07-24 19:30:27 +08:00
老广
f1a68ebd70 Merge pull request #11064 from jumpserver/pr@dev@change_python_version
perf: 修改 Python 的版本
2023-07-24 18:23:52 +08:00
ibuler
b443a89cb5 perf: 修改 Python 的版本 2023-07-24 18:22:48 +08:00
老广
5b1ae46153 Merge pull request #11062 from jumpserver/pr@dev@for_django4
perf: 修改写法
2023-07-24 18:10:04 +08:00
ibuler
98fd209498 perf: 修改为 Domain 2023-07-24 18:09:10 +08:00
ibuler
7af769f7d3 perf: es 修改导入 2023-07-24 18:05:28 +08:00
老广
89ec01003c Merge pull request #11057 from jumpserver/pr@dev@for_django4
perf: 修改支持 Django4
2023-07-24 17:59:30 +08:00
ibuler
148bf3b894 perf: 修改写法 2023-07-24 17:55:17 +08:00
ibuler
38e8e8734d perf: 添加 DEBUG 日志 2023-07-24 17:49:32 +08:00
ibuler
d8d487f770 perf: 修改 ALLOW_HOSTS 2023-07-24 15:32:30 +08:00
ibuler
e3aaba4798 perf: 去掉不用的 2023-07-24 14:57:49 +08:00
ibuler
95e92a45d5 perf: 修改 xpack requirements 2023-07-24 14:46:48 +08:00
ibuler
86a17b9955 perf: 支持 ws 2023-07-24 14:32:13 +08:00
ibuler
7ae52eb941 perf: 修改 gettext 2023-07-24 14:09:22 +08:00
ibuler
b4b9c805ff perf: 修改支持 Django4 2023-07-24 11:52:25 +08:00
老广
16660575b7 Merge pull request #11054 from jumpserver/pr@dev@change_req_version
perf: 修改 mssql
2023-07-24 10:16:01 +08:00
老广
e9c2351f83 Merge pull request #11048 from huiserwang/dev_huiserwang
fix a latent bug when field_type belongs to int, bool and list.
2023-07-24 10:15:28 +08:00
ibuler
ed49216625 perf: 修改 mssql 2023-07-24 10:14:26 +08:00
ibuler
2417a0930f perf: 修改依赖库版本 2023-07-24 10:07:32 +08:00
老广
c9ba3f4f05 Merge pull request #11045 from jumpserver/pr@dev@feat_python_v3.11
feat: python 支持使用 3.11 版本
2023-07-24 10:07:03 +08:00
Huiser WANG
78d8e410db fix a latent bug when field_type belongs to int, bool and list. 2023-07-22 14:04:21 +08:00
feng
1f25eaf413 perf: update requirements.txt 2023-07-21 19:58:01 +08:00
Eric
54e6200ffe feat: python 支持使用 3.11 版本 2023-07-21 18:21:24 +08:00
老广
bad8400e77 Merge pull request #11042 from jumpserver/pr@dev@chrome_change_readme
chore: 修改 README
2023-07-21 14:11:19 +08:00
ibuler
0fb01bd7fb chore: 还原 requirements 2023-07-21 14:10:21 +08:00
ibuler
34e7671f65 chore: 修改 README 2023-07-21 14:04:34 +08:00
老广
2d99fddaf8 Merge pull request #10842 from jumpserver/pr@dev@perf_support_tidb
perf: 修改支持 tidb
2023-07-21 10:25:36 +08:00
老广
5df4efa5a8 Merge pull request #11037 from jumpserver/pr@dev@chore_change_readme
chore: 修改 readme
2023-07-20 19:43:04 +08:00
ibuler
e2207cf8f1 chore: 修改 readme 2023-07-20 19:41:42 +08:00
Bryan
e90e61e8dd Merge pull request #11035 from jumpserver/dev
v3.5.0
2023-07-20 19:03:31 +08:00
fit2bot
4c48204e16 perf: translate (#11036)
Co-authored-by: feng <1304903146@qq.com>
2023-07-20 18:46:34 +08:00
老广
bddcd8475d Merge pull request #11034 from jumpserver/pr@dev@chore_change_readme
perf: 修改 README, 添加 GPT
2023-07-20 18:11:10 +08:00
ibuler
5f8d84df66 perf: 修改图标 2023-07-20 18:10:28 +08:00
ibuler
cee87ae4d7 perf: 修改 README, 添加 GPT 2023-07-20 17:59:58 +08:00
老广
79a2d4e039 Merge pull request #11033 from jumpserver/pr@dev@fix_create_serializer_default
perf: 优化动态创建 serializer
2023-07-20 15:48:11 +08:00
ibuler
4f5e360991 perf: 优化动态创建 serializer 2023-07-20 15:44:52 +08:00
Eric
8e86173cb8 perf: 修复手动输入的同名账号问题 2023-07-20 15:38:51 +08:00
ibuler
08bc3d14aa fix: 修复 json m2m field 中正则有问题匹配不正确 2023-07-20 15:38:04 +08:00
fit2bot
19b91a6c1f perf: 修复资产导入账号模版失败问题 导入文件不区分大小写 (#11031)
Co-authored-by: feng <1304903146@qq.com>
2023-07-20 14:57:51 +08:00
Bai
c50330e055 fix: 修复删除Oracle数据库时报错提示问题 2023-07-20 11:56:49 +08:00
Bai
f5d9dedae1 fix: 修复 Endpoint 获取 Oracle port 的逻辑 2023-07-20 11:51:02 +08:00
Bai
ffb400d70d fix: 修复创建 Oracle 数据库端口超过范围后报错 500 并且不回滚的问题; 2023-07-20 11:23:57 +08:00
Bai
2291cfeaae fix: 修复 ConnectionToken 默认值类型没有转化的问题 2023-07-20 10:42:23 +08:00
老广
400d37ffca Merge pull request #11024 from jumpserver/pr@dev@fix_perm_accounts_only_one
fix: 修复授权的账号,用户名相同的,只有一个的情况
2023-07-19 21:24:45 +08:00
ibuler
14efd9afc1 perf: 修复可能导致的问题 2023-07-19 20:27:06 +08:00
ibuler
cfca519158 fix: 修复授权的账号,用户名相同的,只有一个的情况 2023-07-19 20:16:40 +08:00
Bai
23361fdba9 fix: 修复资产平台导入失败的问题(ID没有返回) 2023-07-19 19:56:18 +08:00
fit2bot
1b0d23fbf4 fix: playbook 批量删除 500 (#11022)
Co-authored-by: feng <1304903146@qq.com>
2023-07-19 19:37:55 +08:00
fit2bot
de4ef7d1b5 perf: GPT资产修改节点导致资产协议变多 (#11021)
Co-authored-by: feng <1304903146@qq.com>
2023-07-19 19:00:15 +08:00
ibuler
046342ceee perf: 平台创建自动化设置默认值 2023-07-19 18:23:18 +08:00
Bai
47195e2c44 fix: 修复客户端方式访问资产 Endpoint 标签匹配策略不生效的问题 2023-07-19 18:14:30 +08:00
老广
947c9e6216 Merge pull request #11018 from jumpserver/pr@dev@perf_coreworker
perf: 优化 Core Worker 数量
2023-07-19 17:17:07 +08:00
Bai
e1af380ad5 perf: 优化 Core Worker 数量 2023-07-19 17:12:44 +08:00
fit2bot
9e8579d5b4 perf: proxy 添加校验 修改翻译 (#11017)
Co-authored-by: feng <1304903146@qq.com>
2023-07-19 17:05:42 +08:00
老广
b8397e7db9 Merge pull request #11012 from jumpserver/pr@dev@perf_change_ui_route
perf: 优化 url
2023-07-19 11:37:51 +08:00
ibuler
8ed8d6f01c perf: 优化 url 2023-07-19 11:36:42 +08:00
Bai
ea607c6177 fix: 优化命令告警,不增加跳转链接 2023-07-19 08:27:34 +05:00
Bai
fa52e2bf5e perf: 优化批量命令告警问题 2023-07-19 08:09:45 +05:00
fangfang.dong
02fc9a730b feat: 快速命令新增告警级别: Warning 2023-07-19 08:09:45 +05:00
Bai
aa744c0fec fix: 修复账号模版切换时报错的问题 2023-07-19 07:34:55 +05:00
fit2bot
02d0c7e4e7 perf: ansible 错误信息优化 (#11005)
Co-authored-by: feng <1304903146@qq.com>
2023-07-18 18:55:18 +08:00
老广
0c34a41381 Merge pull request #11003 from jumpserver/pr@dev@fix_ansiblejobrunerror
fix: 修复批量执行命令时资产名称包含 [ 特殊字符执行报错的问题(issue: 10986)
2023-07-18 18:14:32 +08:00
Bai
8ed3da85f2 fix: 修复批量执行命令时资产名称包含 [ 特殊字符执行报错的问题(issue: 10986) 2023-07-18 10:06:40 +00:00
feng
de5b501ebf fix: 工单时区错乱问题 2023-07-18 16:56:22 +08:00
Bai
ea5a54f9c7 fix: 修复命令告警的问题 2023-07-18 15:21:40 +08:00
halo
6338ecc6fe perf: 优化邮件参数 2023-07-18 15:21:18 +08:00
Bai
be17fe6c31 perf: 邮件同步发送 2023-07-18 15:21:18 +08:00
halo
a18c97aec0 perf: 异步发送 2023-07-18 15:21:18 +08:00
halo
27c10fcae1 fix: 邮件主题前缀设置不生效的问题 2023-07-18 15:21:18 +08:00
fangfang.dong
539babcc97 fix: 修复参数取值错误 2023-07-18 15:17:34 +08:00
fit2bot
0436487bdb fix: 替换ssh key 生成密钥方法 (#10995)
Co-authored-by: feng <1304903146@qq.com>
2023-07-18 15:01:47 +08:00
Bai
f466904a1c perf: 优化 LDAP 用户导入/同步时支持 is_active 为 -1 的情况 2023-07-18 11:03:32 +08:00
老广
1d6bdc9b6b Merge pull request #10990 from jumpserver/pr@dev@perf_gunicorn_max_request
perf: gunicon添加重启参数
2023-07-18 11:02:58 +08:00
ibuler
d965ac0781 perf: 修改参数值 2023-07-18 11:00:43 +08:00
ibuler
6035241efb perf: gunicon添加重启参数 2023-07-18 10:44:12 +08:00
fit2bot
0771b804d1 refactor: 重构危险命令告警类型: Warning (#10970)
* refactor: 重构危险命令告警类型: Warning

* Update _msg_command_warning.html

* Update _msg_command_warning.html

* Update command.py

* Update django.po

* perf: 优化 command acl warning 的代码逻辑

* perf: 优化 command acl warning 的代码逻辑

* perf: 优化 CommandWarningMessage 逻辑

---------

Co-authored-by: fangfang.dong <fangfang.dong@fit2cloud.com>
Co-authored-by: Bai <baijiangjie@gmail.com>
2023-07-17 20:52:54 +08:00
老广
a2c6e5f3fb Merge pull request #10985 from jumpserver/pr@dev@feat_db_mariadb_web_db_support
feat: mariadb 支持 webdb
2023-07-17 18:02:42 +08:00
Aaron3S
c39041fe7b feat: mariadb 支持 webdb 2023-07-17 17:55:05 +08:00
ibuler
22588c52a9 fix: 修复 json field value 可能为 None 导致的问题 2023-07-17 17:25:44 +08:00
ibuler
daef154622 perf: 优化 host api 和 gunicorn 参数 2023-07-17 17:16:18 +08:00
Bai
7b9c4b300d perf: 优化控制 ACL Action Choices 的选项 2023-07-17 16:02:27 +08:00
Bai
819853eae4 feat: 增加 DEBUG_ANSIBLE 配置项支持打印 Ansible 详细日志 2023-07-17 14:11:09 +08:00
老广
f686f9f107 Merge pull request #10978 from jumpserver/pr@dev@fix_platform_setting
perf: 优化平台创建时,协议 setting 必填
2023-07-17 14:02:24 +08:00
ibuler
8a89ee7ac0 perf: 优化平台创建时,协议 setting 必填 2023-07-17 13:53:27 +08:00
老广
696295cf0d Merge pull request #10973 from jumpserver/pr@dev@fix_reset_password_bug
fix: 忘记密码token失效发送验证码报错的问题
2023-07-17 10:54:21 +08:00
老广
d99a3455cd Merge pull request #10966 from jumpserver/pr@dev@perf_chrome_plugins
perf: 优化 chrome 插件
2023-07-17 10:48:22 +08:00
老广
7f5b0618c6 Merge pull request #10969 from jumpserver/pr@dev@fix_ansibletesterror
fix: 修复 Ansible 测试资产可连接性报错的问题(Connection to UNKNOWN port 65535 timed out)
2023-07-17 10:27:48 +08:00
halo
0f1d9bc3eb fix: 忘记密码token失效发送验证码报错的问题 2023-07-15 16:30:45 +08:00
fit2bot
8f6b8b5a11 perf: settings logo (#10971)
Co-authored-by: feng <1304903146@qq.com>
2023-07-14 23:01:48 +08:00
Bai
4da0fadcc4 fix: 修复 Ansible 测试资产可连接性报错的问题(Connection to UNKNOWN port 65535 timed out) 2023-07-14 11:19:31 +00:00
fit2bot
f504413d7f feat: 添加logo api (#10965)
Co-authored-by: feng <1304903146@qq.com>
2023-07-14 16:54:42 +08:00
ibuler
9b5803f2a2 perf: 修改版本号 2023-07-13 20:02:28 +08:00
ibuler
d95e7c2e24 perf: 优化 chrome 插件 2023-07-13 20:01:06 +08:00
ibuler
a1ded0c737 perf: 优化一些 rbac 权限位,着重 connection token 的 2023-07-13 19:57:26 +08:00
老广
bedc83bd3a Merge pull request #10961 from jumpserver/pr@dev@perf_readme
perf: 修改 readme
2023-07-13 14:34:15 +08:00
ibuler
c9f3e4b28d perf: 修改 readme 2023-07-13 14:29:47 +08:00
老广
05bbd22c44 Merge pull request #10959 from jumpserver/pr@dev@perf_add_url
perf: 修改 log 的位置
2023-07-13 14:13:24 +08:00
老广
d00ef2b051 Merge pull request #10960 from maninhill/patch-10
chore: 更新 README
2023-07-13 12:51:19 +08:00
maninhill
efc538a569 chore: 更新 README 2023-07-13 11:55:12 +08:00
ibuler
c1de9151b8 perf: 修改地址 2023-07-13 11:46:47 +08:00
ibuler
2898d25bf8 perf: 修改 log 的位置 2023-07-13 11:45:15 +08:00
jiangweidong
68e2de81d8 perf: windows winrm使用ntlm认证 2023-07-12 20:22:44 +08:00
fit2bot
dd5802316d perf: 修改 connect methods 支持 (#10945)
Co-authored-by: ibuler <ibuler@qq.com>
2023-07-11 19:29:56 +08:00
老广
6f1ab1e09a Merge pull request #10944 from jumpserver/pr@dev@perf_add_protocol_support
perf: 修改 protocols 默认值
2023-07-11 18:00:23 +08:00
ibuler
6096ccc30a perf: 修改 protocols 默认值 2023-07-11 17:59:18 +08:00
老广
ddbd142ea3 Merge pull request #10943 from jumpserver/pr@dev@perf_connect_method
perf: 修改组件支持
2023-07-11 17:29:05 +08:00
ibuler
61d8328337 perf: 修改 protocol 定义 2023-07-11 17:27:47 +08:00
ibuler
4caa704abe perf: 修改组件支持 2023-07-11 17:04:43 +08:00
fit2bot
b75d69de5d feat: 新增危险命令告警类型: Warning (#10929)
* feat: 新增危险命令告警类型: Warning

* feat: 新增危险命令告警类型: Warning

* feat: 新增危险命令告警类型: Warning

* feat: 新增危险命令告警类型: Warning

* feat: 新增危险命令告警类型: Warning

* perf: 优化命令告警 View 处理逻辑

---------

Co-authored-by: fangfang.dong <fangfang.dong@fit2cloud.com>
Co-authored-by: Bai <baijiangjie@gmail.com>
2023-07-11 12:06:11 +08:00
fangfang.dong
10fa122e2f perf: 清理无用代码 2023-07-11 11:59:02 +08:00
老广
00ff1644cb Merge pull request #10941 from jumpserver/pr@dev@add_help_text
perf: 修改 api mode 和 i18n
2023-07-11 11:47:06 +08:00
ibuler
2b51a7590e perf: 修改 api mode 和 i18n 2023-07-11 11:28:09 +08:00
老广
30d07820c7 Merge pull request #10914 from jumpserver/dependabot/pip/requirements/django-3.2.20
build(deps): bump django from 3.2.19 to 3.2.20 in /requirements
2023-07-11 10:55:54 +08:00
老广
c51ebd62df Merge pull request #10936 from jumpserver/pr@dev@fix_beat-task-repeated
fix: 修复 beat 定时任务重复执行的问题
2023-07-11 10:47:41 +08:00
老广
593e28d7fa Merge pull request #10938 from jumpserver/pr@dev@perf_add_kael
perf: 添加 kael terminal 类型
2023-07-11 10:38:32 +08:00
ibuler
89f1a1653d perf: 添加 kael terminal 类型 2023-07-11 10:31:36 +08:00
Bai
ad311c15ca fix: 增加 TypeError 捕获 2023-07-11 10:19:31 +08:00
老广
b10623c970 Merge pull request #10879 from jumpserver/pr@dev@feat_chatgpt_support
feat: 支持 chatgpt 资产
2023-07-11 09:59:04 +08:00
Bai
7d17c1a450 fix: 修复 beat 定时任务重复执行的问题 2023-07-10 19:28:19 +08:00
老广
100b1553b6 Merge pull request #10931 from jumpserver/pr@dev@perf_change_platform
perf: 修改 Platform 约束
2023-07-07 19:48:15 +08:00
ibuler
76af71bbbe perf: 修改 Platform 约束 2023-07-07 19:47:12 +08:00
fit2bot
9607ab5164 perf: 修改支持 AD (#10926)
* stash

* perf: 修改支持 AD

* perf: 优化 default

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-07-07 16:15:32 +08:00
Eric
61078ee2ed perf: 更新 Chrome 的 ChangeLog 路径 2023-07-06 19:41:11 +08:00
Eric
6a720cde0a perf: 更新 chrome 支持匿名账号 2023-07-06 19:41:11 +08:00
老广
a2a5d5e08b Merge pull request #10925 from jumpserver/pr@dev@wechat
perf: 去除readme 中的微信
2023-07-06 18:27:03 +08:00
feng
9c2cc65ce8 perf: 去除readme 中的微信 2023-07-06 18:26:05 +08:00
feng
ee3cdcd9e4 fix: 有默认值 required 为false 2023-07-06 10:33:36 +08:00
feng
89492410aa fix: 推送账号 不填写home 推送失败 2023-07-06 10:33:36 +08:00
dependabot[bot]
b324c6cc8a build(deps): bump django from 3.2.19 to 3.2.20 in /requirements
Bumps [django](https://github.com/django/django) from 3.2.19 to 3.2.20.
- [Commits](https://github.com/django/django/compare/3.2.19...3.2.20)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-05 23:26:55 +00:00
Bai
6b189e6162 fix: 修复导入LDAP数据库超时导致 Lock wait timeout 的问题 2023-07-05 18:49:01 +08:00
吴小白
a07cab9ae7 Merge pull request #10910 from jumpserver/pr@dev@perf_chrome
perf: 修正 Chrome driver 路径
2023-07-05 18:38:18 +08:00
Eric
751bd35349 perf: 修正 Chrome driver 路径 2023-07-05 18:28:31 +08:00
Bai
d6aaf23abb fix: 修复用户导入时手机号为dict类型报错的问题 2023-07-05 16:49:52 +08:00
Eric
f096014d03 perf: 移除针对端点 host 的校验 2023-07-05 15:39:54 +08:00
Eric
7f03639c34 perf: 更新翻译 2023-07-04 19:14:53 +08:00
Eric
3963881226 perf: 日文翻译更正 2023-07-04 19:14:53 +08:00
Eric
fb279dbc39 perf: 新增 SFTP 会话类型 2023-07-04 19:14:53 +08:00
fangfang.dong
785e4cc3e4 perf: 接口sql优化 /api/v1/perms/asset-permissions/<uuid:pk>/assets/all/ 2023-07-04 19:14:21 +08:00
jiangweidong
dd846d4183 feat: 云同步支持公有云 2023-07-04 18:48:07 +08:00
Eric_Lee
9169f3546a Revert "perf: rdp7 可使用 web gui方式连接" 2023-07-04 18:09:33 +08:00
Eric_Lee
7e2c0d0a2d Merge pull request #10896 from jumpserver/revert-10880-pr@dev@perf_xrdp_rdp7
Revert "perf: add xrdp rdp7 port 3390"
2023-07-04 17:57:33 +08:00
老广
66c60ef5be Revert "perf: add xrdp rdp7 port 3390" 2023-07-04 17:35:58 +08:00
fit2bot
f095998096 perf: 改密与推送保持一致 (#10812)
* perf: 改密与推送保持一致

* perf: 增加 i18n

---------

Co-authored-by: feng <1304903146@qq.com>
Co-authored-by: Bai <baijiangjie@gmail.com>
2023-07-04 17:34:31 +08:00
老广
d06e5d0001 Merge pull request #10826 from jumpserver/pr@dev@perf_account_template
perf: 接口sql优化 /api/v1/accounts/account-templates/su-from-account-templates/
2023-07-04 13:42:04 +08:00
老广
c8f420f62d Merge pull request #10893 from jumpserver/pr@dev@perf_rdp7_web
perf: rdp7 可使用 web gui方式连接
2023-07-04 13:39:28 +08:00
Eric
02550b38f8 perf: rdp7 可使用 web gui方式连接 2023-07-04 12:52:36 +08:00
老广
50531d3b97 Merge pull request #10829 from jumpserver/pr@dev@perf_support_anonymous_account
perf: web 和 自定义类型资产支持匿名账号
2023-07-04 11:46:24 +08:00
ibuler
db7ad81103 merge: 合并 dev 2023-07-04 11:45:20 +08:00
ibuler
d72ec653f4 merge: 合并 dev 2023-07-04 11:43:33 +08:00
老广
7950718582 Merge pull request #10825 from jumpserver/pr@dev@perf_asset_node
perf: 接口sql优化 /api/v1/assets/nodes/children/tree/
2023-07-04 11:28:45 +08:00
老广
998321f090 Merge pull request #10882 from jumpserver/pr@dev@perf_dockerfile
feat: 合并 Dockerfile
2023-07-04 11:26:23 +08:00
老广
1fa258da3e Merge pull request #10889 from jumpserver/pr@dev@perf_connectiontoken
perf: 修复 ConnectionToken 中 account id 的问题
2023-07-04 11:18:25 +08:00
ibuler
8dbe61100b perf: 优化协议,支持 port from addr 2023-07-04 10:29:27 +08:00
Eric
d7f9f3b670 perf: 修复 ConnectionToken 中 account id 的问题 2023-07-03 19:19:25 +08:00
老广
8b18f46613 Merge pull request #10880 from jumpserver/pr@dev@perf_xrdp_rdp7
perf: add xrdp rdp7 port 3390
2023-07-03 16:29:06 +08:00
吴小白
eb49beaf46 fix: 修正 oracle 路径 2023-07-03 10:37:42 +08:00
吴小白
3971fce561 feat: 合并 Dockerfile 2023-07-03 10:28:25 +08:00
Eric
2f81196874 perf: 更新 rdp7 protocol 设置 2023-07-03 10:22:49 +08:00
Eric
411102ed85 perf: 完善 protocol 匹配 2023-07-03 10:14:39 +08:00
Eric
125dc2adf5 perf: 针对 rdp7 端口特殊处理 2023-07-03 10:14:39 +08:00
Eric
6001175629 perf: add xrdp rdp7 port 3390 2023-07-03 10:14:39 +08:00
ibuler
41e39c9614 perf: 修改 chatgpt 协议 2023-06-30 18:33:18 +08:00
ibuler
19de79fadf feat: 支持 chatgpt 资产 2023-06-30 17:35:49 +08:00
老广
6b7df10d50 Merge pull request #10877 from jumpserver/pr@dev@perf_applet_chrome
perf: 更新 Python
2023-06-30 16:01:18 +08:00
吴小白
ce269e315a perf: 更新 Python 2023-06-30 15:58:20 +08:00
老广
dfc8654d96 Merge pull request #10876 from jumpserver/pr@dev@perf_applet_chrome
perf: 更新 Chrome
2023-06-30 15:58:18 +08:00
吴小白
ea07f9e56a perf: 更新 Chrome 2023-06-30 15:55:32 +08:00
fit2bot
bbbd011cc2 perf: 修改 protocol setting (#10875)
* feat: 新增账号配置

* perf: 修改 platform protocol define

* perf: 修改 account config

* perf: 修改协议设置

---------

Co-authored-by: ibuler <ibuler@qq.com>
2023-06-30 15:54:06 +08:00
老广
6962430e6a Merge pull request #10874 from jumpserver/pr@dev@perf_accountsearch
perf: 账号搜索支持通过 secret_type 过滤
2023-06-30 15:22:14 +08:00
Bai
ca1b82330e perf: 账号搜索支持通过 secret_type 过滤 2023-06-30 11:12:23 +08:00
fit2bot
f4bd06b970 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(12) (#10870)
Co-authored-by: Bai <baijiangjie@gmail.com>
Co-authored-by: Bryan <jiangjie.bai@fit2cloud.com>
2023-06-29 17:15:19 +08:00
Bai
d0bf5b46f6 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(11) 2023-06-29 17:12:21 +08:00
Bai
3c707996e0 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(10) 2023-06-29 17:05:38 +08:00
Bai
ac0a673818 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(9) 2023-06-29 17:00:36 +08:00
Bai
1ed6c7e01d feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(8) 2023-06-29 16:54:28 +08:00
Bai
adcabf69ed feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(7) 2023-06-29 16:43:00 +08:00
Bai
0b92e43e20 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(6) 2023-06-29 16:43:00 +08:00
Bai
9c1a6b8565 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(5) 2023-06-29 16:07:04 +08:00
Bai
fc8d226005 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(4) 2023-06-29 15:42:14 +08:00
Bai
f3955a47f6 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(3) 2023-06-29 15:25:08 +08:00
Bai
0020fe7be0 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(2) 2023-06-29 15:18:54 +08:00
Bai
cea56a2f7e feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签(1) 2023-06-29 14:50:27 +08:00
Bai
e3cf6cc476 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签 2023-06-29 14:28:38 +08:00
Bai
57fccc9baf feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签 2023-06-29 14:18:23 +08:00
Aaron3S
fbcb0da349 feat: 支持sqlserver 通过chen 链接 2023-06-29 11:41:06 +08:00
Bai
877a053717 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签 2023-06-29 11:40:43 +08:00
Bai
d293a03649 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签 2023-06-29 11:30:04 +08:00
Bai
08e0c5fdf5 feat: 优化 Issue GitHub Actions,当研发团队成员评论后再移除 待处理 标签 2023-06-29 11:17:37 +08:00
nut
ac906a5d52 Update api.py 2023-06-28 17:52:23 +08:00
fangfang.dong
9ad8e53743 perf: 接口sql优化 /api/v1/index/ 2023-06-28 17:52:23 +08:00
ibuler
bf29158be9 perf: 修改支持 tidb 2023-06-28 15:01:25 +08:00
ibuler
a67ee976b4 perf: 修改翻译 2023-06-27 16:03:19 +08:00
ibuler
dfa12239d6 perf: 修改翻译 2023-06-27 16:00:45 +08:00
ibuler
4737e2cf4a perf: 优化 匿名账号 2023-06-27 15:22:18 +08:00
ibuler
d3d8fcbbb3 perf: 修改经常遇到的登录超时 2023-06-27 14:50:04 +08:00
Eric
a64aa89b3f fix: 修复自定义远程应用的连接问题 2023-06-27 14:43:00 +08:00
ibuler
a22f36a06a perf: 去掉 debug 2023-06-27 14:31:20 +08:00
Bryan
17fa139bc9 feat: Update ----.md 2023-06-27 14:24:27 +08:00
ibuler
77bcb05d80 perf: web 和 自定义类型资产支持匿名账号 2023-06-27 11:23:56 +08:00
fangfang.dong
4e9012cc07 perf: 接口sql优化 /api/v1/accounts/account-templates/su-from-account-templates/ 2023-06-27 10:45:50 +08:00
fangfang.dong
b3dce27309 perf: 接口sql优化 /api/v1/assets/nodes/children/tree/ 2023-06-27 10:24:47 +08:00
老广
bccf3a0340 Merge pull request #10819 from jumpserver/pr@dev@perf_asset_asset
perf: 接口sql优化 /api/v1/assets/assets/
2023-06-27 09:55:11 +08:00
nut
358b3a1891 Update asset.py 2023-06-26 23:51:59 +08:00
feng
5a2f6bdfc9 perf: ldap sync任务开始时 先检查可连接性 2023-06-25 18:25:15 +08:00
feng
768eb033eb fix: 修复自动化任务原子性error 导致整个任务失败问题 2023-06-25 18:20:49 +08:00
fangfang.dong
d7d554daf5 perf: 接口sql优化 /api/v1/assets/assets/ 2023-06-25 18:08:59 +08:00
jiangweidong
780b1104de perf: 优化飞书接收到的工单审批的连接无法点击的问题 2023-06-25 11:08:14 +08:00
老广
eeba0a4bfc Merge pull request #10806 from jumpserver/pr@dev@feat_terminal_endpointrule
feat: 系统设置 - 终端设置 - 端点规则: 新增字段is_active控制是否启用
2023-06-21 18:36:37 +08:00
fangfang.dong
b2ee8c8216 feat: 系统设置 - 终端设置 - 端点规则: 新增字段is_active控制是否启用 2023-06-21 18:33:58 +08:00
ibuler
26edd2f040 perf: 修改去掉一些 debug 2023-06-21 17:49:16 +08:00
ibuler
270ed5e2f8 perf: 修改 logging 避免冲突 2023-06-21 17:49:16 +08:00
Eric
b2bff22387 fix: 修复远程应用会话无法监控的问题 2023-06-21 14:48:18 +08:00
ibuler
1ca71f78ed perf: 优化一下,去掉 rbac 引起的 sql查询 2023-06-21 14:46:59 +08:00
ibuler
fa24a8e2f3 perf: 添加 sql debug 2023-06-21 12:02:56 +08:00
Bai
b9c1a89f51 fix: 修复迁移文件时触发信号记录操作日志导致迁移失败的问题 2023-06-21 11:02:42 +08:00
ibuler
a2bbf11f9d perf: 添加 migrate debug msg 2023-06-21 11:01:21 +08:00
ibuler
1d084311c5 perf: 统一 connect token 配置名称 2023-06-20 16:40:21 +08:00
ibuler
cb0fd937c8 perf: 资产连接可以指定 AppletHost 2023-06-20 16:37:54 +08:00
ibuler
13fc2aa73c perf: 优化rbac 迁移 2023-06-20 16:35:01 +08:00
Eric
5d9979ec03 perf: 修复 terminal 显示问题 2023-06-20 16:34:03 +08:00
Eric
e4f21b8a5f perf: 移除 omnidb 2023-06-19 18:31:59 +08:00
feng
9403b76333 fix: 修改 push_account_params 数据迁移逻辑,不在导入公共方法生成数据 2023-06-19 18:23:57 +08:00
fit2bot
666df6ffef perf: 接口 /api/v1/tickets/tickets/ sql优化 (#10762)
* perf: 接口 /api/v1/tickets/tickets/ sql优化

* Update general.py

* Update general.py

* Update general.py

---------

Co-authored-by: fangfang.dong <fangfang.dong@fit2cloud.com>
Co-authored-by: nut <evicwork@gmail.com>
2023-06-19 18:19:52 +08:00
Chenyang Shen
9cc3942b3d Merge pull request #10779 from jumpserver/pr@dev@perf_terminal_chen
perf: 新增 chen 终端类型
2023-06-19 18:18:12 +08:00
Eric
42852c368c perf: 新增 chen 终端类型 2023-06-19 18:06:23 +08:00
ibuler
4d4644dddd fix: 修改原来 platform 为 device 时,导致的 asset 类型不对 2023-06-19 17:54:42 +08:00
cui fliter
471411a1aa fix some typos
Signed-off-by: cui fliter <imcusg@gmail.com>
2023-06-19 15:19:41 +08:00
老广
db12bc07e8 Merge pull request #10760 from jumpserver/pr@dev@perf_assets_domain
perf: 接口 /api/v1/assets/domains/ sql优化
2023-06-19 10:25:20 +08:00
老广
618ee0b2f9 Merge pull request #10761 from jumpserver/pr@dev@perf_assets_label
perf: 接口 /api/v1/assets/label/ sql优化
2023-06-19 10:24:52 +08:00
fangfang.dong
39ba52e4de perf: 接口 /api/v1/assets/label/ sql优化 2023-06-18 20:26:19 +08:00
fangfang.dong
a8ef405939 perf: 接口 /api/v1/assets/domains/ sql优化 2023-06-18 20:24:14 +08:00
老广
09f7ddd28a Merge pull request #10756 from jumpserver/pr@dev@fix_custom_asset_detail_error
perf: 修复自定义资产详情没有 auto_config 的问题
2023-06-16 18:48:24 +08:00
ibuler
da4337168f perf: 修复自定义资产详情没有 auto_config 的问题 2023-06-16 18:44:13 +08:00
老广
f13966e061 Merge pull request #10754 from jumpserver/pr@dev@fix_permed_asset_duplicate
fix: 修复授权资产根据协议搜索重复的问题
2023-06-16 16:53:43 +08:00
ibuler
f4b5a302a1 fix: 修复授权资产根据协议搜索重复的问题 2023-06-16 16:44:05 +08:00
老广
dd955530f1 Merge pull request #10746 from jumpserver/pr@dev@perf_category_api_sql
perf: 修改 category 引起的 sql 查询过多
2023-06-16 15:55:27 +08:00
ibuler
50b64f6cf5 perf: 修改 category 引起的 sql 查询过多
pref: stash

perf: 添加装饰器

perf: 优化 category api
2023-06-16 15:53:48 +08:00
老广
a5b21f94c2 Merge pull request #10752 from jumpserver/pr@dev@perf_custom_field_required
perf: 优化自定义 platform field
2023-06-16 15:16:58 +08:00
ibuler
9e3e183f95 perf: 优化自定义 platform field 2023-06-16 15:07:17 +08:00
ibuler
9ec3147b5f perf: 修改 login acls 迁移冲突问题
perf: 修改 login acls 迁移,避免冲突
2023-06-16 13:59:15 +08:00
老广
79fa134621 Merge pull request #10742 from jumpserver/pr@dev@windows_rdp_ping
feat: 添加自动化任务rdp ping
2023-06-15 18:34:45 +08:00
feng
ef4132d2c5 feat: 添加自动化任务rdp ping 2023-06-15 18:33:05 +08:00
老广
b31a08ed8d Merge pull request #10741 from jumpserver/pr@dev@fix_acl_migrate_not_work
perf: 修复 acl 迁移后无法使用
2023-06-15 18:32:34 +08:00
ibuler
cdd47f4bc6 perf: 修复 acl 迁移后无法使用 2023-06-15 18:13:51 +08:00
ibuler
269a5e9d52 perf: 龙芯使用 buster 镜像 2023-06-15 17:39:21 +08:00
老广
dd0d1d3592 Merge pull request #10735 from jumpserver/pr@dev@change_docker_base_image
perf: 修改基础镜像
2023-06-15 16:59:58 +08:00
ibuler
c06368d812 perf: 修改基础镜像 2023-06-15 16:53:28 +08:00
fit2bot
96ef56da67 perf: 修改翻译 (#10733)
Co-authored-by: feng <1304903146@qq.com>
2023-06-15 15:41:07 +08:00
Jiangjie.Bai
0a1b379dcd Merge pull request #10731 from jumpserver/dev
v3.4.0
2023-06-15 14:16:39 +08:00
老广
54926f7c70 Merge pull request #10729 from jumpserver/pr@dev@perf_custom_asset_support_required_field
perf: 自定义 field 支持 required
2023-06-15 13:18:06 +08:00
ibuler
a48d0046a9 perf: 自定义 field 支持 required 2023-06-15 13:14:02 +08:00
fit2bot
852435c7d5 perf: user 序列化添加is_org_admin 字段 (#10728)
Co-authored-by: feng <1304903146@qq.com>
2023-06-15 12:15:04 +08:00
老广
b19d9c8754 Merge pull request #10727 from jumpserver/pr@dev@perf_acl_ordering
perf: 优化 acl 默认排序
2023-06-15 10:49:07 +08:00
ibuler
e92c82568d perf: 优化 acl 默认排序 2023-06-15 10:45:07 +08:00
老广
c6e19a2989 Merge pull request #10726 from jumpserver/pr@dev@perf_json_field_re_error
perf: 优化 json field re 报错问题
2023-06-15 10:32:12 +08:00
ibuler
58edf02179 perf: 优化 json field re 报错问题 2023-06-15 10:27:52 +08:00
老广
3e9bafadec Merge pull request #10725 from jumpserver/pr@dev@perf_json_attr_m2m_filter
perf: 优化修改 rule vlaue
2023-06-15 10:17:36 +08:00
ibuler
70af478f66 perf: 优化修改 rule vlaue 2023-06-15 10:16:18 +08:00
ibuler
d7121296f2 perf: 优化使用 bool 2023-06-15 10:14:59 +08:00
老广
a76b243226 Merge pull request #10724 from jumpserver/pr@dev@fix_image
fix: 修正基础镜像名称
2023-06-15 10:14:03 +08:00
吴小白
5bd276b9ce fix: 修正基础镜像名称 2023-06-15 10:02:08 +08:00
老广
abd4e87bc2 Merge pull request #10723 from jumpserver/pr@dev@perf_json_attr_m2m_filter
perf: 优化 json m2m filter
2023-06-15 09:40:39 +08:00
ibuler
40d8a71bf8 perf: 优化 json m2m filter 2023-06-15 09:37:00 +08:00
老广
aad804f1af Merge pull request #10722 from jumpserver/pr@dev@perf_json_filter_m2m
perf: 优化 json m2m filter
2023-06-14 21:11:41 +08:00
ibuler
ee15f2d3d7 perf: 优化 json m2m filter 2023-06-14 21:10:35 +08:00
fit2bot
7c31b4ee30 perf: 修改翻译 (#10721)
Co-authored-by: feng <1304903146@qq.com>
2023-06-14 20:42:29 +08:00
ibuler
25e7249957 perf: 优化正则匹配 2023-06-14 20:41:14 +08:00
Aaron3S
d10db0aa62 fix: 修复任务被黑名单拦截后没有更新状态的问题 2023-06-14 20:40:40 +08:00
老广
d87ece00bd Merge pull request #10718 from jumpserver/pr@dev@perf_phone
perf: 优化 phone
2023-06-14 20:23:59 +08:00
ibuler
fca3936a79 perf: 优化 phone 2023-06-14 20:22:41 +08:00
Aaron3S
2c2334b618 perf: 优化报错内容 2023-06-14 20:16:42 +08:00
Aaron3S
9e31a5064b perf: 优化黑名单命令提示 2023-06-14 20:16:42 +08:00
Bai
954f86f8a9 fix: 修复执行任务中心报错的问题 2023-06-14 19:57:55 +08:00
老广
a3d32c901d Merge pull request #10715 from jumpserver/pr@dev@perf_filter_q_name
perf: 优化 filter name
2023-06-14 19:12:54 +08:00
ibuler
ce5ddf7873 perf: 优化 filter name 2023-06-14 19:10:34 +08:00
老广
29ebdb03e7 Merge pull request #10711 from jumpserver/pr@dev@perf_json_field_select
perf: 优化查询 acls
2023-06-14 18:19:42 +08:00
ibuler
53c3c90e2d perf: 优化查询 acls 2023-06-14 18:17:20 +08:00
nut
4bcd47df64 Update mixins.py 2023-06-14 17:10:38 +08:00
nut
d51323faef Update mixins.py 2023-06-14 17:10:38 +08:00
fangfang.dong
e8163167c5 修复: 控制台 - 账号 - 账号列表 - 查看账号详情时的500错误 2023-06-14 17:10:38 +08:00
Eric
e762a5d8ae perf: 更新发布机的单用户单会话策略 2023-06-14 16:49:37 +08:00
老广
dd85e2d74f Merge pull request #10707 from jumpserver/pr@dev@perf_connect_methods
perf: 优化连接方式
2023-06-14 15:14:45 +08:00
ibuler
96a66e555f perf: 优化连接方式 2023-06-14 14:48:50 +08:00
fit2bot
120f0dd3ad perf: asset web autofill 添加LabeledChoiceField (#10706)
Co-authored-by: feng <1304903146@qq.com>
2023-06-14 14:42:53 +08:00
Bai
de43df8370 perf: 修改 LDAP 用户导入任务名称 2023-06-14 11:07:38 +08:00
ibuler
459176550d perf: 修改 applet 是否支持并发,也依赖于 host 2023-06-13 19:44:59 +08:00
Eric
4112ad21c3 perf: 增加 terminal 显示字段 2023-06-13 19:44:39 +08:00
Eric
df8baede43 perf: 修复部分录像播放问题 2023-06-13 19:44:39 +08:00
fit2bot
5bd4a882cc fix: 平台导入无协议port (#10702)
Co-authored-by: feng <1304903146@qq.com>
2023-06-13 17:57:48 +08:00
老广
370d944396 Merge pull request #10698 from jumpserver/pr@dev@perf_applethost_options
perf: 修正发布机部署单用户单会话选项
2023-06-13 15:56:01 +08:00
fit2bot
c056cde2b7 perf: 修改翻译 (#10697)
Co-authored-by: feng <1304903146@qq.com>
2023-06-13 15:51:52 +08:00
Eric
93c0f11a5f perf: 修正发布机部署单用户单会话选项 2023-06-13 15:50:21 +08:00
老广
91ea738dcd Merge pull request #10695 from jumpserver/pr@dev@perf_acl_account_migrate
perf: 优化 acl 迁移中的 accounts
2023-06-13 14:41:02 +08:00
ibuler
0d3478c728 perf: 优化 acl 迁移中的 accounts 2023-06-13 14:38:52 +08:00
老广
c271d3276a Merge pull request #10693 from O-Jiangweidong/pr@dev@perf_ftp_log_field_same_as_session
perf: 字段含义和Session model保持一致
2023-06-13 13:59:59 +08:00
jiangweidong
dfd1ececdb perf: 删除翻译信息 2023-06-13 13:58:27 +08:00
jiangweidong
4683ae8c09 perf: 修改迁移文件中的字段信息 2023-06-13 13:54:59 +08:00
老广
db3fca0409 Merge pull request #10694 from jumpserver/pr@dev@perf_acls_filter
perf: 优化 json m2m field 正向查询
2023-06-13 13:50:31 +08:00
老广
9f4cb2e790 Merge pull request #10691 from O-Jiangweidong/pr@dev@fix_upgrade_34_error
fix: 解决migrate文件中迁移数据会触发信号导致字段不对应错误引发迁移失败问题
2023-06-13 13:49:31 +08:00
ibuler
7e9d1fc945 perf: 优化 json m2m field 正向查询 2023-06-13 13:48:32 +08:00
jiangweidong
af018ea262 perf: 字段含义和Session model保持一致 2023-06-13 13:18:50 +08:00
jiangweidong
71ccfe66ec fix: 解决migrate文件中迁移数据会触发信号导致字段不对应错误引发迁移失败问题 2023-06-13 13:14:38 +08:00
jiangweidong
a991a6c56c perf: 优化变量名 2023-06-13 11:36:32 +08:00
jiangweidong
9a29cda210 fix: 提供给luna的录像地址不能为本地local地址,应该为url 2023-06-13 11:36:32 +08:00
老广
aee20a6c05 Merge pull request #10686 from jumpserver/pr@dev@perf_applet_import
perf: 优化 applet 导入
2023-06-13 10:04:02 +08:00
老广
499c52800e Merge pull request #10689 from jumpserver/pr@dev@perf_ticket_request_login
perf: 优化登录 ticket 创建
2023-06-13 10:03:36 +08:00
ibuler
4a2f7d21f6 perf: 优化登录 ticket 创建 2023-06-13 09:54:03 +08:00
ibuler
44d92b9dec perf: 修改 acl user review 2023-06-12 19:12:11 +08:00
ibuler
1e9310bf0c perf: 优化 applet 导入 2023-06-12 19:00:59 +08:00
老广
1b750cf51d Merge pull request #10682 from jumpserver/pr@dev@allow_chrome_some_shortcut
perf: 放行快捷键 ctrl-c-v
2023-06-12 18:36:16 +08:00
ibuler
e9125d1228 perf: 修改 chrome error 2023-06-12 18:35:27 +08:00
老广
c85df4cf42 Merge pull request #10685 from jumpserver/pr@dev@fix_command_filter_acls_error
perf: 优化命令过滤 acl 获取
2023-06-12 18:28:52 +08:00
ibuler
09a5b63240 perf: 修改 acl filter 2023-06-12 18:28:04 +08:00
ibuler
f9bc7ec4aa perf: 优化命令过滤 acl 获取 2023-06-12 18:20:30 +08:00
fit2bot
d59a293bb9 perf: 修改用户组添加全部用户api的权限位 (#10683)
Co-authored-by: feng <1304903146@qq.com>
2023-06-12 18:16:09 +08:00
ibuler
cb2b8bb70b perf: 放行快捷键 ctrl-c-v 2023-06-12 16:37:12 +08:00
老广
86c81c42de Merge pull request #10681 from jumpserver/pr@dev@perf_global_acl
perf: 优化 manager 和 acl 的 组织
2023-06-12 16:02:45 +08:00
ibuler
5c2b54ad3b perf: 优化 manager 和 acl 的 组织 2023-06-12 16:00:14 +08:00
Eric
b79aaff4a0 perf: 资产根据 ssh 协议过滤是否启用 sftp 2023-06-12 15:42:24 +08:00
jiangweidong
3fd8e5755d fix: 修改变量 2023-06-12 15:41:25 +08:00
jiangweidong
3604ef4228 fix: 解决录像无法在线观看的问题 2023-06-12 15:41:25 +08:00
Bai
24272d3162 fix: 修复 Token API 获取命令过滤器失败的问题 2023-06-12 14:11:44 +08:00
ibuler
a99d22708c perf: 修改 migrations 2023-06-12 14:10:37 +08:00
ibuler
dc35a8c52b perf: 优化 acl 默认排序和manager 2023-06-12 14:10:37 +08:00
老广
fc90ced2b0 Merge pull request #10675 from jumpserver/pr@dev@json_field_add_requirement
perf: m2m json field 字段必填
2023-06-12 13:41:34 +08:00
老广
7bfe8816a3 Merge pull request #10674 from jumpserver/pr@dev@perf_config
perf: 优化配置
2023-06-12 13:36:49 +08:00
Bai
b4008338c6 perf: 优化配置 2023-06-12 11:24:12 +08:00
ibuler
6058f1bdc0 perf: m2m json field 字段必填 2023-06-12 11:03:04 +08:00
ibuler
5708e57631 perf: m2m json field 字段必填 2023-06-12 10:25:14 +08:00
老广
ba353271ad Merge pull request #10667 from jumpserver/pr@dev@fix_login_regex_error
perf: 修复 正则匹配的 bug
2023-06-09 18:35:23 +08:00
ibuler
adfc22ae85 perf: 修复 正则匹配的 bug 2023-06-09 18:32:56 +08:00
jiangweidong
ef2ecb225a fix: 资产登录规则操作日志显示优化 2023-06-09 18:25:00 +08:00
ibuler
9574d03c12 fix: 修复连接方式选择 2023-06-09 18:22:35 +08:00
Bai
00d3caf80c perf: 删除不用代码 2023-06-09 18:22:04 +08:00
fit2bot
2333a29a56 perf: 优化数据库改密原子性 (#10663)
Co-authored-by: feng <1304903146@qq.com>
2023-06-09 16:52:54 +08:00
fit2bot
b3c5674213 fix: 资产用模版创建账号无切换至 (#10662)
Co-authored-by: feng <1304903146@qq.com>
2023-06-09 16:23:44 +08:00
老广
f372f1e417 Merge pull request #10659 from jumpserver/pr@dev@perf_applet
perf: 添加 edition 字段
2023-06-09 16:05:10 +08:00
ibuler
a86378601a perf: 修改插件 2023-06-09 15:58:30 +08:00
ibuler
6a73cd6b77 perf: 添加 edition 字段 2023-06-09 15:40:41 +08:00
Eric
3022ca983c perf: Dockerfile 增加依赖 2023-06-08 22:09:37 +08:00
老广
8f8e781376 Merge pull request #10655 from jumpserver/pr@dev@fix_login_acl_uniq
perf: 优化 LoginACL 迁移,避免 uniq error
2023-06-08 18:35:23 +08:00
ibuler
998505e999 perf: 修改 acl 登录 2023-06-08 18:33:43 +08:00
ibuler
1c95b67154 perf: 优化 LoginACL 迁移,避免 uniq error 2023-06-08 18:19:32 +08:00
jiangweidong
2837dcf40e feat: 支持文件上传下载备份 (#10438)
* feat: 支持文件上传下载备份

* perf: 抽离replay和ftpfile存储代码

* perf: FTPLog增加session字段

* fix: 修改变量名
2023-06-08 18:04:07 +08:00
ibuler
271ec1bfe0 perf: 优化刚才修改导致的 acls 过滤没有过滤组织 2023-06-08 18:03:49 +08:00
老广
41e147d4b2 Revert "chore(deps): bump cryptography from 38.0.4 to 41.0.0 in /requirements"
This reverts commit 0025b2483e.
2023-06-08 14:57:34 +08:00
老广
d2f1309900 Merge pull request #10644 from jumpserver/pr@dev@perf_acls_connect_methods
perf: 优化 connect method acls 和登录 acls
2023-06-08 14:52:10 +08:00
dependabot[bot]
0025b2483e chore(deps): bump cryptography from 38.0.4 to 41.0.0 in /requirements
Bumps [cryptography](https://github.com/pyca/cryptography) from 38.0.4 to 41.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/38.0.4...41.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-08 14:19:06 +08:00
fangfang.dong
a6d586efb4 feat: 系统设置 - 短信服务 - 多平台配置测试手机号: 增加区号显示与修改功能 2023-06-08 11:01:55 +08:00
jiangweidong
f0c0ba3653 fix: 解决lina不显示json格式参数,优化DictSerializer改为JSONSerialzer, 2023-06-08 10:26:33 +08:00
ibuler
d6eb4bcbd2 perf: 优化 connect method acls 和登录 acls 2023-06-07 17:39:56 +08:00
fit2bot
bfd77aa1b0 feat: automation windows pyrdp ping (#10602)
* feat: automation windows pyrdp ping

* perf: add pyfreerdp deps

---------

Co-authored-by: feng <1304903146@qq.com>
Co-authored-by: Eric <xplzv@126.com>
2023-06-07 17:28:35 +08:00
老广
cc57fcacce Merge pull request #10621 from jumpserver/pr@dev@fix_static_js
fix: 修复 jumpserver.js 文件中 rules_id_map_label 变量缺失引起的用户初次登录修改密码表单无法校验提示的错误
2023-06-07 10:36:25 +08:00
Eric
7d3b60232c perf: 优化翻译 2023-06-06 19:13:22 +08:00
Eric
10996f573a perf: 翻译 i18n 信息 2023-06-06 19:13:22 +08:00
老广
a7ca9ccfe9 Merge pull request #10629 from jumpserver/pr@dev@feat_connect_support_options
perf: 连接时支持连接参数
2023-06-05 18:00:44 +08:00
ibuler
c6f92a462f perf: 连接时支持连接参数 2023-06-05 17:27:44 +08:00
fit2bot
a341b55f43 perf: 一些资产没有默认节点+ (#10622)
Co-authored-by: feng <1304903146@qq.com>
2023-06-05 15:10:33 +08:00
fangfangdong
3c68b880a7 fix: 修复 jumpserver.js 文件中 rules_id_map_label 变量缺失引起的用户初次登录修改密码表单无法校验提示的错误 2023-06-05 15:00:25 +08:00
Eric
42c35b0271 perf: chrome 脚本增加 sleep 等待指令,单位秒 2023-06-02 16:14:49 +08:00
Eric
8d8f479da6 perf: dbeaver 支持使用网关连接数据库 2023-06-02 16:13:10 +08:00
fit2bot
9d8c1bb317 perf: 账号模版更新时, 优化同步更新账号逻辑 (#10611)
Co-authored-by: feng <1304903146@qq.com>
2023-06-02 10:56:00 +08:00
Bai
ed117ceac3 perf: 优化创建节点时校验同级节点名称不允许重复(API方式) 2023-06-01 16:39:44 +08:00
fit2bot
1ac9d727ef perf: 修改翻译 (#10604)
Co-authored-by: feng <1304903146@qq.com>
2023-05-31 18:19:11 +08:00
fangfangdong
a0bb25e558 feat: 系统设置-安全设置 支持配置 作业中心命令黑名单 2023-05-31 17:43:05 +08:00
Bai
51d6090fdc perf: 优化支持账号列表搜索资产名称 2023-05-31 16:50:37 +08:00
ibuler
d402de012b perf: 优化写法,避免重复 2023-05-31 16:48:50 +08:00
ibuler
2a183e34ac perf: 修改去掉 debug 2023-05-31 16:48:50 +08:00
ibuler
7d111b6efb perf: 优化自定义平台和 applet 导入 2023-05-31 16:48:50 +08:00
Bai
0ba7ca6373 perf: 升级依赖 certifi==2022.12.7 2023-05-31 14:20:59 +08:00
jiangweidong
51e5733f1c fix: 具有超级工单权限的用户申请工单可以指定给某人 (#10596) 2023-05-31 10:20:37 +08:00
fit2bot
3626bf8df6 feat: 命令及录像存储可连接性定时检查 (#10594)
Co-authored-by: feng <1304903146@qq.com>
2023-05-30 18:45:51 +08:00
ibuler
312213f1c5 perf: 允许 web 同时打开 2023-05-30 18:43:04 +08:00
ibuler
d285daa1c1 perf: 资产支持根据协议搜索 2023-05-30 17:55:34 +08:00
ibuler
f4c29a262a perf: 优化自动化任务在平台中的名称显示 2023-05-30 17:17:47 +08:00
fangfangdong
b98ccf8b3d style: 调整国际化文件中时间单位显示方式 2023-05-30 17:04:50 +08:00
Bai
ef7886b25b perf: 升级依赖 jms-storage==0.0.46 2023-05-30 15:08:04 +08:00
火星小刘
89b42ce51b 企业微信扫描登录修改为新版接口,在PC登录企业微信客户端的情况下,不再需要手机扫码。
企业微信官方api
https://developer.work.weixin.qq.com/document/path/98151
2023-05-30 14:58:58 +08:00
老广
e5c93dc50f Merge pull request #10585 from jumpserver/pr@dev@perf_chrome_extensions
perf: 优化 chrome 插件
2023-05-30 11:01:25 +08:00
ibuler
50d8389fff perf: 优化 chrome 插件 2023-05-30 10:59:16 +08:00
老广
5edacf369b Merge pull request #10583 from jumpserver/pr@dev@perf_perm_action_helptext
perf: 优化授权中动作的说明
2023-05-30 09:52:38 +08:00
ibuler
7a39552bb2 merge: with dev 2023-05-30 09:47:59 +08:00
fit2bot
e61227d694 perf: 登录资产的 ACL 支持 ip 控制 (#10581)
Co-authored-by: ibuler <ibuler@qq.com>
2023-05-29 19:45:55 +08:00
ibuler
0901b95ce0 perf: 优化授权中动作的说明 2023-05-29 18:23:26 +08:00
feng
fd7e821f11 feat: 用户组绑定所有用户 2023-05-29 16:27:51 +08:00
Eric
ac3415d95c perf: 完善远程应用 chrome 启动方式 2023-05-29 15:25:32 +08:00
Eric
b0b174bb2a perf: connection token 的 account 增加 asset 属性 2023-05-29 15:14:31 +08:00
dependabot[bot]
3c568510cf chore(deps): bump requests from 2.28.0 to 2.31.0 in /requirements
Bumps [requests](https://github.com/psf/requests) from 2.28.0 to 2.31.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.28.0...v2.31.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 11:17:18 +08:00
halo
a1ed59d116 perf: yaml文件读取使用utf-8编码 2023-05-29 11:16:29 +08:00
Bai
7708812556 perf: 优化终端端点 Host 字段帮助 2023-05-26 17:20:50 +08:00
Bai
24a98eb747 perf: 优化短信设置的字段名称显示 2023-05-26 15:19:11 +08:00
老广
60fd5a2e91 Merge pull request #10556 from jumpserver/pr@dev@fix_chrome_path
fix: 修正 Chrome 环境变量
2023-05-25 19:19:45 +08:00
ibuler
9932e7eadd perf: 资产授权支持 delete 控制 2023-05-25 19:15:48 +08:00
fit2bot
73102fceb0 fix: 修复禁用平台的账号切换功能,历史创建的切换账号依然可以正常切换 (#10560)
Co-authored-by: feng <1304903146@qq.com>
2023-05-25 18:38:14 +08:00
Bai
5e177b6ce5 fix: 修复用户登录认证 MFA 输入错误时没有记录具体错误信息的问题 2023-05-25 18:26:04 +08:00
吴小白
38b121421f fix: 修正 Chrome 环境变量 2023-05-25 17:42:19 +08:00
fit2bot
a6366a2dd4 perf: ldap 能多组织同步用户 (#10543)
Co-authored-by: feng <1304903146@qq.com>
Co-authored-by: feng626 <57284900+feng626@users.noreply.github.com>
2023-05-25 17:35:36 +08:00
ibuler
fa21c83db3 perf: LDAP 测试 api 改为异步的 2023-05-25 16:54:22 +08:00
feng
f20a4beef3 fix: 自定义平台无自动化任务 2023-05-25 16:53:56 +08:00
ibuler
cc2e42c77a perf: chrome 添加插件 2023-05-25 14:20:05 +08:00
jiangweidong
bcb4e04200 perf: 忽略自定义短信认证请求证书校验 2023-05-25 14:13:48 +08:00
jiangweidong
848ea0cf3c perf: 修改翻译 2023-05-25 14:13:48 +08:00
jiangweidong
20cc4ea320 perf: 支持自定义短信认证 2023-05-25 14:13:48 +08:00
fit2bot
5e7d474bb7 perf: RemoteAppHost 平台支持 winrm (#10542)
Co-authored-by: ibuler <ibuler@qq.com>
2023-05-25 13:57:02 +08:00
halo
b72f8a7241 perf: 优化账号收集,使用正则处理结果 2023-05-25 13:40:25 +08:00
老广
35e9c21ec5 Merge pull request #10547 from jumpserver/pr@dev@perf_json_filter
perf: 修改 filter_q
2023-05-25 12:30:13 +08:00
ibuler
dcd35310cd perf: 修改 filter_q 2023-05-25 11:42:39 +08:00
fit2bot
32a8e150da perf: 删除全部用户错误提示 (#10546)
Co-authored-by: feng <1304903146@qq.com>
2023-05-25 11:38:20 +08:00
Bai
cabdc3ad42 fix: 修复终端端点使用资产标签匹配机制时 500 的问题 2023-05-24 17:36:51 +08:00
fit2bot
653b996d84 perf: 账号推送支持设置推送账号的 home 目录 (#10541)
Co-authored-by: feng <1304903146@qq.com>
2023-05-24 17:35:14 +08:00
老广
2262b0ecb5 Merge pull request #10327 from jumpserver/pr@dev@json_m2m_field
pref: 自定义 ORM Field,使用 JSONField 完成
2023-05-24 15:27:47 +08:00
ibuler
eccbf46300 merge: with dev 2023-05-24 15:26:59 +08:00
Eric
440cd13fcc perf: 同一个协作会话链接,限制同一用户仅可使用一次 2023-05-24 14:40:01 +08:00
feng
20c1f4a293 perf: 改密过程原子性优化 2023-05-24 14:31:27 +08:00
Bai
feb42961ef feat: 资产列表搜索支持 comment 模糊搜索 2023-05-22 18:27:07 +08:00
jiangweidong
3eaed62186 验证账号可连接性(自定义ssh)使用的key值错误 (#10523) 2023-05-22 17:29:17 +08:00
jiangweidong
a3f472137f perf: 优化命令过滤规则操作日志显示问题 2023-05-22 15:07:55 +08:00
feng
d4bb501ef9 fix: 账号导入500 2023-05-22 14:13:55 +08:00
ibuler
c4b25fbdbd fix: 修复 applet 账号选择问题 2023-05-19 17:01:29 +08:00
ibuler
197364d42d perf: 暂存一下 2023-05-19 11:30:50 +08:00
ibuler
6eb9986c75 perf: 修改过期默认值 2023-05-19 10:58:04 +08:00
老广
e40d65871b Merge pull request #10501 from jingzhaoyang/dev
fix: when request access_token is post method, http body has no json …
2023-05-19 10:43:32 +08:00
老广
a236de1eff Merge pull request #10489 from O-Jiangweidong/pr@dev@fix_mfa_bypass
fix: 修复某待审核用户返回时,登录其他用户可绕开mfa的问题
2023-05-19 10:41:19 +08:00
ibuler
a261d69cd2 perf: 修改 m2m json field 2023-05-18 21:34:19 +08:00
景朝阳
efb31d6f37 fix: when request access_token is post method, http body has no json data 2023-05-18 20:40:41 +08:00
ibuler
ebaa8d2637 perf: 优化 json error 2023-05-18 17:31:40 +08:00
jiangweidong
bb27be0924 fix: 修复某待审核用户返回时,登录其他用户可绕开mfa的问题 2023-05-18 14:45:17 +08:00
ibuler
4e5ab5a605 perf: 修改过滤的 q 2023-05-18 13:14:32 +08:00
ibuler
7c850a8a1e perf: 修改 json field query 2023-05-12 19:16:55 +08:00
ibuler
1ec4cbdf38 perf: 优化 m2m json field 2023-05-08 14:09:44 +08:00
ibuler
a112d3c99d perf: 修改 accounts 字段 2023-05-06 19:52:03 +08:00
ibuler
5a6e13721d perf: 优化 json m2m field 2023-04-27 18:05:16 +08:00
ibuler
90090a7fc7 perf: 添加 JSONManyToManyFieldSerializer 2023-04-27 14:13:40 +08:00
ibuler
338ab5c634 perf: 优化 acl 2023-04-26 19:11:53 +08:00
ibuler
632627db11 perf: 去掉 debug model 2023-04-25 16:25:00 +08:00
ibuler
20b7b794d8 perf: 修改 m2m field 2023-04-25 14:00:19 +08:00
ibuler
19d29d6637 perf: remove debug msg 2023-04-24 19:04:47 +08:00
ibuler
c824ae4478 perf: 修改 manager 2023-04-24 19:03:44 +08:00
ibuler
3cdb81cf4a perf: 搞定自定义 orm field 2023-04-24 19:00:31 +08:00
ibuler
378eee0402 pref: stash 2 2023-04-24 16:27:13 +08:00
ibuler
c991a73632 v1 2023-04-23 16:15:27 +08:00
981 changed files with 48465 additions and 11178 deletions

View File

@@ -1,5 +1,4 @@
.git
logs/*
data/*
.github
tmp/*

View File

@@ -1,13 +1,35 @@
---
name: 需求建议
about: 提出针对本项目的想法和建议
title: "[Feature] "
title: "[Feature] 需求标题"
labels: 类型:需求
assignees:
- ibuler
- baijiangjie
---
**请描述您的需求或者改进建议.**
## 注意
_针对过于简单的需求描述不予考虑。请确保提供足够的细节和信息以支持功能的开发和实现。_
## 功能名称
[在这里输入功能的名称或标题]
## 功能描述
[在这里描述该功能的详细内容,包括其作用、目的和所需的功能]
## 用户故事(可选)
[如果适用,可以提供用户故事来更好地理解该功能的使用场景和用户期望]
## 功能要求
- [要求1描述该功能的具体要求如界面设计、交互逻辑等]
- [要求2描述该功能的另一个具体要求]
- [以此类推,列出所有相关的功能要求]
## 示例或原型(可选)
[如果有的话,提供该功能的示例或原型图以更好地说明功能的实现方式]
## 优先级
[描述该功能的优先级,如高、中、低,或使用数字等其他标识]
## 备注(可选)
[在这里添加任何其他相关信息或备注]

View File

@@ -1,24 +1,51 @@
---
name: Bug 提交
about: 提交产品缺陷帮助我们更好的改进
title: "[Bug] "
labels: 类型:bug
title: "[Bug] Bug 标题"
labels: 类型:Bug
assignees:
- wojiushixiaobai
- baijiangjie
---
**JumpServer 版本( v2.28 之前的版本不再支持 )**
## 注意
**JumpServer 版本( v2.28 之前的版本不再支持 )** <br>
_针对过于简单的 Bug 描述不予考虑。请确保提供足够的细节和信息以支持 Bug 的复现和修复。_
## 当前使用的 JumpServer 版本 (必填)
[在这里输入当前使用的 JumpServer 的版本号]
## 使用的版本类型 (必填)
- [ ] 社区版
- [ ] 企业版
- [ ] 企业试用版
**浏览器版本**
## 版本安装方式 (必填)
- [ ] 在线安装 (一键命令)
- [ ] 离线安装 (下载离线包)
- [ ] All-in-One
- [ ] 1Panel 安装
- [ ] Kubernetes 安装
- [ ] 源码安装
## Bug 描述 (详细)
[在这里描述 Bug 的详细情况,包括其影响和出现的具体情况]
**Bug 描述**
## 复现步骤
1. [描述如何复现 Bug 的第一步]
2. [描述如何复现 Bug 的第二步]
3. [以此类推,列出所有复现 Bug 所需的步骤]
## 期望行为
[描述 Bug 出现时期望的系统行为或结果]
**Bug 重现步骤(有截图更好)**
1.
2.
3.
## 实际行为
[描述实际上发生了什么,以及 Bug 出现的具体情况]
## 系统环境
- 操作系统:[例如Windows 10, macOS Big Sur]
- 浏览器/应用版本:[如果适用,请提供相关版本信息]
- 其他相关环境信息:[如果有其他相关环境信息,请在此处提供]
## 附加信息(可选)
[在这里添加任何其他相关信息,如截图、错误信息等]

View File

@@ -1,12 +1,50 @@
---
name: 问题咨询
about: 提出针对本项目安装部署、使用及其他方面的相关问题
title: "[Question] "
title: "[Question] 问题标题"
labels: 类型:提问
assignees:
- wojiushixiaobai
- baijiangjie
---
## 注意
**请描述您的问题.** <br>
**JumpServer 版本( v2.28 之前的版本不再支持 )** <br>
_针对过于简单的 Bug 描述不予考虑。请确保提供足够的细节和信息以支持 Bug 的复现和修复。_
## 当前使用的 JumpServer 版本 (必填)
[在这里输入当前使用的 JumpServer 的版本号]
## 使用的版本类型 (必填)
- [ ] 社区版
- [ ] 企业版
- [ ] 企业试用版
## 版本安装方式 (必填)
- [ ] 在线安装 (一键命令)
- [ ] 离线安装 (下载离线包)
- [ ] All-in-One
- [ ] 1Panel 安装
- [ ] Kubernetes 安装
- [ ] 源码安装
## 问题描述 (详细)
[在这里描述你遇到的问题]
## 背景信息
- 操作系统:[例如Windows 10, macOS Big Sur]
- 浏览器/应用版本:[如果适用,请提供相关版本信息]
- 其他相关环境信息:[如果有其他相关环境信息,请在此处提供]
## 具体问题
[在这里详细描述你的问题,包括任何相关细节或错误信息]
## 尝试过的解决方法
[如果你已经尝试过解决问题,请在这里列出你已经尝试过的解决方法]
## 预期结果
[描述你期望的解决方案或结果]
## 我们的期望
[描述你希望我们提供的帮助或支持]
**请描述您的问题.**

View File

@@ -21,17 +21,44 @@ jobs:
actions: 'remove-labels'
labels: '状态:待反馈'
add-label-if-not-author:
add-label-if-is-member:
runs-on: ubuntu-latest
if: (github.event.issue.user.id != github.event.comment.user.id) && !github.event.issue.pull_request && (github.event.issue.state == 'open')
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Get Organization name
id: org_name
run: echo "data=$(echo '${{ github.repository }}' | cut -d '/' -f 1)" >> $GITHUB_OUTPUT
- name: Get Organization public members
uses: octokit/request-action@v2.x
id: members
with:
route: GET /orgs/${{ steps.org_name.outputs.data }}/public_members
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Process public members data
# 将 members 中的数据转化为 login 字段的拼接字符串
id: member_names
run: echo "data=$(echo '${{ steps.members.outputs.data }}' | jq '[.[].login] | join(",")')" >> $GITHUB_OUTPUT
- run: "echo members: '${{ steps.members.outputs.data }}'"
- run: "echo member names: '${{ steps.member_names.outputs.data }}'"
- run: "echo comment user: '${{ github.event.comment.user.login }}'"
- run: "echo contains? : '${{ contains(steps.member_names.outputs.data, github.event.comment.user.login) }}'"
- name: Add require replay label
if: contains(steps.member_names.outputs.data, github.event.comment.user.login)
uses: actions-cool/issues-helper@v2
with:
actions: 'add-labels'
labels: '状态:待反馈'
- name: Remove require handle label
if: contains(steps.member_names.outputs.data, github.event.comment.user.login)
uses: actions-cool/issues-helper@v2
with:
actions: 'remove-labels'

View File

@@ -19,8 +19,8 @@ jobs:
with:
context: .
push: false
tags: jumpserver/core:test
file: Dockerfile
tags: jumpserver/core-ce:test
file: Dockerfile-ce
build-args: |
APT_MIRROR=http://deb.debian.org
PIP_MIRROR=https://pypi.org/simple

2
.gitignore vendored
View File

@@ -35,7 +35,6 @@ celerybeat-schedule.db
docs/_build/
xpack
xpack.bak
logs/*
### Vagrant ###
.vagrant/
release/*
@@ -44,3 +43,4 @@ releashe
data/*
test.py
.history/
.test/

View File

@@ -1,104 +0,0 @@
FROM python:3.9-slim as stage-build
ARG TARGETARCH
ARG VERSION
ENV VERSION=$VERSION
WORKDIR /opt/jumpserver
ADD . .
RUN cd utils && bash -ixeu build.sh
FROM python:3.9-slim
ARG TARGETARCH
MAINTAINER JumpServer Team <ibuler@qq.com>
ARG BUILD_DEPENDENCIES=" \
g++ \
make \
pkg-config"
ARG DEPENDENCIES=" \
freetds-dev \
libpq-dev \
libffi-dev \
libjpeg-dev \
libldap2-dev \
libsasl2-dev \
libxml2-dev \
libxmlsec1-dev \
libxmlsec1-openssl \
libaio-dev"
ARG TOOLS=" \
ca-certificates \
curl \
default-libmysqlclient-dev \
default-mysql-client \
locales \
openssh-client \
procps \
sshpass \
telnet \
unzip \
vim \
git \
wget"
ARG APT_MIRROR=http://mirrors.ustc.edu.cn
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core \
sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& 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} \
&& mkdir -p /root/.ssh/ \
&& echo "Host *\n\tStrictHostKeyChecking no\n\tUserKnownHostsFile /dev/null\n\tCiphers +aes128-cbc\n\tKexAlgorithms +diffie-hellman-group1-sha1\n\tHostKeyAlgorithms +ssh-rsa" > /root/.ssh/config \
&& echo "set mouse-=a" > ~/.vimrc \
&& echo "no" | dpkg-reconfigure dash \
&& echo "zh_CN.UTF-8" | dpkg-reconfigure locales \
&& sed -i "s@# export @export @g" ~/.bashrc \
&& sed -i "s@# alias @alias @g" ~/.bashrc \
&& rm -rf /var/lib/apt/lists/*
ARG DOWNLOAD_URL=https://download.jumpserver.org
RUN mkdir -p /opt/oracle/ \
&& cd /opt/oracle/ \
&& wget ${DOWNLOAD_URL}/public/instantclient-basiclite-linux.${TARGETARCH}-19.10.0.0.0.zip \
&& unzip instantclient-basiclite-linux.${TARGETARCH}-19.10.0.0.0.zip \
&& sh -c "echo /opt/oracle/instantclient_19_10 > /etc/ld.so.conf.d/oracle-instantclient.conf" \
&& ldconfig \
&& rm -f instantclient-basiclite-linux.${TARGETARCH}-19.10.0.0.0.zip
WORKDIR /tmp/build
COPY ./requirements ./requirements
ARG PIP_MIRROR=https://pypi.douban.com/simple
ENV PIP_MIRROR=$PIP_MIRROR
ARG PIP_JMS_MIRROR=https://pypi.douban.com/simple
ENV PIP_JMS_MIRROR=$PIP_JMS_MIRROR
RUN --mount=type=cache,target=/root/.cache/pip \
set -ex \
&& pip config set global.index-url ${PIP_MIRROR} \
&& pip install --upgrade pip \
&& pip install --upgrade setuptools wheel \
&& pip install $(grep -E 'jms|jumpserver' requirements/requirements.txt) -i ${PIP_JMS_MIRROR} \
&& pip install -r requirements/requirements.txt
COPY --from=stage-build /opt/jumpserver/release/jumpserver /opt/jumpserver
RUN echo > /opt/jumpserver/config.yml \
&& rm -rf /tmp/build
WORKDIR /opt/jumpserver
VOLUME /opt/jumpserver/data
VOLUME /opt/jumpserver/logs
ENV LANG=zh_CN.UTF-8
EXPOSE 8080
ENTRYPOINT ["./entrypoint.sh"]

135
Dockerfile-ce Normal file
View File

@@ -0,0 +1,135 @@
FROM python:3.11-slim-bullseye as stage-1
ARG TARGETARCH
ARG VERSION
ENV VERSION=$VERSION
WORKDIR /opt/jumpserver
ADD . .
RUN echo > /opt/jumpserver/config.yml \
&& cd utils && bash -ixeu build.sh
FROM python:3.11-slim-bullseye as stage-2
ARG TARGETARCH
ARG BUILD_DEPENDENCIES=" \
g++ \
make \
pkg-config"
ARG DEPENDENCIES=" \
freetds-dev \
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,id=core-apt \
--mount=type=cache,target=/var/lib/apt,sharing=locked,id=core-apt \
sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& 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
WORKDIR /opt/jumpserver
ARG PIP_MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple
RUN --mount=type=cache,target=/root/.cache \
--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
FROM python:3.11-slim-bullseye
ARG TARGETARCH
ENV LANG=zh_CN.UTF-8 \
PATH=/opt/py3/bin:$PATH
ARG DEPENDENCIES=" \
libjpeg-dev \
libpq-dev \
libx11-dev \
freerdp2-dev \
libxmlsec1-openssl"
ARG TOOLS=" \
ca-certificates \
curl \
default-libmysqlclient-dev \
default-mysql-client \
iputils-ping \
locales \
nmap \
openssh-client \
patch \
sshpass \
telnet \
vim \
wget"
ARG APT_MIRROR=http://mirrors.ustc.edu.cn
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core-apt \
--mount=type=cache,target=/var/lib/apt,sharing=locked,id=core-apt \
sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& apt-get update \
&& apt-get -y install --no-install-recommends ${DEPENDENCIES} \
&& apt-get -y install --no-install-recommends ${TOOLS} \
&& mkdir -p /root/.ssh/ \
&& echo "Host *\n\tStrictHostKeyChecking no\n\tUserKnownHostsFile /dev/null\n\tCiphers +aes128-cbc\n\tKexAlgorithms +diffie-hellman-group1-sha1\n\tHostKeyAlgorithms +ssh-rsa" > /root/.ssh/config \
&& echo "no" | dpkg-reconfigure dash \
&& echo "zh_CN.UTF-8" | dpkg-reconfigure locales \
&& sed -i "s@# export @export @g" ~/.bashrc \
&& sed -i "s@# alias @alias @g" ~/.bashrc
ARG RECEPTOR_VERSION=v1.4.5
RUN set -ex \
&& wget -O /opt/receptor.tar.gz https://github.com/ansible/receptor/releases/download/${RECEPTOR_VERSION}/receptor_${RECEPTOR_VERSION/v/}_linux_${TARGETARCH}.tar.gz \
&& tar -xf /opt/receptor.tar.gz -C /usr/local/bin/ \
&& chown root:root /usr/local/bin/receptor \
&& chmod 755 /usr/local/bin/receptor \
&& rm -f /opt/receptor.tar.gz
COPY --from=stage-2 /opt/py3 /opt/py3
COPY --from=stage-1 /opt/jumpserver/release/jumpserver /opt/jumpserver
COPY --from=stage-1 /opt/jumpserver/release/jumpserver/apps/libs/ansible/ansible.cfg /etc/ansible/
WORKDIR /opt/jumpserver
ARG VERSION
ENV VERSION=$VERSION
VOLUME /opt/jumpserver/data
EXPOSE 8080
ENTRYPOINT ["./entrypoint.sh"]

View File

@@ -1,10 +1,5 @@
ARG VERSION
FROM registry.fit2cloud.com/jumpserver/xpack:${VERSION} as build-xpack
FROM jumpserver/core:${VERSION}
COPY --from=build-xpack /opt/xpack /opt/jumpserver/apps/xpack
FROM registry.fit2cloud.com/jumpserver/core-ce:${VERSION}
WORKDIR /opt/jumpserver
RUN --mount=type=cache,target=/root/.cache/pip \
set -ex \
&& pip install -r requirements/requirements_xpack.txt
COPY --from=build-xpack /opt/xpack /opt/jumpserver/apps/xpack

View File

@@ -1,96 +0,0 @@
FROM python:3.9-slim as stage-build
ARG TARGETARCH
ARG VERSION
ENV VERSION=$VERSION
WORKDIR /opt/jumpserver
ADD . .
RUN cd utils && bash -ixeu build.sh
FROM python:3.9-slim
ARG TARGETARCH
MAINTAINER JumpServer Team <ibuler@qq.com>
ARG BUILD_DEPENDENCIES=" \
g++ \
make \
pkg-config"
ARG DEPENDENCIES=" \
freetds-dev \
libpq-dev \
libffi-dev \
libjpeg-dev \
libldap2-dev \
libsasl2-dev \
libssl-dev \
libxml2-dev \
libxmlsec1-dev \
libxmlsec1-openssl \
libaio-dev"
ARG TOOLS=" \
ca-certificates \
curl \
default-libmysqlclient-dev \
default-mysql-client \
locales \
openssh-client \
procps \
sshpass \
telnet \
unzip \
vim \
git \
wget"
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core \
set -ex \
&& 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} \
&& mkdir -p /root/.ssh/ \
&& echo "Host *\n\tStrictHostKeyChecking no\n\tUserKnownHostsFile /dev/null\n\tCiphers +aes128-cbc\n\tKexAlgorithms +diffie-hellman-group1-sha1\n\tHostKeyAlgorithms +ssh-rsa" > /root/.ssh/config \
&& echo "set mouse-=a" > ~/.vimrc \
&& echo "no" | dpkg-reconfigure dash \
&& echo "zh_CN.UTF-8" | dpkg-reconfigure locales \
&& sed -i "s@# export @export @g" ~/.bashrc \
&& sed -i "s@# alias @alias @g" ~/.bashrc \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /tmp/build
COPY ./requirements ./requirements
ARG PIP_MIRROR=https://pypi.douban.com/simple
ENV PIP_MIRROR=$PIP_MIRROR
ARG PIP_JMS_MIRROR=https://pypi.douban.com/simple
ENV PIP_JMS_MIRROR=$PIP_JMS_MIRROR
RUN --mount=type=cache,target=/root/.cache/pip \
set -ex \
&& pip config set global.index-url ${PIP_MIRROR} \
&& pip install --upgrade pip \
&& pip install --upgrade setuptools wheel \
&& pip install https://download.jumpserver.org/pypi/simple/cryptography/cryptography-38.0.4-cp39-cp39-linux_loongarch64.whl \
&& pip install https://download.jumpserver.org/pypi/simple/greenlet/greenlet-1.1.2-cp39-cp39-linux_loongarch64.whl \
&& pip install https://download.jumpserver.org/pypi/simple/PyNaCl/PyNaCl-1.5.0-cp39-cp39-linux_loongarch64.whl \
&& pip install https://download.jumpserver.org/pypi/simple/grpcio/grpcio-1.54.2-cp39-cp39-linux_loongarch64.whl \
&& pip install $(grep -E 'jms|jumpserver' requirements/requirements.txt) -i ${PIP_JMS_MIRROR} \
&& pip install -r requirements/requirements.txt
COPY --from=stage-build /opt/jumpserver/release/jumpserver /opt/jumpserver
RUN echo > /opt/jumpserver/config.yml \
&& rm -rf /tmp/build
WORKDIR /opt/jumpserver
VOLUME /opt/jumpserver/data
VOLUME /opt/jumpserver/logs
ENV LANG=zh_CN.UTF-8
EXPOSE 8080
ENTRYPOINT ["./entrypoint.sh"]

View File

@@ -12,23 +12,20 @@
<p align="center">
JumpServer <a href="https://github.com/jumpserver/jumpserver/releases/tag/v3.0.0">v3.0</a> 正式发布。
<br>
9 年时间,倾情投入,用心做好一款开源堡垒机。
</p>
| :warning: 注意 :warning: |
|:-------------------------------------------------------------------------------------------------------------------------:|
| 3.0 架构上和 2.0 变化较大,建议全新安装一套环境来体验。如需升级,请务必升级前进行备份,并[查阅文档](https://kb.fit2cloud.com/?p=06638d69-f109-4333-b5bf-65b17b297ed9) |
------------------------------
JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。
--------------------------
JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 堡垒机帮助企业以更安全的方式管控和登录各种类型的资产,包括:
JumpServer 堡垒机帮助企业以更安全的方式管控和登录各种类型的资产,包括:
- **SSH**: Linux / Unix / 网络设备 等;
- **Windows**: Web 方式连接 / 原生 RDP 连接;
- **数据库**: MySQL / Oracle / SQLServer / PostgreSQL 等;
- **Kubernetes**: 支持连接到 K8s 集群中的 Pods
- **数据库**: MySQL / MariaDB / PostgreSQL / Oracle / SQLServer / ClickHouse 等;
- **NoSQL**: Redis / MongoDB 等
- **GPT**: ChatGPT 等;
- **云服务**: Kubernetes / VMware vSphere 等;
- **Web 站点**: 各类系统的 Web 管理后台;
- **应用**: 通过 Remote App 连接各类应用。
@@ -64,6 +61,7 @@ JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运
## 案例研究
- [腾讯音乐娱乐集团基于JumpServer的安全运维审计解决方案](https://blog.fit2cloud.com/?p=a04cdf0d-6704-4d18-9b40-9180baecd0e2)
- [腾讯海外游戏基于JumpServer构建游戏安全运营能力](https://blog.fit2cloud.com/?p=3704)
- [万华化学通过JumpServer管理全球化分布式IT资产并且实现与云管平台的联动](https://blog.fit2cloud.com/?p=3504)
- [雪花啤酒JumpServer堡垒机使用体会](https://blog.fit2cloud.com/?p=3412)
@@ -81,29 +79,29 @@ JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运
如果您在使用过程中有任何疑问或对建议,欢迎提交 [GitHub Issue](https://github.com/jumpserver/jumpserver/issues/new/choose)。
您也可以到我们的 [社区论坛](https://bbs.fit2cloud.com/c/js/5) 及微信交流群当中进行交流沟通。
**微信交流群**
<img src="https://download.jumpserver.org/images/wecom-group.jpeg" alt="微信群二维码" width="200"/>
您也可以到我们的 [社区论坛](https://bbs.fit2cloud.com/c/js/5) 当中进行交流沟通。
### 参与贡献
欢迎提交 PR 参与贡献。感谢以下贡献者,他们让 JumpServer 变的越来越好。
<a href="https://github.com/jumpserver/jumpserver/graphs/contributors"><img src="https://opencollective.com/jumpserver/contributors.svg?width=890&button=false" /></a>
欢迎提交 PR 参与贡献。 参考 [CONTRIBUTING.md](https://github.com/jumpserver/jumpserver/blob/dev/CONTRIBUTING.md)
## 组件项目
| 项目 | 状态 | 描述 |
|--------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|
| [Lina](https://github.com/jumpserver/lina) | <a href="https://github.com/jumpserver/lina/releases"><img alt="Lina release" src="https://img.shields.io/github/release/jumpserver/lina.svg" /></a> | JumpServer Web UI 项目 |
| [Luna](https://github.com/jumpserver/luna) | <a href="https://github.com/jumpserver/luna/releases"><img alt="Luna release" src="https://img.shields.io/github/release/jumpserver/luna.svg" /></a> | JumpServer Web Terminal 项目 |
| [KoKo](https://github.com/jumpserver/koko) | <a href="https://github.com/jumpserver/koko/releases"><img alt="Koko release" src="https://img.shields.io/github/release/jumpserver/koko.svg" /></a> | JumpServer 字符协议 Connector 项目,替代原来 Python 版本的 [Coco](https://github.com/jumpserver/coco) |
| [Lion](https://github.com/jumpserver/lion-release) | <a href="https://github.com/jumpserver/lion-release/releases"><img alt="Lion release" src="https://img.shields.io/github/release/jumpserver/lion-release.svg" /></a> | JumpServer 图形协议 Connector 项目,依赖 [Apache Guacamole](https://guacamole.apache.org/) |
| [Magnus](https://github.com/jumpserver/magnus-release) | <a href="https://github.com/jumpserver/magnus-release/releases"><img alt="Magnus release" src="https://img.shields.io/github/release/jumpserver/magnus-release.svg" /> | JumpServer 数据库代理 Connector 项目 |
| [Clients](https://github.com/jumpserver/clients) | <a href="https://github.com/jumpserver/clients/releases"><img alt="Clients release" src="https://img.shields.io/github/release/jumpserver/clients.svg" /> | JumpServer 客户端 项目 |
| [Installer](https://github.com/jumpserver/installer) | <a href="https://github.com/jumpserver/installer/releases"><img alt="Installer release" src="https://img.shields.io/github/release/jumpserver/installer.svg" /> | JumpServer 安装包 项目 |
| 项目 | 状态 | 描述 |
|--------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
| [Lina](https://github.com/jumpserver/lina) | <a href="https://github.com/jumpserver/lina/releases"><img alt="Lina release" src="https://img.shields.io/github/release/jumpserver/lina.svg" /></a> | JumpServer Web UI 项目 |
| [Luna](https://github.com/jumpserver/luna) | <a href="https://github.com/jumpserver/luna/releases"><img alt="Luna release" src="https://img.shields.io/github/release/jumpserver/luna.svg" /></a> | JumpServer Web Terminal 项目 |
| [KoKo](https://github.com/jumpserver/koko) | <a href="https://github.com/jumpserver/koko/releases"><img alt="Koko release" src="https://img.shields.io/github/release/jumpserver/koko.svg" /></a> | JumpServer 字符协议 Connector 项目 |
| [Lion](https://github.com/jumpserver/lion-release) | <a href="https://github.com/jumpserver/lion-release/releases"><img alt="Lion release" src="https://img.shields.io/github/release/jumpserver/lion-release.svg" /></a> | JumpServer 图形协议 Connector 项目,依赖 [Apache Guacamole](https://guacamole.apache.org/) |
| [Razor](https://github.com/jumpserver/razor) | <img alt="Chen" src="https://img.shields.io/badge/release-私有发布-red" /> | JumpServer RDP 代理 Connector 项目 |
| [Tinker](https://github.com/jumpserver/tinker) | <img alt="Tinker" src="https://img.shields.io/badge/release-私有发布-red" /> | JumpServer 远程应用 Connector 项目 (Windows) |
| [Panda](https://github.com/jumpserver/Panda) | <img alt="Panda" src="https://img.shields.io/badge/release-私有发布-red" /> | JumpServer 远程应用 Connector 项目 (Linux) |
| [Magnus](https://github.com/jumpserver/magnus-release) | <a href="https://github.com/jumpserver/magnus-release/releases"><img alt="Magnus release" src="https://img.shields.io/github/release/jumpserver/magnus-release.svg" /> | JumpServer 数据库代理 Connector 项目 |
| [Chen](https://github.com/jumpserver/chen-release) | <a href="https://github.com/jumpserver/chen-release/releases"><img alt="Chen release" src="https://img.shields.io/github/release/jumpserver/chen-release.svg" /> | JumpServer Web DB 项目,替代原来的 OmniDB |
| [Kael](https://github.com/jumpserver/kael) | <a href="https://github.com/jumpserver/kael/releases"><img alt="Kael release" src="https://img.shields.io/github/release/jumpserver/kael.svg" /> | JumpServer 连接 GPT 资产的组件项目 |
| [Wisp](https://github.com/jumpserver/wisp) | <a href="https://github.com/jumpserver/wisp/releases"><img alt="Magnus release" src="https://img.shields.io/github/release/jumpserver/wisp.svg" /> | JumpServer 各系统终端组件和 Core API 通信的组件项目 |
| [Clients](https://github.com/jumpserver/clients) | <a href="https://github.com/jumpserver/clients/releases"><img alt="Clients release" src="https://img.shields.io/github/release/jumpserver/clients.svg" /> | JumpServer 客户端 项目 |
| [Installer](https://github.com/jumpserver/installer) | <a href="https://github.com/jumpserver/installer/releases"><img alt="Installer release" src="https://img.shields.io/github/release/jumpserver/installer.svg" /> | JumpServer 安装包 项目 |
## 安全说明
@@ -113,14 +111,9 @@ JumpServer是一款安全产品请参考 [基本安全建议](https://docs.ju
- 邮箱support@fit2cloud.com
- 电话400-052-0755
## 致谢开源
- [Apache Guacamole](https://guacamole.apache.org/) Web 页面连接 RDP、SSH、VNC 等协议资产JumpServer Lion 组件使用到该项目;
- [OmniDB](https://omnidb.org/) Web 页面连接使用数据库JumpServer Web 数据库组件使用到该项目。
## License & Copyright
Copyright (c) 2014-2023 飞致云 FIT2CLOUD, All rights reserved.
Copyright (c) 2014-2024 飞致云 FIT2CLOUD, All rights reserved.
Licensed under The GNU General Public License version 3 (GPLv3) (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at

View File

@@ -85,7 +85,7 @@ If you find a security problem, please contact us directly
- 400-052-0755
### License & Copyright
Copyright (c) 2014-2022 FIT2CLOUD Tech, Inc., All rights reserved.
Copyright (c) 2014-2024 FIT2CLOUD Tech, Inc., All rights reserved.
Licensed under The GNU General Public License version 3 (GPLv3) (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

View File

@@ -1,3 +1,4 @@
from .account import *
from .task import *
from .template import *
from .virtual import *

View File

@@ -6,11 +6,12 @@ from rest_framework.status import HTTP_200_OK
from accounts import serializers
from accounts.filters import AccountFilterSet
from accounts.mixins import AccountRecordViewLogMixin
from accounts.models import Account
from assets.models import Asset, Node
from common.api import ExtraFilterFieldsMixin
from common.permissions import UserConfirmation, ConfirmType, IsValidUser
from common.views.mixins import RecordViewLogMixin
from authentication.permissions import UserConfirmation, ConfirmType
from common.api.mixin import ExtraFilterFieldsMixin
from common.permissions import IsValidUser
from orgs.mixins.api import OrgBulkModelViewSet
from rbac.permissions import RBACPermission
@@ -22,10 +23,11 @@ __all__ = [
class AccountViewSet(OrgBulkModelViewSet):
model = Account
search_fields = ('username', 'asset__address', 'name')
search_fields = ('username', 'name', 'asset__name', 'asset__address', 'comment')
filterset_class = AccountFilterSet
serializer_classes = {
'default': serializers.AccountSerializer,
'retrieve': serializers.AccountDetailSerializer,
}
rbac_perms = {
'partial_update': ['accounts.change_account'],
@@ -52,22 +54,23 @@ class AccountViewSet(OrgBulkModelViewSet):
return Response(data=serializer.data)
@action(
methods=['get'], detail=False, url_path='username-suggestions',
methods=['post'], detail=False, url_path='username-suggestions',
permission_classes=[IsValidUser]
)
def username_suggestions(self, request, *args, **kwargs):
asset_ids = request.query_params.get('assets')
node_keys = request.query_params.get('keys')
username = request.query_params.get('username')
asset_ids = request.data.get('assets', [])
node_ids = request.data.get('nodes', [])
username = request.data.get('username', '')
accounts = Account.objects.all()
if node_ids:
nodes = Node.objects.filter(id__in=node_ids)
node_asset_ids = Node.get_nodes_all_assets(*nodes).values_list('id', flat=True)
asset_ids.extend(node_asset_ids)
assets = Asset.objects.all()
if asset_ids:
assets = assets.filter(id__in=asset_ids.split(','))
if node_keys:
patten = Node.get_node_all_children_key_pattern(node_keys.split(','))
assets = assets.filter(nodes__key__regex=patten)
accounts = accounts.filter(asset_id__in=list(set(asset_ids)))
accounts = Account.objects.filter(asset__in=assets)
if username:
accounts = accounts.filter(username__icontains=username)
usernames = list(accounts.values_list('username', flat=True).distinct()[:10])
@@ -84,7 +87,7 @@ class AccountViewSet(OrgBulkModelViewSet):
return Response(status=HTTP_200_OK)
class AccountSecretsViewSet(RecordViewLogMixin, AccountViewSet):
class AccountSecretsViewSet(AccountRecordViewLogMixin, AccountViewSet):
"""
因为可能要导出所有账号,所以单独建立了一个 viewset
"""
@@ -113,7 +116,7 @@ class AssetAccountBulkCreateApi(CreateAPIView):
return Response(data=serializer.data, status=HTTP_200_OK)
class AccountHistoriesSecretAPI(ExtraFilterFieldsMixin, RecordViewLogMixin, ListAPIView):
class AccountHistoriesSecretAPI(ExtraFilterFieldsMixin, AccountRecordViewLogMixin, ListAPIView):
model = Account.history.model
serializer_class = serializers.AccountHistorySerializer
http_method_names = ['get', 'options']
@@ -132,11 +135,12 @@ class AccountHistoriesSecretAPI(ExtraFilterFieldsMixin, RecordViewLogMixin, List
def get_queryset(self):
account = self.get_object()
histories = account.history.all()
last_history = account.history.first()
if not last_history:
latest_history = account.history.first()
if not latest_history:
return histories
if account.secret == last_history.secret \
and account.secret_type == last_history.secret_type:
histories = histories.exclude(history_id=last_history.history_id)
if account.secret != latest_history.secret:
return histories
if account.secret_type != latest_history.secret_type:
return histories
histories = histories.exclude(history_id=latest_history.history_id)
return histories

View File

@@ -1,9 +1,13 @@
from django.db.models import Q
from rest_framework.generics import CreateAPIView
from rest_framework.response import Response
from accounts import serializers
from accounts.tasks import verify_accounts_connectivity_task, push_accounts_to_assets_task
from assets.exceptions import NotSupportedTemporarilyError
from accounts.models import Account
from accounts.permissions import AccountTaskActionPermission
from accounts.tasks import (
remove_accounts_task, verify_accounts_connectivity_task, push_accounts_to_assets_task
)
from authentication.permissions import UserConfirmation, ConfirmType
__all__ = [
'AccountsTaskCreateAPI',
@@ -12,38 +16,48 @@ __all__ = [
class AccountsTaskCreateAPI(CreateAPIView):
serializer_class = serializers.AccountTaskSerializer
permission_classes = (AccountTaskActionPermission,)
def check_permissions(self, request):
act = request.data.get('action')
if act == 'push':
code = 'accounts.push_account'
else:
code = 'accounts.verify_account'
return request.user.has_perm(code)
def get_permissions(self):
act = self.request.data.get('action')
if act == 'remove':
self.permission_classes = [
AccountTaskActionPermission,
UserConfirmation.require(ConfirmType.PASSWORD)
]
return super().get_permissions()
@staticmethod
def get_account_ids(data, action):
account_type = 'gather_accounts' if action == 'remove' else 'accounts'
accounts = data.get(account_type, [])
account_ids = [str(a.id) for a in accounts]
if action == 'remove':
return account_ids
assets = data.get('assets', [])
asset_ids = [str(a.id) for a in assets]
ids = Account.objects.filter(
Q(id__in=account_ids) | Q(asset_id__in=asset_ids)
).distinct().values_list('id', flat=True)
return [str(_id) for _id in ids]
def perform_create(self, serializer):
data = serializer.validated_data
accounts = data.get('accounts', [])
params = data.get('params')
account_ids = [str(a.id) for a in accounts]
action = data['action']
ids = self.get_account_ids(data, action)
if data['action'] == 'push':
task = push_accounts_to_assets_task.delay(account_ids, params)
if action == 'push':
task = push_accounts_to_assets_task.delay(ids, data.get('params'))
elif action == 'remove':
task = remove_accounts_task.delay(ids)
elif action == 'verify':
task = verify_accounts_connectivity_task.delay(ids)
else:
account = accounts[0]
asset = account.asset
if not asset.auto_config['ansible_enabled'] or \
not asset.auto_config['ping_enabled']:
raise NotSupportedTemporarilyError()
task = verify_accounts_connectivity_task.delay(account_ids)
raise ValueError(f"Invalid action: {action}")
data = getattr(serializer, '_data', {})
data["task"] = task.id
setattr(serializer, '_data', data)
return task
def get_exception_handler(self):
def handler(e, context):
return Response({"error": str(e)}, status=400)
return handler

View File

@@ -1,13 +1,15 @@
from django_filters import rest_framework as drf_filters
from rest_framework import status
from rest_framework.decorators import action
from rest_framework.response import Response
from accounts import serializers
from accounts.mixins import AccountRecordViewLogMixin
from accounts.models import AccountTemplate
from accounts.tasks import template_sync_related_accounts
from assets.const import Protocol
from authentication.permissions import UserConfirmation, ConfirmType
from common.drf.filters import BaseFilterSet
from common.permissions import UserConfirmation, ConfirmType
from common.views.mixins import RecordViewLogMixin
from orgs.mixins.api import OrgBulkModelViewSet
from rbac.permissions import RBACPermission
@@ -44,19 +46,26 @@ class AccountTemplateViewSet(OrgBulkModelViewSet):
}
rbac_perms = {
'su_from_account_templates': 'accounts.view_accounttemplate',
'sync_related_accounts': 'accounts.change_account',
}
@action(methods=['get'], detail=False, url_path='su-from-account-templates')
def su_from_account_templates(self, request, *args, **kwargs):
pk = request.query_params.get('template_id')
template = AccountTemplate.objects.filter(pk=pk).first()
templates = AccountTemplate.get_su_from_account_templates(template)
templates = AccountTemplate.get_su_from_account_templates(pk)
templates = self.filter_queryset(templates)
serializer = self.get_serializer(templates, many=True)
return Response(data=serializer.data)
@action(methods=['patch'], detail=True, url_path='sync-related-accounts')
def sync_related_accounts(self, request, *args, **kwargs):
instance = self.get_object()
user_id = str(request.user.id)
task = template_sync_related_accounts.delay(str(instance.id), user_id)
return Response({'task': task.id}, status=status.HTTP_200_OK)
class AccountTemplateSecretsViewSet(RecordViewLogMixin, AccountTemplateViewSet):
class AccountTemplateSecretsViewSet(AccountRecordViewLogMixin, AccountTemplateViewSet):
serializer_classes = {
'default': serializers.AccountTemplateSecretSerializer,
}

View File

@@ -0,0 +1,20 @@
from django.shortcuts import get_object_or_404
from accounts.models import VirtualAccount
from accounts.serializers import VirtualAccountSerializer
from common.utils import is_uuid
from orgs.mixins.api import OrgBulkModelViewSet
class VirtualAccountViewSet(OrgBulkModelViewSet):
serializer_class = VirtualAccountSerializer
search_fields = ('alias',)
filterset_fields = ('alias',)
def get_queryset(self):
return VirtualAccount.get_or_init_queryset()
def get_object(self, ):
pk = self.kwargs.get('pk')
kwargs = {'pk': pk} if is_uuid(pk) else {'alias': pk}
return get_object_or_404(VirtualAccount, **kwargs)

View File

@@ -18,16 +18,15 @@ __all__ = [
class AccountBackupPlanViewSet(OrgBulkModelViewSet):
model = AccountBackupAutomation
filter_fields = ('name',)
search_fields = filter_fields
ordering = ('name',)
filterset_fields = ('name',)
search_fields = filterset_fields
serializer_class = serializers.AccountBackupSerializer
class AccountBackupPlanExecutionViewSet(viewsets.ModelViewSet):
serializer_class = serializers.AccountBackupPlanExecutionSerializer
search_fields = ('trigger',)
filterset_fields = ('trigger', 'plan_id')
search_fields = ('trigger', 'plan__name')
filterset_fields = ('trigger', 'plan_id', 'plan__name')
http_method_names = ['get', 'post', 'options']
def get_queryset(self):

View File

@@ -1,5 +1,5 @@
from django.shortcuts import get_object_or_404
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from rest_framework import status, mixins, viewsets
from rest_framework.response import Response
@@ -20,8 +20,8 @@ __all__ = [
class AutomationAssetsListApi(generics.ListAPIView):
model = BaseAutomation
serializer_class = serializers.AutomationAssetsSerializer
filter_fields = ("name", "address")
search_fields = filter_fields
filterset_fields = ("name", "address")
search_fields = filterset_fields
def get_object(self):
pk = self.kwargs.get('pk')
@@ -95,8 +95,8 @@ class AutomationExecutionViewSet(
mixins.CreateModelMixin, mixins.ListModelMixin,
mixins.RetrieveModelMixin, viewsets.GenericViewSet
):
search_fields = ('trigger',)
filterset_fields = ('trigger', 'automation_id')
search_fields = ('trigger', 'automation__name')
filterset_fields = ('trigger', 'automation_id', 'automation__name')
serializer_class = serializers.AutomationExecutionSerializer
tp: str

View File

@@ -1,13 +1,17 @@
# -*- coding: utf-8 -*-
#
from rest_framework import mixins
from rest_framework import status, mixins
from rest_framework.decorators import action
from rest_framework.response import Response
from accounts import serializers
from accounts.const import AutomationTypes
from accounts.models import ChangeSecretAutomation, ChangeSecretRecord, AutomationExecution
from common.utils import get_object_or_none
from accounts.filters import ChangeSecretRecordFilterSet
from accounts.models import ChangeSecretAutomation, ChangeSecretRecord
from accounts.tasks import execute_automation_record_task
from authentication.permissions import UserConfirmation, ConfirmType
from orgs.mixins.api import OrgBulkModelViewSet, OrgGenericViewSet
from rbac.permissions import RBACPermission
from .base import (
AutomationAssetsListApi, AutomationRemoveAssetApi, AutomationAddAssetApi,
AutomationNodeAddRemoveApi, AutomationExecutionViewSet
@@ -23,28 +27,53 @@ __all__ = [
class ChangeSecretAutomationViewSet(OrgBulkModelViewSet):
model = ChangeSecretAutomation
filter_fields = ('name', 'secret_type', 'secret_strategy')
search_fields = filter_fields
filterset_fields = ('name', 'secret_type', 'secret_strategy')
search_fields = filterset_fields
serializer_class = serializers.ChangeSecretAutomationSerializer
class ChangeSecretRecordViewSet(mixins.ListModelMixin, OrgGenericViewSet):
serializer_class = serializers.ChangeSecretRecordSerializer
filter_fields = ['asset', 'execution_id']
search_fields = ['asset__hostname']
filterset_class = ChangeSecretRecordFilterSet
search_fields = ('asset__address',)
tp = AutomationTypes.change_secret
serializer_classes = {
'default': serializers.ChangeSecretRecordSerializer,
'secret': serializers.ChangeSecretRecordViewSecretSerializer,
}
rbac_perms = {
'execute': 'accounts.add_changesecretexecution',
'secret': 'accounts.view_changesecretrecord',
}
def get_permissions(self):
if self.action == 'secret':
self.permission_classes = [
RBACPermission,
UserConfirmation.require(ConfirmType.MFA)
]
return super().get_permissions()
def get_queryset(self):
return ChangeSecretRecord.objects.filter(
execution__automation__type=AutomationTypes.change_secret
)
return ChangeSecretRecord.objects.all()
def filter_queryset(self, queryset):
queryset = super().filter_queryset(queryset)
eid = self.request.query_params.get('execution_id')
execution = get_object_or_none(AutomationExecution, pk=eid)
if execution:
queryset = queryset.filter(execution=execution)
return queryset
@action(methods=['post'], detail=False, url_path='execute')
def execute(self, request, *args, **kwargs):
record_ids = request.data.get('record_ids')
records = self.get_queryset().filter(id__in=record_ids)
execution_count = records.values_list('execution_id', flat=True).distinct().count()
if execution_count != 1:
return Response(
{'detail': 'Only one execution is allowed to execute'},
status=status.HTTP_400_BAD_REQUEST
)
task = execute_automation_record_task.delay(record_ids, self.tp)
return Response({'task': task.id}, status=status.HTTP_200_OK)
@action(methods=['get'], detail=True, url_path='secret')
def secret(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangSecretExecutionViewSet(AutomationExecutionViewSet):

View File

@@ -20,8 +20,8 @@ __all__ = [
class GatherAccountsAutomationViewSet(OrgBulkModelViewSet):
model = GatherAccountsAutomation
filter_fields = ('name',)
search_fields = filter_fields
filterset_fields = ('name',)
search_fields = filterset_fields
serializer_class = serializers.GatherAccountAutomationSerializer

View File

@@ -20,8 +20,8 @@ __all__ = [
class PushAccountAutomationViewSet(OrgBulkModelViewSet):
model = PushAccountAutomation
filter_fields = ('name', 'secret_type', 'secret_strategy')
search_fields = filter_fields
filterset_fields = ('name', 'secret_type', 'secret_strategy')
search_fields = filterset_fields
serializer_class = serializers.PushAccountAutomationSerializer
@@ -42,6 +42,7 @@ class PushAccountExecutionViewSet(AutomationExecutionViewSet):
class PushAccountRecordViewSet(ChangeSecretRecordViewSet):
serializer_class = serializers.ChangeSecretRecordSerializer
tp = AutomationTypes.push_account
def get_queryset(self):
return ChangeSecretRecord.objects.filter(

View File

@@ -6,6 +6,5 @@ class AccountsConfig(AppConfig):
name = 'accounts'
def ready(self):
from . import signal_handlers
from . import tasks
__all__ = signal_handlers
from . import signal_handlers # noqa
from . import tasks # noqa

View File

@@ -1,26 +1,28 @@
import os
import time
from openpyxl import Workbook
from collections import defaultdict, OrderedDict
from django.conf import settings
from django.db.models import F
from rest_framework import serializers
from xlsxwriter import Workbook
from accounts.models import Account
from assets.const import AllTypes
from accounts.const import AccountBackupType
from accounts.models.automations.backup_account import AccountBackupAutomation
from accounts.notifications import AccountBackupExecutionTaskMsg, AccountBackupByObjStorageExecutionTaskMsg
from accounts.serializers import AccountSecretSerializer
from accounts.notifications import AccountBackupExecutionTaskMsg
from assets.const import AllTypes
from common.utils.file import encrypt_and_compress_zip_file, zip_files
from common.utils.timezone import local_now_filename, local_now_display
from terminal.models.component.storage import ReplayStorage
from users.models import User
from common.utils import get_logger
from common.utils.timezone import local_now_display
from common.utils.file import encrypt_and_compress_zip_file
logger = get_logger(__file__)
PATH = os.path.join(os.path.dirname(settings.BASE_DIR), 'tmp')
class RecipientsNotFound(Exception):
pass
class BaseAccountHandler:
@classmethod
def unpack_data(cls, serializer_data, data=None):
@@ -72,12 +74,26 @@ class AssetAccountHandler(BaseAccountHandler):
@staticmethod
def get_filename(plan_name):
filename = os.path.join(
PATH, f'{plan_name}-{local_now_display()}-{time.time()}.xlsx'
PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.xlsx'
)
return filename
@staticmethod
def handler_secret(data, section):
for account_data in data:
secret = account_data.get('secret')
if not secret:
continue
length = len(secret)
index = length // 2
if section == "front":
secret = secret[:index] + '*' * (length - index)
elif section == "back":
secret = '*' * (length - index) + secret[index:]
account_data['secret'] = secret
@classmethod
def create_data_map(cls, accounts):
def create_data_map(cls, accounts, section):
data_map = defaultdict(list)
if not accounts.exists():
@@ -97,9 +113,10 @@ class AssetAccountHandler(BaseAccountHandler):
for tp, _accounts in account_type_map.items():
sheet_name = type_dict.get(tp, tp)
data = AccountSecretSerializer(_accounts, many=True).data
cls.handler_secret(data, section)
data_map.update(cls.add_rows(data, header_fields, sheet_name))
logger.info('\n\033[33m- 共备份 {} 条账号\033[0m'.format(accounts.count()))
print('\n\033[33m- 共备份 {} 条账号\033[0m'.format(accounts.count()))
return data_map
@@ -109,8 +126,8 @@ class AccountBackupHandler:
self.plan_name = self.execution.plan.name
self.is_frozen = False # 任务状态冻结标志
def create_excel(self):
logger.info(
def create_excel(self, section='complete'):
print(
'\n'
'\033[32m>>> 正在生成资产或应用相关备份信息文件\033[0m'
''
@@ -119,7 +136,7 @@ class AccountBackupHandler:
time_start = time.time()
files = []
accounts = self.execution.backup_accounts
data_map = AssetAccountHandler.create_data_map(accounts)
data_map = AssetAccountHandler.create_data_map(accounts, section)
if not data_map:
return files
@@ -127,22 +144,23 @@ class AccountBackupHandler:
wb = Workbook(filename)
for sheet, data in data_map.items():
ws = wb.create_sheet(str(sheet))
for row in data:
ws.append(row)
wb.save(filename)
ws = wb.add_worksheet(str(sheet))
for row_index, row_data in enumerate(data):
for col_index, col_data in enumerate(row_data):
ws.write_string(row_index, col_index, col_data)
wb.close()
files.append(filename)
timedelta = round((time.time() - time_start), 2)
logger.info('步骤完成: 用时 {}s'.format(timedelta))
print('创建备份文件完成: 用时 {}s'.format(timedelta))
return files
def send_backup_mail(self, files, recipients):
if not files:
return
recipients = User.objects.filter(id__in=list(recipients))
logger.info(
print(
'\n'
'\033[32m>>> 发送备份邮件\033[0m'
'\033[32m>>> 开始发送备份邮件\033[0m'
''
)
plan_name = self.plan_name
@@ -150,12 +168,34 @@ class AccountBackupHandler:
if not user.secret_key:
attachment_list = []
else:
password = user.secret_key.encode('utf8')
attachment = os.path.join(PATH, f'{plan_name}-{local_now_display()}-{time.time()}.zip')
encrypt_and_compress_zip_file(attachment, password, files)
attachment = os.path.join(PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.zip')
encrypt_and_compress_zip_file(attachment, user.secret_key, files)
attachment_list = [attachment, ]
AccountBackupExecutionTaskMsg(plan_name, user).publish(attachment_list)
logger.info('邮件已发送至{}({})'.format(user, user.email))
print('邮件已发送至{}({})'.format(user, user.email))
for file in files:
os.remove(file)
def send_backup_obj_storage(self, files, recipients, password):
if not files:
return
recipients = ReplayStorage.objects.filter(id__in=list(recipients))
print(
'\n'
'\033[32m>>> 开始发送备份文件到sftp服务器\033[0m'
''
)
plan_name = self.plan_name
for rec in recipients:
attachment = os.path.join(PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.zip')
if password:
print('\033[32m>>> 使用加密密码对文件进行加密中\033[0m')
encrypt_and_compress_zip_file(attachment, password, files)
else:
zip_files(attachment, files)
attachment_list = attachment
AccountBackupByObjStorageExecutionTaskMsg(plan_name, rec).publish(attachment_list)
print('备份文件将发送至{}({})'.format(rec.name, rec.id))
for file in files:
os.remove(file)
@@ -163,33 +203,29 @@ class AccountBackupHandler:
self.execution.reason = reason[:1024]
self.execution.is_success = is_success
self.execution.save()
logger.info('已完成对任务状态的更新')
print('\n已完成对任务状态的更新\n')
def step_finished(self, is_success):
@staticmethod
def step_finished(is_success):
if is_success:
logger.info('任务执行成功')
print('任务执行成功')
else:
logger.error('任务执行失败')
print('任务执行失败')
def _run(self):
is_success = False
error = '-'
try:
recipients = self.execution.plan_snapshot.get('recipients')
if not recipients:
logger.info(
'\n'
'\033[32m>>> 该备份任务未分配收件人\033[0m'
''
)
else:
files = self.create_excel()
self.send_backup_mail(files, recipients)
backup_type = self.execution.snapshot.get('backup_type', AccountBackupType.email.value)
if backup_type == AccountBackupType.email.value:
self.backup_by_email()
elif backup_type == AccountBackupType.object_storage.value:
self.backup_by_obj_storage()
except Exception as e:
self.is_frozen = True
logger.error('任务执行被异常中断')
logger.info('下面打印发生异常的 Traceback 信息 : ')
logger.error(e, exc_info=True)
print('任务执行被异常中断')
print('下面打印发生异常的 Traceback 信息 : ')
print(e)
error = str(e)
else:
is_success = True
@@ -198,16 +234,62 @@ class AccountBackupHandler:
self.step_perform_task_update(is_success, reason)
self.step_finished(is_success)
def backup_by_obj_storage(self):
object_id = self.execution.snapshot.get('id')
zip_encrypt_password = AccountBackupAutomation.objects.get(id=object_id).zip_encrypt_password
obj_recipients_part_one = self.execution.snapshot.get('obj_recipients_part_one', [])
obj_recipients_part_two = self.execution.snapshot.get('obj_recipients_part_two', [])
if not obj_recipients_part_one and not obj_recipients_part_two:
print(
'\n'
'\033[31m>>> 该备份任务未分配sftp服务器\033[0m'
''
)
raise RecipientsNotFound('Not Found Recipients')
if obj_recipients_part_one and obj_recipients_part_two:
print('\033[32m>>> 账号的密钥将被拆分成前后两部分发送\033[0m')
files = self.create_excel(section='front')
self.send_backup_obj_storage(files, obj_recipients_part_one, zip_encrypt_password)
files = self.create_excel(section='back')
self.send_backup_obj_storage(files, obj_recipients_part_two, zip_encrypt_password)
else:
recipients = obj_recipients_part_one or obj_recipients_part_two
files = self.create_excel()
self.send_backup_obj_storage(files, recipients, zip_encrypt_password)
def backup_by_email(self):
recipients_part_one = self.execution.snapshot.get('recipients_part_one', [])
recipients_part_two = self.execution.snapshot.get('recipients_part_two', [])
if not recipients_part_one and not recipients_part_two:
print(
'\n'
'\033[31m>>> 该备份任务未分配收件人\033[0m'
''
)
raise RecipientsNotFound('Not Found Recipients')
if recipients_part_one and recipients_part_two:
print('\033[32m>>> 账号的密钥将被拆分成前后两部分发送\033[0m')
files = self.create_excel(section='front')
self.send_backup_mail(files, recipients_part_one)
files = self.create_excel(section='back')
self.send_backup_mail(files, recipients_part_two)
else:
recipients = recipients_part_one or recipients_part_two
files = self.create_excel()
self.send_backup_mail(files, recipients)
def run(self):
logger.info('任务开始: {}'.format(local_now_display()))
print('任务开始: {}'.format(local_now_display()))
time_start = time.time()
try:
self._run()
except Exception as e:
logger.error('任务运行出现异常')
logger.error('下面显示异常 Traceback 信息: ')
logger.error(e, exc_info=True)
print('任务运行出现异常')
print('下面显示异常 Traceback 信息: ')
print(e)
finally:
logger.info('\n任务结束: {}'.format(local_now_display()))
print('\n任务结束: {}'.format(local_now_display()))
timedelta = round((time.time() - time_start), 2)
logger.info('用时: {}'.format(timedelta))
print('用时: {}s'.format(timedelta))

View File

@@ -4,13 +4,9 @@ import time
from django.utils import timezone
from common.utils import get_logger
from common.utils.timezone import local_now_display
from .handlers import AccountBackupHandler
logger = get_logger(__name__)
class AccountBackupManager:
def __init__(self, execution):
@@ -23,7 +19,7 @@ class AccountBackupManager:
def do_run(self):
execution = self.execution
logger.info('\n\033[33m# 账号备份计划正在执行\033[0m')
print('\n\033[33m# 账号备份计划正在执行\033[0m')
handler = AccountBackupHandler(execution)
handler.run()
@@ -35,10 +31,10 @@ class AccountBackupManager:
self.time_end = time.time()
self.date_end = timezone.now()
logger.info('\n\n' + '-' * 80)
logger.info('计划执行结束 {}\n'.format(local_now_display()))
print('\n\n' + '-' * 80)
print('计划执行结束 {}\n'.format(local_now_display()))
self.timedelta = self.time_end - self.time_start
logger.info('用时: {}s'.format(self.timedelta))
print('用时: {}s'.format(self.timedelta))
self.execution.timedelta = self.timedelta
self.execution.save()

View File

@@ -2,9 +2,10 @@
gather_facts: no
vars:
ansible_connection: local
ansible_become: false
tasks:
- name: Test privileged account
- name: Test privileged account (paramiko)
ssh_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
@@ -12,9 +13,17 @@
login_password: "{{ jms_account.secret }}"
login_secret_type: "{{ jms_account.secret_type }}"
login_private_key_path: "{{ jms_account.private_key_path }}"
become: "{{ custom_become | default(False) }}"
become_method: "{{ custom_become_method | default('su') }}"
become_user: "{{ custom_become_user | default('') }}"
become_password: "{{ custom_become_password | default('') }}"
become_private_key_path: "{{ custom_become_private_key_path | default(None) }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default(None) }}"
register: ping_info
delegate_to: localhost
- name: Change asset password
- name: Change asset password (paramiko)
custom_command:
login_user: "{{ jms_account.username }}"
login_password: "{{ jms_account.secret }}"
@@ -22,19 +31,31 @@
login_port: "{{ jms_asset.port }}"
login_secret_type: "{{ jms_account.secret_type }}"
login_private_key_path: "{{ jms_account.private_key_path }}"
become: "{{ custom_become | default(False) }}"
become_method: "{{ custom_become_method | default('su') }}"
become_user: "{{ custom_become_user | default('') }}"
become_password: "{{ custom_become_password | default('') }}"
become_private_key_path: "{{ custom_become_private_key_path | default(None) }}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
commands: "{{ params.commands }}"
first_conn_delay_time: "{{ first_conn_delay_time | default(0.5) }}"
ignore_errors: true
when: ping_info is succeeded
register: change_info
delegate_to: localhost
- name: Verify password
- name: Verify password (paramiko)
ssh_ping:
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
when:
- ping_info is succeeded
- change_info is succeeded
become: "{{ account.become.ansible_become | default(False) }}"
become_method: su
become_user: "{{ account.become.ansible_user | default('') }}"
become_password: "{{ account.become.ansible_password | default('') }}"
become_private_key_path: "{{ account.become.ansible_ssh_private_key_file | default(None) }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default(None) }}"
delegate_to: localhost

View File

@@ -6,14 +6,27 @@ category:
type:
- all
method: change_secret
protocol: ssh
priority: 50
params:
- name: commands
type: list
label: '自定义命令'
label: "{{ 'Params commands label' | trans }}"
default: [ '' ]
help_text: '自定义命令中如需包含账号的 账号、密码、SSH 连接的用户密码 字段,<br />请使用 &#123;username&#125;、&#123;password&#125;、&#123;login_password&#125;格式,执行任务时会进行替换 。<br />比如针对 Cisco 主机进行改密,一般需要配置五条命令:<br />1. enable<br />2. &#123;login_password&#125;<br />3. configure terminal<br />4. username &#123;username&#125; privilege 0 password &#123;password&#125; <br />5. end'
help_text: "{{ 'Params commands help text' | trans }}"
i18n:
SSH account change secret:
zh: SSH 账号改密
ja: SSH アカウントのパスワード変更
zh: '使用 SSH 命令行自定义改密'
ja: 'SSH コマンドライン方式でカスタムパスワード変更'
en: 'Custom password change by SSH command line'
Params commands help text:
zh: '自定义命令中如需包含账号的 账号、密码、SSH 连接的用户密码 字段,<br />请使用 &#123;username&#125;、&#123;password&#125;、&#123;login_password&#125;格式,执行任务时会进行替换 。<br />比如针对 Cisco 主机进行改密,一般需要配置五条命令:<br />1. enable<br />2. &#123;login_password&#125;<br />3. configure terminal<br />4. username &#123;username&#125; privilege 0 password &#123;password&#125; <br />5. end'
ja: 'カスタム コマンドに SSH 接続用のアカウント番号、パスワード、ユーザー パスワード フィールドを含める必要がある場合は、<br />&#123;ユーザー名&#125;、&#123;パスワード&#125;、&#123;login_password& を使用してください。 # 125; 形式。タスクの実行時に置き換えられます。 <br />たとえば、Cisco ホストのパスワードを変更するには、通常、次の 5 つのコマンドを設定する必要があります:<br />1.enable<br />2.&#123;login_password&#125;<br />3 .ターミナルの設定<br / >4. ユーザー名 &#123;ユーザー名&#125; 権限 0 パスワード &#123;パスワード&#125; <br />5. 終了'
en: 'If the custom command needs to include the account number, password, and user password field for SSH connection,<br />Please use &#123;username&#125;, &#123;password&#125;, &#123;login_password&# 125; format, which will be replaced when executing the task. <br />For example, to change the password of a Cisco host, you generally need to configure five commands:<br />1. enable<br />2. &#123;login_password&#125;<br />3. configure terminal<br / >4. username &#123;username&#125; privilege 0 password &#123;password&#125; <br />5. end'
Params commands label:
zh: '自定义命令'
ja: 'カスタムコマンド'
en: 'Custom command'

View File

@@ -1,7 +1,7 @@
- hosts: mongodb
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Test MongoDB connection
@@ -11,9 +11,9 @@
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key }}"
ssl: "{{ jms_asset.spec_info.use_ssl | default('') }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
register: db_info
@@ -31,15 +31,15 @@
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
db: "{{ jms_asset.spec_info.db_name }}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
ignore_errors: true
when: db_info is succeeded
register: change_info
- name: Verify password
mongodb_ping:
@@ -49,10 +49,7 @@
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
when:
- db_info is succeeded
- change_info is succeeded

View File

@@ -7,5 +7,6 @@ method: change_secret
i18n:
MongoDB account change secret:
zh: MongoDB 账号改密
ja: MongoDB アカウントのパスワード変更
zh: 使用 Ansible 模块 mongodb 执行 MongoDB 账号改密
ja: Ansible mongodb モジュールを使用して MongoDB アカウントのパスワード変更
en: Using Ansible module mongodb to change MongoDB account secret

View File

@@ -1,8 +1,9 @@
- hosts: mysql
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
db_name: "{{ jms_asset.spec_info.db_name }}"
check_ssl: "{{ jms_asset.spec_info.use_ssl and not jms_asset.spec_info.allow_invalid_cert }}"
tasks:
- name: Test MySQL connection
@@ -11,6 +12,10 @@
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
filter: version
register: db_info
@@ -24,12 +29,16 @@
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
host: "%"
priv: "{{ account.username + '.*:USAGE' if db_name == '' else db_name + '.*:ALL' }}"
ignore_errors: true
when: db_info is succeeded
register: change_info
- name: Verify password
community.mysql.mysql_info:
@@ -37,7 +46,8 @@
login_password: "{{ account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
filter: version
when:
- db_info is succeeded
- change_info is succeeded

View File

@@ -8,5 +8,6 @@ method: change_secret
i18n:
MySQL account change secret:
zh: MySQL 账号改密
ja: MySQL アカウントのパスワード変更
zh: 使用 Ansible 模块 mysql 执行 MySQL 账号改密
ja: Ansible mysql モジュールを使用して MySQL アカウントのパスワード変更
en: Using Ansible module mysql to change MySQL account secret

View File

@@ -1,7 +1,7 @@
- hosts: oracle
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Test Oracle connection
@@ -29,8 +29,8 @@
mode: "{{ jms_account.mode }}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
ignore_errors: true
when: db_info is succeeded
register: change_info
- name: Verify password
oracle_ping:
@@ -39,6 +39,4 @@
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
when:
- db_info is succeeded
- change_info is succeeded
mode: "{{ account.mode }}"

View File

@@ -1,7 +1,7 @@
- hosts: postgre
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Test PostgreSQL connection
@@ -29,8 +29,8 @@
name: "{{ account.username }}"
password: "{{ account.secret }}"
role_attr_flags: LOGIN
ignore_errors: true
when: result is succeeded
register: change_info
- name: Verify password
community.postgresql.postgresql_ping:
@@ -39,8 +39,3 @@
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
db: "{{ jms_asset.spec_info.db_name }}"
when:
- result is succeeded
- change_info is succeeded
register: result
failed_when: not result.is_available

View File

@@ -1,7 +1,7 @@
- hosts: sqlserver
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Test SQLServer connection
@@ -40,9 +40,9 @@
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
name: '{{ jms_asset.spec_info.db_name }}'
script: "ALTER LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}'; select @@version"
script: "ALTER LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}', DEFAULT_DATABASE = {{ jms_asset.spec_info.db_name }}; select @@version"
ignore_errors: true
when: user_exist.query_results[0] | length != 0
register: change_info
- name: Add SQLServer user
community.general.mssql_script:
@@ -51,9 +51,9 @@
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
name: '{{ jms_asset.spec_info.db_name }}'
script: "CREATE LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}'; select @@version"
script: "CREATE LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}', DEFAULT_DATABASE = {{ jms_asset.spec_info.db_name }}; CREATE USER {{ account.username }} FOR LOGIN {{ account.username }}; select @@version"
ignore_errors: true
when: user_exist.query_results[0] | length == 0
register: change_info
- name: Verify password
community.general.mssql_script:
@@ -64,6 +64,3 @@
name: '{{ jms_asset.spec_info.db_name }}'
script: |
SELECT @@version
when:
- db_info is succeeded
- change_info is succeeded

View File

@@ -1,54 +1,101 @@
- hosts: demo
gather_facts: no
tasks:
- name: Test privileged account
- name: "Test privileged {{ jms_account.username }} account"
ansible.builtin.ping:
- name: Change password
- name: "Check if {{ account.username }} user exists"
getent:
database: passwd
key: "{{ account.username }}"
register: user_info
ignore_errors: yes # 忽略错误如果用户不存在时不会导致playbook失败
- name: "Add {{ account.username }} user"
ansible.builtin.user:
name: "{{ account.username }}"
shell: "{{ params.shell }}"
home: "{{ params.home | default('/home/' + account.username, true) }}"
groups: "{{ params.groups }}"
expires: -1
state: present
when: user_info.failed
- name: "Add {{ account.username }} group"
ansible.builtin.group:
name: "{{ account.username }}"
state: present
when: user_info.failed
- name: "Add {{ account.username }} user to group"
ansible.builtin.user:
name: "{{ account.username }}"
groups: "{{ params.groups }}"
when:
- user_info.failed
- params.groups
- name: "Change {{ account.username }} password"
ansible.builtin.user:
name: "{{ account.username }}"
password: "{{ account.secret | password_hash('des') }}"
update_password: always
ignore_errors: true
when: account.secret_type == "password"
- name: create user If it already exists, no operation will be performed
ansible.builtin.user:
name: "{{ account.username }}"
when: account.secret_type == "ssh_key"
- name: remove jumpserver ssh key
ansible.builtin.lineinfile:
dest: "{{ ssh_params.dest }}"
regexp: "{{ ssh_params.regexp }}"
state: absent
when:
- account.secret_type == "ssh_key"
- ssh_params.strategy == "set_jms"
- account.secret_type == "ssh_key"
- ssh_params.strategy == "set_jms"
- name: Change SSH key
- name: "Change {{ account.username }} SSH key"
ansible.builtin.authorized_key:
user: "{{ account.username }}"
key: "{{ account.secret }}"
exclusive: "{{ ssh_params.exclusive }}"
when: account.secret_type == "ssh_key"
- name: "Set {{ account.username }} sudo setting"
ansible.builtin.lineinfile:
dest: /etc/sudoers
state: present
regexp: "^{{ account.username }} ALL="
line: "{{ account.username + ' ALL=(ALL) NOPASSWD: ' + params.sudo }}"
validate: visudo -cf %s
when:
- user_info.failed
- params.sudo
- name: Refresh connection
ansible.builtin.meta: reset_connection
- name: Verify password
ansible.builtin.ping:
become: no
vars:
ansible_user: "{{ account.username }}"
ansible_password: "{{ account.secret }}"
ansible_become: no
- name: "Verify {{ account.username }} password (paramiko)"
ssh_ping:
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default('') }}"
become: "{{ account.become.ansible_become | default(False) }}"
become_method: su
become_user: "{{ account.become.ansible_user | default('') }}"
become_password: "{{ account.become.ansible_password | default('') }}"
become_private_key_path: "{{ account.become.ansible_ssh_private_key_file | default(None) }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
when: account.secret_type == "password"
delegate_to: localhost
- name: Verify SSH key
ansible.builtin.ping:
become: no
vars:
ansible_user: "{{ account.username }}"
ansible_ssh_private_key_file: "{{ account.private_key_path }}"
ansible_become: no
- name: "Verify {{ account.username }} SSH KEY (paramiko)"
ssh_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_user: "{{ account.username }}"
login_private_key_path: "{{ account.private_key_path }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default('') }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
when: account.secret_type == "ssh_key"
delegate_to: localhost

View File

@@ -4,8 +4,58 @@ category: host
type:
- AIX
method: change_secret
params:
- name: sudo
type: str
label: 'Sudo'
default: '/bin/whoami'
help_text: "{{ 'Params sudo help text' | trans }}"
- name: shell
type: str
label: 'Shell'
default: '/bin/bash'
- name: home
type: str
label: "{{ 'Params home label' | trans }}"
default: ''
help_text: "{{ 'Params home help text' | trans }}"
- name: groups
type: str
label: "{{ 'Params groups label' | trans }}"
default: ''
help_text: "{{ 'Params groups help text' | trans }}"
i18n:
AIX account change secret:
zh: AIX 账号改密
ja: AIX アカウントのパスワード変更
zh: '使用 Ansible 模块 user 执行账号改密 (DES)'
ja: 'Ansible user モジュールを使用してアカウントのパスワード変更 (DES)'
en: 'Using Ansible module user to change account secret (DES)'
Params sudo help text:
zh: '使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig'
ja: 'コンマで区切って複数のコマンドを入力してください。例: /bin/whoami,/sbin/ifconfig'
en: 'Use commas to separate multiple commands, such as: /bin/whoami,/sbin/ifconfig'
Params home help text:
zh: '默认家目录 /home/{账号用户名}'
ja: 'デフォルトのホームディレクトリ /home/{アカウントユーザ名}'
en: 'Default home directory /home/{account username}'
Params groups help text:
zh: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
ja: 'グループを入力してください。複数のグループはコンマで区切ってください(既存のグループを入力してください)'
en: 'Please enter the group. Multiple groups are separated by commas (please enter the existing group)'
Params home label:
zh: '家目录'
ja: 'ホームディレクトリ'
en: 'Home'
Params groups label:
zh: '用户组'
ja: 'グループ'
en: 'Groups'

View File

@@ -1,21 +1,48 @@
- hosts: demo
gather_facts: no
tasks:
- name: Test privileged account
- name: "Test privileged {{ jms_account.username }} account"
ansible.builtin.ping:
- name: Change password
- name: "Check if {{ account.username }} user exists"
getent:
database: passwd
key: "{{ account.username }}"
register: user_info
ignore_errors: yes # 忽略错误如果用户不存在时不会导致playbook失败
- name: "Add {{ account.username }} user"
ansible.builtin.user:
name: "{{ account.username }}"
shell: "{{ params.shell }}"
home: "{{ params.home | default('/home/' + account.username, true) }}"
groups: "{{ params.groups }}"
expires: -1
state: present
when: user_info.failed
- name: "Add {{ account.username }} group"
ansible.builtin.group:
name: "{{ account.username }}"
state: present
when: user_info.failed
- name: "Add {{ account.username }} user to group"
ansible.builtin.user:
name: "{{ account.username }}"
groups: "{{ params.groups }}"
when:
- user_info.failed
- params.groups
- name: "Change {{ account.username }} password"
ansible.builtin.user:
name: "{{ account.username }}"
password: "{{ account.secret | password_hash('sha512') }}"
update_password: always
ignore_errors: true
when: account.secret_type == "password"
- name: create user If it already exists, no operation will be performed
ansible.builtin.user:
name: "{{ account.username }}"
when: account.secret_type == "ssh_key"
- name: remove jumpserver ssh key
ansible.builtin.lineinfile:
dest: "{{ ssh_params.dest }}"
@@ -25,30 +52,50 @@
- account.secret_type == "ssh_key"
- ssh_params.strategy == "set_jms"
- name: Change SSH key
- name: "Change {{ account.username }} SSH key"
ansible.builtin.authorized_key:
user: "{{ account.username }}"
key: "{{ account.secret }}"
exclusive: "{{ ssh_params.exclusive }}"
when: account.secret_type == "ssh_key"
- name: "Set {{ account.username }} sudo setting"
ansible.builtin.lineinfile:
dest: /etc/sudoers
state: present
regexp: "^{{ account.username }} ALL="
line: "{{ account.username + ' ALL=(ALL) NOPASSWD: ' + params.sudo }}"
validate: visudo -cf %s
when:
- user_info.failed
- params.sudo
- name: Refresh connection
ansible.builtin.meta: reset_connection
- name: Verify password
ansible.builtin.ping:
become: no
vars:
ansible_user: "{{ account.username }}"
ansible_password: "{{ account.secret }}"
ansible_become: no
- name: "Verify {{ account.username }} password (paramiko)"
ssh_ping:
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default('') }}"
become: "{{ account.become.ansible_become | default(False) }}"
become_method: su
become_user: "{{ account.become.ansible_user | default('') }}"
become_password: "{{ account.become.ansible_password | default('') }}"
become_private_key_path: "{{ account.become.ansible_ssh_private_key_file | default(None) }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
when: account.secret_type == "password"
delegate_to: localhost
- name: Verify SSH key
ansible.builtin.ping:
become: no
vars:
ansible_user: "{{ account.username }}"
ansible_ssh_private_key_file: "{{ account.private_key_path }}"
ansible_become: no
- name: "Verify {{ account.username }} SSH KEY (paramiko)"
ssh_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_user: "{{ account.username }}"
login_private_key_path: "{{ account.private_key_path }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default('') }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
when: account.secret_type == "ssh_key"
delegate_to: localhost

View File

@@ -5,8 +5,59 @@ type:
- unix
- linux
method: change_secret
params:
- name: sudo
type: str
label: 'Sudo'
default: '/bin/whoami'
help_text: "{{ 'Params sudo help text' | trans }}"
- name: shell
type: str
label: 'Shell'
default: '/bin/bash'
help_text: ''
- name: home
type: str
label: "{{ 'Params home label' | trans }}"
default: ''
help_text: "{{ 'Params home help text' | trans }}"
- name: groups
type: str
label: "{{ 'Params groups label' | trans }}"
default: ''
help_text: "{{ 'Params groups help text' | trans }}"
i18n:
Posix account change secret:
zh: Posix 账号改密
ja: Posix アカウントのパスワード変更
zh: '使用 Ansible 模块 user 执行账号改密 (SHA512)'
ja: 'Ansible user モジュールを使用して アカウントのパスワード変更 (SHA512)'
en: 'Using Ansible module user to change account secret (SHA512)'
Params sudo help text:
zh: '使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig'
ja: 'コンマで区切って複数のコマンドを入力してください。例: /bin/whoami,/sbin/ifconfig'
en: 'Use commas to separate multiple commands, such as: /bin/whoami,/sbin/ifconfig'
Params home help text:
zh: '默认家目录 /home/{账号用户名}'
ja: 'デフォルトのホームディレクトリ /home/{アカウントユーザ名}'
en: 'Default home directory /home/{account username}'
Params groups help text:
zh: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
ja: 'グループを入力してください。複数のグループはコンマで区切ってください(既存のグループを入力してください)'
en: 'Please enter the group. Multiple groups are separated by commas (please enter the existing group)'
Params home label:
zh: '家目录'
ja: 'ホームディレクトリ'
en: 'Home'
Params groups label:
zh: '用户组'
ja: 'グループ'
en: 'Groups'

View File

@@ -8,19 +8,16 @@
# debug:
# msg: "Username: {{ account.username }}, Password: {{ account.secret }}"
- name: Get groups of a Windows user
ansible.windows.win_user:
name: "{{ jms_account.username }}"
register: user_info
- name: Change password
ansible.windows.win_user:
fullname: "{{ account.username}}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
groups: "{{ user_info.groups[0].name }}"
password_never_expires: yes
groups: "{{ params.groups }}"
groups_action: add
update_password: always
ignore_errors: true
when: account.secret_type == "password"
- name: Refresh connection

View File

@@ -5,8 +5,22 @@ method: change_secret
category: host
type:
- windows
params:
- name: groups
type: str
label: '用户组'
default: 'Users,Remote Desktop Users'
help_text: "{{ 'Params groups help text' | trans }}"
i18n:
Windows account change secret:
zh: Windows 账号改密
ja: Windows アカウントのパスワード変更
zh: '使用 Ansible 模块 win_user 执行 Windows 账号改密'
ja: 'Ansible win_user モジュールを使用して Windows アカウントのパスワード変更'
en: 'Using Ansible module win_user to change Windows account secret'
Params groups help text:
zh: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
ja: 'グループを入力してください。複数のグループはコンマで区切ってください(既存のグループを入力してください)'
en: 'Please enter the group. Multiple groups are separated by commas (please enter the existing group)'

View File

@@ -0,0 +1,35 @@
- hosts: demo
gather_facts: no
tasks:
- name: Test privileged account
ansible.windows.win_ping:
# - name: Print variables
# debug:
# msg: "Username: {{ account.username }}, Password: {{ account.secret }}"
- name: Change password
ansible.windows.win_user:
fullname: "{{ account.username}}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
password_never_expires: yes
groups: "{{ params.groups }}"
groups_action: add
update_password: always
ignore_errors: true
when: account.secret_type == "password"
- name: Refresh connection
ansible.builtin.meta: reset_connection
- name: Verify password (pyfreerdp)
rdp_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.protocols | selectattr('name', 'equalto', 'rdp') | map(attribute='port') | first }}"
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_secret_type: "{{ account.secret_type }}"
login_private_key_path: "{{ account.private_key_path }}"
when: account.secret_type == "password"
delegate_to: localhost

View File

@@ -0,0 +1,27 @@
id: change_secret_windows_rdp_verify
name: "{{ 'Windows account change secret rdp verify' | trans }}"
version: 1
method: change_secret
category: host
type:
- windows
priority: 49
params:
- name: groups
type: str
label: '用户组'
default: 'Users,Remote Desktop Users'
help_text: "{{ 'Params groups help text' | trans }}"
i18n:
Windows account change secret rdp verify:
zh: '使用 Ansible 模块 win_user 执行 Windows 账号改密 RDP 协议测试最后的可连接性'
ja: 'Ansibleモジュールwin_userはWindowsアカウントの改密RDPプロトコルテストの最後の接続性を実行する'
en: 'Using the Ansible module win_user performs Windows account encryption RDP protocol testing for final connectivity'
Params groups help text:
zh: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
ja: 'グループを入力してください。複数のグループはコンマで区切ってください(既存のグループを入力してください)'
en: 'Please enter the group. Multiple groups are separated by commas (please enter the existing group)'

View File

@@ -1,20 +1,20 @@
import os
import time
from collections import defaultdict
from copy import deepcopy
from django.conf import settings
from django.utils import timezone
from openpyxl import Workbook
from django.utils.translation import gettext_lazy as _
from xlsxwriter import Workbook
from accounts.const import AutomationTypes, SecretType, SSHKeyStrategy, SecretStrategy
from accounts.const import AutomationTypes, SecretType, SSHKeyStrategy, SecretStrategy, ChangeSecretRecordStatusChoice
from accounts.models import ChangeSecretRecord
from accounts.notifications import ChangeSecretExecutionTaskMsg
from accounts.notifications import ChangeSecretExecutionTaskMsg, ChangeSecretFailedMsg
from accounts.serializers import ChangeSecretRecordBackUpSerializer
from assets.const import HostTypes
from common.utils import get_logger
from common.utils.file import encrypt_and_compress_zip_file
from common.utils.timezone import local_now_display
from common.utils.timezone import local_now_filename
from users.models import User
from ..base.manager import AccountBasePlaybookManager
from ...utils import SecretGenerator
@@ -27,7 +27,7 @@ class ChangeSecretManager(AccountBasePlaybookManager):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.method_hosts_mapper = defaultdict(list)
self.record_map = self.execution.snapshot.get('record_map', {})
self.secret_type = self.execution.snapshot.get('secret_type')
self.secret_strategy = self.execution.snapshot.get(
'secret_strategy', SecretStrategy.custom
@@ -50,7 +50,9 @@ class ChangeSecretManager(AccountBasePlaybookManager):
kwargs['exclusive'] = 'yes' if kwargs['strategy'] == SSHKeyStrategy.set else 'no'
if kwargs['strategy'] == SSHKeyStrategy.set_jms:
kwargs['dest'] = '/home/{}/.ssh/authorized_keys'.format(account.username)
username = account.username
path = f'/{username}' if username == "root" else f'/home/{username}'
kwargs['dest'] = f'{path}/.ssh/authorized_keys'
kwargs['regexp'] = '.*{}$'.format(secret.split()[2].strip())
return kwargs
@@ -96,17 +98,13 @@ class ChangeSecretManager(AccountBasePlaybookManager):
accounts = self.get_accounts(account)
if not accounts:
print('没有发现待改密账号: %s 用户ID: %s 类型: %s' % (
print('没有发现待处理的账号: %s 用户ID: %s 类型: %s' % (
asset.name, self.account_ids, self.secret_type
))
return []
method_attr = getattr(automation, self.method_type() + '_method')
method_hosts = self.method_hosts_mapper[method_attr]
method_hosts = [h for h in method_hosts if h != host['name']]
inventory_hosts = []
records = []
inventory_hosts = []
if asset.type == HostTypes.WINDOWS and self.secret_type == SecretType.SSH_KEY:
print(f'Windows {asset} does not support ssh key push')
return inventory_hosts
@@ -116,13 +114,30 @@ class ChangeSecretManager(AccountBasePlaybookManager):
h = deepcopy(host)
secret_type = account.secret_type
h['name'] += '(' + account.username + ')'
new_secret = self.get_secret(secret_type)
if self.secret_type is None:
new_secret = account.secret
else:
new_secret = self.get_secret(secret_type)
if new_secret is None:
print(f'new_secret is None, account: {account}')
continue
asset_account_id = f'{asset.id}-{account.id}'
if asset_account_id not in self.record_map:
recorder = ChangeSecretRecord(
asset=asset, account=account, execution=self.execution,
old_secret=account.secret, new_secret=new_secret,
)
records.append(recorder)
else:
record_id = self.record_map[asset_account_id]
try:
recorder = ChangeSecretRecord.objects.get(id=record_id)
except ChangeSecretRecord.DoesNotExist:
print(f"Record {record_id} not found")
continue
recorder = ChangeSecretRecord(
asset=asset, account=account, execution=self.execution,
old_secret=account.secret, new_secret=new_secret,
)
records.append(recorder)
self.name_recorder_mapper[h['name']] = recorder
private_key_path = None
@@ -135,14 +150,13 @@ class ChangeSecretManager(AccountBasePlaybookManager):
'name': account.name,
'username': account.username,
'secret_type': secret_type,
'secret': new_secret,
'private_key_path': private_key_path
'secret': account.escape_jinja2_syntax(new_secret),
'private_key_path': private_key_path,
'become': account.get_ansible_become_auth(),
}
if asset.platform.type == 'oracle':
h['account']['mode'] = 'sysdba' if account.privileged else None
inventory_hosts.append(h)
method_hosts.append(h['name'])
self.method_hosts_mapper[method_attr] = method_hosts
ChangeSecretRecord.objects.bulk_create(records)
return inventory_hosts
@@ -150,27 +164,46 @@ class ChangeSecretManager(AccountBasePlaybookManager):
recorder = self.name_recorder_mapper.get(host)
if not recorder:
return
recorder.status = 'success'
recorder.status = ChangeSecretRecordStatusChoice.success.value
recorder.date_finished = timezone.now()
recorder.save()
account = recorder.account
if not account:
print("Account not found, deleted ?")
return
account.secret = recorder.new_secret
account.save(update_fields=['secret'])
account.date_updated = timezone.now()
max_retries = 3
retry_count = 0
while retry_count < max_retries:
try:
recorder.save()
account.save(update_fields=['secret', 'version', 'date_updated'])
break
except Exception as e:
retry_count += 1
if retry_count == max_retries:
self.on_host_error(host, str(e), result)
else:
print(f'retry {retry_count} times for {host} recorder save error: {e}')
time.sleep(1)
def on_host_error(self, host, error, result):
recorder = self.name_recorder_mapper.get(host)
if not recorder:
return
recorder.status = 'failed'
recorder.status = ChangeSecretRecordStatusChoice.failed.value
recorder.date_finished = timezone.now()
recorder.error = error
recorder.save()
try:
recorder.save()
except Exception as e:
print(f"\033[31m Save {host} recorder error: {e} \033[0m\n")
def on_runner_failed(self, runner, e):
logger.error("Change secret error: ", e)
logger.error("Account error: ", e)
def check_secret(self):
if self.secret_strategy == SecretStrategy.custom \
@@ -179,35 +212,69 @@ class ChangeSecretManager(AccountBasePlaybookManager):
return False
return True
@staticmethod
def get_summary(recorders):
total, succeed, failed = 0, 0, 0
for recorder in recorders:
if recorder.status == ChangeSecretRecordStatusChoice.success.value:
succeed += 1
else:
failed += 1
total += 1
summary = _('Success: %s, Failed: %s, Total: %s') % (succeed, failed, total)
return summary
def run(self, *args, **kwargs):
if not self.check_secret():
if self.secret_type and not self.check_secret():
return
super().run(*args, **kwargs)
recorders = self.name_recorder_mapper.values()
recorders = list(recorders)
self.send_recorder_mail(recorders)
recorders = list(self.name_recorder_mapper.values())
summary = self.get_summary(recorders)
print(summary, end='')
def send_recorder_mail(self, recorders):
recipients = self.execution.recipients
if not recorders or not recipients:
if self.record_map:
return
recipients = User.objects.filter(id__in=list(recipients.keys()))
failed_recorders = [
r for r in recorders
if r.status == ChangeSecretRecordStatusChoice.failed.value
]
recipients = self.execution.recipients
recipients = User.objects.filter(id__in=list(recipients.keys()))
if not recipients:
return
if failed_recorders:
name = self.execution.snapshot.get('name')
execution_id = str(self.execution.id)
_ids = [r.id for r in failed_recorders]
asset_account_errors = ChangeSecretRecord.objects.filter(
id__in=_ids).values_list('asset__name', 'account__username', 'error')
for user in recipients:
ChangeSecretFailedMsg(name, execution_id, user, asset_account_errors).publish()
if not recorders:
return
self.send_recorder_mail(recipients, recorders, summary)
def send_recorder_mail(self, recipients, recorders, summary):
name = self.execution.snapshot['name']
path = os.path.join(os.path.dirname(settings.BASE_DIR), 'tmp')
filename = os.path.join(path, f'{name}-{local_now_display()}-{time.time()}.xlsx')
filename = os.path.join(path, f'{name}-{local_now_filename()}-{time.time()}.xlsx')
if not self.create_file(recorders, filename):
return
for user in recipients:
attachments = []
if user.secret_key:
password = user.secret_key.encode('utf8')
attachment = os.path.join(path, f'{name}-{local_now_display()}-{time.time()}.zip')
encrypt_and_compress_zip_file(attachment, password, [filename])
attachment = os.path.join(path, f'{name}-{local_now_filename()}-{time.time()}.zip')
encrypt_and_compress_zip_file(attachment, user.secret_key, [filename])
attachments = [attachment]
ChangeSecretExecutionTaskMsg(name, user).publish(attachments)
ChangeSecretExecutionTaskMsg(name, user, summary).publish(attachments)
os.remove(filename)
@staticmethod
@@ -222,8 +289,9 @@ class ChangeSecretManager(AccountBasePlaybookManager):
rows.insert(0, header)
wb = Workbook(filename)
ws = wb.create_sheet('Sheet1')
for row in rows:
ws.append(row)
wb.save(filename)
ws = wb.add_worksheet('Sheet1')
for row_index, row_data in enumerate(rows):
for col_index, col_data in enumerate(row_data):
ws.write_string(row_index, col_index, col_data)
wb.close()
return True

View File

@@ -1,8 +1,9 @@
from .push_account.manager import PushAccountManager
from .change_secret.manager import ChangeSecretManager
from .verify_account.manager import VerifyAccountManager
from .backup_account.manager import AccountBackupManager
from .change_secret.manager import ChangeSecretManager
from .gather_accounts.manager import GatherAccountsManager
from .push_account.manager import PushAccountManager
from .remove_account.manager import RemoveAccountManager
from .verify_account.manager import VerifyAccountManager
from .verify_gateway_account.manager import VerifyGatewayAccountManager
from ..const import AutomationTypes
@@ -12,6 +13,7 @@ class ExecutionManager:
AutomationTypes.push_account: PushAccountManager,
AutomationTypes.change_secret: ChangeSecretManager,
AutomationTypes.verify_account: VerifyAccountManager,
AutomationTypes.remove_account: RemoveAccountManager,
AutomationTypes.gather_accounts: GatherAccountsManager,
AutomationTypes.verify_gateway_account: VerifyGatewayAccountManager,
# TODO 后期迁移到自动化策略中

View File

@@ -1,7 +1,7 @@
- hosts: mongodb
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Get info
@@ -12,8 +12,8 @@
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
filter: users

View File

@@ -1,7 +1,8 @@
- hosts: mysql
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
check_ssl: "{{ jms_asset.spec_info.use_ssl and not jms_asset.spec_info.allow_invalid_cert }}"
tasks:
- name: Get info
@@ -10,6 +11,10 @@
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
filter: users
register: db_info

View File

@@ -1,7 +1,7 @@
- hosts: oralce
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Get info

View File

@@ -1,7 +1,7 @@
- hosts: postgresql
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Get info

View File

@@ -1,3 +1,5 @@
import re
from django.utils import timezone
__all__ = ['GatherAccountsFilter']
@@ -27,18 +29,25 @@ class GatherAccountsFilter:
@staticmethod
def posix_filter(info):
username_pattern = re.compile(r'^(\S+)')
ip_pattern = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})')
login_time_pattern = re.compile(r'\w{3} \d{2} \d{2}:\d{2}:\d{2} \d{4}')
result = {}
for line in info:
data = line.split('@')
if len(data) == 1:
result[line] = {}
usernames = username_pattern.findall(line)
username = ''.join(usernames)
if username:
result[username] = {}
else:
continue
if len(data) != 3:
continue
username, address, dt = data
date = timezone.datetime.strptime(f'{dt} +0800', '%b %d %H:%M:%S %Y %z')
result[username] = {'address': address, 'date': date}
ip_addrs = ip_pattern.findall(line)
ip_addr = ''.join(ip_addrs)
if ip_addr:
result[username].update({'address': ip_addr})
login_times = login_time_pattern.findall(line)
if login_times:
date = timezone.datetime.strptime(f'{login_times[0]} +0800', '%b %d %H:%M:%S %Y %z')
result[username].update({'date': date})
return result
@staticmethod

View File

@@ -5,7 +5,7 @@
ansible.builtin.shell:
cmd: >
users=$(getent passwd | grep -v nologin | grep -v shutdown | awk -F":" '{ print $1 }');for i in $users;
do k=$(last -w -F $i -1 | head -1 | grep -v ^$ | awk '{ print $1"@"$3"@"$5,$6,$7,$8 }')
do k=$(last -w -F $i -1 | head -1 | grep -v ^$ | awk '{ print $0 }')
if [ -n "$k" ]; then
echo $k
else

View File

@@ -8,5 +8,6 @@ method: gather_accounts
i18n:
Posix account gather:
zh: Posix 账号收集
ja: Posix アカウント収集
zh: 使用命令 getent passwd 收集 Posix 资产账号
ja: コマンド getent を使用してアセットアカウント収集する
en: Using command getent to gather accounts

View File

@@ -1,9 +1,10 @@
- hosts: demo
gather_facts: no
tasks:
- name: Gather posix account
- name: Gather windows account
ansible.builtin.win_shell: net user
register: result
ignore_errors: true
- name: Define info by set_fact
ansible.builtin.set_fact:

View File

@@ -8,5 +8,6 @@ type:
i18n:
Windows account gather:
zh: Windows 账号收集
ja: Windows アカウント収集
zh: 使用命令 net user 收集 Windows 账号
ja: コマンド net user を使用して Windows アカウント収集する
en: Using command net user to gather accounts

View File

@@ -1,9 +1,14 @@
from collections import defaultdict
from accounts.const import AutomationTypes
from accounts.models import GatheredAccount
from assets.models import Asset
from common.utils import get_logger
from orgs.utils import tmp_to_org
from users.models import User
from .filter import GatherAccountsFilter
from ..base.manager import AccountBasePlaybookManager
from ...notifications import GatherAccountChangeMsg
logger = get_logger(__name__)
@@ -12,6 +17,9 @@ class GatherAccountsManager(AccountBasePlaybookManager):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.host_asset_mapper = {}
self.asset_account_info = {}
self.asset_username_mapper = defaultdict(set)
self.is_sync_account = self.execution.snapshot.get('is_sync_account')
@classmethod
@@ -26,10 +34,11 @@ class GatherAccountsManager(AccountBasePlaybookManager):
def filter_success_result(self, tp, result):
result = GatherAccountsFilter(tp).run(self.method_id_meta_mapper, result)
return result
@staticmethod
def generate_data(asset, result):
def generate_data(self, asset, result):
data = []
for username, info in result.items():
self.asset_username_mapper[str(asset.id)].add(username)
d = {'asset': asset, 'username': username, 'present': True}
if info.get('date'):
d['date_last_login'] = info['date']
@@ -38,26 +47,85 @@ class GatherAccountsManager(AccountBasePlaybookManager):
data.append(d)
return data
def update_or_create_accounts(self, asset, result):
def collect_asset_account_info(self, asset, result):
data = self.generate_data(asset, result)
with tmp_to_org(asset.org_id):
gathered_accounts = []
GatheredAccount.objects.filter(asset=asset, present=True).update(present=False)
for d in data:
username = d['username']
gathered_account, __ = GatheredAccount.objects.update_or_create(
defaults=d, asset=asset, username=username,
)
gathered_accounts.append(gathered_account)
if not self.is_sync_account:
return
GatheredAccount.sync_accounts(gathered_accounts)
self.asset_account_info[asset] = data
def on_host_success(self, host, result):
info = result.get('debug', {}).get('res', {}).get('info', {})
asset = self.host_asset_mapper.get(host)
if asset and info:
result = self.filter_success_result(asset.type, info)
self.update_or_create_accounts(asset, result)
self.collect_asset_account_info(asset, result)
else:
logger.error("Not found info".format(host))
print(f'\033[31m Not found {host} info \033[0m\n')
def update_or_create_accounts(self):
for asset, data in self.asset_account_info.items():
with tmp_to_org(asset.org_id):
gathered_accounts = []
GatheredAccount.objects.filter(asset=asset, present=True).update(present=False)
for d in data:
username = d['username']
gathered_account, __ = GatheredAccount.objects.update_or_create(
defaults=d, asset=asset, username=username,
)
gathered_accounts.append(gathered_account)
if not self.is_sync_account:
continue
GatheredAccount.sync_accounts(gathered_accounts)
def run(self, *args, **kwargs):
super().run(*args, **kwargs)
users, change_info = self.generate_send_users_and_change_info()
self.update_or_create_accounts()
self.send_email_if_need(users, change_info)
def generate_send_users_and_change_info(self):
recipients = self.execution.recipients
if not self.asset_username_mapper or not recipients:
return None, None
users = User.objects.filter(id__in=recipients)
if not users:
return users, None
asset_ids = self.asset_username_mapper.keys()
assets = Asset.objects.filter(id__in=asset_ids)
gather_accounts = GatheredAccount.objects.filter(asset_id__in=asset_ids, present=True)
asset_id_map = {str(asset.id): asset for asset in assets}
asset_id_username = list(assets.values_list('id', 'accounts__username'))
asset_id_username.extend(list(gather_accounts.values_list('asset_id', 'username')))
system_asset_username_mapper = defaultdict(set)
for asset_id, username in asset_id_username:
system_asset_username_mapper[str(asset_id)].add(username)
change_info = {}
for asset_id, usernames in self.asset_username_mapper.items():
system_usernames = system_asset_username_mapper.get(asset_id)
if not system_usernames:
continue
add_usernames = usernames - system_usernames
remove_usernames = system_usernames - usernames
k = f'{asset_id_map[asset_id]}[{asset_id}]'
if not add_usernames and not remove_usernames:
continue
change_info[k] = {
'add_usernames': ', '.join(add_usernames),
'remove_usernames': ', '.join(remove_usernames),
}
return users, change_info
@staticmethod
def send_email_if_need(users, change_info):
if not users or not change_info:
return
for user in users:
GatherAccountChangeMsg(user, change_info).publish_async()

View File

@@ -1,7 +1,7 @@
- hosts: mongodb
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Test MongoDB connection
@@ -12,8 +12,8 @@
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
register: db_info
@@ -31,15 +31,15 @@
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
db: "{{ jms_asset.spec_info.db_name }}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
ignore_errors: true
when: db_info is succeeded
register: change_info
- name: Verify password
mongodb_ping:
@@ -49,10 +49,7 @@
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
when:
- db_info is succeeded
- change_info is succeeded

View File

@@ -7,5 +7,6 @@ method: push_account
i18n:
MongoDB account push:
zh: MongoDB 账号推送
ja: MongoDB アカウントプッシュ
zh: 使用 Ansible 模块 mongodb 执行 MongoDB 账号推送
ja: Ansible mongodb モジュールを使用してアカウントプッシュする
en: Using Ansible module mongodb to push account

View File

@@ -1,8 +1,9 @@
- hosts: mysql
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
db_name: "{{ jms_asset.spec_info.db_name }}"
check_ssl: "{{ jms_asset.spec_info.use_ssl and not jms_asset.spec_info.allow_invalid_cert }}"
tasks:
- name: Test MySQL connection
@@ -11,6 +12,10 @@
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
filter: version
register: db_info
@@ -24,12 +29,16 @@
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
host: "%"
priv: "{{ account.username + '.*:USAGE' if db_name == '' else db_name + '.*:ALL' }}"
ignore_errors: true
when: db_info is succeeded
register: change_info
- name: Verify password
community.mysql.mysql_info:
@@ -37,7 +46,8 @@
login_password: "{{ account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
filter: version
when:
- db_info is succeeded
- change_info is succeeded

View File

@@ -8,5 +8,6 @@ method: push_account
i18n:
MySQL account push:
zh: MySQL 账号推送
ja: MySQL アカウントプッシュ
zh: 使用 Ansible 模块 mysql 执行 MySQL 账号推送
ja: Ansible mysql モジュールを使用してアカウントプッシュする
en: Using Ansible module mysql to push account

View File

@@ -1,7 +1,7 @@
- hosts: oracle
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Test Oracle connection
@@ -29,8 +29,8 @@
mode: "{{ jms_account.mode }}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
ignore_errors: true
when: db_info is succeeded
register: change_info
- name: Verify password
oracle_ping:
@@ -39,6 +39,4 @@
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
when:
- db_info is succeeded
- change_info is succeeded
mode: "{{ account.mode }}"

View File

@@ -7,5 +7,6 @@ method: push_account
i18n:
Oracle account push:
zh: Oracle 账号推送
ja: Oracle アカウントプッシュ
zh: 使用 Python 模块 oracledb 执行 Oracle 账号推送
ja: Python oracledb モジュールを使用してアカウントプッシュする
en: Using Python module oracledb to push account

View File

@@ -1,7 +1,7 @@
- hosts: postgre
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Test PostgreSQL connection
@@ -29,6 +29,7 @@
name: "{{ account.username }}"
password: "{{ account.secret }}"
role_attr_flags: LOGIN
ignore_errors: true
when: result is succeeded
register: change_info

View File

@@ -7,5 +7,6 @@ method: push_account
i18n:
PostgreSQL account push:
zh: PostgreSQL 账号推送
ja: PostgreSQL アカウントプッシュ
zh: 使用 Ansible 模块 postgresql 执行 PostgreSQL 账号推送
ja: Ansible postgresql モジュールを使用してアカウントプッシュする
en: Using Ansible module postgresql to push account

View File

@@ -1,7 +1,7 @@
- hosts: sqlserver
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Test SQLServer connection
@@ -40,7 +40,8 @@
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
name: '{{ jms_asset.spec_info.db_name }}'
script: "ALTER LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}'; select @@version"
script: "ALTER LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}', DEFAULT_DATABASE = {{ jms_asset.spec_info.db_name }}; select @@version"
ignore_errors: true
when: user_exist.query_results[0] | length != 0
register: change_info
@@ -51,7 +52,8 @@
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
name: '{{ jms_asset.spec_info.db_name }}'
script: "CREATE LOGIN {{ account.username }} WITH PASSWORD = '{{ account.secret }}'; select @@version"
script: "CREATE LOGIN [{{ account.username }}] WITH PASSWORD = '{{ account.secret }}'; CREATE USER [{{ account.username }}] FOR LOGIN [{{ account.username }}]; select @@version"
ignore_errors: true
when: user_exist.query_results[0] | length == 0
register: change_info
@@ -64,6 +66,3 @@
name: '{{ jms_asset.spec_info.db_name }}'
script: |
SELECT @@version
when:
- db_info is succeeded
- change_info is succeeded

View File

@@ -7,5 +7,6 @@ method: push_account
i18n:
SQLServer account push:
zh: SQLServer 账号推送
ja: SQLServer アカウントプッシュ
zh: 使用 Ansible 模块 mssql 执行 SQLServer 账号推送
ja: Ansible mssql モジュールを使用してアカウントプッシュする
en: Using Ansible module mssql to push account

View File

@@ -1,48 +1,46 @@
- hosts: demo
gather_facts: no
tasks:
- name: Test privileged account
- name: "Test privileged {{ jms_account.username }} account"
ansible.builtin.ping:
- name: Push user
- name: "Check if {{ account.username }} user exists"
getent:
database: passwd
key: "{{ account.username }}"
register: user_info
ignore_errors: yes # 忽略错误如果用户不存在时不会导致playbook失败
- name: "Add {{ account.username }} user"
ansible.builtin.user:
name: "{{ account.username }}"
shell: "{{ params.shell }}"
home: "{{ '/home/' + account.username }}"
home: "{{ params.home | default('/home/' + account.username, true) }}"
groups: "{{ params.groups }}"
expires: -1
state: present
when: user_info.failed
- name: "Add {{ account.username }} group"
ansible.builtin.group:
name: "{{ account.username }}"
state: present
when: user_info.failed
- name: Check home dir exists
ansible.builtin.stat:
path: "{{ '/home/' + account.username }}"
register: home_existed
- name: Set home dir permission
ansible.builtin.file:
path: "{{ '/home/' + account.username }}"
owner: "{{ account.username }}"
group: "{{ account.username }}"
mode: "0700"
when:
- home_existed.stat.exists == true
- name: Add user groups
- name: "Add {{ account.username }} user to group"
ansible.builtin.user:
name: "{{ account.username }}"
groups: "{{ params.groups }}"
when: params.groups
when:
- user_info.failed
- params.groups
- name: Push user password
- name: "Change {{ account.username }} password"
ansible.builtin.user:
name: "{{ account.username }}"
password: "{{ account.secret | password_hash('sha512') }}"
password: "{{ account.secret | password_hash('des') }}"
update_password: always
ignore_errors: true
when: account.secret_type == "password"
- name: remove jumpserver ssh key
@@ -54,14 +52,14 @@
- account.secret_type == "ssh_key"
- ssh_params.strategy == "set_jms"
- name: Push SSH key
- name: "Change {{ account.username }} SSH key"
ansible.builtin.authorized_key:
user: "{{ account.username }}"
key: "{{ account.secret }}"
exclusive: "{{ ssh_params.exclusive }}"
when: account.secret_type == "ssh_key"
- name: Set sudo setting
- name: "Set {{ account.username }} sudo setting"
ansible.builtin.lineinfile:
dest: /etc/sudoers
state: present
@@ -69,25 +67,36 @@
line: "{{ account.username + ' ALL=(ALL) NOPASSWD: ' + params.sudo }}"
validate: visudo -cf %s
when:
- user_info.failed
- params.sudo
- name: Refresh connection
ansible.builtin.meta: reset_connection
- name: Verify password
ansible.builtin.ping:
become: no
vars:
ansible_user: "{{ account.username }}"
ansible_password: "{{ account.secret }}"
ansible_become: no
- name: "Verify {{ account.username }} password (paramiko)"
ssh_ping:
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default('') }}"
become: "{{ account.become.ansible_become | default(False) }}"
become_method: su
become_user: "{{ account.become.ansible_user | default('') }}"
become_password: "{{ account.become.ansible_password | default('') }}"
become_private_key_path: "{{ account.become.ansible_ssh_private_key_file | default(None) }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
when: account.secret_type == "password"
delegate_to: localhost
- name: Verify SSH key
ansible.builtin.ping:
become: no
vars:
ansible_user: "{{ account.username }}"
ansible_ssh_private_key_file: "{{ account.private_key_path }}"
ansible_become: no
- name: "Verify {{ account.username }} SSH KEY (paramiko)"
ssh_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_user: "{{ account.username }}"
login_private_key_path: "{{ account.private_key_path }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default('') }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
when: account.secret_type == "ssh_key"
delegate_to: localhost

View File

@@ -9,21 +9,53 @@ params:
type: str
label: 'Sudo'
default: '/bin/whoami'
help_text: '使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig'
help_text: "{{ 'Params sudo help text' | trans }}"
- name: shell
type: str
label: 'Shell'
default: '/bin/bash'
- name: home
type: str
label: "{{ 'Params home label' | trans }}"
default: ''
help_text: "{{ 'Params home help text' | trans }}"
- name: groups
type: str
label: '用户组'
label: "{{ 'Params groups label' | trans }}"
default: ''
help_text: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
help_text: "{{ 'Params groups help text' | trans }}"
i18n:
Aix account push:
zh: Aix 账号推送
ja: Aix アカウントプッシュ
zh: '使用 Ansible 模块 user 执行 Aix 账号推送 (DES)'
ja: 'Ansible user モジュールを使用して Aix アカウントプッシュする (DES)'
en: 'Using Ansible module user to push account (DES)'
Params sudo help text:
zh: '使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig'
ja: 'コンマで区切って複数のコマンドを入力してください。例: /bin/whoami,/sbin/ifconfig'
en: 'Use commas to separate multiple commands, such as: /bin/whoami,/sbin/ifconfig'
Params home help text:
zh: '默认家目录 /home/{账号用户名}'
ja: 'デフォルトのホームディレクトリ /home/{アカウントユーザ名}'
en: 'Default home directory /home/{account username}'
Params groups help text:
zh: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
ja: 'グループを入力してください。複数のグループはコンマで区切ってください(既存のグループを入力してください)'
en: 'Please enter the group. Multiple groups are separated by commas (please enter the existing group)'
Params home label:
zh: '家目录'
ja: 'ホームディレクトリ'
en: 'Home'
Params groups label:
zh: '用户组'
ja: 'グループ'
en: 'Groups'

View File

@@ -1,48 +1,46 @@
- hosts: demo
gather_facts: no
tasks:
- name: Test privileged account
- name: "Test privileged {{ jms_account.username }} account"
ansible.builtin.ping:
- name: Push user
- name: "Check if {{ account.username }} user exists"
getent:
database: passwd
key: "{{ account.username }}"
register: user_info
ignore_errors: yes # 忽略错误如果用户不存在时不会导致playbook失败
- name: "Add {{ account.username }} user"
ansible.builtin.user:
name: "{{ account.username }}"
shell: "{{ params.shell }}"
home: "{{ '/home/' + account.username }}"
home: "{{ params.home | default('/home/' + account.username, true) }}"
groups: "{{ params.groups }}"
expires: -1
state: present
when: user_info.failed
- name: "Add {{ account.username }} group"
ansible.builtin.group:
name: "{{ account.username }}"
state: present
when: user_info.failed
- name: Check home dir exists
ansible.builtin.stat:
path: "{{ '/home/' + account.username }}"
register: home_existed
- name: Set home dir permission
ansible.builtin.file:
path: "{{ '/home/' + account.username }}"
owner: "{{ account.username }}"
group: "{{ account.username }}"
mode: "0700"
when:
- home_existed.stat.exists == true
- name: Add user groups
- name: "Add {{ account.username }} user to group"
ansible.builtin.user:
name: "{{ account.username }}"
groups: "{{ params.groups }}"
when: params.groups
when:
- user_info.failed
- params.groups
- name: Push user password
- name: "Change {{ account.username }} password"
ansible.builtin.user:
name: "{{ account.username }}"
password: "{{ account.secret | password_hash('sha512') }}"
update_password: always
ignore_errors: true
when: account.secret_type == "password"
- name: remove jumpserver ssh key
@@ -54,14 +52,14 @@
- account.secret_type == "ssh_key"
- ssh_params.strategy == "set_jms"
- name: Push SSH key
- name: "Change {{ account.username }} SSH key"
ansible.builtin.authorized_key:
user: "{{ account.username }}"
key: "{{ account.secret }}"
exclusive: "{{ ssh_params.exclusive }}"
when: account.secret_type == "ssh_key"
- name: Set sudo setting
- name: "Set {{ account.username }} sudo setting"
ansible.builtin.lineinfile:
dest: /etc/sudoers
state: present
@@ -69,25 +67,36 @@
line: "{{ account.username + ' ALL=(ALL) NOPASSWD: ' + params.sudo }}"
validate: visudo -cf %s
when:
- user_info.failed
- params.sudo
- name: Refresh connection
ansible.builtin.meta: reset_connection
- name: Verify password
ansible.builtin.ping:
become: no
vars:
ansible_user: "{{ account.username }}"
ansible_password: "{{ account.secret }}"
ansible_become: no
- name: "Verify {{ account.username }} password (paramiko)"
ssh_ping:
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default('') }}"
become: "{{ account.become.ansible_become | default(False) }}"
become_method: su
become_user: "{{ account.become.ansible_user | default('') }}"
become_password: "{{ account.become.ansible_password | default('') }}"
become_private_key_path: "{{ account.become.ansible_ssh_private_key_file | default(None) }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
when: account.secret_type == "password"
delegate_to: localhost
- name: Verify SSH key
ansible.builtin.ping:
become: no
vars:
ansible_user: "{{ account.username }}"
ansible_ssh_private_key_file: "{{ account.private_key_path }}"
ansible_become: no
- name: "Verify {{ account.username }} SSH KEY (paramiko)"
ssh_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_user: "{{ account.username }}"
login_private_key_path: "{{ account.private_key_path }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default('') }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
when: account.secret_type == "ssh_key"
delegate_to: localhost

View File

@@ -10,7 +10,7 @@ params:
type: str
label: 'Sudo'
default: '/bin/whoami'
help_text: '使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig'
help_text: "{{ 'Params sudo help text' | trans }}"
- name: shell
type: str
@@ -18,13 +18,45 @@ params:
default: '/bin/bash'
help_text: ''
- name: home
type: str
label: "{{ 'Params home label' | trans }}"
default: ''
help_text: "{{ 'Params home help text' | trans }}"
- name: groups
type: str
label: '用户组'
label: "{{ 'Params groups label' | trans }}"
default: ''
help_text: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
help_text: "{{ 'Params groups help text' | trans }}"
i18n:
Posix account push:
zh: Posix 账号推送
ja: Posix アカウントプッシュ
zh: '使用 Ansible 模块 user 执行账号推送 (sha512)'
ja: 'Ansible user モジュールを使用してアカウントプッシュする (sha512)'
en: 'Using Ansible module user to push account (sha512)'
Params sudo help text:
zh: '使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig'
ja: 'コンマで区切って複数のコマンドを入力してください。例: /bin/whoami,/sbin/ifconfig'
en: 'Use commas to separate multiple commands, such as: /bin/whoami,/sbin/ifconfig'
Params home help text:
zh: '默认家目录 /home/{账号用户名}'
ja: 'デフォルトのホームディレクトリ /home/{アカウントユーザ名}'
en: 'Default home directory /home/{account username}'
Params groups help text:
zh: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
ja: 'グループを入力してください。複数のグループはコンマで区切ってください(既存のグループを入力してください)'
en: 'Please enter the group. Multiple groups are separated by commas (please enter the existing group)'
Params home label:
zh: '家目录'
ja: 'ホームディレクトリ'
en: 'Home'
Params groups label:
zh: '用户组'
ja: 'グループ'
en: 'Groups'

View File

@@ -17,6 +17,7 @@
groups: "{{ params.groups }}"
groups_action: add
update_password: always
ignore_errors: true
when: account.secret_type == "password"
- name: Refresh connection

View File

@@ -10,9 +10,15 @@ params:
type: str
label: '用户组'
default: 'Users,Remote Desktop Users'
help_text: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
help_text: "{{ 'Params groups help text' | trans }}"
i18n:
Windows account push:
zh: Windows 账号推送
ja: Windows アカウントプッシュ
zh: '使用 Ansible 模块 win_user 执行 Windows 账号推送'
ja: 'Ansible win_user モジュールを使用して Windows アカウントプッシュする'
en: 'Using Ansible module win_user to push account'
Params groups help text:
zh: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
ja: 'グループを入力してください。複数のグループはコンマで区切ってください(既存のグループを入力してください)'
en: 'Please enter the group. Multiple groups are separated by commas (please enter the existing group)'

View File

@@ -0,0 +1,35 @@
- hosts: demo
gather_facts: no
tasks:
- name: Test privileged account
ansible.windows.win_ping:
# - name: Print variables
# debug:
# msg: "Username: {{ account.username }}, Password: {{ account.secret }}"
- name: Push user password
ansible.windows.win_user:
fullname: "{{ account.username}}"
name: "{{ account.username }}"
password: "{{ account.secret }}"
password_never_expires: yes
groups: "{{ params.groups }}"
groups_action: add
update_password: always
ignore_errors: true
when: account.secret_type == "password"
- name: Refresh connection
ansible.builtin.meta: reset_connection
- name: Verify password (pyfreerdp)
rdp_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.protocols | selectattr('name', 'equalto', 'rdp') | map(attribute='port') | first }}"
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_secret_type: "{{ account.secret_type }}"
login_private_key_path: "{{ account.private_key_path }}"
when: account.secret_type == "password"
delegate_to: localhost

View File

@@ -0,0 +1,25 @@
id: push_account_windows_rdp_verify
name: "{{ 'Windows account push rdp verify' | trans }}"
version: 1
method: push_account
category: host
type:
- windows
priority: 49
params:
- name: groups
type: str
label: '用户组'
default: 'Users,Remote Desktop Users'
help_text: "{{ 'Params groups help text' | trans }}"
i18n:
Windows account push rdp verify:
zh: '使用 Ansible 模块 win_user 执行 Windows 账号推送(最后使用 Python 模块 pyfreerdp 验证账号的可连接性)'
ja: 'Ansible モジュール win_user を使用して Windows アカウントのプッシュを実行します (最後に Python モジュール pyfreerdp を使用してアカウントの接続性を確認します)'
en: 'Use the Ansible module win_user to perform Windows account push (finally use the Python module pyfreerdp to verify the connectability of the account)'
Params groups help text:
zh: '请输入用户组,多个用户组使用逗号分隔(需填写已存在的用户组)'
ja: 'グループを入力してください。複数のグループはコンマで区切ってください(既存のグループを入力してください)'
en: 'Please enter the group. Multiple groups are separated by commas (please enter the existing group)'

View File

@@ -1,7 +1,4 @@
from copy import deepcopy
from accounts.const import AutomationTypes, SecretType, Connectivity
from assets.const import HostTypes
from accounts.const import AutomationTypes
from common.utils import get_logger
from ..base.manager import AccountBasePlaybookManager
from ..change_secret.manager import ChangeSecretManager
@@ -10,83 +7,11 @@ logger = get_logger(__name__)
class PushAccountManager(ChangeSecretManager, AccountBasePlaybookManager):
ansible_account_prefer = ''
@classmethod
def method_type(cls):
return AutomationTypes.push_account
def host_callback(self, host, asset=None, account=None, automation=None, path_dir=None, **kwargs):
host = super(ChangeSecretManager, self).host_callback(
host, asset=asset, account=account, automation=automation,
path_dir=path_dir, **kwargs
)
if host.get('error'):
return host
accounts = self.get_accounts(account)
inventory_hosts = []
if asset.type == HostTypes.WINDOWS and self.secret_type == SecretType.SSH_KEY:
msg = f'Windows {asset} does not support ssh key push'
print(msg)
return inventory_hosts
host['ssh_params'] = {}
for account in accounts:
h = deepcopy(host)
secret_type = account.secret_type
h['name'] += '(' + account.username + ')'
if self.secret_type is None:
new_secret = account.secret
else:
new_secret = self.get_secret(secret_type)
self.name_recorder_mapper[h['name']] = {
'account': account, 'new_secret': new_secret,
}
private_key_path = None
if secret_type == SecretType.SSH_KEY:
private_key_path = self.generate_private_key_path(new_secret, path_dir)
new_secret = self.generate_public_key(new_secret)
h['ssh_params'].update(self.get_ssh_params(account, new_secret, secret_type))
h['account'] = {
'name': account.name,
'username': account.username,
'secret_type': secret_type,
'secret': new_secret,
'private_key_path': private_key_path
}
if asset.platform.type == 'oracle':
h['account']['mode'] = 'sysdba' if account.privileged else None
inventory_hosts.append(h)
return inventory_hosts
def on_host_success(self, host, result):
account_info = self.name_recorder_mapper.get(host)
if not account_info:
return
account = account_info['account']
new_secret = account_info['new_secret']
if not account:
return
account.secret = new_secret
account.save(update_fields=['secret'])
account.set_connectivity(Connectivity.OK)
def on_host_error(self, host, error, result):
pass
def on_runner_failed(self, runner, e):
logger.error("Pust account error: ", e)
def run(self, *args, **kwargs):
if self.secret_type and not self.check_secret():
return
super(ChangeSecretManager, self).run(*args, **kwargs)
# @classmethod
# def trigger_by_asset_create(cls, asset):
# automations = PushAccountAutomation.objects.filter(

View File

@@ -0,0 +1,21 @@
- hosts: mongodb
gather_facts: no
vars:
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: "Remove account"
mongodb_user:
login_user: "{{ jms_account.username }}"
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
db: "{{ jms_asset.spec_info.db_name }}"
name: "{{ account.username }}"
state: absent

View File

@@ -0,0 +1,12 @@
id: remove_account_mongodb
name: "{{ 'MongoDB account remove' | trans }}"
category: database
type:
- mongodb
method: remove_account
i18n:
MongoDB account remove:
zh: 使用 Ansible 模块 mongodb 删除账号
ja: Ansible モジュール mongodb を使用してアカウントを削除する
en: Delete account using Ansible module mongodb

View File

@@ -0,0 +1,18 @@
- hosts: mysql
gather_facts: no
vars:
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: "Remove account"
community.mysql.mysql_user:
login_user: "{{ jms_account.username }}"
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
name: "{{ account.username }}"
state: absent

View File

@@ -0,0 +1,14 @@
id: remove_account_mysql
name: "{{ 'MySQL account remove' | trans }}"
category: database
type:
- mysql
- mariadb
method: remove_account
i18n:
MySQL account remove:
zh: 使用 Ansible 模块 mysql_user 删除账号
ja: Ansible モジュール mysql_user を使用してアカウントを削除します
en: Use the Ansible module mysql_user to delete the account

View File

@@ -0,0 +1,16 @@
- hosts: oracle
gather_facts: no
vars:
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: "Remove account"
oracle_user:
login_user: "{{ jms_account.username }}"
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
mode: "{{ jms_account.mode }}"
name: "{{ account.username }}"
state: absent

View File

@@ -0,0 +1,12 @@
id: remove_account_oracle
name: "{{ 'Oracle account remove' | trans }}"
category: database
type:
- oracle
method: remove_account
i18n:
Oracle account remove:
zh: 使用 Python 模块 oracledb 删除账号
ja: Python モジュール oracledb を使用してアカウントを検証する
en: Using Python module oracledb to verify account

View File

@@ -0,0 +1,15 @@
- hosts: postgresql
gather_facts: no
vars:
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: "Remove account"
community.postgresql.postgresql_user:
login_user: "{{ jms_account.username }}"
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
db: "{{ jms_asset.spec_info.db_name }}"
name: "{{ account.username }}"
state: absent

View File

@@ -0,0 +1,12 @@
id: remove_account_postgresql
name: "{{ 'PostgreSQL account remove' | trans }}"
category: database
type:
- postgresql
method: remove_account
i18n:
PostgreSQL account remove:
zh: 使用 Ansible 模块 postgresql_user 删除账号
ja: Ansible モジュール postgresql_user を使用してアカウントを削除します
en: Use the Ansible module postgresql_user to delete the account

View File

@@ -0,0 +1,14 @@
- hosts: sqlserver
gather_facts: no
vars:
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: "Remove account"
community.general.mssql_script:
login_user: "{{ jms_account.username }}"
login_password: "{{ jms_account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
name: "{{ jms_asset.spec_info.db_name }}"
script: "DROP USER {{ account.username }}"

View File

@@ -0,0 +1,12 @@
id: remove_account_sqlserver
name: "{{ 'SQLServer account remove' | trans }}"
category: database
type:
- sqlserver
method: remove_account
i18n:
SQLServer account remove:
zh: 使用 Ansible 模块 mssql 删除账号
ja: Ansible モジュール mssql を使用してアカウントを削除する
en: Use Ansible module mssql to delete account

View File

@@ -0,0 +1,26 @@
- hosts: demo
gather_facts: no
tasks:
- name: "Get user home directory path"
ansible.builtin.shell:
cmd: "getent passwd {{ account.username }} | cut -d: -f6"
register: user_home_dir
ignore_errors: yes
- name: "Check if user home directory exists"
ansible.builtin.stat:
path: "{{ user_home_dir.stdout }}"
register: home_dir
when: user_home_dir.stdout != ""
- name: "Rename user home directory if it exists"
ansible.builtin.command:
cmd: "mv {{ user_home_dir.stdout }} {{ user_home_dir.stdout }}.bak"
when: home_dir.stat | default(false) and user_home_dir.stdout != ""
- name: "Remove account"
ansible.builtin.user:
name: "{{ account.username }}"
state: absent
remove: "{{ home_dir.stat.exists }}"
when: home_dir.stat | default(false)

View File

@@ -0,0 +1,13 @@
id: remove_account_posix
name: "{{ 'Posix account remove' | trans }}"
category: host
type:
- linux
- unix
method: remove_account
i18n:
Posix account remove:
zh: 使用 Ansible 模块 user 删除账号
ja: Ansible モジュール ユーザーを使用してアカウントを削除します
en: Use the Ansible module user to delete the account

View File

@@ -0,0 +1,9 @@
- hosts: windows
gather_facts: no
tasks:
- name: "Remove account"
ansible.windows.win_user:
name: "{{ account.username }}"
state: absent
purge: yes
force: yes

View File

@@ -0,0 +1,13 @@
id: remove_account_windows
name: "{{ 'Windows account remove' | trans }}"
version: 1
method: remove_account
category: host
type:
- windows
i18n:
Windows account remove:
zh: 使用 Ansible 模块 win_user 删除账号
ja: Ansible モジュール win_user を使用してアカウントを削除する
en: Use the Ansible module win_user to delete an account

View File

@@ -0,0 +1,70 @@
import os
from copy import deepcopy
from django.db.models import QuerySet
from accounts.const import AutomationTypes
from accounts.models import Account
from common.utils import get_logger
from ..base.manager import AccountBasePlaybookManager
logger = get_logger(__name__)
class RemoveAccountManager(AccountBasePlaybookManager):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.host_account_mapper = {}
def prepare_runtime_dir(self):
path = super().prepare_runtime_dir()
ansible_config_path = os.path.join(path, 'ansible.cfg')
with open(ansible_config_path, 'w') as f:
f.write('[ssh_connection]\n')
f.write('ssh_args = -o ControlMaster=no -o ControlPersist=no\n')
return path
@classmethod
def method_type(cls):
return AutomationTypes.remove_account
def get_gather_accounts(self, privilege_account, gather_accounts: QuerySet):
gather_account_ids = self.execution.snapshot['gather_accounts']
gather_accounts = gather_accounts.filter(id__in=gather_account_ids)
gather_accounts = gather_accounts.exclude(
username__in=[privilege_account.username, 'root', 'Administrator']
)
return gather_accounts
def host_callback(self, host, asset=None, account=None, automation=None, path_dir=None, **kwargs):
if host.get('error'):
return host
gather_accounts = asset.gatheredaccount_set.all()
gather_accounts = self.get_gather_accounts(account, gather_accounts)
inventory_hosts = []
for gather_account in gather_accounts:
h = deepcopy(host)
h['name'] += '(' + gather_account.username + ')'
self.host_account_mapper[h['name']] = (asset, gather_account)
h['account'] = {'username': gather_account.username}
inventory_hosts.append(h)
return inventory_hosts
def on_host_success(self, host, result):
tuple_asset_gather_account = self.host_account_mapper.get(host)
if not tuple_asset_gather_account:
return
asset, gather_account = tuple_asset_gather_account
try:
Account.objects.filter(
asset_id=asset.id,
username=gather_account.username
).delete()
gather_account.delete()
except Exception as e:
print(f'\033[31m Delete account {gather_account.username} failed: {e} \033[0m\n')

View File

@@ -1,13 +0,0 @@
id: verify_account_by_ssh
name: "{{ 'SSH account verify' | trans }}"
category:
- device
- host
type:
- all
method: verify_account
i18n:
SSH account verify:
zh: SSH 账号验证
ja: SSH アカウントの検証

View File

@@ -1,14 +1,16 @@
- hosts: custom
gather_facts: no
vars:
ansible_shell_type: sh
ansible_connection: local
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Verify account
ssh_ping:
- name: Verify account (pyfreerdp)
rdp_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_secret_type: "{{ jms_account.secret_type }}"
login_private_key_path: "{{ jms_account.private_key_path }}"
login_secret_type: "{{ account.secret_type }}"
login_private_key_path: "{{ account.private_key_path }}"

View File

@@ -0,0 +1,15 @@
id: verify_account_by_rdp
name: "{{ 'Windows rdp account verify' | trans }}"
category:
- host
type:
- windows
method: verify_account
protocol: rdp
priority: 1
i18n:
Windows rdp account verify:
zh: '使用 Python 模块 pyfreerdp 验证账号'
ja: 'Python モジュール pyfreerdp を使用してアカウントを検証する'
en: 'Using Python module pyfreerdp to verify account'

View File

@@ -0,0 +1,23 @@
- hosts: custom
gather_facts: no
vars:
ansible_connection: local
ansible_shell_type: sh
ansible_become: false
tasks:
- name: Verify account (paramiko)
ssh_ping:
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
login_user: "{{ account.username }}"
login_password: "{{ account.secret }}"
login_secret_type: "{{ account.secret_type }}"
login_private_key_path: "{{ account.private_key_path }}"
become: "{{ account.become.ansible_become | default(False) }}"
become_method: "{{ account.become.ansible_become_method | default('su') }}"
become_user: "{{ account.become.ansible_user | default('') }}"
become_password: "{{ account.become.ansible_password | default('') }}"
become_private_key_path: "{{ account.become.ansible_ssh_private_key_file | default(None) }}"
old_ssh_version: "{{ jms_asset.old_ssh_version | default(False) }}"
gateway_args: "{{ jms_asset.ansible_ssh_common_args | default(None) }}"

View File

@@ -0,0 +1,16 @@
id: verify_account_by_ssh
name: "{{ 'SSH account verify' | trans }}"
category:
- device
- host
type:
- all
method: verify_account
protocol: ssh
priority: 50
i18n:
SSH account verify:
zh: '使用 Python 模块 paramiko 验证账号'
ja: 'Python モジュール paramiko を使用してアカウントを検証する'
en: 'Using Python module paramiko to verify account'

View File

@@ -1,7 +1,7 @@
- hosts: mongdb
- hosts: mongodb
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Verify account
@@ -12,7 +12,7 @@
login_port: "{{ jms_asset.port }}"
login_database: "{{ jms_asset.spec_info.db_name }}"
ssl: "{{ jms_asset.spec_info.use_ssl }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key }}"
ssl_ca_certs: "{{ jms_asset.secret_info.ca_cert | default('') }}"
ssl_certfile: "{{ jms_asset.secret_info.client_key | default('') }}"
connection_options:
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert}}"
- tlsAllowInvalidHostnames: "{{ jms_asset.spec_info.allow_invalid_cert }}"

View File

@@ -7,5 +7,6 @@ method: verify_account
i18n:
MongoDB account verify:
zh: MongoDB 账号验证
ja: MongoDB アカウント検証
zh: 使用 Ansible 模块 mongodb 验证账号
ja: Ansible mongodb モジュールを使用してアカウント検証する
en: Using Ansible module mongodb to verify account

View File

@@ -1,7 +1,8 @@
- hosts: mysql
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
check_ssl: "{{ jms_asset.spec_info.use_ssl and not jms_asset.spec_info.allow_invalid_cert }}"
tasks:
- name: Verify account
@@ -10,4 +11,8 @@
login_password: "{{ account.secret }}"
login_host: "{{ jms_asset.address }}"
login_port: "{{ jms_asset.port }}"
check_hostname: "{{ check_ssl if check_ssl else omit }}"
ca_cert: "{{ jms_asset.secret_info.ca_cert | default(omit) if check_ssl else omit }}"
client_cert: "{{ jms_asset.secret_info.client_cert | default(omit) if check_ssl else omit }}"
client_key: "{{ jms_asset.secret_info.client_key | default(omit) if check_ssl else omit }}"
filter: version

View File

@@ -8,5 +8,7 @@ method: verify_account
i18n:
MySQL account verify:
zh: MySQL 账号验证
ja: MySQL アカウント検証
zh: 使用 Ansible 模块 mysql 验证账号
ja: Ansible mysql モジュールを使用してアカウント検証する
en: Using Ansible module mysql to verify account

View File

@@ -1,7 +1,7 @@
- hosts: oracle
gather_facts: no
vars:
ansible_python_interpreter: /usr/local/bin/python
ansible_python_interpreter: /opt/py3/bin/python
tasks:
- name: Verify account

Some files were not shown because too many files have changed in this diff Show More