This commit is contained in:
Xavier Fiechter 2024-03-21 17:08:23 +01:00
parent b92251e8f7
commit ecac0aaaf3
5 changed files with 50 additions and 33 deletions

View file

@ -1,24 +1,29 @@
from sentry_sdk.scrubber import EventScrubber, DEFAULT_DENYLIST
import logging
logger = logging.getLogger('labelbase')
# https://docs.sentry.io/platforms/python/data-management/sensitive-data/
# https://docs.sentry.io/platforms/python/configuration/filtering/
# Define your custom denylist if needed
custom_denylist = DEFAULT_DENYLIST # + ['custom_sensitive_key']
event_scrubber = EventScrubber(denylist=custom_denylist)
class MyEventScrubber:
def scrub_event(self, event):
# Scrub IP from request environment
if 'request' in event and 'env' in event['request'] and 'REMOTE_ADDR' in event['request']['env']:
event['request']['env']['REMOTE_ADDR'] = '0.0.0.0'
# Scrub IP from user information
if 'user' in event and 'ip_address' in event['user']:
event['user']['ip_address'] = '0.0.0.0'
def before_send(event, hint):
try:
from django.contrib.auth.models import User # keep import here
user_data = event.get('user', {})
user_id = user_data.get('id', 'No User ID')
user = User.objects.get(id=user_id)
# Check user's preference for error tracking
if user.profile.use_sentry:
event_scrubber.scrub_event(event)
print(event)
print ("return event {}".format(event))
return event
user_id = user_data.get('id', 0)
if User.objects.filter(id=user_id).exists():
user = User.objects.get(id=user_id)
if user.profile.use_sentry:
event_scrubber = MyEventScrubber()
event_scrubber.scrub_event(event)
#print(f"return event {event} for {user_id}")
return event
return None
except Exception as e:
print(e)
pass
return None
return event

View file

@ -47,17 +47,12 @@ SENTRY_DSN = proj_config.get("internal", "sentry_dsn")
sentry_sdk.init(
dsn=SENTRY_DSN,
#integrations=[
# DjangoIntegration(),
#],
before_send=before_send,
integrations=[
DjangoIntegration(),
],
# Set traces_sample_rate to 1.0 to capture 100%
# of transactions for performance monitoring.
# We recommend adjusting this value in production.
traces_sample_rate=1.0,
# If you wish to associate users to errors (assuming you are using
# django.contrib.auth) you may enable sending PII data.
send_default_pii=True, # must be true, for before_send logic
send_default_pii=True, # must be "True" here, will skip or omit in `before_send` callback
)
sentry_sdk.set_tag("version", "2.0.0")
@ -87,7 +82,7 @@ LOGGING = {
'level': 'DEBUG',
'propagate': True,
},
},
}
}
# Application definition

View file

@ -66,7 +66,6 @@ class LabelDeleteView(DeleteView):
error_url = "/#failed"
def post(self, request, *args, **kwargs):
1/0
self.object = self.get_object()
if self.object.labelbase.user != self.request.user:
return redirect(self.error_url)

View file

@ -61,11 +61,11 @@
<div class="carousel-item active">
<h5>Sentry Error Tracking</h5>
<p>
We use Sentry for anonymized error tracking to improve service reliability. This is enabled by default in our new release. Rest assured, no personal data is collected.
</p>
<p>
You can opt out of this feature in your <a href="{% url 'userprofile' %}">profile settings</a>.
</p>
We use Sentry for anonymized error tracking to improve service reliability. This is enabled by default in our new release. Rest assured, no personal data is collected.
</p>
<p>
You can opt out of this feature in your <a class="ok-welcome-message" href="{% url 'userprofile' %}">profile settings</a>.
</p>
</div>
<!--div class="carousel-item active">
@ -80,7 +80,7 @@
<div class="carousel-item ">
<h5>Mempool and Electrum Server</h5>
<p>
If you would like to set up your own Mempool or Electrum server for privacy reasons, please visit the dedicated settings section in your <a href="{% url 'userprofile' %}">profile settings</a>.
If you would like to set up your own Mempool or Electrum server for privacy reasons, please visit the dedicated settings section in your <a class="ok-welcome-message" href="{% url 'userprofile' %}">profile settings</a>.
</p>
</div>

View file

@ -0,0 +1,18 @@
# Generated by Django 3.2.25 on 2024-03-21 13:43
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('userprofile', '0014_profile_has_seen_welcome_popup'),
]
operations = [
migrations.AlterField(
model_name='profile',
name='use_sentry',
field=models.BooleanField(default=True),
),
]