Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
69489979
Commit
69489979
authored
Mar 06, 2017
by
xiaokong1937@gmail.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
trivial changes
parent
b0551449
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
63 additions
and
38 deletions
+63
-38
forms.py
apps/assets/forms.py
+10
-6
idc.py
apps/assets/models/idc.py
+17
-10
user.py
apps/assets/models/user.py
+34
-19
models.py
apps/audits/models.py
+2
-3
No files found.
apps/assets/forms.py
View file @
69489979
...
@@ -7,6 +7,7 @@ from common.utils import validate_ssh_private_key, ssh_pubkey_gen
...
@@ -7,6 +7,7 @@ from common.utils import validate_ssh_private_key, ssh_pubkey_gen
class
AssetCreateForm
(
forms
.
ModelForm
):
class
AssetCreateForm
(
forms
.
ModelForm
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
instance
=
kwargs
.
get
(
'instance'
,
None
)
instance
=
kwargs
.
get
(
'instance'
,
None
)
if
instance
:
if
instance
:
...
@@ -78,10 +79,10 @@ class AssetGroupForm(forms.ModelForm):
...
@@ -78,10 +79,10 @@ class AssetGroupForm(forms.ModelForm):
class
Meta
:
class
Meta
:
model
=
AssetGroup
model
=
AssetGroup
fields
=
[
fields
=
[
"name"
,
"comment"
,
"system_users"
,
"name"
,
"comment"
,
"system_users"
,
]
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{}),
'name'
:
forms
.
TextInput
(
attrs
=
{}),
'system_users'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2-system-user'
,
'data-placeholder'
:
_
(
'Select asset system user'
)}),
'system_users'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2-system-user'
,
'data-placeholder'
:
_
(
'Select asset system user'
)}),
}
}
...
@@ -113,7 +114,8 @@ class IDCForm(forms.ModelForm):
...
@@ -113,7 +114,8 @@ class IDCForm(forms.ModelForm):
class
Meta
:
class
Meta
:
model
=
IDC
model
=
IDC
fields
=
[
'name'
,
"bandwidth"
,
"operator"
,
'contact'
,
'phone'
,
'address'
,
'intranet'
,
'extranet'
,
'comment'
]
fields
=
[
'name'
,
"bandwidth"
,
"operator"
,
'contact'
,
'phone'
,
'address'
,
'intranet'
,
'extranet'
,
'comment'
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'intranet'
:
forms
.
Textarea
(
'intranet'
:
forms
.
Textarea
(
...
@@ -189,7 +191,8 @@ class AdminUserForm(forms.ModelForm):
...
@@ -189,7 +191,8 @@ class AdminUserForm(forms.ModelForm):
class
Meta
:
class
Meta
:
model
=
AdminUser
model
=
AdminUser
fields
=
[
'name'
,
'username'
,
'password'
,
'private_key_file'
,
'comment'
]
fields
=
[
'name'
,
'username'
,
'password'
,
'private_key_file'
,
'comment'
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'username'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Username'
)}),
'username'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Username'
)}),
...
@@ -204,7 +207,8 @@ class SystemUserForm(forms.ModelForm):
...
@@ -204,7 +207,8 @@ class SystemUserForm(forms.ModelForm):
# Admin user assets define, let user select, save it in form not in view
# Admin user assets define, let user select, save it in form not in view
auto_generate_key
=
forms
.
BooleanField
(
initial
=
True
,
required
=
False
)
auto_generate_key
=
forms
.
BooleanField
(
initial
=
True
,
required
=
False
)
# Form field name can not start with `_`, so redefine it,
# Form field name can not start with `_`, so redefine it,
password
=
forms
.
CharField
(
widget
=
forms
.
PasswordInput
,
max_length
=
100
,
min_length
=
8
,
strip
=
True
)
password
=
forms
.
CharField
(
widget
=
forms
.
PasswordInput
,
max_length
=
100
,
required
=
False
,
min_length
=
8
,
strip
=
True
)
# Need use upload private key file except paste private key content
# Need use upload private key file except paste private key content
private_key_file
=
forms
.
FileField
(
required
=
False
)
private_key_file
=
forms
.
FileField
(
required
=
False
)
...
@@ -295,7 +299,7 @@ class AssetTagForm(forms.ModelForm):
...
@@ -295,7 +299,7 @@ class AssetTagForm(forms.ModelForm):
"name"
,
"name"
,
]
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{}),
'name'
:
forms
.
TextInput
(
attrs
=
{}),
}
}
help_texts
=
{
help_texts
=
{
...
...
apps/assets/models/idc.py
View file @
69489979
#!/usr/bin/env python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
#
#
from
__future__
import
unicode_literals
from
__future__
import
unicode_literals
from
django.db
import
models
import
logging
import
logging
from
django.db
import
models
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils.translation
import
ugettext_lazy
as
_
...
@@ -15,15 +16,22 @@ logger = logging.getLogger(__name__)
...
@@ -15,15 +16,22 @@ logger = logging.getLogger(__name__)
class
IDC
(
models
.
Model
):
class
IDC
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
32
,
verbose_name
=
_
(
'Name'
))
name
=
models
.
CharField
(
max_length
=
32
,
verbose_name
=
_
(
'Name'
))
bandwidth
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Bandwidth'
))
bandwidth
=
models
.
CharField
(
contact
=
models
.
CharField
(
max_length
=
16
,
blank
=
True
,
verbose_name
=
_
(
'Contact'
))
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Bandwidth'
))
phone
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Phone'
))
contact
=
models
.
CharField
(
address
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
verbose_name
=
_
(
"Address"
))
max_length
=
128
,
blank
=
True
,
verbose_name
=
_
(
'Contact'
))
phone
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Phone'
))
address
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
verbose_name
=
_
(
"Address"
))
intranet
=
models
.
TextField
(
blank
=
True
,
verbose_name
=
_
(
'Intranet'
))
intranet
=
models
.
TextField
(
blank
=
True
,
verbose_name
=
_
(
'Intranet'
))
extranet
=
models
.
TextField
(
blank
=
True
,
verbose_name
=
_
(
'Extranet'
))
extranet
=
models
.
TextField
(
blank
=
True
,
verbose_name
=
_
(
'Extranet'
))
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
,
null
=
True
,
verbose_name
=
_
(
'Date added'
))
date_created
=
models
.
DateTimeField
(
operator
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Operator'
))
auto_now_add
=
True
,
null
=
True
,
verbose_name
=
_
(
'Date added'
))
created_by
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Created by'
))
operator
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Operator'
))
created_by
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Created by'
))
comment
=
models
.
TextField
(
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
comment
=
models
.
TextField
(
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
def
__unicode__
(
self
):
def
__unicode__
(
self
):
...
@@ -58,4 +66,3 @@ class IDC(models.Model):
...
@@ -58,4 +66,3 @@ class IDC(models.Model):
except
IntegrityError
:
except
IntegrityError
:
print
(
'Error continue'
)
print
(
'Error continue'
)
continue
continue
apps/assets/models/user.py
View file @
69489979
...
@@ -4,10 +4,11 @@
...
@@ -4,10 +4,11 @@
from
__future__
import
unicode_literals
from
__future__
import
unicode_literals
from
django.db
import
models
import
logging
import
logging
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.core.exceptions
import
ValidationError
from
django.core.exceptions
import
ValidationError
from
django.db
import
models
from
django.utils.translation
import
ugettext_lazy
as
_
from
common.utils
import
signer
,
validate_ssh_private_key
from
common.utils
import
signer
,
validate_ssh_private_key
...
@@ -24,15 +25,19 @@ def private_key_validator(value):
...
@@ -24,15 +25,19 @@ def private_key_validator(value):
class
AdminUser
(
models
.
Model
):
class
AdminUser
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
128
,
unique
=
True
,
verbose_name
=
_
(
'Name'
))
name
=
models
.
CharField
(
max_length
=
128
,
unique
=
True
,
verbose_name
=
_
(
'Name'
))
username
=
models
.
CharField
(
max_length
=
16
,
verbose_name
=
_
(
'Username'
))
username
=
models
.
CharField
(
max_length
=
16
,
verbose_name
=
_
(
'Username'
))
_password
=
models
.
CharField
(
max_length
=
256
,
blank
=
True
,
null
=
True
,
verbose_name
=
_
(
'Password'
))
_password
=
models
.
CharField
(
max_length
=
256
,
blank
=
True
,
null
=
True
,
verbose_name
=
_
(
'Password'
))
_private_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
null
=
True
,
verbose_name
=
_
(
'SSH private key'
),
_private_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
null
=
True
,
verbose_name
=
_
(
'SSH private key'
),
validators
=
[
private_key_validator
,])
validators
=
[
private_key_validator
,
])
_public_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
verbose_name
=
_
(
'SSH public key'
))
_public_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
verbose_name
=
_
(
'SSH public key'
))
comment
=
models
.
TextField
(
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
comment
=
models
.
TextField
(
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
,
null
=
True
)
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
,
null
=
True
)
created_by
=
models
.
CharField
(
max_length
=
32
,
null
=
True
,
verbose_name
=
_
(
'Created by'
))
created_by
=
models
.
CharField
(
max_length
=
32
,
null
=
True
,
verbose_name
=
_
(
'Created by'
))
def
__unicode__
(
self
):
def
__unicode__
(
self
):
return
self
.
name
return
self
.
name
...
@@ -99,23 +104,33 @@ class SystemUser(models.Model):
...
@@ -99,23 +104,33 @@ class SystemUser(models.Model):
(
'P'
,
'Password'
),
(
'P'
,
'Password'
),
(
'K'
,
'Public key'
),
(
'K'
,
'Public key'
),
)
)
name
=
models
.
CharField
(
max_length
=
128
,
unique
=
True
,
verbose_name
=
_
(
'Name'
))
name
=
models
.
CharField
(
max_length
=
128
,
unique
=
True
,
verbose_name
=
_
(
'Name'
))
username
=
models
.
CharField
(
max_length
=
16
,
verbose_name
=
_
(
'Username'
))
username
=
models
.
CharField
(
max_length
=
16
,
verbose_name
=
_
(
'Username'
))
_password
=
models
.
CharField
(
max_length
=
256
,
blank
=
True
,
verbose_name
=
_
(
'Password'
))
_password
=
models
.
CharField
(
protocol
=
models
.
CharField
(
max_length
=
16
,
choices
=
PROTOCOL_CHOICES
,
default
=
'ssh'
,
verbose_name
=
_
(
'Protocol'
))
max_length
=
256
,
blank
=
True
,
verbose_name
=
_
(
'Password'
))
_private_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
verbose_name
=
_
(
'SSH private key'
))
protocol
=
models
.
CharField
(
_public_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
verbose_name
=
_
(
'SSH public key'
))
max_length
=
16
,
choices
=
PROTOCOL_CHOICES
,
default
=
'ssh'
,
verbose_name
=
_
(
'Protocol'
))
_private_key
=
models
.
CharField
(
max_length
=
8192
,
blank
=
True
,
verbose_name
=
_
(
'SSH private key'
))
_public_key
=
models
.
CharField
(
max_length
=
8192
,
blank
=
True
,
verbose_name
=
_
(
'SSH public key'
))
auth_method
=
models
.
CharField
(
choices
=
AUTH_METHOD_CHOICES
,
default
=
'K'
,
auth_method
=
models
.
CharField
(
choices
=
AUTH_METHOD_CHOICES
,
default
=
'K'
,
max_length
=
1
,
verbose_name
=
_
(
'Auth method'
))
max_length
=
1
,
verbose_name
=
_
(
'Auth method'
))
auto_push
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Auto push'
))
auto_push
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Auto push'
))
auto_update
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Auto update pass/key'
))
auto_update
=
models
.
BooleanField
(
sudo
=
models
.
TextField
(
max_length
=
4096
,
default
=
'/user/bin/whoami'
,
verbose_name
=
_
(
'Sudo'
))
default
=
True
,
verbose_name
=
_
(
'Auto update pass/key'
))
shell
=
models
.
CharField
(
max_length
=
64
,
default
=
'/bin/bash'
,
verbose_name
=
_
(
'Shell'
))
sudo
=
models
.
TextField
(
max_length
=
4096
,
default
=
'/user/bin/whoami'
,
verbose_name
=
_
(
'Sudo'
))
shell
=
models
.
CharField
(
max_length
=
64
,
default
=
'/bin/bash'
,
verbose_name
=
_
(
'Shell'
))
home
=
models
.
CharField
(
max_length
=
64
,
blank
=
True
,
verbose_name
=
_
(
'Home'
))
home
=
models
.
CharField
(
max_length
=
64
,
blank
=
True
,
verbose_name
=
_
(
'Home'
))
uid
=
models
.
IntegerField
(
null
=
True
,
blank
=
True
,
verbose_name
=
_
(
'Uid'
))
uid
=
models
.
IntegerField
(
null
=
True
,
blank
=
True
,
verbose_name
=
_
(
'Uid'
))
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
date_created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
created_by
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Created by'
))
created_by
=
models
.
CharField
(
comment
=
models
.
TextField
(
max_length
=
128
,
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
max_length
=
32
,
blank
=
True
,
verbose_name
=
_
(
'Created by'
))
comment
=
models
.
TextField
(
max_length
=
128
,
blank
=
True
,
verbose_name
=
_
(
'Comment'
))
def
__unicode__
(
self
):
def
__unicode__
(
self
):
return
self
.
name
return
self
.
name
...
@@ -156,7 +171,8 @@ class SystemUser(models.Model):
...
@@ -156,7 +171,8 @@ class SystemUser(models.Model):
return
assets
return
assets
def
get_assets
(
self
):
def
get_assets
(
self
):
assets
=
set
(
self
.
assets
.
all
())
|
self
.
get_assets_inherit_from_asset_groups
()
assets
=
set
(
self
.
assets
.
all
()
)
|
self
.
get_assets_inherit_from_asset_groups
()
return
list
(
assets
)
return
list
(
assets
)
@property
@property
...
@@ -199,4 +215,3 @@ class SystemUser(models.Model):
...
@@ -199,4 +215,3 @@ class SystemUser(models.Model):
except
IntegrityError
:
except
IntegrityError
:
print
(
'Error continue'
)
print
(
'Error continue'
)
continue
continue
apps/audits/models.py
View file @
69489979
...
@@ -2,7 +2,6 @@
...
@@ -2,7 +2,6 @@
#
#
from
__future__
import
unicode_literals
from
__future__
import
unicode_literals
import
base64
from
django.db
import
models
from
django.db
import
models
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils.translation
import
ugettext_lazy
as
_
...
@@ -20,9 +19,9 @@ class LoginLog(models.Model):
...
@@ -20,9 +19,9 @@ class LoginLog(models.Model):
login_type
=
models
.
CharField
(
choices
=
LOGIN_TYPE_CHOICE
,
max_length
=
2
,
login_type
=
models
.
CharField
(
choices
=
LOGIN_TYPE_CHOICE
,
max_length
=
2
,
verbose_name
=
_
(
'Login type'
))
verbose_name
=
_
(
'Login type'
))
login_ip
=
models
.
GenericIPAddressField
(
verbose_name
=
_
(
'Login ip'
))
login_ip
=
models
.
GenericIPAddressField
(
verbose_name
=
_
(
'Login ip'
))
login_city
=
models
.
CharField
(
max_length
=
100
,
blank
=
True
,
null
=
True
,
login_city
=
models
.
CharField
(
max_length
=
254
,
blank
=
True
,
null
=
True
,
verbose_name
=
_
(
'Login city'
))
verbose_name
=
_
(
'Login city'
))
user_agent
=
models
.
CharField
(
max_length
=
100
,
blank
=
True
,
null
=
True
,
user_agent
=
models
.
CharField
(
max_length
=
254
,
blank
=
True
,
null
=
True
,
verbose_name
=
_
(
'User agent'
))
verbose_name
=
_
(
'User agent'
))
date_login
=
models
.
DateTimeField
(
auto_now_add
=
True
,
date_login
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
_
(
'Date login'
))
verbose_name
=
_
(
'Date login'
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment