mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-12-19 10:32:49 +00:00
Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c08582e7d | ||
|
|
3555fe1c20 | ||
|
|
4a1045ba81 | ||
|
|
7fc3218010 | ||
|
|
0dd4c8adc2 | ||
|
|
ce7edc1612 | ||
|
|
23ef185b7e | ||
|
|
6b16aa6bc0 | ||
|
|
43741dc9b2 | ||
|
|
18174e2867 | ||
|
|
3077d11483 | ||
|
|
a9626c2b39 | ||
|
|
b265fad50f | ||
|
|
f40b50dddd | ||
|
|
0d6255b07f | ||
|
|
06b02cfcfd | ||
|
|
a7e1ed6f03 | ||
|
|
1c6f89519a | ||
|
|
24d093747f | ||
|
|
8c4e9720d3 | ||
|
|
d43709f584 | ||
|
|
89496baae5 | ||
|
|
ea6d995f55 | ||
|
|
cf6aba1f38 | ||
|
|
e04e31eb30 | ||
|
|
ff747f9e42 | ||
|
|
c4bd093fd7 | ||
|
|
1d640eccf6 | ||
|
|
7548bb8976 | ||
|
|
8ffa5e0aec |
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
##### 使用版本
|
##### 使用版本
|
||||||
[请提供你使用的Jumpserver版本 1.x.x 注: 0.3.x不再提供支持]
|
[请提供你使用的JumpServer版本 如 2.0.1 注: 1.4及以下版本不再提供支持]
|
||||||
|
|
||||||
##### 问题复现步骤
|
##### 问题复现步骤
|
||||||
1. [步骤1]
|
1. [步骤1]
|
||||||
|
|||||||
44
.github/release-config.yml
vendored
Normal file
44
.github/release-config.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name-template: 'v$RESOLVED_VERSION'
|
||||||
|
tag-template: 'v$RESOLVED_VERSION'
|
||||||
|
categories:
|
||||||
|
- title: '🌱 新功能 Features'
|
||||||
|
labels:
|
||||||
|
- 'feature'
|
||||||
|
- 'enhancement'
|
||||||
|
- 'feat'
|
||||||
|
- '新功能'
|
||||||
|
- title: '🚀 性能优化 Optimization'
|
||||||
|
labels:
|
||||||
|
- 'perf'
|
||||||
|
- 'opt'
|
||||||
|
- 'refactor'
|
||||||
|
- 'Optimization'
|
||||||
|
- '优化'
|
||||||
|
- title: '🐛 Bug修复 Bug Fixes'
|
||||||
|
labels:
|
||||||
|
- 'fix'
|
||||||
|
- 'bugfix'
|
||||||
|
- 'bug'
|
||||||
|
- title: '🧰 其它 Maintenance'
|
||||||
|
labels:
|
||||||
|
- 'chore'
|
||||||
|
- 'docs'
|
||||||
|
exclude-labels:
|
||||||
|
- 'no'
|
||||||
|
- '无需处理'
|
||||||
|
- 'wontfix'
|
||||||
|
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
|
||||||
|
version-resolver:
|
||||||
|
major:
|
||||||
|
labels:
|
||||||
|
- 'major'
|
||||||
|
minor:
|
||||||
|
labels:
|
||||||
|
- 'minor'
|
||||||
|
patch:
|
||||||
|
labels:
|
||||||
|
- 'patch'
|
||||||
|
default: patch
|
||||||
|
template: |
|
||||||
|
## 版本变化 What’s Changed
|
||||||
|
$CHANGES
|
||||||
46
.github/workflows/release-drafter.yml
vendored
Normal file
46
.github/workflows/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
# Sequence of patterns matched against refs/tags
|
||||||
|
tags:
|
||||||
|
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
|
||||||
|
|
||||||
|
name: Create Release And Upload assets
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-realese:
|
||||||
|
name: Create Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Get version
|
||||||
|
id: get_version
|
||||||
|
run: |
|
||||||
|
TAG=$(basename ${GITHUB_REF})
|
||||||
|
VERSION=${TAG/v/}
|
||||||
|
echo "::set-output name=TAG::$TAG"
|
||||||
|
echo "::set-output name=VERSION::$VERSION"
|
||||||
|
- name: Create Release
|
||||||
|
id: create_release
|
||||||
|
uses: release-drafter/release-drafter@v5
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
config-name: release-config.yml
|
||||||
|
version: ${{ steps.get_version.outputs.TAG }}
|
||||||
|
tag: ${{ steps.get_version.outputs.TAG }}
|
||||||
|
|
||||||
|
build-and-release:
|
||||||
|
needs: create-realese
|
||||||
|
name: Build and Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Build it and upload
|
||||||
|
uses: jumpserver/action-build-upload-assets@master
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ needs.create-realese.outputs.upload_url }}
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -36,3 +36,5 @@ xpack
|
|||||||
logs/*
|
logs/*
|
||||||
### Vagrant ###
|
### Vagrant ###
|
||||||
.vagrant/
|
.vagrant/
|
||||||
|
release/*
|
||||||
|
releashe
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
[](https://www.python.org/)
|
[](https://www.python.org/)
|
||||||
[](https://www.djangoproject.com/)
|
[](https://www.djangoproject.com/)
|
||||||
|
[](https://hub.docker.com/u/jumpserver)
|
||||||
|
|
||||||
JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 规范的运维安全审计系统。
|
JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 规范的运维安全审计系统。
|
||||||
|
|
||||||
|
|||||||
@@ -18,5 +18,5 @@ class GatheredUserViewSet(OrgModelViewSet):
|
|||||||
permission_classes = [IsOrgAdmin]
|
permission_classes = [IsOrgAdmin]
|
||||||
extra_filter_backends = [AssetRelatedByNodeFilterBackend]
|
extra_filter_backends = [AssetRelatedByNodeFilterBackend]
|
||||||
|
|
||||||
filter_fields = ['asset', 'username', 'present', 'asset__ip', 'asset__hostname']
|
filter_fields = ['asset', 'username', 'present', 'asset__ip', 'asset__hostname', 'asset_id']
|
||||||
search_fields = ['username', 'asset__ip', 'asset__hostname']
|
search_fields = ['username', 'asset__ip', 'asset__hostname']
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class SystemUserViewSet(OrgBulkModelViewSet):
|
|||||||
System user api set, for add,delete,update,list,retrieve resource
|
System user api set, for add,delete,update,list,retrieve resource
|
||||||
"""
|
"""
|
||||||
model = SystemUser
|
model = SystemUser
|
||||||
filter_fields = ("name", "username")
|
filter_fields = ("name", "username", "protocol")
|
||||||
search_fields = filter_fields
|
search_fields = filter_fields
|
||||||
serializer_class = serializers.SystemUserSerializer
|
serializer_class = serializers.SystemUserSerializer
|
||||||
serializer_classes = {
|
serializer_classes = {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ class FTPLogViewSet(CreateModelMixin,
|
|||||||
]
|
]
|
||||||
filter_fields = ['user', 'asset', 'system_user', 'filename']
|
filter_fields = ['user', 'asset', 'system_user', 'filename']
|
||||||
search_fields = filter_fields
|
search_fields = filter_fields
|
||||||
|
ordering = ['-date_start']
|
||||||
|
|
||||||
|
|
||||||
class UserLoginLogViewSet(ListModelMixin, CommonGenericViewSet):
|
class UserLoginLogViewSet(ListModelMixin, CommonGenericViewSet):
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class JMSCSVRender(BaseRenderer):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _gen_table(data, fields):
|
def _gen_table(data, fields):
|
||||||
data = data[:100]
|
data = data[:10000]
|
||||||
yield ['*{}'.format(f.label) if f.required else f.label for f in fields]
|
yield ['*{}'.format(f.label) if f.required else f.label for f in fields]
|
||||||
|
|
||||||
for item in data:
|
for item in data:
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
from django.utils.translation import ugettext_lazy as _
|
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from common.permissions import PermissionsMixin, IsValidUser
|
from common.permissions import PermissionsMixin, IsValidUser
|
||||||
|
|
||||||
@@ -12,17 +11,3 @@ class IndexView(PermissionsMixin, TemplateView):
|
|||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
return redirect('/ui/')
|
return redirect('/ui/')
|
||||||
|
|
||||||
def dispatch(self, request, *args, **kwargs):
|
|
||||||
if not request.user.is_authenticated:
|
|
||||||
return self.handle_no_permission()
|
|
||||||
if request.user.is_common_user:
|
|
||||||
return redirect('assets:user-asset-list')
|
|
||||||
return super(IndexView, self).dispatch(request, *args, **kwargs)
|
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
|
||||||
context = super().get_context_data(**kwargs)
|
|
||||||
context.update({
|
|
||||||
'app': _("Dashboard"),
|
|
||||||
})
|
|
||||||
return context
|
|
||||||
|
|||||||
Binary file not shown.
@@ -3755,7 +3755,7 @@ msgstr "腾讯云"
|
|||||||
|
|
||||||
#: xpack/plugins/cloud/serializers.py:53
|
#: xpack/plugins/cloud/serializers.py:53
|
||||||
msgid "History count"
|
msgid "History count"
|
||||||
msgstr "用户数量"
|
msgstr "执行次数"
|
||||||
|
|
||||||
#: xpack/plugins/cloud/serializers.py:54
|
#: xpack/plugins/cloud/serializers.py:54
|
||||||
msgid "Instance count"
|
msgid "Instance count"
|
||||||
|
|||||||
11
build.sh
11
build.sh
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
|
|
||||||
version=$1
|
|
||||||
if [ -z "$version" ];then
|
|
||||||
echo "Usage: sh build version"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
docker build -t jumpserver/jumpserver:$version .
|
|
||||||
28
utils/build.sh
Executable file
28
utils/build.sh
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 该build基于registry.fit2cloud.com/public/python:3
|
||||||
|
utils_dir=$(pwd)
|
||||||
|
project_dir=$(dirname "$utils_dir")
|
||||||
|
release_dir=${project_dir}/release
|
||||||
|
|
||||||
|
# 安装依赖包
|
||||||
|
command -v git || yum -y install git
|
||||||
|
|
||||||
|
# 打包
|
||||||
|
cd "${project_dir}" || exit 3
|
||||||
|
rm -rf "${release_dir:?}/*"
|
||||||
|
to_dir="${release_dir}/jumpserver"
|
||||||
|
mkdir -p "${to_dir}"
|
||||||
|
git archive --format tar HEAD | tar x -C "${to_dir}"
|
||||||
|
|
||||||
|
if [[ $(uname) == 'Darwin' ]];then
|
||||||
|
alias sedi="sed -i ''"
|
||||||
|
else
|
||||||
|
alias sedi='sed -i'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 修改版本号文件
|
||||||
|
if [[ -n ${VERSION} ]]; then
|
||||||
|
sedi "s@VERSION = .*@VERSION = \"${VERSION}\"@g" "${to_dir}/apps/jumpserver/const.py"
|
||||||
|
fi
|
||||||
|
|
||||||
12
utils/build_docker.sh
Normal file
12
utils/build_docker.sh
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
utils_dir=$(dirname "$0")
|
||||||
|
project_dir=$(dirname "${utils_dir}")
|
||||||
|
|
||||||
|
version=$1
|
||||||
|
if [ -z "$version" ]; then
|
||||||
|
echo "Usage: sh build version"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "${project_dir}" && docker build -t "jumpserver/jumpserver:${version}" .
|
||||||
26
utils/example_api.py
Normal file
26
utils/example_api.py
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import requests
|
||||||
|
|
||||||
|
# 私有token页面上目前不允许创建,只能后台生成,见 https://docs.jumpserver.org/zh/master/dev/rest_api/
|
||||||
|
private_token = '10659d70a223235b8f76d45a3023eca1147488d7'
|
||||||
|
|
||||||
|
|
||||||
|
def do_request(url, data=None, method='get', params=None, org_id=''):
|
||||||
|
authorization = 'Token {}'.format(private_token)
|
||||||
|
headers = {'Authorization': authorization, 'Content-Type': 'application/json'}
|
||||||
|
if org_id:
|
||||||
|
headers['X-JMS-ORG'] = org_id
|
||||||
|
resp = requests.request(method=method, url=url, data=data, params=params, headers=headers)
|
||||||
|
return resp
|
||||||
|
|
||||||
|
|
||||||
|
def get_assets_list():
|
||||||
|
url = 'http://localhost:8080/api/v1/assets/assets/?limit=10'
|
||||||
|
resp = do_request(url)
|
||||||
|
print(resp.status_code)
|
||||||
|
print(resp.json())
|
||||||
|
print(resp)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
get_assets_list()
|
||||||
Reference in New Issue
Block a user