Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
truenas-rk3588
truenas
Commits
7aabb9d3
Commit
7aabb9d3
authored
8 years ago
by
William Grzybowski
Browse files
Options
Download
Email Patches
Plain Diff
fix(gui): common method to transform request object
Ticket: #24012
parent
8ba99738
base
13.1-smb-testing
13.1-test_425
NAS-117105-1
NAS-119224
NAS-119538-removed
NAS-119664
NAS-121347
NAS-122102-22.12.3
NAS-123000
NAS-123267
NAS-123503-22.12.4
NAS-123516-23.10
NAS-124167
NAS-124317-13.1
NAS-124388-23.10
NAS-124980-23.10.1
NAS-125227
NAS-125258
NAS-125285
NAS-125301
NAS-125446
NAS-125491-23.10.1
NAS-125499
NAS-125546-23.10.2
NAS-125719
NAS-125816
NAS-125816-backup
NAS-125822
NAS-125830
NAS-125932-24.04
NAS-126857-23.10.2
NAS-126958
NAS-127024-24.04-RC.1
NAS-127087
NAS-127267-24.04-RC.1
NAS-127318
NAS-127422-24.04-RC.1
NAS-127543
NAS-127559-24.04-RC.1
NAS-127702
NAS-127840-24.04.0
NAS-127922-24.04.0
NAS-128040-24.04.0
ad_testing
add-audit-results-cache
add-fstype-check
add-internal-methods
add-more-filesystem-roles
add-nfs4acl-test
add-public-audit
add-realm-validation
add-shadow-fields
add-written-counter
adjust-dcerpcd-kill
allow-eula-readonly
audit-cache-pagination
awalker_tesitng
awalker_testing
awalker_testing_ad
awalker_testing_core
awalker_testing_mock
beadm-error
bmeagher_testing
bmeagher_testing3
check_create_ancestors
cluster-test
configurable-testing
df_fail_test_012
enhance-sharing-manger-role
expand-api-key-testing
expand-failure-scenarios
expand-valdiation-smb
expand-verbosity-readonly-role
fail_test_012
failover-test
fix-aclmode-validation
fix-and-improve-audit-query
fix-broken-api-tests
fix-ci-path
fix-collectd-daemon
fix-haad-test
fix-in-rin-filter_list
fix-share-acl-toggling-bluefin
fix-smbconf-test
fix-snmp
freeipa-testing
freenas/11.1-stable
freenas/11.2-stable
freenas/11.3-stable
freenas/11.3-u3-stable
fs-test
gluster-test
improve-alert
improve-audit-query-validation
improve-filterable
improve-initial-install
integration-test-k8s
ldap-improvements
ldap-test
libpam-test
make-ipaddresses-to-register-configurable
master
module-param-change-check
more_nfs_failover_fixes
mrehan/disable-kubernetes-test
mrehan/fix-ups-tests
mrehan/ixdiagnose-integration
new-api
new-jenkins
new-jenkins2
passdb-test
persistent-client-tests
prevent-readonly-web-shell
pristine-cluster
privilege.roles
randomize-privilege-test
reduce-log-spam-quota
refactor-smb
rel-v0.0.1
release/12.0-U6.1
release/12.0-u4.1
release/13.0-u5.1-stable
release/21.06-BETA.1
release/21.08-BETA.1
release/21.08-BETA.2
release/22.02
release/22.02-RC.1
release/22.02-RC.1-1
release/22.02-RC.1-2
release/22.02-RC.2
release/22.02-test
release/22.02.1
release/22.02.2
release/22.02.3
release/22.02.4
release/22.12
release/22.12-BETA.1
release/22.12-BETA.2
release/22.12-RC.1
release/22.12.1
release/22.12.2
release/22.12.3
release/22.12.3.1
release/22.12.3.2
release/22.12.4
release/22.12.4.1
release/22.2-RC.1
release/23.10-BETA.1
release/23.10-RC.1
release/23.10.0
release/23.10.0.1
release/23.10.1
release/23.10.1.1
release/23.10.1.2
release/23.10.1.3
release/23.10.2
release/24.04-BETA.1
release/24.04-RC.1
release/24.04.0
remove-json-auth-audit-samba
remove-pool-dataset-permission
roles-test
set-hashes-private
set-iosqe_async-smb-read
setup-ad
smb-proto-tests-refactor
smbaux-testing
soln/rm_enc_swap
sort-enclosures
spaces-tests
stable/angelfish
stable/bluefin
stable/cobia
stable/dragonfish
sysdataset-setup-pool-create
test-2fa
test-access
test-acl
test-ad
test-ad-cobia
test-audit
test-audit-changes
test-audit-redaction
test-auth
test-cluster
test-dataset-acl
test-disable-mock
test-freeipa
test-group
test-ldap
test-new-freeipa
test-noauthz
test-rbac
test-refactor-smb
test-refactor-smb2
test-roles
test-runtest-fix
test-shadow
test-share-name
test-sharesec
test-simple-share
test-smb-comments
test-snmp
test-statx
test-syslog
test190-test
test_2fa
test_priv
test_syslog
testing-refine-branchout-process
testing-refine-branchout-process2
truenas/11.2-u5-stable
truenas/11.2-u8-stable
truenas/12.0-stable
truenas/12.0-u2-stable
truenas/12.0-u3-stable
truenas/12.0-u5-stable
truenas/13.0-stable
truenas/13.0-u1.1-stable
truenas/13.0-u5.2-stable
truenas/13.3-stable
truenas/21.08-stable
use-acl-inheritance-new-dataset
zectl-callerror-stderr
11.1-U5
11.1-U4
11.1-U3
11.1-U2
11.1-U1
11.1-RELEASE
11.1-RC2
11.1-RC1
11.1-BETA1
TS-24.04-RC.1
TS-24.04-BETA.1
TS-23.10.2
TS-23.10.1.3
TS-23.10.1.2
TS-23.10.1.1
TS-23.10.1
TS-23.10.0.1
TS-23.10.0
TS-23.10-RC.1
TS-23.10-BETA.1
TS-22.12.4.2
TS-22.12.4.1
TS-22.12.4
TS-22.12.3.3
TS-22.12.3.2
TS-22.12.3.1
TS-22.12.3
TS-22.12.2
TS-22.12.1
TS-22.12.0
TS-22.12-RC.1
TS-22.12-BETA.2
TS-22.12-BETA.1
TS-22.12-ALPHA.1
TS-22.02.4
TS-22.02.3
TS-22.02.2.1
TS-22.02.2
TS-22.02.1
TS-22.02.0.1
TS-22.02.0
TS-22.2.0
TS-22.02.RELEASE.1
TS-22.02-RC.2
TS-22.02-RC.1
TS-22.02-RC.1-2
TS-22.02-RC.1-1
TS-21.08-BETA.2
TS-21.08-BETA.1
TS-21.06-BETA.1
TS-21.04-ALPHA.1
TS-21.02-ALPHA.1
TS-20.12-ALPHA
TS-20.10-ALPHA
TS-12.12.3
TN-13.0-U6.1
TN-13.0-U6
TN-13.0-U5.3
TN-13.0-U5.2
TN-13.0-U5.1
TN-13.0-U5
TN-13.0-U4
TN-13.0-U3.1
TN-13.0-U3
TN-13.0-U2
TN-13.0-U1.1
TN-13.0-U1
TN-13.0-RELEASE
TN-13.0-RC1
TN-13.0-BETA1
TN-12.0-U8.1
TN-12.0-U8
TN-12.0-U7
TN-12.0-U6.1
TN-12.0-U6
TN-12.0-U5.1
TN-12.0-U5
TN-12.0-U4.1
TN-12.0-U4
TN-12.0-U3.1
TN-12.0-U3
TN-12.0-U2.1
TN-12.0-U2
TN-12.0-U1.1
TN-12.0-U1
TN-12.0-RELEASE
TN-12.0-RC1
TN-12.0-BETA2.1
TN-12.0-BETA2
TN-12.0-BETA1
TN-11.3-U5
TN-11.3-U4.1
TN-11.3-U3.2
TN-11.3-U2.2
TN-11.3-U2.1
TN-11.3-U2
TN-11.3-RC2
TN-11.3-RC1
TN-11.3-PREVIEW1
TN-11.3-BETA1
TN-11.3-ALPHA2
TN-11.3-ALPHA1
TN-11.3-ALPHA1-INTERNAL02
TN-11.3-ALPHA1-INTERNAL01
TN-11.2-U8.2
TN-11.2-U8.1
TN-11.2-U8
TN-11.2-U7
TN-11.2-U6.1
TN-11.2-U6
TN-11.2-U5.1
TN-11.2-U5
TN-11.1-U7.1
TN-11.1-U7
TN-11.1-U6.4
TN-11.1-U6.3
TN-11.1-U6.2
TN-11.1-U6.1
TN-11.1-U6
TN-11.1-U5.1
FN-11.3.U4
FN-11.3-U5
FN-11.3-U4.1
FN-11.3-U3.2
FN-11.3-U3.1
FN-11.3-U3
FN-11.3-U2.1
FN-11.3-U2
FN-11.3-U1
FN-11.3-RELEASE
FN-11.3-RC2
FN-11.3-RC1
FN-11.3-BETA1
FN-11.3-BETA1-INTERNAL02
FN-11.3-BETA1-INTERNAL01
FN-11.2-U8.2
FN-11.2-U8.1
FN-11.2-U8
FN-11.2-U7
FN-11.2-U6
FN-11.2-U5
FN-11.2-U4.1
FN-11.2-U4
FN-11.2-U3
FN-11.2-U2.1
FN-11.2-U2
FN-11.2-RELEASE
FN-11.2-RELEASE-U1
FN-11.2-RC2
FN-11.2-RC1
FN-11.2-BETA3
FN-11.2-BETA2
FN-11.2-BETA1
FN-11.1-U7
FN-11.1-U6.3
FN-11.1-U6
DN110M-CS-v2.0
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
gui/freeadmin/site.py
+2
-1
gui/freeadmin/site.py
gui/freeadmin/utils.py
+56
-1
gui/freeadmin/utils.py
gui/freeadmin/views.py
+2
-48
gui/freeadmin/views.py
with
60 additions
and
50 deletions
+60
-50
gui/freeadmin/site.py
View file @
7aabb9d3
...
...
@@ -18,6 +18,7 @@ from django.views.decorators.csrf import csrf_protect
from
freenasUI.common.system
import
get_sw_name
,
get_sw_version
from
freenasUI.freeadmin.apppool
import
appPool
from
freenasUI.freeadmin.options
import
BaseFreeAdmin
from
freenasUI.freeadmin.utils
import
request2crashreporting
RE_ALERT
=
re
.
compile
(
r
'^(?P<status>\w+)\[(?P<msgid>.+?)\]: (?P<message>.+)'
)
log
=
logging
.
getLogger
(
'freeadmin.site'
)
...
...
@@ -233,7 +234,7 @@ class FreeAdminSite(object):
except
Exception
:
middleware_token
=
None
extra_log_files
=
((
'/var/log/middlewared.log'
,
'middlewared_log'
),)
self
.
trace
.
report
(
sys
.
exc_info
(),
request
,
sw_version
,
extra_log_files
)
self
.
trace
.
report
(
sys
.
exc_info
(),
request
2crashreporting
(
request
)
,
extra_log_files
)
return
render
(
request
,
'freeadmin/index.html'
,
{
'consolemsg'
:
console
,
...
...
This diff is collapsed.
Click to expand it.
gui/freeadmin/utils.py
View file @
7aabb9d3
...
...
@@ -29,12 +29,16 @@ import re
import
subprocess
from
collections
import
OrderedDict
from
django.core.exceptions
import
SuspiciousOperation
from
django.db.models
import
CASCADE
from
django.db.models.fields.related
import
OneToOneRel
from
django.utils
import
translation
from
django.utils.datastructures
import
MultiValueDict
from
freenasUI.common.pipesubr
import
pipeopen
from
freenasUI.system.models
import
Settings
from
raven.contrib.django.utils
import
get_host
from
raven.utils.wsgi
import
get_headers
,
get_environ
log
=
logging
.
getLogger
(
'freeadmin.utils'
)
...
...
@@ -88,6 +92,7 @@ def get_related_objects(obj):
def
set_language
():
from
freenasUI.system.models
import
Settings
language
=
Settings
.
objects
.
order_by
(
'-id'
)[
0
].
stg_language
translation
.
activate
(
language
)
...
...
@@ -132,3 +137,53 @@ def log_db_locked():
log
.
debug
(
f
'PID
{
pid
}
:
{
" "
.
join
(
proc
.
cmdline
())
}
'
)
except
Exception
as
e
:
pass
def
request2crashreporting
(
request
):
"""
Transform django/wsgi request object to a dict the crash reporting
can understand.
"""
data
=
{}
# Pieces grabbed from raven.contrib.django.client
try
:
uri
=
request
.
build_absolute_uri
()
except
SuspiciousOperation
:
# attempt to build a URL for reporting as Django won't allow us to
# use get_host()
if
request
.
is_secure
():
scheme
=
'https'
else
:
scheme
=
'http'
host
=
get_host
(
request
)
uri
=
'%s://%s%s'
%
(
scheme
,
host
,
request
.
path
)
rdata
=
None
if
request
.
method
not
in
(
'GET'
,
'HEAD'
):
try
:
rdata
=
request
.
body
except
Exception
:
try
:
rdata
=
request
.
raw_post_data
except
Exception
:
# assume we had a partial read.
try
:
rdata
=
request
.
POST
or
'<unavailable>'
except
Exception
:
rdata
=
'<unavailable>'
else
:
if
isinstance
(
rdata
,
MultiValueDict
):
rdata
=
dict
(
(
k
,
v
[
0
]
if
len
(
v
)
==
1
else
v
)
for
k
,
v
in
iter
(
rdata
.
lists
()))
data
[
'request'
]
=
{
'method'
:
request
.
method
,
'url'
:
uri
,
'query_string'
:
request
.
META
.
get
(
'QUERY_STRING'
),
'data'
:
rdata
,
'cookies'
:
dict
(
request
.
COOKIES
),
'headers'
:
dict
(
get_headers
(
request
.
META
)),
'env'
:
dict
(
get_environ
(
request
.
META
)),
}
This diff is collapsed.
Click to expand it.
gui/freeadmin/views.py
View file @
7aabb9d3
...
...
@@ -31,19 +31,15 @@ import sys
from
middlewared.client
import
ClientException
import
middlewared.logger
as
logger
from
django.core.exceptions
import
SuspiciousOperation
from
django.http
import
HttpResponse
,
HttpResponseRedirect
from
django.views
import
debug
from
django.template
import
Context
,
RequestContext
from
django.template.loader
import
get_template
,
render_to_string
from
django.utils.datastructures
import
MultiValueDict
from
freenasUI.common.system
import
get_sw_version
from
freenasUI.freeadmin.utils
import
request2crashreporting
from
freenasUI.system.models
import
Advanced
from
raven.contrib.django.utils
import
get_host
from
raven.utils.wsgi
import
get_headers
,
get_environ
log
=
logging
.
getLogger
(
'freeadmin.views'
)
...
...
@@ -211,49 +207,7 @@ def server_error(request, *args, **kwargs):
if
issubclass
(
exc_info
[
0
],
(
ClientException
,
socket
.
timeout
)):
extra_log_files
.
insert
(
0
,
(
'/var/log/middlewared.log'
,
'middlewared_log'
))
data
=
{}
# Pieces grabbed from raven.contrib.django.client
try
:
uri
=
request
.
build_absolute_uri
()
except
SuspiciousOperation
:
# attempt to build a URL for reporting as Django won't allow us to
# use get_host()
if
request
.
is_secure
():
scheme
=
'https'
else
:
scheme
=
'http'
host
=
get_host
(
request
)
uri
=
'%s://%s%s'
%
(
scheme
,
host
,
request
.
path
)
if
request
.
method
not
in
(
'GET'
,
'HEAD'
):
try
:
rdata
=
request
.
body
except
Exception
:
try
:
rdata
=
request
.
raw_post_data
except
Exception
:
# assume we had a partial read.
try
:
rdata
=
request
.
POST
or
'<unavailable>'
except
Exception
:
rdata
=
'<unavailable>'
else
:
if
isinstance
(
rdata
,
MultiValueDict
):
rdata
=
dict
(
(
k
,
v
[
0
]
if
len
(
v
)
==
1
else
v
)
for
k
,
v
in
iter
(
rdata
.
lists
()))
data
[
'request'
]
=
{
'method'
:
request
.
method
,
'url'
:
uri
,
'query_string'
:
request
.
META
.
get
(
'QUERY_STRING'
),
'data'
:
rdata
,
'cookies'
:
dict
(
request
.
COOKIES
),
'headers'
:
dict
(
get_headers
(
request
.
META
)),
'env'
:
dict
(
get_environ
(
request
.
META
)),
}
crash_reporting
.
report
(
exc_info
,
data
,
extra_log_files
)
crash_reporting
.
report
(
exc_info
,
request2crashreporting
(
request
),
extra_log_files
)
try
:
if
tb
:
...
...
This diff is collapsed.
Click to expand it.
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
Menu
Projects
Groups
Snippets
Help