You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.0 KiB
75 lines
2.0 KiB
// @flow
|
|
import pname from 'helpers/pname'
|
|
import anonymizer from 'helpers/anonymizer'
|
|
/* eslint-disable no-continue */
|
|
|
|
require('../env')
|
|
|
|
export default (Raven: any, shouldSendCallback: () => boolean, userId: string) => {
|
|
if (!__SENTRY_URL__) return
|
|
let r = Raven.config(__SENTRY_URL__, {
|
|
captureUnhandledRejections: true,
|
|
allowSecretKey: true,
|
|
release: __APP_VERSION__,
|
|
tags: {
|
|
git_commit: __GIT_REVISION__,
|
|
},
|
|
sampleRate: 0.01,
|
|
environment: __DEV__ ? 'development' : 'production',
|
|
shouldSendCallback,
|
|
ignoreErrors: [
|
|
'failed with status code',
|
|
'status code 404',
|
|
'timeout',
|
|
'socket hang up',
|
|
'getaddrinfo',
|
|
'could not read from HID device',
|
|
'ENOTFOUND',
|
|
'ETIMEDOUT',
|
|
'ECONNRESET',
|
|
'ENETUNREACH',
|
|
'request timed out',
|
|
'NetworkDown',
|
|
'ERR_CONNECTION_TIMED_OUT',
|
|
],
|
|
autoBreadcrumbs: {
|
|
xhr: false, // it is track anonymously from logger
|
|
console: false, // we don't track because not anonymized
|
|
dom: false, // user interactions like clicks. it's too cryptic to be exploitable.
|
|
location: false, // we don't really need location change because we use trackpage
|
|
sentry: true,
|
|
},
|
|
extra: {
|
|
process: pname,
|
|
},
|
|
dataCallback: (data: mixed) => {
|
|
// We are mutating the data to anonymize everything.
|
|
|
|
if (typeof data !== 'object' || !data) return data
|
|
|
|
delete data.server_name // hides the user machine name
|
|
|
|
if (typeof data.request === 'object' && data.request) {
|
|
const { request } = data
|
|
if (typeof request.url === 'string') {
|
|
request.url = anonymizer.appURI(request.url)
|
|
}
|
|
}
|
|
|
|
anonymizer.filepathRecursiveReplacer(data)
|
|
|
|
console.log('Sentry=>', data) // eslint-disable-line
|
|
return data
|
|
},
|
|
})
|
|
const user = {
|
|
ip_address: null,
|
|
id: userId,
|
|
}
|
|
if (r.setUserContext) {
|
|
r = r.setUserContext(user)
|
|
} else if (r.setContext) {
|
|
r = r.setContext({ user })
|
|
}
|
|
r.install()
|
|
}
|
|
|