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

// @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()
}