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
8918da48
Unverified
Commit
8918da48
authored
Jul 08, 2019
by
老广
Committed by
GitHub
Jul 08, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2904 from jumpserver/dev
Dev
parents
52d52861
f3b5823c
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
413 additions
and
275 deletions
+413
-275
user.py
apps/assets/forms/user.py
+2
-56
base.py
apps/assets/models/base.py
+11
-0
admin_user.py
apps/assets/serializers/admin_user.py
+2
-2
asset_user.py
apps/assets/serializers/asset_user.py
+2
-10
base.py
apps/assets/serializers/base.py
+35
-1
system_user.py
apps/assets/serializers/system_user.py
+61
-4
_system_user.html
apps/assets/templates/assets/_system_user.html
+25
-0
admin_user_assets.html
apps/assets/templates/assets/admin_user_assets.html
+1
-1
admin_user_create_update.html
apps/assets/templates/assets/admin_user_create_update.html
+33
-3
system_user_update.html
apps/assets/templates/assets/system_user_update.html
+6
-0
admin_user.py
apps/assets/views/admin_user.py
+3
-1
django.mo
apps/locale/zh/LC_MESSAGES/django.mo
+0
-0
django.po
apps/locale/zh/LC_MESSAGES/django.po
+207
-192
adhoc.py
apps/ops/models/adhoc.py
+1
-1
command_execution_create.html
apps/ops/templates/ops/command_execution_create.html
+3
-1
asset_permission.py
apps/perms/utils/asset_permission.py
+2
-2
jumpserver.js
apps/static/js/jumpserver.js
+18
-0
session_list.html
apps/terminal/templates/terminal/session_list.html
+1
-1
No files found.
apps/assets/forms/user.py
View file @
8918da48
...
@@ -65,17 +65,7 @@ class PasswordAndKeyAuthForm(forms.ModelForm):
...
@@ -65,17 +65,7 @@ class PasswordAndKeyAuthForm(forms.ModelForm):
class
AdminUserForm
(
PasswordAndKeyAuthForm
):
class
AdminUserForm
(
PasswordAndKeyAuthForm
):
def
save
(
self
,
commit
=
True
):
def
save
(
self
,
commit
=
True
):
# Because we define custom field, so we need rewrite :method: `save`
raise
forms
.
ValidationError
(
"Use api to save"
)
admin_user
=
super
()
.
save
(
commit
=
commit
)
password
=
self
.
cleaned_data
.
get
(
'password'
,
''
)
or
None
private_key
,
public_key
=
super
()
.
gen_keys
()
admin_user
.
set_auth
(
password
=
password
,
public_key
=
public_key
,
private_key
=
private_key
)
return
admin_user
def
clean
(
self
):
super
()
.
clean
()
if
not
self
.
instance
:
super
()
.
validate_password_key
()
class
Meta
:
class
Meta
:
model
=
AdminUser
model
=
AdminUser
...
@@ -91,51 +81,7 @@ class SystemUserForm(OrgModelForm, PasswordAndKeyAuthForm):
...
@@ -91,51 +81,7 @@ class SystemUserForm(OrgModelForm, PasswordAndKeyAuthForm):
auto_generate_key
=
forms
.
BooleanField
(
initial
=
True
,
required
=
False
)
auto_generate_key
=
forms
.
BooleanField
(
initial
=
True
,
required
=
False
)
def
save
(
self
,
commit
=
True
):
def
save
(
self
,
commit
=
True
):
# Because we define custom field, so we need rewrite :method: `save`
raise
forms
.
ValidationError
(
"Use api to save"
)
system_user
=
super
()
.
save
()
password
=
self
.
cleaned_data
.
get
(
'password'
,
''
)
or
None
login_mode
=
self
.
cleaned_data
.
get
(
'login_mode'
,
''
)
or
None
protocol
=
self
.
cleaned_data
.
get
(
'protocol'
)
or
None
auto_generate_key
=
self
.
cleaned_data
.
get
(
'auto_generate_key'
,
False
)
private_key
,
public_key
=
super
()
.
gen_keys
()
if
login_mode
==
SystemUser
.
LOGIN_MANUAL
or
\
protocol
in
[
SystemUser
.
PROTOCOL_TELNET
,
SystemUser
.
PROTOCOL_VNC
]:
system_user
.
auto_push
=
0
system_user
.
save
()
auto_generate_key
=
False
if
auto_generate_key
:
logger
.
info
(
'Auto generate key and set system user auth'
)
if
protocol
==
SystemUser
.
PROTOCOL_SSH
:
system_user
.
auto_gen_auth
()
elif
protocol
==
SystemUser
.
PROTOCOL_RDP
:
system_user
.
auto_gen_auth_password
()
else
:
system_user
.
set_auth
(
password
=
password
,
private_key
=
private_key
,
public_key
=
public_key
)
return
system_user
def
clean
(
self
):
super
()
.
clean
()
auto_generate
=
self
.
cleaned_data
.
get
(
'auto_generate_key'
)
if
not
self
.
instance
and
not
auto_generate
:
super
()
.
validate_password_key
()
def
clean_username
(
self
):
username
=
self
.
data
.
get
(
'username'
)
login_mode
=
self
.
data
.
get
(
'login_mode'
)
protocol
=
self
.
data
.
get
(
'protocol'
)
if
username
:
return
username
if
login_mode
==
SystemUser
.
LOGIN_AUTO
and
\
protocol
!=
SystemUser
.
PROTOCOL_VNC
:
msg
=
_
(
'* Automatic login mode must fill in the username.'
)
raise
forms
.
ValidationError
(
msg
)
return
username
class
Meta
:
class
Meta
:
model
=
SystemUser
model
=
SystemUser
...
...
apps/assets/models/base.py
View file @
8918da48
...
@@ -197,6 +197,17 @@ class AssetUser(OrgModelMixin):
...
@@ -197,6 +197,17 @@ class AssetUser(OrgModelMixin):
self
.
public_key
=
''
self
.
public_key
=
''
self
.
save
()
self
.
save
()
@staticmethod
def
gen_password
():
return
str
(
uuid
.
uuid4
())
@staticmethod
def
gen_key
(
username
):
private_key
,
public_key
=
ssh_key_gen
(
username
=
username
)
return
private_key
,
public_key
def
auto_gen_auth
(
self
):
def
auto_gen_auth
(
self
):
password
=
str
(
uuid
.
uuid4
())
password
=
str
(
uuid
.
uuid4
())
private_key
,
public_key
=
ssh_key_gen
(
private_key
,
public_key
=
ssh_key_gen
(
...
...
apps/assets/serializers/admin_user.py
View file @
8918da48
...
@@ -8,10 +8,10 @@ from common.serializers import AdaptedBulkListSerializer
...
@@ -8,10 +8,10 @@ from common.serializers import AdaptedBulkListSerializer
from
..models
import
Node
,
AdminUser
from
..models
import
Node
,
AdminUser
from
orgs.mixins
import
BulkOrgResourceModelSerializer
from
orgs.mixins
import
BulkOrgResourceModelSerializer
from
.base
import
AuthSerializer
from
.base
import
AuthSerializer
,
AuthSerializerMixin
class
AdminUserSerializer
(
BulkOrgResourceModelSerializer
):
class
AdminUserSerializer
(
AuthSerializerMixin
,
BulkOrgResourceModelSerializer
):
"""
"""
管理用户
管理用户
"""
"""
...
...
apps/assets/serializers/asset_user.py
View file @
8918da48
...
@@ -4,12 +4,11 @@
...
@@ -4,12 +4,11 @@
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
common.utils
import
validate_ssh_private_key
from
common.serializers
import
AdaptedBulkListSerializer
from
common.serializers
import
AdaptedBulkListSerializer
from
orgs.mixins
import
BulkOrgResourceModelSerializer
from
orgs.mixins
import
BulkOrgResourceModelSerializer
from
..models
import
AuthBook
,
Asset
from
..models
import
AuthBook
,
Asset
from
..backends
import
AssetUserManager
from
..backends
import
AssetUserManager
from
.base
import
ConnectivitySerializer
from
.base
import
ConnectivitySerializer
,
AuthSerializerMixin
__all__
=
[
__all__
=
[
...
@@ -24,7 +23,7 @@ class BasicAssetSerializer(serializers.ModelSerializer):
...
@@ -24,7 +23,7 @@ class BasicAssetSerializer(serializers.ModelSerializer):
fields
=
[
'hostname'
,
'ip'
]
fields
=
[
'hostname'
,
'ip'
]
class
AssetUserSerializer
(
BulkOrgResourceModelSerializer
):
class
AssetUserSerializer
(
AuthSerializerMixin
,
BulkOrgResourceModelSerializer
):
hostname
=
serializers
.
CharField
(
read_only
=
True
,
label
=
_
(
"Hostname"
))
hostname
=
serializers
.
CharField
(
read_only
=
True
,
label
=
_
(
"Hostname"
))
ip
=
serializers
.
CharField
(
read_only
=
True
,
label
=
_
(
"IP"
))
ip
=
serializers
.
CharField
(
read_only
=
True
,
label
=
_
(
"IP"
))
connectivity
=
ConnectivitySerializer
(
read_only
=
True
,
label
=
_
(
"Connectivity"
))
connectivity
=
ConnectivitySerializer
(
read_only
=
True
,
label
=
_
(
"Connectivity"
))
...
@@ -50,13 +49,6 @@ class AssetUserSerializer(BulkOrgResourceModelSerializer):
...
@@ -50,13 +49,6 @@ class AssetUserSerializer(BulkOrgResourceModelSerializer):
'public_key'
:
{
'write_only'
:
True
},
'public_key'
:
{
'write_only'
:
True
},
}
}
def
validate_private_key
(
self
,
key
):
password
=
self
.
initial_data
.
get
(
"password"
)
valid
=
validate_ssh_private_key
(
key
,
password
)
if
not
valid
:
raise
serializers
.
ValidationError
(
_
(
"private key invalid"
))
return
key
def
create
(
self
,
validated_data
):
def
create
(
self
,
validated_data
):
if
not
validated_data
.
get
(
"name"
)
and
validated_data
.
get
(
"username"
):
if
not
validated_data
.
get
(
"name"
)
and
validated_data
.
get
(
"username"
):
validated_data
[
"name"
]
=
validated_data
[
"username"
]
validated_data
[
"name"
]
=
validated_data
[
"username"
]
...
...
apps/assets/serializers/base.py
View file @
8918da48
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
#
#
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
common.utils
import
ssh_pubkey_gen
from
common.utils
import
ssh_pubkey_gen
,
validate_ssh_private_key
class
AuthSerializer
(
serializers
.
ModelSerializer
):
class
AuthSerializer
(
serializers
.
ModelSerializer
):
...
@@ -29,3 +29,37 @@ class AuthSerializer(serializers.ModelSerializer):
...
@@ -29,3 +29,37 @@ class AuthSerializer(serializers.ModelSerializer):
class
ConnectivitySerializer
(
serializers
.
Serializer
):
class
ConnectivitySerializer
(
serializers
.
Serializer
):
status
=
serializers
.
IntegerField
()
status
=
serializers
.
IntegerField
()
datetime
=
serializers
.
DateTimeField
()
datetime
=
serializers
.
DateTimeField
()
class
AuthSerializerMixin
:
def
validate_password
(
self
,
password
):
return
password
def
validate_private_key
(
self
,
private_key
):
if
not
private_key
:
return
password
=
self
.
initial_data
.
get
(
"password"
)
valid
=
validate_ssh_private_key
(
private_key
,
password
)
if
not
valid
:
raise
serializers
.
ValidationError
(
_
(
"private key invalid"
))
return
private_key
def
validate_public_key
(
self
,
public_key
):
return
public_key
@staticmethod
def
clean_auth_fields
(
validated_data
):
for
field
in
(
'password'
,
'private_key'
,
'public_key'
):
value
=
validated_data
.
get
(
field
)
if
not
value
:
validated_data
.
pop
(
field
,
None
)
# print(validated_data)
# raise serializers.ValidationError(">>>>>>")
def
create
(
self
,
validated_data
):
self
.
clean_auth_fields
(
validated_data
)
return
super
()
.
create
(
validated_data
)
def
update
(
self
,
instance
,
validated_data
):
self
.
clean_auth_fields
(
validated_data
)
return
super
()
.
update
(
instance
,
validated_data
)
apps/assets/serializers/system_user.py
View file @
8918da48
...
@@ -5,13 +5,14 @@ from django.utils.translation import ugettext_lazy as _
...
@@ -5,13 +5,14 @@ from django.utils.translation import ugettext_lazy as _
from
common.serializers
import
AdaptedBulkListSerializer
from
common.serializers
import
AdaptedBulkListSerializer
from
orgs.mixins
import
BulkOrgResourceModelSerializer
from
orgs.mixins
import
BulkOrgResourceModelSerializer
from
..models
import
SystemUser
from
..models
import
SystemUser
from
.base
import
AuthSerializer
from
.base
import
AuthSerializer
,
AuthSerializerMixin
class
SystemUserSerializer
(
BulkOrgResourceModelSerializer
):
class
SystemUserSerializer
(
AuthSerializerMixin
,
BulkOrgResourceModelSerializer
):
"""
"""
系统用户
系统用户
"""
"""
auto_generate_key
=
serializers
.
BooleanField
(
initial
=
True
,
required
=
False
,
write_only
=
True
)
class
Meta
:
class
Meta
:
model
=
SystemUser
model
=
SystemUser
...
@@ -20,7 +21,7 @@ class SystemUserSerializer(BulkOrgResourceModelSerializer):
...
@@ -20,7 +21,7 @@ class SystemUserSerializer(BulkOrgResourceModelSerializer):
'id'
,
'name'
,
'username'
,
'password'
,
'public_key'
,
'private_key'
,
'id'
,
'name'
,
'username'
,
'password'
,
'public_key'
,
'private_key'
,
'login_mode'
,
'login_mode_display'
,
'priority'
,
'protocol'
,
'login_mode'
,
'login_mode_display'
,
'priority'
,
'protocol'
,
'auto_push'
,
'cmd_filters'
,
'sudo'
,
'shell'
,
'comment'
,
'nodes'
,
'auto_push'
,
'cmd_filters'
,
'sudo'
,
'shell'
,
'comment'
,
'nodes'
,
'assets_amount'
,
'connectivity_amount'
'assets_amount'
,
'connectivity_amount'
,
'auto_generate_key'
]
]
extra_kwargs
=
{
extra_kwargs
=
{
'password'
:
{
"write_only"
:
True
},
'password'
:
{
"write_only"
:
True
},
...
@@ -32,6 +33,63 @@ class SystemUserSerializer(BulkOrgResourceModelSerializer):
...
@@ -32,6 +33,63 @@ class SystemUserSerializer(BulkOrgResourceModelSerializer):
'created_by'
:
{
'read_only'
:
True
},
'created_by'
:
{
'read_only'
:
True
},
}
}
def
validate_auto_push
(
self
,
value
):
login_mode
=
self
.
initial_data
.
get
(
"login_mode"
)
protocol
=
self
.
initial_data
.
get
(
"protocol"
)
if
login_mode
==
SystemUser
.
LOGIN_MANUAL
or
\
protocol
in
[
SystemUser
.
PROTOCOL_TELNET
,
SystemUser
.
PROTOCOL_VNC
]:
value
=
False
return
value
def
validate_auto_generate_key
(
self
,
value
):
login_mode
=
self
.
initial_data
.
get
(
"login_mode"
)
protocol
=
self
.
initial_data
.
get
(
"protocol"
)
if
self
.
context
[
"request"
]
.
method
.
lower
()
!=
"post"
:
value
=
False
elif
self
.
instance
:
value
=
False
elif
login_mode
==
SystemUser
.
LOGIN_MANUAL
:
value
=
False
elif
protocol
in
[
SystemUser
.
PROTOCOL_TELNET
,
SystemUser
.
PROTOCOL_VNC
]:
value
=
False
return
value
def
validate_username
(
self
,
username
):
if
username
:
return
username
login_mode
=
self
.
validated_data
.
get
(
"login_mode"
)
protocol
=
self
.
validated_data
.
get
(
"protocol"
)
if
login_mode
==
SystemUser
.
LOGIN_AUTO
and
\
protocol
!=
SystemUser
.
PROTOCOL_VNC
:
msg
=
_
(
'* Automatic login mode must fill in the username.'
)
raise
serializers
.
ValidationError
(
msg
)
return
username
def
validate_password
(
self
,
password
):
super
()
.
validate_password
(
password
)
auto_gen_key
=
self
.
initial_data
.
get
(
"auto_generate_key"
,
False
)
private_key
=
self
.
initial_data
.
get
(
"private_key"
)
if
not
self
.
instance
and
not
auto_gen_key
and
not
password
and
not
private_key
:
raise
serializers
.
ValidationError
(
_
(
"Password or private key required"
))
return
password
def
validate
(
self
,
attrs
):
username
=
attrs
.
get
(
"username"
,
"manual"
)
protocol
=
attrs
.
get
(
"protocol"
)
auto_gen_key
=
attrs
.
get
(
"auto_generate_key"
,
False
)
if
auto_gen_key
:
password
=
SystemUser
.
gen_password
()
attrs
[
"password"
]
=
password
if
protocol
==
SystemUser
.
PROTOCOL_SSH
:
private_key
,
public_key
=
SystemUser
.
gen_key
(
username
)
attrs
[
"private_key"
]
=
private_key
attrs
[
"public_key"
]
=
public_key
attrs
.
pop
(
"auto_generate_key"
,
None
)
return
attrs
@classmethod
@classmethod
def
setup_eager_loading
(
cls
,
queryset
):
def
setup_eager_loading
(
cls
,
queryset
):
""" Perform necessary eager loading of data. """
""" Perform necessary eager loading of data. """
...
@@ -52,7 +110,6 @@ class SystemUserAuthSerializer(AuthSerializer):
...
@@ -52,7 +110,6 @@ class SystemUserAuthSerializer(AuthSerializer):
]
]
class
SystemUserSimpleSerializer
(
serializers
.
ModelSerializer
):
class
SystemUserSimpleSerializer
(
serializers
.
ModelSerializer
):
"""
"""
系统用户最基本信息的数据结构
系统用户最基本信息的数据结构
...
...
apps/assets/templates/assets/_system_user.html
View file @
8918da48
...
@@ -218,6 +218,31 @@ $(document).ready(function () {
...
@@ -218,6 +218,31 @@ $(document).ready(function () {
})
})
.
on
(
'change'
,
protocol_id
,
function
(){
.
on
(
'change'
,
protocol_id
,
function
(){
fieldDisplay
();
fieldDisplay
();
}).
on
(
"submit"
,
"form"
,
function
(
evt
)
{
evt
.
preventDefault
();
{
%
block
formUrl
%
}
var
the_url
=
'{% url '
api
-
assets
:
system
-
user
-
list
' %}'
;
var
redirect_to
=
'{% url "assets:system-user-list" %}'
;
var
method
=
"POST"
;
{
%
endblock
%
}
var
form
=
$
(
"form"
);
var
data
=
form
.
serializeObject
();
objectAttrsIsBool
(
data
,
[
"auto_generate_key"
,
"auto_push"
]);
data
[
"private_key"
]
=
$
(
"#id_private_key_file"
).
data
(
'file'
);
var
props
=
{
url
:
the_url
,
data
:
data
,
method
:
method
,
form
:
form
,
redirect_to
:
redirect_to
};
formSubmit
(
props
);
}).
on
(
'change'
,
'#id_private_key_file'
,
function
()
{
readFile
(
$
(
this
)).
on
(
"onload"
,
function
(
evt
,
data
)
{
$
(
this
).
attr
(
"data-file"
,
data
)
})
})
})
</script>
</script>
...
...
apps/assets/templates/assets/admin_user_assets.html
View file @
8918da48
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
</ul>
</ul>
</div>
</div>
<div
class=
"tab-content"
>
<div
class=
"tab-content"
>
<div
class=
"col-sm-
9
"
style=
"padding-left: 0;"
>
<div
class=
"col-sm-
8
"
style=
"padding-left: 0;"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox float-e-margins"
>
<div
class=
"ibox-title"
>
<div
class=
"ibox-title"
>
<span
style=
"float: left"
>
{% trans 'Asset list of ' %}
<b>
{{ admin_user.name }}
</b></span>
<span
style=
"float: left"
>
{% trans 'Asset list of ' %}
<b>
{{ admin_user.name }}
</b></span>
...
...
apps/assets/templates/assets/admin_user_create_update.html
View file @
8918da48
...
@@ -54,9 +54,38 @@
...
@@ -54,9 +54,38 @@
</div>
</div>
{% endblock %}
{% endblock %}
{% block custom_foot_js %}
{% block custom_foot_js %}
<script>
<script>
$
(
document
).
ready
(
function
()
{
$
(
document
).
ready
(
function
()
{
$
(
'.select2'
).
select2
();
$
(
'.select2'
).
select2
();
})
.
on
(
"submit"
,
"form"
,
function
(
evt
)
{
evt
.
preventDefault
();
var
the_url
=
'{% url '
api
-
assets
:
admin
-
user
-
list
' %}'
;
var
redirect_to
=
'{% url "assets:admin-user-list" %}'
;
var
method
=
"POST"
;
{
%
if
type
==
"update"
%
}
the_url
=
'{% url '
api
-
assets
:
admin
-
user
-
detail
' pk=object.id %}'
;
redirect_to
=
'{% url "assets:admin-user-list" %}'
;
method
=
"PUT"
;
{
%
endif
%
}
var
form
=
$
(
"form"
);
var
data
=
form
.
serializeObject
();
data
[
"private_key"
]
=
$
(
"#id_private_key_file"
).
data
(
'file'
);
var
props
=
{
url
:
the_url
,
data
:
data
,
method
:
method
,
form
:
form
,
redirect_to
:
redirect_to
};
formSubmit
(
props
);
})
.
on
(
'change'
,
'#id_private_key_file'
,
function
()
{
readFile
(
$
(
this
)).
on
(
"onload"
,
function
(
evt
,
data
)
{
$
(
this
).
attr
(
"data-file"
,
data
)
})
})
</script>
})
</script>
{% endblock %}
{% endblock %}
\ No newline at end of file
apps/assets/templates/assets/system_user_update.html
View file @
8918da48
...
@@ -14,3 +14,9 @@
...
@@ -14,3 +14,9 @@
</div>
</div>
{% endblock %}
{% endblock %}
{% block formUrl %}
var the_url = '{% url 'api-assets:system-user-detail' pk=object.pk %}';
var redirect_to = '{% url "assets:system-user-list" %}';
var method = "PUT";
{% endblock %}
apps/assets/views/admin_user.py
View file @
8918da48
...
@@ -47,7 +47,8 @@ class AdminUserCreateView(PermissionsMixin,
...
@@ -47,7 +47,8 @@ class AdminUserCreateView(PermissionsMixin,
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
'app'
:
_
(
'Assets'
),
'app'
:
_
(
'Assets'
),
'action'
:
_
(
'Create admin user'
)
'action'
:
_
(
'Create admin user'
),
"type"
:
"create"
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
...
@@ -65,6 +66,7 @@ class AdminUserUpdateView(PermissionsMixin, SuccessMessageMixin, UpdateView):
...
@@ -65,6 +66,7 @@ class AdminUserUpdateView(PermissionsMixin, SuccessMessageMixin, UpdateView):
context
=
{
context
=
{
'app'
:
_
(
'Assets'
),
'app'
:
_
(
'Assets'
),
'action'
:
_
(
'Update admin user'
),
'action'
:
_
(
'Update admin user'
),
"type"
:
"update"
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
...
...
apps/locale/zh/LC_MESSAGES/django.mo
View file @
8918da48
No preview for this file type
apps/locale/zh/LC_MESSAGES/django.po
View file @
8918da48
...
@@ -8,7 +8,7 @@ msgid ""
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n"
"Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-0
4 17:13
+0800\n"
"POT-Creation-Date: 2019-07-0
8 15:32
+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
...
@@ -71,14 +71,14 @@ msgstr "目标地址"
...
@@ -71,14 +71,14 @@ msgstr "目标地址"
msgid "Operating parameter"
msgid "Operating parameter"
msgstr "运行参数"
msgstr "运行参数"
#: applications/forms/remote_app.py:10
6
applications/models/remote_app.py:23
#: applications/forms/remote_app.py:10
4
applications/models/remote_app.py:23
#: applications/templates/applications/remote_app_detail.html:57
#: applications/templates/applications/remote_app_detail.html:57
#: applications/templates/applications/remote_app_list.html:22
#: applications/templates/applications/remote_app_list.html:22
#: applications/templates/applications/user_remote_app_list.html:18
#: applications/templates/applications/user_remote_app_list.html:18
#: assets/forms/domain.py:15 assets/forms/label.py:13
#: assets/forms/domain.py:15 assets/forms/label.py:13
#: assets/models/asset.py:2
92
assets/models/authbook.py:24
#: assets/models/asset.py:2
86
assets/models/authbook.py:24
#: assets/serializers/admin_user.py:35 assets/serializers/asset_user.py:8
9
#: assets/serializers/admin_user.py:35 assets/serializers/asset_user.py:8
1
#: assets/serializers/system_user.py:
29
#: assets/serializers/system_user.py:
30
#: assets/templates/assets/admin_user_list.html:49
#: assets/templates/assets/admin_user_list.html:49
#: assets/templates/assets/domain_detail.html:60
#: assets/templates/assets/domain_detail.html:60
#: assets/templates/assets/domain_list.html:26
#: assets/templates/assets/domain_list.html:26
...
@@ -86,7 +86,7 @@ msgstr "运行参数"
...
@@ -86,7 +86,7 @@ msgstr "运行参数"
#: assets/templates/assets/system_user_list.html:55 audits/models.py:19
#: assets/templates/assets/system_user_list.html:55 audits/models.py:19
#: audits/templates/audits/ftp_log_list.html:41
#: audits/templates/audits/ftp_log_list.html:41
#: audits/templates/audits/ftp_log_list.html:71
#: audits/templates/audits/ftp_log_list.html:71
#: perms/forms/asset_permission.py:68 perms/models/asset_permission.py:
68
#: perms/forms/asset_permission.py:68 perms/models/asset_permission.py:
76
#: perms/templates/perms/asset_permission_create_update.html:45
#: perms/templates/perms/asset_permission_create_update.html:45
#: perms/templates/perms/asset_permission_list.html:48
#: perms/templates/perms/asset_permission_list.html:48
#: perms/templates/perms/asset_permission_list.html:117
#: perms/templates/perms/asset_permission_list.html:117
...
@@ -95,7 +95,7 @@ msgstr "运行参数"
...
@@ -95,7 +95,7 @@ msgstr "运行参数"
#: terminal/templates/terminal/command_list.html:66
#: terminal/templates/terminal/command_list.html:66
#: terminal/templates/terminal/session_list.html:28
#: terminal/templates/terminal/session_list.html:28
#: terminal/templates/terminal/session_list.html:72
#: terminal/templates/terminal/session_list.html:72
#: xpack/plugins/change_auth_plan/forms.py:11
5
#: xpack/plugins/change_auth_plan/forms.py:11
4
#: xpack/plugins/change_auth_plan/models.py:413
#: xpack/plugins/change_auth_plan/models.py:413
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:46
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:46
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:54
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:54
...
@@ -108,15 +108,15 @@ msgstr "运行参数"
...
@@ -108,15 +108,15 @@ msgstr "运行参数"
msgid "Asset"
msgid "Asset"
msgstr "资产"
msgstr "资产"
#: applications/forms/remote_app.py:10
9
applications/models/remote_app.py:27
#: applications/forms/remote_app.py:10
7
applications/models/remote_app.py:27
#: applications/templates/applications/remote_app_detail.html:61
#: applications/templates/applications/remote_app_detail.html:61
#: applications/templates/applications/remote_app_list.html:23
#: applications/templates/applications/remote_app_list.html:23
#: applications/templates/applications/user_remote_app_list.html:19
#: applications/templates/applications/user_remote_app_list.html:19
#: assets/models/user.py:160 assets/templates/assets/user_asset_list.html:172
#: assets/models/user.py:160 assets/templates/assets/user_asset_list.html:172
#: audits/models.py:20 audits/templates/audits/ftp_log_list.html:49
#: audits/models.py:20 audits/templates/audits/ftp_log_list.html:49
#: audits/templates/audits/ftp_log_list.html:72
#: audits/templates/audits/ftp_log_list.html:72
#: perms/forms/asset_permission.py:74 perms/models/asset_permission.py:7
0
#: perms/forms/asset_permission.py:74 perms/models/asset_permission.py:7
8
#: perms/models/asset_permission.py:
95
#: perms/models/asset_permission.py:
103
#: perms/templates/perms/asset_permission_detail.html:140
#: perms/templates/perms/asset_permission_detail.html:140
#: perms/templates/perms/asset_permission_list.html:50
#: perms/templates/perms/asset_permission_list.html:50
#: perms/templates/perms/asset_permission_list.html:71
#: perms/templates/perms/asset_permission_list.html:71
...
@@ -134,11 +134,11 @@ msgstr "系统用户"
...
@@ -134,11 +134,11 @@ msgstr "系统用户"
#: applications/templates/applications/remote_app_detail.html:53
#: applications/templates/applications/remote_app_detail.html:53
#: applications/templates/applications/remote_app_list.html:20
#: applications/templates/applications/remote_app_list.html:20
#: applications/templates/applications/user_remote_app_list.html:16
#: applications/templates/applications/user_remote_app_list.html:16
#: assets/forms/
domain.py:73 assets/forms/user.py:84 assets/forms/user.py:148
#: assets/forms/
asset.py:20 assets/forms/domain.py:73 assets/forms/user.py:74
#: assets/
models/asset.py:64 assets/models/base.py:2
8
#: assets/
forms/user.py:94 assets/models/base.py:28 assets/models/cluster.py:1
8
#: assets/models/c
luster.py:18 assets/models/cmd_filter
.py:20
#: assets/models/c
md_filter.py:20 assets/models/domain
.py:20
#: assets/models/
domain.py:20 assets/models/group.py:20
#: assets/models/
group.py:20 assets/models/label.py:18
#: assets/
models/label.py:18 assets/
templates/assets/admin_user_detail.html:56
#: assets/templates/assets/admin_user_detail.html:56
#: assets/templates/assets/admin_user_list.html:47
#: assets/templates/assets/admin_user_list.html:47
#: assets/templates/assets/cmd_filter_detail.html:61
#: assets/templates/assets/cmd_filter_detail.html:61
#: assets/templates/assets/cmd_filter_list.html:24
#: assets/templates/assets/cmd_filter_list.html:24
...
@@ -173,7 +173,7 @@ msgstr "系统用户"
...
@@ -173,7 +173,7 @@ msgstr "系统用户"
#: users/templates/users/user_list.html:35
#: users/templates/users/user_list.html:35
#: users/templates/users/user_profile.html:51
#: users/templates/users/user_profile.html:51
#: users/templates/users/user_pubkey_update.html:53
#: users/templates/users/user_pubkey_update.html:53
#: xpack/plugins/change_auth_plan/forms.py:9
8
#: xpack/plugins/change_auth_plan/forms.py:9
7
#: xpack/plugins/change_auth_plan/models.py:61
#: xpack/plugins/change_auth_plan/models.py:61
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:61
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:61
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:12
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:12
...
@@ -205,16 +205,16 @@ msgstr "参数"
...
@@ -205,16 +205,16 @@ msgstr "参数"
#: applications/models/remote_app.py:43
#: applications/models/remote_app.py:43
#: applications/templates/applications/remote_app_detail.html:77
#: applications/templates/applications/remote_app_detail.html:77
#: assets/models/asset.py:1
24
assets/models/base.py:36
#: assets/models/asset.py:1
51
assets/models/base.py:36
#: assets/models/cluster.py:28 assets/models/cmd_filter.py:25
#: assets/models/cluster.py:28 assets/models/cmd_filter.py:25
#: assets/models/cmd_filter.py:58 assets/models/group.py:21
#: assets/models/cmd_filter.py:58 assets/models/group.py:21
#: assets/templates/assets/admin_user_detail.html:68
#: assets/templates/assets/admin_user_detail.html:68
#: assets/templates/assets/asset_detail.html:12
8
#: assets/templates/assets/asset_detail.html:12
4
#: assets/templates/assets/cmd_filter_detail.html:77
#: assets/templates/assets/cmd_filter_detail.html:77
#: assets/templates/assets/domain_detail.html:72
#: assets/templates/assets/domain_detail.html:72
#: assets/templates/assets/system_user_detail.html:100
#: assets/templates/assets/system_user_detail.html:100
#: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:14
#: ops/templates/ops/adhoc_detail.html:86 orgs/models.py:14
#: perms/models/asset_permission.py:
98
perms/models/base.py:41
#: perms/models/asset_permission.py:
106
perms/models/base.py:41
#: perms/templates/perms/asset_permission_detail.html:98
#: perms/templates/perms/asset_permission_detail.html:98
#: perms/templates/perms/remote_app_permission_detail.html:90
#: perms/templates/perms/remote_app_permission_detail.html:90
#: users/models/user.py:105 users/serializers/v1.py:116
#: users/models/user.py:105 users/serializers/v1.py:116
...
@@ -229,7 +229,7 @@ msgstr "创建者"
...
@@ -229,7 +229,7 @@ msgstr "创建者"
# msgstr "创建者"
# msgstr "创建者"
#: applications/models/remote_app.py:46
#: applications/models/remote_app.py:46
#: applications/templates/applications/remote_app_detail.html:73
#: applications/templates/applications/remote_app_detail.html:73
#: assets/models/asset.py:1
25
assets/models/base.py:34
#: assets/models/asset.py:1
52
assets/models/base.py:34
#: assets/models/cluster.py:26 assets/models/domain.py:23
#: assets/models/cluster.py:26 assets/models/domain.py:23
#: assets/models/group.py:22 assets/models/label.py:25
#: assets/models/group.py:22 assets/models/label.py:25
#: assets/templates/assets/admin_user_detail.html:64
#: assets/templates/assets/admin_user_detail.html:64
...
@@ -237,7 +237,7 @@ msgstr "创建者"
...
@@ -237,7 +237,7 @@ msgstr "创建者"
#: assets/templates/assets/domain_detail.html:68
#: assets/templates/assets/domain_detail.html:68
#: assets/templates/assets/system_user_detail.html:96
#: assets/templates/assets/system_user_detail.html:96
#: ops/templates/ops/adhoc_detail.html:90 ops/templates/ops/task_detail.html:64
#: ops/templates/ops/adhoc_detail.html:90 ops/templates/ops/task_detail.html:64
#: orgs/models.py:15 perms/models/asset_permission.py:
99
#: orgs/models.py:15 perms/models/asset_permission.py:
107
#: perms/models/base.py:42
#: perms/models/base.py:42
#: perms/templates/perms/asset_permission_detail.html:94
#: perms/templates/perms/asset_permission_detail.html:94
#: perms/templates/perms/remote_app_permission_detail.html:86
#: perms/templates/perms/remote_app_permission_detail.html:86
...
@@ -257,13 +257,13 @@ msgstr "创建日期"
...
@@ -257,13 +257,13 @@ msgstr "创建日期"
#: applications/templates/applications/remote_app_detail.html:81
#: applications/templates/applications/remote_app_detail.html:81
#: applications/templates/applications/remote_app_list.html:24
#: applications/templates/applications/remote_app_list.html:24
#: applications/templates/applications/user_remote_app_list.html:20
#: applications/templates/applications/user_remote_app_list.html:20
#: assets/models/asset.py:1
26
assets/models/base.py:33
#: assets/models/asset.py:1
53
assets/models/base.py:33
#: assets/models/cluster.py:29 assets/models/cmd_filter.py:22
#: assets/models/cluster.py:29 assets/models/cmd_filter.py:22
#: assets/models/cmd_filter.py:55 assets/models/domain.py:21
#: assets/models/cmd_filter.py:55 assets/models/domain.py:21
#: assets/models/domain.py:53 assets/models/group.py:23
#: assets/models/domain.py:53 assets/models/group.py:23
#: assets/models/label.py:23 assets/templates/assets/admin_user_detail.html:72
#: assets/models/label.py:23 assets/templates/assets/admin_user_detail.html:72
#: assets/templates/assets/admin_user_list.html:53
#: assets/templates/assets/admin_user_list.html:53
#: assets/templates/assets/asset_detail.html:13
6
#: assets/templates/assets/asset_detail.html:13
2
#: assets/templates/assets/cmd_filter_detail.html:65
#: assets/templates/assets/cmd_filter_detail.html:65
#: assets/templates/assets/cmd_filter_list.html:27
#: assets/templates/assets/cmd_filter_list.html:27
#: assets/templates/assets/cmd_filter_rule_list.html:62
#: assets/templates/assets/cmd_filter_rule_list.html:62
...
@@ -273,7 +273,7 @@ msgstr "创建日期"
...
@@ -273,7 +273,7 @@ msgstr "创建日期"
#: assets/templates/assets/system_user_detail.html:104
#: assets/templates/assets/system_user_detail.html:104
#: assets/templates/assets/system_user_list.html:59
#: assets/templates/assets/system_user_list.html:59
#: assets/templates/assets/user_asset_list.html:175 ops/models/adhoc.py:43
#: assets/templates/assets/user_asset_list.html:175 ops/models/adhoc.py:43
#: orgs/models.py:16 perms/models/asset_permission.py:10
0
#: orgs/models.py:16 perms/models/asset_permission.py:10
8
#: perms/models/base.py:43
#: perms/models/base.py:43
#: perms/templates/perms/asset_permission_detail.html:102
#: perms/templates/perms/asset_permission_detail.html:102
#: perms/templates/perms/remote_app_permission_detail.html:94
#: perms/templates/perms/remote_app_permission_detail.html:94
...
@@ -550,7 +550,7 @@ msgstr "动作"
...
@@ -550,7 +550,7 @@ msgstr "动作"
#: applications/templates/applications/user_remote_app_list.html:57
#: applications/templates/applications/user_remote_app_list.html:57
#: assets/templates/assets/user_asset_list.html:100
#: assets/templates/assets/user_asset_list.html:100
#: perms/models/asset_permission.py:2
7
#: perms/models/asset_permission.py:2
8
msgid "Connect"
msgid "Connect"
msgstr "连接"
msgstr "连接"
...
@@ -612,29 +612,37 @@ msgid "Reachable"
...
@@ -612,29 +612,37 @@ msgid "Reachable"
msgstr "可连接"
msgstr "可连接"
#: assets/const.py:79 assets/models/utils.py:45 authentication/utils.py:9
#: assets/const.py:79 assets/models/utils.py:45 authentication/utils.py:9
#: xpack/plugins/license/models.py:7
8
#: xpack/plugins/license/models.py:7
9
msgid "Unknown"
msgid "Unknown"
msgstr "未知"
msgstr "未知"
#: assets/forms/asset.py:51 assets/models/asset.py:95 assets/models/user.py:107
#: assets/forms/asset.py:24 assets/models/asset.py:117
#: assets/templates/assets/asset_detail.html:194
#: assets/models/domain.py:50
#: assets/templates/assets/asset_detail.html:202
#: assets/templates/assets/domain_gateway_list.html:69
#: assets/templates/assets/user_asset_list.html:168
#: settings/templates/settings/replay_storage_create.html:59
msgid "Port"
msgstr "端口"
#: assets/forms/asset.py:45 assets/models/asset.py:122
#: assets/models/user.py:107 assets/templates/assets/asset_detail.html:190
#: assets/templates/assets/asset_detail.html:198
#: assets/templates/assets/system_user_assets.html:83
#: assets/templates/assets/system_user_assets.html:83
#: perms/models/asset_permission.py:
69
#: perms/models/asset_permission.py:
77
#: xpack/plugins/change_auth_plan/models.py:72
#: xpack/plugins/change_auth_plan/models.py:72
msgid "Nodes"
msgid "Nodes"
msgstr "节点"
msgstr "节点"
#: assets/forms/asset.py:
54 assets/forms/asset.py:89 assets/models/asset.py:99
#: assets/forms/asset.py:
48 assets/forms/asset.py:83 assets/models/asset.py:126
#: assets/models/cluster.py:19 assets/models/user.py:65
#: assets/models/cluster.py:19 assets/models/user.py:65
#: assets/templates/assets/asset_detail.html:
80
templates/_nav.html:24
#: assets/templates/assets/asset_detail.html:
76
templates/_nav.html:24
#: xpack/plugins/cloud/models.py:124
#: xpack/plugins/cloud/models.py:124
#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:65
#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:65
#: xpack/plugins/orgs/templates/orgs/org_list.html:18
#: xpack/plugins/orgs/templates/orgs/org_list.html:18
msgid "Admin user"
msgid "Admin user"
msgstr "管理用户"
msgstr "管理用户"
#: assets/forms/asset.py:5
7 assets/forms/asset.py:92 assets/forms/asset.py:131
#: assets/forms/asset.py:5
1 assets/forms/asset.py:86 assets/forms/asset.py:125
#: assets/templates/assets/asset_create.html:48
#: assets/templates/assets/asset_create.html:48
#: assets/templates/assets/asset_create.html:50
#: assets/templates/assets/asset_create.html:50
#: assets/templates/assets/asset_list.html:85
#: assets/templates/assets/asset_list.html:85
...
@@ -643,23 +651,23 @@ msgstr "管理用户"
...
@@ -643,23 +651,23 @@ msgstr "管理用户"
msgid "Label"
msgid "Label"
msgstr "标签"
msgstr "标签"
#: assets/forms/asset.py:
60 assets/forms/asset.py:95 assets/models/asset.py:94
#: assets/forms/asset.py:
54 assets/forms/asset.py:89 assets/models/asset.py:121
#: assets/models/domain.py:26 assets/models/domain.py:52
#: assets/models/domain.py:26 assets/models/domain.py:52
#: assets/templates/assets/asset_detail.html:8
4
#: assets/templates/assets/asset_detail.html:8
0
#: assets/templates/assets/user_asset_list.html:173
#: assets/templates/assets/user_asset_list.html:173
#: xpack/plugins/orgs/templates/orgs/org_list.html:17
#: xpack/plugins/orgs/templates/orgs/org_list.html:17
msgid "Domain"
msgid "Domain"
msgstr "网域"
msgstr "网域"
#: assets/forms/asset.py:
64 assets/forms/asset.py:86 assets/forms/asset.py:99
#: assets/forms/asset.py:
58 assets/forms/asset.py:80 assets/forms/asset.py:93
#: assets/forms/asset.py:1
34 assets/models/node.py:249
#: assets/forms/asset.py:1
28 assets/models/node.py:255
#: assets/templates/assets/asset_create.html:42
#: assets/templates/assets/asset_create.html:42
#: perms/forms/asset_permission.py:71 perms/forms/asset_permission.py:7
9
#: perms/forms/asset_permission.py:71 perms/forms/asset_permission.py:7
8
#: perms/models/asset_permission.py:
93
#: perms/models/asset_permission.py:
101
#: perms/templates/perms/asset_permission_list.html:49
#: perms/templates/perms/asset_permission_list.html:49
#: perms/templates/perms/asset_permission_list.html:70
#: perms/templates/perms/asset_permission_list.html:70
#: perms/templates/perms/asset_permission_list.html:120
#: perms/templates/perms/asset_permission_list.html:120
#: xpack/plugins/change_auth_plan/forms.py:11
6
#: xpack/plugins/change_auth_plan/forms.py:11
5
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:55
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_execution_list.html:55
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:15
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:15
#: xpack/plugins/cloud/models.py:123
#: xpack/plugins/cloud/models.py:123
...
@@ -668,7 +676,7 @@ msgstr "网域"
...
@@ -668,7 +676,7 @@ msgstr "网域"
msgid "Node"
msgid "Node"
msgstr "节点"
msgstr "节点"
#: assets/forms/asset.py:6
8 assets/forms/asset.py:103
#: assets/forms/asset.py:6
2 assets/forms/asset.py:97
msgid ""
msgid ""
"root or other NOPASSWD sudo privilege user existed in asset,If asset is "
"root or other NOPASSWD sudo privilege user existed in asset,If asset is "
"windows or other set any one, more see admin user left menu"
"windows or other set any one, more see admin user left menu"
...
@@ -676,19 +684,19 @@ msgstr ""
...
@@ -676,19 +684,19 @@ msgstr ""
"root或其他拥有NOPASSWD: ALL权限的用户, 如果是windows或其它硬件可以随意设置一"
"root或其他拥有NOPASSWD: ALL权限的用户, 如果是windows或其它硬件可以随意设置一"
"个, 更多信息查看左侧 `管理用户` 菜单"
"个, 更多信息查看左侧 `管理用户` 菜单"
#: assets/forms/asset.py:
71 assets/forms/asset.py:106
#: assets/forms/asset.py:
65 assets/forms/asset.py:100
msgid "Windows 2016 RDP protocol is different, If is window 2016, set it"
msgid "Windows 2016 RDP protocol is different, If is window 2016, set it"
msgstr "Windows 2016的RDP协议与之前不同,如果是请设置"
msgstr "Windows 2016的RDP协议与之前不同,如果是请设置"
#: assets/forms/asset.py:
72 assets/forms/asset.py:107
#: assets/forms/asset.py:
66 assets/forms/asset.py:101
msgid ""
msgid ""
"If your have some network not connect with each other, you can set domain"
"If your have some network not connect with each other, you can set domain"
msgstr "如果有多个的互相隔离的网络,设置资产属于的网域,使用网域网关跳转登录"
msgstr "如果有多个的互相隔离的网络,设置资产属于的网域,使用网域网关跳转登录"
#: assets/forms/asset.py:1
14 assets/forms/asset.py:118
#: assets/forms/asset.py:1
08 assets/forms/asset.py:112
#: assets/forms/domain.py:17 assets/forms/label.py:15
#: assets/forms/domain.py:17 assets/forms/label.py:15
#: perms/templates/perms/asset_permission_asset.html:88
#: perms/templates/perms/asset_permission_asset.html:88
#: xpack/plugins/change_auth_plan/forms.py:10
6
#: xpack/plugins/change_auth_plan/forms.py:10
5
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:84
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:84
msgid "Select assets"
msgid "Select assets"
msgstr "选择资产"
msgstr "选择资产"
...
@@ -705,7 +713,7 @@ msgstr "不能包含特殊字符"
...
@@ -705,7 +713,7 @@ msgstr "不能包含特殊字符"
msgid "SSH gateway support proxy SSH,RDP,VNC"
msgid "SSH gateway support proxy SSH,RDP,VNC"
msgstr "SSH网关,支持代理SSH,RDP和VNC"
msgstr "SSH网关,支持代理SSH,RDP和VNC"
#: assets/forms/domain.py:74 assets/forms/user.py:
85 assets/forms/user.py:149
#: assets/forms/domain.py:74 assets/forms/user.py:
75 assets/forms/user.py:95
#: assets/models/base.py:29
#: assets/models/base.py:29
#: assets/templates/assets/_asset_user_auth_update_modal.html:15
#: assets/templates/assets/_asset_user_auth_update_modal.html:15
#: assets/templates/assets/_asset_user_auth_view_modal.html:21
#: assets/templates/assets/_asset_user_auth_view_modal.html:21
...
@@ -726,7 +734,7 @@ msgstr "SSH网关,支持代理SSH,RDP和VNC"
...
@@ -726,7 +734,7 @@ msgstr "SSH网关,支持代理SSH,RDP和VNC"
#: users/templates/users/user_detail.html:67
#: users/templates/users/user_detail.html:67
#: users/templates/users/user_list.html:36
#: users/templates/users/user_list.html:36
#: users/templates/users/user_profile.html:47
#: users/templates/users/user_profile.html:47
#: xpack/plugins/change_auth_plan/forms.py:
100
#: xpack/plugins/change_auth_plan/forms.py:
99
#: xpack/plugins/change_auth_plan/models.py:63
#: xpack/plugins/change_auth_plan/models.py:63
#: xpack/plugins/change_auth_plan/models.py:409
#: xpack/plugins/change_auth_plan/models.py:409
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:65
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:65
...
@@ -741,7 +749,7 @@ msgid "Password or private key passphrase"
...
@@ -741,7 +749,7 @@ msgid "Password or private key passphrase"
msgstr "密码或密钥密码"
msgstr "密码或密钥密码"
#: assets/forms/user.py:26 assets/models/base.py:30
#: assets/forms/user.py:26 assets/models/base.py:30
#: assets/serializers/asset_user.py:
70
#: assets/serializers/asset_user.py:
62
#: assets/templates/assets/_asset_user_auth_update_modal.html:21
#: assets/templates/assets/_asset_user_auth_update_modal.html:21
#: assets/templates/assets/_asset_user_auth_view_modal.html:27
#: assets/templates/assets/_asset_user_auth_view_modal.html:27
#: authentication/forms.py:13
#: authentication/forms.py:13
...
@@ -759,7 +767,7 @@ msgstr "密码或密钥密码"
...
@@ -759,7 +767,7 @@ msgstr "密码或密钥密码"
msgid "Password"
msgid "Password"
msgstr "密码"
msgstr "密码"
#: assets/forms/user.py:29 assets/serializers/asset_user.py:7
8
#: assets/forms/user.py:29 assets/serializers/asset_user.py:7
0
#: assets/templates/assets/_asset_user_auth_update_modal.html:27
#: assets/templates/assets/_asset_user_auth_update_modal.html:27
#: users/models/user.py:91
#: users/models/user.py:91
msgid "Private key"
msgid "Private key"
...
@@ -773,21 +781,17 @@ msgstr "不合法的密钥,仅支持RSA/DSA格式的密钥"
...
@@ -773,21 +781,17 @@ msgstr "不合法的密钥,仅支持RSA/DSA格式的密钥"
msgid "Password and private key file must be input one"
msgid "Password and private key file must be input one"
msgstr "密码和私钥, 必须输入一个"
msgstr "密码和私钥, 必须输入一个"
#: assets/forms/user.py:136
#: assets/forms/user.py:97 assets/models/cmd_filter.py:31
msgid "* Automatic login mode must fill in the username."
msgstr "自动登录模式,必须填写用户名"
#: assets/forms/user.py:151 assets/models/cmd_filter.py:31
#: assets/models/user.py:115 assets/templates/assets/_system_user.html:66
#: assets/models/user.py:115 assets/templates/assets/_system_user.html:66
#: assets/templates/assets/system_user_detail.html:165
#: assets/templates/assets/system_user_detail.html:165
msgid "Command filter"
msgid "Command filter"
msgstr "命令过滤器"
msgstr "命令过滤器"
#: assets/forms/user.py:1
55
#: assets/forms/user.py:1
01
msgid "Auto push system user to asset"
msgid "Auto push system user to asset"
msgstr "自动推送系统用户到资产"
msgstr "自动推送系统用户到资产"
#: assets/forms/user.py:1
56
#: assets/forms/user.py:1
02
msgid ""
msgid ""
"1-100, High level will be using login asset as default, if user was granted "
"1-100, High level will be using login asset as default, if user was granted "
"more than 2 system user"
"more than 2 system user"
...
@@ -795,26 +799,18 @@ msgstr ""
...
@@ -795,26 +799,18 @@ msgstr ""
"1-100, 1最低优先级,100最高优先级。授权多个用户时,高优先级的系统用户将会作为"
"1-100, 1最低优先级,100最高优先级。授权多个用户时,高优先级的系统用户将会作为"
"默认登录用户"
"默认登录用户"
#: assets/forms/user.py:1
58
#: assets/forms/user.py:1
04
msgid ""
msgid ""
"If you choose manual login mode, you do not need to fill in the username and "
"If you choose manual login mode, you do not need to fill in the username and "
"password."
"password."
msgstr "如果选择手动登录模式,用户名和密码可以不填写"
msgstr "如果选择手动登录模式,用户名和密码可以不填写"
#: assets/forms/user.py:1
60
#: assets/forms/user.py:1
06
msgid "Use comma split multi command, ex: /bin/whoami,/bin/ifconfig"
msgid "Use comma split multi command, ex: /bin/whoami,/bin/ifconfig"
msgstr "使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig"
msgstr "使用逗号分隔多个命令,如: /bin/whoami,/sbin/ifconfig"
#: assets/models/asset.py:65 assets/models/asset.py:90
#: assets/models/asset.py:112 assets/models/domain.py:49
#: assets/models/domain.py:50
#: assets/serializers/asset_user.py:28
#: assets/templates/assets/domain_gateway_list.html:69
#: assets/templates/assets/user_asset_list.html:168
#: settings/templates/settings/replay_storage_create.html:59
msgid "Port"
msgstr "端口"
#: assets/models/asset.py:85 assets/models/domain.py:49
#: assets/serializers/asset_user.py:29
#: assets/templates/assets/_asset_list_modal.html:46
#: assets/templates/assets/_asset_list_modal.html:46
#: assets/templates/assets/_asset_user_list.html:15
#: assets/templates/assets/_asset_user_list.html:15
#: assets/templates/assets/asset_detail.html:64
#: assets/templates/assets/asset_detail.html:64
...
@@ -830,7 +826,7 @@ msgstr "端口"
...
@@ -830,7 +826,7 @@ msgstr "端口"
msgid "IP"
msgid "IP"
msgstr "IP"
msgstr "IP"
#: assets/models/asset.py:
86 assets/serializers/asset_user.py:28
#: assets/models/asset.py:
113 assets/serializers/asset_user.py:27
#: assets/templates/assets/_asset_list_modal.html:45
#: assets/templates/assets/_asset_list_modal.html:45
#: assets/templates/assets/_asset_user_auth_update_modal.html:9
#: assets/templates/assets/_asset_user_auth_update_modal.html:9
#: assets/templates/assets/_asset_user_auth_view_modal.html:15
#: assets/templates/assets/_asset_user_auth_view_modal.html:15
...
@@ -847,9 +843,8 @@ msgstr "IP"
...
@@ -847,9 +843,8 @@ msgstr "IP"
msgid "Hostname"
msgid "Hostname"
msgstr "主机名"
msgstr "主机名"
#: assets/models/asset.py:89 assets/models/asset.py:92
#: assets/models/asset.py:116 assets/models/domain.py:51
#: assets/models/domain.py:51 assets/models/user.py:110
#: assets/models/user.py:110 assets/templates/assets/asset_detail.html:72
#: assets/templates/assets/asset_detail.html:72
#: assets/templates/assets/domain_gateway_list.html:70
#: assets/templates/assets/domain_gateway_list.html:70
#: assets/templates/assets/system_user_detail.html:70
#: assets/templates/assets/system_user_detail.html:70
#: assets/templates/assets/system_user_list.html:53
#: assets/templates/assets/system_user_list.html:53
...
@@ -859,86 +854,91 @@ msgstr "主机名"
...
@@ -859,86 +854,91 @@ msgstr "主机名"
msgid "Protocol"
msgid "Protocol"
msgstr "协议"
msgstr "协议"
#: assets/models/asset.py:93 assets/templates/assets/asset_detail.html:108
#: assets/models/asset.py:119 assets/serializers/asset.py:63
#: assets/templates/assets/asset_create.html:24
msgid "Protocols"
msgstr "协议组"
#: assets/models/asset.py:120 assets/templates/assets/asset_detail.html:104
#: assets/templates/assets/user_asset_list.html:170
#: assets/templates/assets/user_asset_list.html:170
msgid "Platform"
msgid "Platform"
msgstr "系统平台"
msgstr "系统平台"
#: assets/models/asset.py:
96
assets/models/cmd_filter.py:21
#: assets/models/asset.py:
123
assets/models/cmd_filter.py:21
#: assets/models/domain.py:54 assets/models/label.py:22
#: assets/models/domain.py:54 assets/models/label.py:22
#: assets/templates/assets/asset_detail.html:11
6
#: assets/templates/assets/asset_detail.html:11
2
#: assets/templates/assets/user_asset_list.html:174
#: assets/templates/assets/user_asset_list.html:174
msgid "Is active"
msgid "Is active"
msgstr "激活"
msgstr "激活"
#: assets/models/asset.py:1
02
assets/templates/assets/asset_detail.html:68
#: assets/models/asset.py:1
29
assets/templates/assets/asset_detail.html:68
msgid "Public IP"
msgid "Public IP"
msgstr "公网IP"
msgstr "公网IP"
#: assets/models/asset.py:1
03 assets/templates/assets/asset_detail.html:124
#: assets/models/asset.py:1
30 assets/templates/assets/asset_detail.html:120
msgid "Asset number"
msgid "Asset number"
msgstr "资产编号"
msgstr "资产编号"
#: assets/models/asset.py:1
06 assets/templates/assets/asset_detail.html:88
#: assets/models/asset.py:1
33 assets/templates/assets/asset_detail.html:84
msgid "Vendor"
msgid "Vendor"
msgstr "制造商"
msgstr "制造商"
#: assets/models/asset.py:1
07 assets/templates/assets/asset_detail.html:92
#: assets/models/asset.py:1
34 assets/templates/assets/asset_detail.html:88
msgid "Model"
msgid "Model"
msgstr "型号"
msgstr "型号"
#: assets/models/asset.py:1
08 assets/templates/assets/asset_detail.html:120
#: assets/models/asset.py:1
35 assets/templates/assets/asset_detail.html:116
msgid "Serial number"
msgid "Serial number"
msgstr "序列号"
msgstr "序列号"
#: assets/models/asset.py:1
10
#: assets/models/asset.py:1
37
msgid "CPU model"
msgid "CPU model"
msgstr "CPU型号"
msgstr "CPU型号"
#: assets/models/asset.py:1
11
#: assets/models/asset.py:1
38
#: xpack/plugins/license/templates/license/license_detail.html:80
#: xpack/plugins/license/templates/license/license_detail.html:80
msgid "CPU count"
msgid "CPU count"
msgstr "CPU数量"
msgstr "CPU数量"
#: assets/models/asset.py:1
12
#: assets/models/asset.py:1
39
msgid "CPU cores"
msgid "CPU cores"
msgstr "CPU核数"
msgstr "CPU核数"
#: assets/models/asset.py:1
13
#: assets/models/asset.py:1
40
msgid "CPU vcpus"
msgid "CPU vcpus"
msgstr "CPU总数"
msgstr "CPU总数"
#: assets/models/asset.py:1
14 assets/templates/assets/asset_detail.html:100
#: assets/models/asset.py:1
41 assets/templates/assets/asset_detail.html:96
msgid "Memory"
msgid "Memory"
msgstr "内存"
msgstr "内存"
#: assets/models/asset.py:1
15
#: assets/models/asset.py:1
42
msgid "Disk total"
msgid "Disk total"
msgstr "硬盘大小"
msgstr "硬盘大小"
#: assets/models/asset.py:1
16
#: assets/models/asset.py:1
43
msgid "Disk info"
msgid "Disk info"
msgstr "硬盘信息"
msgstr "硬盘信息"
#: assets/models/asset.py:1
18 assets/templates/assets/asset_detail.html:112
#: assets/models/asset.py:1
45 assets/templates/assets/asset_detail.html:108
#: assets/templates/assets/user_asset_list.html:171
#: assets/templates/assets/user_asset_list.html:171
msgid "OS"
msgid "OS"
msgstr "操作系统"
msgstr "操作系统"
#: assets/models/asset.py:1
19
#: assets/models/asset.py:1
46
msgid "OS version"
msgid "OS version"
msgstr "系统版本"
msgstr "系统版本"
#: assets/models/asset.py:1
20
#: assets/models/asset.py:1
47
msgid "OS arch"
msgid "OS arch"
msgstr "系统架构"
msgstr "系统架构"
#: assets/models/asset.py:1
21
#: assets/models/asset.py:1
48
msgid "Hostname raw"
msgid "Hostname raw"
msgstr "主机名原始"
msgstr "主机名原始"
#: assets/models/asset.py:1
23
assets/templates/assets/asset_create.html:46
#: assets/models/asset.py:1
50
assets/templates/assets/asset_create.html:46
#: assets/templates/assets/asset_detail.html:2
31
templates/_nav.html:26
#: assets/templates/assets/asset_detail.html:2
27
templates/_nav.html:26
msgid "Labels"
msgid "Labels"
msgstr "标签管理"
msgstr "标签管理"
...
@@ -1008,7 +1008,7 @@ msgid "Default"
...
@@ -1008,7 +1008,7 @@ msgid "Default"
msgstr "默认"
msgstr "默认"
#: assets/models/cluster.py:36 assets/models/label.py:14
#: assets/models/cluster.py:36 assets/models/label.py:14
#: users/models/user.py:4
4
3
#: users/models/user.py:4
5
3
msgid "System"
msgid "System"
msgstr "系统"
msgstr "系统"
...
@@ -1127,7 +1127,7 @@ msgstr "默认资产组"
...
@@ -1127,7 +1127,7 @@ msgstr "默认资产组"
#: terminal/templates/terminal/command_list.html:65
#: terminal/templates/terminal/command_list.html:65
#: terminal/templates/terminal/session_list.html:27
#: terminal/templates/terminal/session_list.html:27
#: terminal/templates/terminal/session_list.html:71 users/forms.py:316
#: terminal/templates/terminal/session_list.html:71 users/forms.py:316
#: users/models/user.py:38 users/models/user.py:4
3
1 users/serializers/v1.py:105
#: users/models/user.py:38 users/models/user.py:4
4
1 users/serializers/v1.py:105
#: users/templates/users/user_group_detail.html:78
#: users/templates/users/user_group_detail.html:78
#: users/templates/users/user_group_list.html:36 users/views/user.py:251
#: users/templates/users/user_group_list.html:36 users/views/user.py:251
#: xpack/plugins/orgs/forms.py:26
#: xpack/plugins/orgs/forms.py:26
...
@@ -1136,7 +1136,7 @@ msgstr "默认资产组"
...
@@ -1136,7 +1136,7 @@ msgstr "默认资产组"
msgid "User"
msgid "User"
msgstr "用户"
msgstr "用户"
#: assets/models/label.py:19 assets/models/node.py:24
1
#: assets/models/label.py:19 assets/models/node.py:24
6
#: assets/templates/assets/label_list.html:15 settings/models.py:30
#: assets/templates/assets/label_list.html:15 settings/models.py:30
msgid "Value"
msgid "Value"
msgstr "值"
msgstr "值"
...
@@ -1145,11 +1145,11 @@ msgstr "值"
...
@@ -1145,11 +1145,11 @@ msgstr "值"
msgid "Category"
msgid "Category"
msgstr "分类"
msgstr "分类"
#: assets/models/node.py:24
0
#: assets/models/node.py:24
5
msgid "Key"
msgid "Key"
msgstr "键"
msgstr "键"
#: assets/models/node.py:
297
#: assets/models/node.py:
303
msgid "New node"
msgid "New node"
msgstr "新节点"
msgstr "新节点"
...
@@ -1166,10 +1166,10 @@ msgstr "手动登录"
...
@@ -1166,10 +1166,10 @@ msgstr "手动登录"
#: assets/templates/assets/system_user_assets.html:22
#: assets/templates/assets/system_user_assets.html:22
#: assets/templates/assets/system_user_detail.html:22
#: assets/templates/assets/system_user_detail.html:22
#: assets/views/admin_user.py:30 assets/views/admin_user.py:49
#: assets/views/admin_user.py:30 assets/views/admin_user.py:49
#: assets/views/admin_user.py:6
6 assets/views/admin_user.py:82
#: assets/views/admin_user.py:6
7 assets/views/admin_user.py:84
#: assets/views/admin_user.py:10
7 assets/views/asset.py:52
#: assets/views/admin_user.py:10
9 assets/views/asset.py:40
#: assets/views/asset.py:
69 assets/views/asset.py:128 assets/views/asset.py:171
#: assets/views/asset.py:
57 assets/views/asset.py:106 assets/views/asset.py:133
#: assets/views/asset.py:1
99 assets/views/asset.py:231
#: assets/views/asset.py:1
73 assets/views/asset.py:203
#: assets/views/cmd_filter.py:31 assets/views/cmd_filter.py:48
#: assets/views/cmd_filter.py:31 assets/views/cmd_filter.py:48
#: assets/views/cmd_filter.py:65 assets/views/cmd_filter.py:82
#: assets/views/cmd_filter.py:65 assets/views/cmd_filter.py:82
#: assets/views/cmd_filter.py:102 assets/views/cmd_filter.py:136
#: assets/views/cmd_filter.py:102 assets/views/cmd_filter.py:136
...
@@ -1208,37 +1208,33 @@ msgstr "登录模式"
...
@@ -1208,37 +1208,33 @@ msgstr "登录模式"
msgid "%(value)s is not an even number"
msgid "%(value)s is not an even number"
msgstr "%(value)s is not an even number"
msgstr "%(value)s is not an even number"
#: assets/serializers/admin_user.py:36 assets/serializers/asset.py:
46
#: assets/serializers/admin_user.py:36 assets/serializers/asset.py:
64
#: assets/serializers/asset_user.py:
30 assets/serializers/system_user.py:30
#: assets/serializers/asset_user.py:
29 assets/serializers/system_user.py:31
#: assets/templates/assets/_asset_user_list.html:18
#: assets/templates/assets/_asset_user_list.html:18
msgid "Connectivity"
msgid "Connectivity"
msgstr "连接"
msgstr "连接"
#: assets/serializers/asset.py:44 assets/templates/assets/asset_create.html:24
#: assets/serializers/asset.py:21
msgid "Protocols"
msgid "Protocol format should {}/{}"
msgstr "协议组"
msgstr ""
#: assets/serializers/asset.py:38
msgid "Protocol duplicate: {}"
msgstr "协议重复: {}"
#: assets/serializers/asset.py:
72
#: assets/serializers/asset.py:
90
msgid "Hardware info"
msgid "Hardware info"
msgstr "硬件信息"
msgstr "硬件信息"
#: assets/serializers/asset.py:
73
orgs/mixins/serializers.py:26
#: assets/serializers/asset.py:
91
orgs/mixins/serializers.py:26
msgid "Org name"
msgid "Org name"
msgstr "组织名称"
msgstr "组织名称"
#: assets/serializers/asset.py:91
#: assets/serializers/asset_user.py:31
msgid "Protocol duplicate: {}"
msgstr "协议重复: {}"
#: assets/serializers/asset_user.py:32
msgid "Backend"
msgid "Backend"
msgstr "后端"
msgstr "后端"
#: assets/serializers/asset_user.py:57
#: assets/serializers/asset_user.py:66 users/forms.py:263
msgid "private key invalid"
msgstr "密钥不合法"
#: assets/serializers/asset_user.py:74 users/forms.py:263
#: users/models/user.py:94 users/templates/users/first_login.html:42
#: users/models/user.py:94 users/templates/users/first_login.html:42
#: users/templates/users/user_password_update.html:46
#: users/templates/users/user_password_update.html:46
#: users/templates/users/user_profile.html:68
#: users/templates/users/user_profile.html:68
...
@@ -1247,14 +1243,26 @@ msgstr "密钥不合法"
...
@@ -1247,14 +1243,26 @@ msgstr "密钥不合法"
msgid "Public key"
msgid "Public key"
msgstr "ssh公钥"
msgstr "ssh公钥"
#: assets/serializers/base.py:44
msgid "private key invalid"
msgstr "密钥不合法"
#: assets/serializers/node.py:33
#: assets/serializers/node.py:33
msgid "The same level node name cannot be the same"
msgid "The same level node name cannot be the same"
msgstr "同级别节点名字不能重复"
msgstr "同级别节点名字不能重复"
#: assets/serializers/system_user.py:3
1
#: assets/serializers/system_user.py:3
2
msgid "Login mode display"
msgid "Login mode display"
msgstr "登录模式显示"
msgstr "登录模式显示"
#: assets/serializers/system_user.py:67
msgid "* Automatic login mode must fill in the username."
msgstr "自动登录模式,必须填写用户名"
#: assets/serializers/system_user.py:76
msgid "Password or private key required"
msgstr "密码或密钥密码需要一个"
#: assets/tasks.py:33
#: assets/tasks.py:33
msgid "Asset has been disabled, skipped: {}"
msgid "Asset has been disabled, skipped: {}"
msgstr "资产或许不支持ansible, 跳过: {}"
msgstr "资产或许不支持ansible, 跳过: {}"
...
@@ -1334,7 +1342,7 @@ msgstr "推送系统用户到入资产: {}"
...
@@ -1334,7 +1342,7 @@ msgstr "推送系统用户到入资产: {}"
msgid "Push system users to asset: {} => {}"
msgid "Push system users to asset: {} => {}"
msgstr "推送系统用户到入资产: {} => {}"
msgstr "推送系统用户到入资产: {} => {}"
#: assets/tasks.py:60
2
#: assets/tasks.py:60
3
msgid "Test asset user connectivity: {}"
msgid "Test asset user connectivity: {}"
msgstr "测试资产用户可连接性: {}"
msgstr "测试资产用户可连接性: {}"
...
@@ -1343,7 +1351,7 @@ msgid "Import admin user"
...
@@ -1343,7 +1351,7 @@ msgid "Import admin user"
msgstr "导入管理用户"
msgstr "导入管理用户"
#: assets/templates/assets/_admin_user_update_modal.html:4
#: assets/templates/assets/_admin_user_update_modal.html:4
#: assets/views/admin_user.py:6
7
#: assets/views/admin_user.py:6
8
msgid "Update admin user"
msgid "Update admin user"
msgstr "更新管理用户"
msgstr "更新管理用户"
...
@@ -1379,7 +1387,7 @@ msgstr "启用MFA"
...
@@ -1379,7 +1387,7 @@ msgstr "启用MFA"
msgid "Import assets"
msgid "Import assets"
msgstr "导入资产"
msgstr "导入资产"
#: assets/templates/assets/_asset_list_modal.html:7 assets/views/asset.py:
53
#: assets/templates/assets/_asset_list_modal.html:7 assets/views/asset.py:
41
#: templates/_nav.html:22 xpack/plugins/change_auth_plan/views.py:116
#: templates/_nav.html:22 xpack/plugins/change_auth_plan/views.py:116
msgid "Asset list"
msgid "Asset list"
msgstr "资产列表"
msgstr "资产列表"
...
@@ -1393,12 +1401,12 @@ msgid "Update asset user auth"
...
@@ -1393,12 +1401,12 @@ msgid "Update asset user auth"
msgstr "更新资产用户认证信息"
msgstr "更新资产用户认证信息"
#: assets/templates/assets/_asset_user_auth_update_modal.html:23
#: assets/templates/assets/_asset_user_auth_update_modal.html:23
#: xpack/plugins/change_auth_plan/forms.py:10
2
#: xpack/plugins/change_auth_plan/forms.py:10
1
msgid "Please input password"
msgid "Please input password"
msgstr "请输入密码"
msgstr "请输入密码"
#: assets/templates/assets/_asset_user_auth_update_modal.html:68
#: assets/templates/assets/_asset_user_auth_update_modal.html:68
#: assets/templates/assets/asset_detail.html:3
11
#: assets/templates/assets/asset_detail.html:3
07
#: users/templates/users/user_detail.html:307
#: users/templates/users/user_detail.html:307
#: users/templates/users/user_detail.html:334
#: users/templates/users/user_detail.html:334
#: xpack/plugins/interface/views.py:35
#: xpack/plugins/interface/views.py:35
...
@@ -1446,7 +1454,7 @@ msgstr "查看"
...
@@ -1446,7 +1454,7 @@ msgstr "查看"
#: assets/templates/assets/_asset_user_list.html:71
#: assets/templates/assets/_asset_user_list.html:71
#: assets/templates/assets/admin_user_assets.html:61
#: assets/templates/assets/admin_user_assets.html:61
#: assets/templates/assets/asset_asset_user_list.html:57
#: assets/templates/assets/asset_asset_user_list.html:57
#: assets/templates/assets/asset_detail.html:1
82
#: assets/templates/assets/asset_detail.html:1
78
#: assets/templates/assets/system_user_assets.html:63
#: assets/templates/assets/system_user_assets.html:63
#: assets/templates/assets/system_user_detail.html:151
#: assets/templates/assets/system_user_detail.html:151
msgid "Test"
msgid "Test"
...
@@ -1539,7 +1547,7 @@ msgstr "更新系统用户"
...
@@ -1539,7 +1547,7 @@ msgstr "更新系统用户"
#: assets/templates/assets/_user_asset_detail_modal.html:11
#: assets/templates/assets/_user_asset_detail_modal.html:11
#: assets/templates/assets/asset_asset_user_list.html:13
#: assets/templates/assets/asset_asset_user_list.html:13
#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:2
32
#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:2
04
msgid "Asset detail"
msgid "Asset detail"
msgstr "资产详情"
msgstr "资产详情"
...
@@ -1564,7 +1572,7 @@ msgstr "快速更新"
...
@@ -1564,7 +1572,7 @@ msgstr "快速更新"
#: assets/templates/assets/admin_user_assets.html:58
#: assets/templates/assets/admin_user_assets.html:58
#: assets/templates/assets/asset_asset_user_list.html:54
#: assets/templates/assets/asset_asset_user_list.html:54
#: assets/templates/assets/asset_detail.html:17
9
#: assets/templates/assets/asset_detail.html:17
5
msgid "Test connective"
msgid "Test connective"
msgstr "测试可连接性"
msgstr "测试可连接性"
...
@@ -1574,13 +1582,13 @@ msgstr "替换资产的管理员"
...
@@ -1574,13 +1582,13 @@ msgstr "替换资产的管理员"
#: assets/templates/assets/admin_user_detail.html:91
#: assets/templates/assets/admin_user_detail.html:91
#: perms/templates/perms/asset_permission_asset.html:116
#: perms/templates/perms/asset_permission_asset.html:116
#: xpack/plugins/change_auth_plan/forms.py:1
10
#: xpack/plugins/change_auth_plan/forms.py:1
09
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:112
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_asset_list.html:112
msgid "Select nodes"
msgid "Select nodes"
msgstr "选择节点"
msgstr "选择节点"
#: assets/templates/assets/admin_user_detail.html:100
#: assets/templates/assets/admin_user_detail.html:100
#: assets/templates/assets/asset_detail.html:2
11
#: assets/templates/assets/asset_detail.html:2
07
#: assets/templates/assets/asset_list.html:396
#: assets/templates/assets/asset_list.html:396
#: assets/templates/assets/cmd_filter_detail.html:106
#: assets/templates/assets/cmd_filter_detail.html:106
#: assets/templates/assets/system_user_assets.html:100
#: assets/templates/assets/system_user_assets.html:100
...
@@ -1663,12 +1671,12 @@ msgstr "比例"
...
@@ -1663,12 +1671,12 @@ msgstr "比例"
#: users/templates/users/user_group_list.html:194
#: users/templates/users/user_group_list.html:194
#: users/templates/users/user_list.html:158
#: users/templates/users/user_list.html:158
#: users/templates/users/user_list.html:190
#: users/templates/users/user_list.html:190
#: xpack/plugins/vault/templates/vault/vault.html:22
3
#: xpack/plugins/vault/templates/vault/vault.html:22
4
msgid "Please select file"
msgid "Please select file"
msgstr "选择文件"
msgstr "选择文件"
#: assets/templates/assets/asset_asset_user_list.html:16
#: assets/templates/assets/asset_asset_user_list.html:16
#: assets/templates/assets/asset_detail.html:23 assets/views/asset.py:
70
#: assets/templates/assets/asset_detail.html:23 assets/views/asset.py:
58
msgid "Asset user list"
msgid "Asset user list"
msgstr "资产用户列表"
msgstr "资产用户列表"
...
@@ -1677,7 +1685,7 @@ msgid "Asset users of"
...
@@ -1677,7 +1685,7 @@ msgid "Asset users of"
msgstr "资产用户"
msgstr "资产用户"
#: assets/templates/assets/asset_asset_user_list.html:47
#: assets/templates/assets/asset_asset_user_list.html:47
#: assets/templates/assets/asset_detail.html:14
8
#: assets/templates/assets/asset_detail.html:14
4
#: terminal/templates/terminal/session_detail.html:81
#: terminal/templates/terminal/session_detail.html:81
#: users/templates/users/user_detail.html:138
#: users/templates/users/user_detail.html:138
#: users/templates/users/user_profile.html:146
#: users/templates/users/user_profile.html:146
...
@@ -1696,23 +1704,23 @@ msgstr "选择需要修改属性"
...
@@ -1696,23 +1704,23 @@ msgstr "选择需要修改属性"
msgid "Select all"
msgid "Select all"
msgstr "全选"
msgstr "全选"
#: assets/templates/assets/asset_detail.html:9
6
#: assets/templates/assets/asset_detail.html:9
2
msgid "CPU"
msgid "CPU"
msgstr "CPU"
msgstr "CPU"
#: assets/templates/assets/asset_detail.html:10
4
#: assets/templates/assets/asset_detail.html:10
0
msgid "Disk"
msgid "Disk"
msgstr "硬盘"
msgstr "硬盘"
#: assets/templates/assets/asset_detail.html:1
32
#: assets/templates/assets/asset_detail.html:1
28
#: users/templates/users/user_detail.html:115
#: users/templates/users/user_detail.html:115
#: users/templates/users/user_profile.html:104
#: users/templates/users/user_profile.html:104
msgid "Date joined"
msgid "Date joined"
msgstr "创建日期"
msgstr "创建日期"
#: assets/templates/assets/asset_detail.html:15
4
#: assets/templates/assets/asset_detail.html:15
0
#: assets/templates/assets/user_asset_list.html:46
#: assets/templates/assets/user_asset_list.html:46
#: perms/models/asset_permission.py:
96
perms/models/base.py:38
#: perms/models/asset_permission.py:
104
perms/models/base.py:38
#: perms/templates/perms/asset_permission_create_update.html:55
#: perms/templates/perms/asset_permission_create_update.html:55
#: perms/templates/perms/asset_permission_detail.html:120
#: perms/templates/perms/asset_permission_detail.html:120
#: perms/templates/perms/remote_app_permission_create_update.html:54
#: perms/templates/perms/remote_app_permission_create_update.html:54
...
@@ -1726,11 +1734,11 @@ msgstr "创建日期"
...
@@ -1726,11 +1734,11 @@ msgstr "创建日期"
msgid "Active"
msgid "Active"
msgstr "激活中"
msgstr "激活中"
#: assets/templates/assets/asset_detail.html:1
71
#: assets/templates/assets/asset_detail.html:1
67
msgid "Refresh hardware"
msgid "Refresh hardware"
msgstr "更新硬件信息"
msgstr "更新硬件信息"
#: assets/templates/assets/asset_detail.html:17
4
#: assets/templates/assets/asset_detail.html:17
0
msgid "Refresh"
msgid "Refresh"
msgstr "刷新"
msgstr "刷新"
...
@@ -1743,7 +1751,7 @@ msgstr ""
...
@@ -1743,7 +1751,7 @@ msgstr ""
"左侧是资产树,右击可以新建、删除、更改树节点,授权资产也是以节点方式组织的,"
"左侧是资产树,右击可以新建、删除、更改树节点,授权资产也是以节点方式组织的,"
"右侧是属于该节点下的资产"
"右侧是属于该节点下的资产"
#: assets/templates/assets/asset_list.html:61 assets/views/asset.py:1
29
#: assets/templates/assets/asset_list.html:61 assets/views/asset.py:1
07
msgid "Create asset"
msgid "Create asset"
msgstr "创建资产"
msgstr "创建资产"
...
@@ -2038,26 +2046,26 @@ msgstr "系统用户删除失败"
...
@@ -2038,26 +2046,26 @@ msgstr "系统用户删除失败"
msgid "Admin user list"
msgid "Admin user list"
msgstr "管理用户列表"
msgstr "管理用户列表"
#: assets/views/admin_user.py:8
3 assets/views/admin_user.py:108
#: assets/views/admin_user.py:8
5 assets/views/admin_user.py:110
msgid "Admin user detail"
msgid "Admin user detail"
msgstr "管理用户详情"
msgstr "管理用户详情"
#: assets/views/asset.py:
82
templates/_nav_user.html:4
#: assets/views/asset.py:
70
templates/_nav_user.html:4
msgid "My assets"
msgid "My assets"
msgstr "我的资产"
msgstr "我的资产"
#: assets/views/asset.py:144
#: assets/views/asset.py:134
msgid "Update asset"
msgstr "更新资产"
#: assets/views/asset.py:146
msgid "Bulk update asset success"
msgid "Bulk update asset success"
msgstr "批量更新资产成功"
msgstr "批量更新资产成功"
#: assets/views/asset.py:17
2
#: assets/views/asset.py:17
4
msgid "Bulk update asset"
msgid "Bulk update asset"
msgstr "批量更新资产"
msgstr "批量更新资产"
#: assets/views/asset.py:200
msgid "Update asset"
msgstr "更新资产"
#: assets/views/cmd_filter.py:32
#: assets/views/cmd_filter.py:32
msgid "Command filter list"
msgid "Command filter list"
msgstr "命令过滤器列表"
msgstr "命令过滤器列表"
...
@@ -2437,7 +2445,7 @@ msgstr "代码错误"
...
@@ -2437,7 +2445,7 @@ msgstr "代码错误"
#: authentication/templates/authentication/login.html:27
#: authentication/templates/authentication/login.html:27
#: authentication/templates/authentication/login_otp.html:27
#: authentication/templates/authentication/login_otp.html:27
#: users/templates/users/reset_password.html:25
#: users/templates/users/reset_password.html:25
#: xpack/plugins/interface/models.py:3
6
#: xpack/plugins/interface/models.py:3
9
msgid "Welcome to the Jumpserver open source fortress"
msgid "Welcome to the Jumpserver open source fortress"
msgstr "欢迎使用Jumpserver开源堡垒机"
msgstr "欢迎使用Jumpserver开源堡垒机"
...
@@ -2973,7 +2981,7 @@ msgstr "更新任务内容: {}"
...
@@ -2973,7 +2981,7 @@ msgstr "更新任务内容: {}"
#: ops/views/adhoc.py:45 ops/views/adhoc.py:71 ops/views/adhoc.py:85
#: ops/views/adhoc.py:45 ops/views/adhoc.py:71 ops/views/adhoc.py:85
#: ops/views/adhoc.py:99 ops/views/adhoc.py:113 ops/views/adhoc.py:127
#: ops/views/adhoc.py:99 ops/views/adhoc.py:113 ops/views/adhoc.py:127
#: ops/views/adhoc.py:141 ops/views/command.py:47 ops/views/command.py:7
2
#: ops/views/adhoc.py:141 ops/views/command.py:47 ops/views/command.py:7
7
msgid "Ops"
msgid "Ops"
msgstr "作业中心"
msgstr "作业中心"
...
@@ -2989,7 +2997,7 @@ msgstr "执行历史"
...
@@ -2989,7 +2997,7 @@ msgstr "执行历史"
msgid "Command execution list"
msgid "Command execution list"
msgstr "命令执行列表"
msgstr "命令执行列表"
#: ops/views/command.py:7
3
templates/_nav_user.html:26
#: ops/views/command.py:7
8
templates/_nav_user.html:26
msgid "Command execution"
msgid "Command execution"
msgstr "命令执行"
msgstr "命令执行"
...
@@ -2998,7 +3006,7 @@ msgid "Organization"
...
@@ -2998,7 +3006,7 @@ msgid "Organization"
msgstr "组织"
msgstr "组织"
#: perms/forms/asset_permission.py:65 perms/forms/remote_app_permission.py:34
#: perms/forms/asset_permission.py:65 perms/forms/remote_app_permission.py:34
#: perms/models/asset_permission.py:
94
perms/models/base.py:37
#: perms/models/asset_permission.py:
102
perms/models/base.py:37
#: perms/templates/perms/asset_permission_list.html:47
#: perms/templates/perms/asset_permission_list.html:47
#: perms/templates/perms/asset_permission_list.html:67
#: perms/templates/perms/asset_permission_list.html:67
#: perms/templates/perms/asset_permission_list.html:114
#: perms/templates/perms/asset_permission_list.html:114
...
@@ -3011,46 +3019,46 @@ msgstr "组织"
...
@@ -3011,46 +3019,46 @@ msgstr "组织"
msgid "User group"
msgid "User group"
msgstr "用户组"
msgstr "用户组"
#: perms/forms/asset_permission.py:8
2
#: perms/forms/asset_permission.py:8
1
msgid ""
msgid ""
"Tips: The RDP protocol does not support separate controls for uploading or "
"Tips: The RDP protocol does not support separate controls for uploading or "
"downloading files"
"downloading files"
msgstr "提示:RDP 协议不支持单独控制上传或下载文件"
msgstr "提示:RDP 协议不支持单独控制上传或下载文件"
#: perms/forms/asset_permission.py:9
2
perms/forms/remote_app_permission.py:47
#: perms/forms/asset_permission.py:9
1
perms/forms/remote_app_permission.py:47
msgid "User or group at least one required"
msgid "User or group at least one required"
msgstr "用户和用户组至少选一个"
msgstr "用户和用户组至少选一个"
#: perms/forms/asset_permission.py:10
1
#: perms/forms/asset_permission.py:10
0
msgid "Asset or group at least one required"
msgid "Asset or group at least one required"
msgstr "资产和节点至少选一个"
msgstr "资产和节点至少选一个"
#: perms/models/asset_permission.py:2
6
settings/forms.py:143
#: perms/models/asset_permission.py:2
7
settings/forms.py:143
msgid "All"
msgid "All"
msgstr "全部"
msgstr "全部"
#: perms/models/asset_permission.py:2
8
#: perms/models/asset_permission.py:2
9
msgid "Upload file"
msgid "Upload file"
msgstr "上传文件"
msgstr "上传文件"
#: perms/models/asset_permission.py:
29
#: perms/models/asset_permission.py:
30
msgid "Download file"
msgid "Download file"
msgstr "下载文件"
msgstr "下载文件"
#: perms/models/asset_permission.py:3
0
#: perms/models/asset_permission.py:3
1
msgid "Upload download"
msgid "Upload download"
msgstr "上传下载"
msgstr "上传下载"
#: perms/models/asset_permission.py:
72
#: perms/models/asset_permission.py:
80
msgid "Actions"
msgid "Actions"
msgstr "动作"
msgstr "动作"
#: perms/models/asset_permission.py:
76 perms/models/asset_permission.py:106
#: perms/models/asset_permission.py:
84 perms/models/asset_permission.py:114
#: templates/_nav.html:44
#: templates/_nav.html:44
msgid "Asset permission"
msgid "Asset permission"
msgstr "资产授权"
msgstr "资产授权"
#: perms/models/asset_permission.py:
97
perms/models/base.py:40
#: perms/models/asset_permission.py:
105
perms/models/base.py:40
#: perms/templates/perms/asset_permission_detail.html:90
#: perms/templates/perms/asset_permission_detail.html:90
#: perms/templates/perms/remote_app_permission_detail.html:82
#: perms/templates/perms/remote_app_permission_detail.html:82
#: users/models/user.py:102 users/templates/users/user_detail.html:107
#: users/models/user.py:102 users/templates/users/user_detail.html:107
...
@@ -4373,11 +4381,11 @@ msgid ""
...
@@ -4373,11 +4381,11 @@ msgid ""
"You should use your ssh client tools connect terminal: {} <br /> <br />{}"
"You should use your ssh client tools connect terminal: {} <br /> <br />{}"
msgstr "你可以使用ssh客户端工具连接终端"
msgstr "你可以使用ssh客户端工具连接终端"
#: users/api/user.py:9
3
#: users/api/user.py:9
7
msgid "You do not have permission."
msgid "You do not have permission."
msgstr "你没有权限"
msgstr "你没有权限"
#: users/api/user.py:1
86
#: users/api/user.py:1
90
msgid "Could not reset self otp, use profile reset instead"
msgid "Could not reset self otp, use profile reset instead"
msgstr "不能再该页面重置MFA, 请去个人信息页面重置"
msgstr "不能再该页面重置MFA, 请去个人信息页面重置"
...
@@ -4494,7 +4502,7 @@ msgstr "复制你的公钥到这里"
...
@@ -4494,7 +4502,7 @@ msgstr "复制你的公钥到这里"
msgid "Select users"
msgid "Select users"
msgstr "选择用户"
msgstr "选择用户"
#: users/models/user.py:37 users/models/user.py:4
3
9
#: users/models/user.py:37 users/models/user.py:4
4
9
msgid "Administrator"
msgid "Administrator"
msgstr "管理员"
msgstr "管理员"
...
@@ -4544,7 +4552,7 @@ msgstr "最后更新密码日期"
...
@@ -4544,7 +4552,7 @@ msgstr "最后更新密码日期"
msgid "User auth from {}, go there change password"
msgid "User auth from {}, go there change password"
msgstr "用户认证源来自 {}, 请去相应系统修改密码"
msgstr "用户认证源来自 {}, 请去相应系统修改密码"
#: users/models/user.py:4
4
2
#: users/models/user.py:4
5
2
msgid "Administrator is the super user of system"
msgid "Administrator is the super user of system"
msgstr "Administrator是初始的超级管理员"
msgstr "Administrator是初始的超级管理员"
...
@@ -5305,26 +5313,25 @@ msgid "Password length"
...
@@ -5305,26 +5313,25 @@ msgid "Password length"
msgstr "密码长度"
msgstr "密码长度"
#: xpack/plugins/change_auth_plan/forms.py:45
#: xpack/plugins/change_auth_plan/forms.py:45
#: xpack/plugins/change_auth_plan/models.py:213
msgid "* For security, please do not change root user's password"
msgid "* For security, do not change {} user's password"
msgstr "* 为了安全,请不要更改root用户的密码"
msgstr "* 为了安全,禁止更改 {} 用户的密码"
#: xpack/plugins/change_auth_plan/forms.py:5
5
#: xpack/plugins/change_auth_plan/forms.py:5
4
msgid "* Please enter custom password"
msgid "* Please enter custom password"
msgstr "* 请输入自定义密码"
msgstr "* 请输入自定义密码"
#: xpack/plugins/change_auth_plan/forms.py:6
4
#: xpack/plugins/change_auth_plan/forms.py:6
3
msgid "* Please enter a valid crontab expression"
msgid "* Please enter a valid crontab expression"
msgstr "* 请输入有效的 crontab 表达式"
msgstr "* 请输入有效的 crontab 表达式"
#: xpack/plugins/change_auth_plan/forms.py:11
7
#: xpack/plugins/change_auth_plan/forms.py:11
6
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:60
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_create_update.html:60
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:81
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_detail.html:81
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:17
#: xpack/plugins/change_auth_plan/templates/change_auth_plan/plan_list.html:17
msgid "Periodic perform"
msgid "Periodic perform"
msgstr "定时执行"
msgstr "定时执行"
#: xpack/plugins/change_auth_plan/forms.py:12
1
#: xpack/plugins/change_auth_plan/forms.py:12
0
msgid ""
msgid ""
"Tips: The username of the user on the asset to be modified. if the user "
"Tips: The username of the user on the asset to be modified. if the user "
"exists, change the password; If the user does not exist, create the user."
"exists, change the password; If the user does not exist, create the user."
...
@@ -5332,11 +5339,11 @@ msgstr ""
...
@@ -5332,11 +5339,11 @@ msgstr ""
"提示:用户名为将要修改的资产上的用户的用户名。如果用户存在,则修改密码;如果"
"提示:用户名为将要修改的资产上的用户的用户名。如果用户存在,则修改密码;如果"
"用户不存在,则创建用户。"
"用户不存在,则创建用户。"
#: xpack/plugins/change_auth_plan/forms.py:12
5
#: xpack/plugins/change_auth_plan/forms.py:12
4
msgid "Tips: (Units: hour)"
msgid "Tips: (Units: hour)"
msgstr "提示:(单位: 时)"
msgstr "提示:(单位: 时)"
#: xpack/plugins/change_auth_plan/forms.py:12
6
#: xpack/plugins/change_auth_plan/forms.py:12
5
msgid ""
msgid ""
"eg: Every Sunday 03:05 run <5 3 * * 0> <br> Tips: Using 5 digits linux "
"eg: Every Sunday 03:05 run <5 3 * * 0> <br> Tips: Using 5 digits linux "
"crontab expressions <min hour day month week> (<a href='https://tool.lu/"
"crontab expressions <min hour day month week> (<a href='https://tool.lu/"
...
@@ -5389,6 +5396,10 @@ msgstr "定期执行"
...
@@ -5389,6 +5396,10 @@ msgstr "定期执行"
msgid "Password rules"
msgid "Password rules"
msgstr "密码规则"
msgstr "密码规则"
#: xpack/plugins/change_auth_plan/models.py:213
msgid "For security, do not change {} user's password"
msgstr "* 为了安全,禁止更改 {} 用户的密码"
#: xpack/plugins/change_auth_plan/models.py:217
#: xpack/plugins/change_auth_plan/models.py:217
msgid "Assets is empty, please add the asset"
msgid "Assets is empty, please add the asset"
msgstr "资产为空,请添加资产"
msgstr "资产为空,请添加资产"
...
@@ -5757,7 +5768,7 @@ msgid "Interface settings"
...
@@ -5757,7 +5768,7 @@ msgid "Interface settings"
msgstr "界面设置"
msgstr "界面设置"
#: xpack/plugins/interface/templates/interface/interface.html:15
#: xpack/plugins/interface/templates/interface/interface.html:15
#: xpack/plugins/interface/views.py:2
4 xpack/plugins/interface/views.py:2
5
#: xpack/plugins/interface/views.py:25
msgid "Interface setting"
msgid "Interface setting"
msgstr "界面设置"
msgstr "界面设置"
...
@@ -5780,22 +5791,26 @@ msgstr "恢复默认成功!"
...
@@ -5780,22 +5791,26 @@ msgstr "恢复默认成功!"
msgid "Restore default failed."
msgid "Restore default failed."
msgstr "恢复默认失败!"
msgstr "恢复默认失败!"
#: xpack/plugins/interface/views.py:24
msgid "Interface"
msgstr "界面"
#: xpack/plugins/interface/views.py:51
#: xpack/plugins/interface/views.py:51
msgid "It is already in the default setting state!"
msgid "It is already in the default setting state!"
msgstr "当前已经是初始化状态!"
msgstr "当前已经是初始化状态!"
#: xpack/plugins/license/meta.py:11 xpack/plugins/license/models.py:9
4
#: xpack/plugins/license/meta.py:11 xpack/plugins/license/models.py:9
8
#: xpack/plugins/license/templates/license/license_detail.html:50
#: xpack/plugins/license/templates/license/license_detail.html:50
#: xpack/plugins/license/templates/license/license_detail.html:55
#: xpack/plugins/license/templates/license/license_detail.html:55
#: xpack/plugins/license/views.py:32
#: xpack/plugins/license/views.py:32
msgid "License"
msgid "License"
msgstr "许可证"
msgstr "许可证"
#: xpack/plugins/license/models.py:7
4
#: xpack/plugins/license/models.py:7
5
msgid "Standard edition"
msgid "Standard edition"
msgstr "标准版"
msgstr "标准版"
#: xpack/plugins/license/models.py:7
6
#: xpack/plugins/license/models.py:7
7
msgid "Enterprise edition"
msgid "Enterprise edition"
msgstr "企业版"
msgstr "企业版"
...
@@ -5883,9 +5898,7 @@ msgstr "无效的许可证"
...
@@ -5883,9 +5898,7 @@ msgstr "无效的许可证"
msgid "Admin"
msgid "Admin"
msgstr "管理员"
msgstr "管理员"
#: xpack/plugins/orgs/meta.py:8 xpack/plugins/orgs/views.py:26
#: xpack/plugins/orgs/meta.py:8
#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:60
#: xpack/plugins/orgs/views.py:77
msgid "Organizations"
msgid "Organizations"
msgstr "组织管理"
msgstr "组织管理"
...
@@ -5902,6 +5915,11 @@ msgstr "添加管理员"
...
@@ -5902,6 +5915,11 @@ msgstr "添加管理员"
msgid "Create organization "
msgid "Create organization "
msgstr "创建组织"
msgstr "创建组织"
#: xpack/plugins/orgs/views.py:26 xpack/plugins/orgs/views.py:43
#: xpack/plugins/orgs/views.py:60 xpack/plugins/orgs/views.py:77
msgid "Orgs"
msgstr "组织管理"
#: xpack/plugins/orgs/views.py:27
#: xpack/plugins/orgs/views.py:27
msgid "Org list"
msgid "Org list"
msgstr "组织列表"
msgstr "组织列表"
...
@@ -5914,8 +5932,8 @@ msgstr "创建组织"
...
@@ -5914,8 +5932,8 @@ msgstr "创建组织"
msgid "Update org"
msgid "Update org"
msgstr "更新组织"
msgstr "更新组织"
#: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:2
2
#: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:2
3
#: xpack/plugins/vault/views.py:3
7
#: xpack/plugins/vault/views.py:3
8
msgid "Vault"
msgid "Vault"
msgstr "密码匣子"
msgstr "密码匣子"
...
@@ -5923,19 +5941,16 @@ msgstr "密码匣子"
...
@@ -5923,19 +5941,16 @@ msgstr "密码匣子"
msgid "Import vault"
msgid "Import vault"
msgstr "导入密码"
msgstr "导入密码"
#: xpack/plugins/vault/views.py:2
3
#: xpack/plugins/vault/views.py:2
4
msgid "vault list"
msgid "vault list"
msgstr "密码匣子"
msgstr "密码匣子"
#: xpack/plugins/vault/views.py:3
8
#: xpack/plugins/vault/views.py:3
9
msgid "vault create"
msgid "vault create"
msgstr "创建"
msgstr "创建"
#~ msgid "* For security, please do not change root user's password"
#~ msgid "Org"
#~ msgstr "* 为了安全,请不要更改root用户的密码"
#~ msgstr "组织"
#~ msgid "Interface"
#~ msgstr "界面"
#~ msgid "already exists"
#~ msgid "already exists"
#~ msgstr "已经存在"
#~ msgstr "已经存在"
...
...
apps/ops/models/adhoc.py
View file @
8918da48
...
@@ -220,7 +220,7 @@ class AdHoc(models.Model):
...
@@ -220,7 +220,7 @@ class AdHoc(models.Model):
time_start
=
time
.
time
()
time_start
=
time
.
time
()
try
:
try
:
date_start
=
datetime
.
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
date_start
=
datetime
.
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
history
.
date_start
=
date_start
history
.
date_start
=
timezone
.
now
()
print
(
_
(
"{} Start task: {}"
)
.
format
(
date_start
,
self
.
task
.
name
))
print
(
_
(
"{} Start task: {}"
)
.
format
(
date_start
,
self
.
task
.
name
))
raw
,
summary
=
self
.
_run_only
()
raw
,
summary
=
self
.
_run_only
()
date_end
=
datetime
.
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
date_end
=
datetime
.
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
...
...
apps/ops/templates/ops/command_execution_create.html
View file @
8918da48
...
@@ -136,10 +136,12 @@ function getSelectedAssetsNode() {
...
@@ -136,10 +136,12 @@ function getSelectedAssetsNode() {
nodes
.
forEach
(
function
(
node
)
{
nodes
.
forEach
(
function
(
node
)
{
if
(
node
.
meta
.
type
===
'asset'
&&
!
node
.
isHidden
)
{
if
(
node
.
meta
.
type
===
'asset'
&&
!
node
.
isHidden
)
{
var
protocols
=
node
.
meta
.
asset
.
protocols
;
var
protocols
=
node
.
meta
.
asset
.
protocols
;
if
(
assetsNodeId
.
indexOf
(
node
.
id
)
===
-
1
&&
protocols
.
indexOf
(
"ssh"
)
>
-
1
)
{
protocols
.
forEach
(
function
(
val
)
{
if
(
assetsNodeId
.
indexOf
(
node
.
id
)
===
-
1
&&
val
.
indexOf
(
"ssh"
)
>
-
1
)
{
assetsNodeId
.
push
(
node
.
id
);
assetsNodeId
.
push
(
node
.
id
);
assetsNode
.
push
(
node
)
assetsNode
.
push
(
node
)
}
}
});
}
}
});
});
return
assetsNode
;
return
assetsNode
;
...
...
apps/perms/utils/asset_permission.py
View file @
8918da48
...
@@ -470,7 +470,7 @@ class AssetPermissionUtil(AssetPermissionCacheMixin):
...
@@ -470,7 +470,7 @@ class AssetPermissionUtil(AssetPermissionCacheMixin):
assets
=
defaultdict
(
lambda
:
defaultdict
(
int
))
assets
=
defaultdict
(
lambda
:
defaultdict
(
int
))
for
perm
in
self
.
permissions
:
for
perm
in
self
.
permissions
:
actions
=
[
perm
.
actions
]
actions
=
[
perm
.
actions
]
_assets
=
perm
.
assets
.
all
()
.
only
(
*
self
.
assets_only
)
_assets
=
perm
.
assets
.
valid
()
.
only
(
*
self
.
assets_only
)
system_users
=
perm
.
system_users
.
all
()
system_users
=
perm
.
system_users
.
all
()
iterable
=
itertools
.
product
(
_assets
,
system_users
,
actions
)
iterable
=
itertools
.
product
(
_assets
,
system_users
,
actions
)
for
asset
,
system_user
,
action
in
iterable
:
for
asset
,
system_user
,
action
in
iterable
:
...
@@ -493,7 +493,7 @@ class AssetPermissionUtil(AssetPermissionCacheMixin):
...
@@ -493,7 +493,7 @@ class AssetPermissionUtil(AssetPermissionCacheMixin):
pattern
.
add
(
r'^{0}$|^{0}:'
.
format
(
node
.
key
))
pattern
.
add
(
r'^{0}$|^{0}:'
.
format
(
node
.
key
))
pattern
=
'|'
.
join
(
list
(
pattern
))
pattern
=
'|'
.
join
(
list
(
pattern
))
if
pattern
:
if
pattern
:
assets
=
Asset
.
objects
.
filter
(
nodes__key__regex
=
pattern
)
\
assets
=
Asset
.
objects
.
filter
(
nodes__key__regex
=
pattern
)
.
valid
()
\
.
prefetch_related
(
'nodes'
)
\
.
prefetch_related
(
'nodes'
)
\
.
only
(
*
self
.
assets_only
)
\
.
only
(
*
self
.
assets_only
)
\
.
distinct
()
.
distinct
()
...
...
apps/static/js/jumpserver.js
View file @
8918da48
...
@@ -1157,3 +1157,21 @@ function timeOffset(a, b) {
...
@@ -1157,3 +1157,21 @@ function timeOffset(a, b) {
}
}
return
""
return
""
}
}
function
readFile
(
ref
)
{
var
files
=
ref
.
prop
(
'files'
);
var
hasFile
=
files
&&
files
.
length
>
0
;
if
(
hasFile
)
{
var
reader
=
new
FileReader
();
//新建一个FileReader
console
.
log
(
typeof
files
[
0
]);
reader
.
readAsText
(
files
[
0
],
"UTF-8"
);
//读取文件
reader
.
onload
=
function
(
evt
){
//读取完文件之后会回来这里
ref
.
trigger
(
"onload"
,
evt
.
target
.
result
);
};
}
else
{
ref
.
trigger
(
"onload"
,
null
);
}
return
ref
}
apps/terminal/templates/terminal/session_list.html
View file @
8918da48
...
@@ -72,7 +72,7 @@
...
@@ -72,7 +72,7 @@
<li><a
class=
"search-item"
data-value=
"asset"
>
{% trans 'Asset' %}
</a></li>
<li><a
class=
"search-item"
data-value=
"asset"
>
{% trans 'Asset' %}
</a></li>
<li><a
class=
"search-item"
data-value=
"system_user"
>
{% trans 'System user' %}
</a></li>
<li><a
class=
"search-item"
data-value=
"system_user"
>
{% trans 'System user' %}
</a></li>
<li><a
class=
"search-item"
data-value=
"remote_addr"
>
{% trans 'Remote addr' %}
</a></li>
<li><a
class=
"search-item"
data-value=
"remote_addr"
>
{% trans 'Remote addr' %}
</a></li>
<li><a
class=
"search-item"
data-value=
"protocol"
>
{% trans 'Protocol' %}
</a></li>
{#
<li><a
class=
"search-item"
data-value=
"protocol"
>
{% trans 'Protocol' %}
</a></li>
#}
</ul>
</ul>
{% endblock %}
{% endblock %}
...
...
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