configUtil.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. const cp = require('child_process');
  2. const { getIsSentryEnabled } = require('./sentryConfigUtil');
  3. module.exports = {
  4. COOP_COEP_HEADERS: {
  5. 'Cross-Origin-Opener-Policy': 'same-origin',
  6. 'Cross-Origin-Embedder-Policy': 'require-corp',
  7. },
  8. WEB_SECURITY_HEADERS: {
  9. 'Strict-Transport-Security': ' max-age=63072000',
  10. 'X-Content-Type-Options': 'nosniff',
  11. 'X-Download-Options': 'noopen',
  12. 'X-Frame-Options': 'deny',
  13. 'X-XSS-Protection': '1; mode=block',
  14. 'Referrer-Policy': 'same-origin',
  15. },
  16. CSP_DIRECTIVES: {
  17. // self is safe enough
  18. 'default-src': "'self'",
  19. // data to allow two factor qr code
  20. 'img-src': "'self' blob: data:",
  21. 'media-src': "'self' blob:",
  22. 'manifest-src': "'self'",
  23. 'style-src': "'self' 'unsafe-inline'",
  24. 'font-src ': "'self'; script-src 'self' 'unsafe-eval' blob:",
  25. 'connect-src':
  26. "'self' https://*.ente.io http://localhost:8080 data: blob: https://ente-prod-eu.s3.eu-central-003.backblazeb2.com https://ente-prod-v3.s3.eu-central-2.wasabisys.com/",
  27. 'base-uri ': "'self'",
  28. // to allow worker
  29. 'child-src': "'self' blob:",
  30. 'object-src': "'none'",
  31. 'frame-ancestors': " 'none'",
  32. 'form-action': "'none'",
  33. 'report-uri': ' https://csp-reporter.ente.io/local',
  34. 'report-to': ' https://csp-reporter.ente.io/local',
  35. },
  36. ALL_ROUTES: '/(.*)',
  37. buildCSPHeader: (directives) => ({
  38. 'Content-Security-Policy-Report-Only': Object.entries(
  39. directives
  40. ).reduce((acc, [key, value]) => acc + `${key} ${value};`, ''),
  41. }),
  42. convertToNextHeaderFormat: (headers) =>
  43. Object.entries(headers).map(([key, value]) => ({ key, value })),
  44. getGitSha: () =>
  45. cp.execSync('git rev-parse --short HEAD', {
  46. cwd: __dirname,
  47. encoding: 'utf8',
  48. }),
  49. getIsSentryEnabled: getIsSentryEnabled,
  50. };