A simple server for automated crash reporting, which stores reports using dynamodb as a backing store. Keys are md5 hashes of the report content, used to uniquely identify each file within a group. Group IDs are human-readable identifiers for reports (i.e. from a particular catch block) which enable grouping of reports which occurred in a specific set of circumstances.
1. Create a GitHub App with permission to read the repository, and read/create issues
2. Generate the App Secrets (CLIENT_ID, CLIENT_SECRET, APP_ID) + the private key file
- Webhook is required for creating an app, but we do not use it and the secret should be excluded
3. Move the private key file to a secure location of which the instance has read access.
4. Install the App onto the repository, record the install ID.
5. Create the necessary params (See gh/service.go -> Secrets, Repo structs for param names)
6. Specify the JWT and MSS Certificate Parameters (see auth/setup.go -> Config)
7. Setup aws credentials, yada yada, ready to go.
. On build => generate & add certificate for release version
. On first bug report => exchange certificate for jwt
. Use JWT to send report
. Provide GH user & token
. Recieve JWT
. Use JWT to make queries
. Config, gh.Secrets, auth.Secrets => all have tagged fields (tag="paramName")
. The tagged fields are extracted from the param store using the tag value as the param name
. tags with values of form: "{value},secret" should be stored/transmitted as a SecureString
`/certificate/{mssCertificate}/*`
- (*Cors).Handler-fm
- RequestID
- Recoverer
- URLFormat
- Logger
- /certificate/{mssCertificate}/*
`/report/*`
`/report/*/group/{reportsGID}/*`
- (*Cors).Handler-fm
- RequestID
- Recoverer
- URLFormat
- Logger
- /report/*
- /group/{reportsGID}/*
`/report/*/group/{reportsGID}/key/{reportsKey}/*`
- (*Cors).Handler-fm
- RequestID
- Recoverer
- URLFormat
- Logger
- /report/*
- /group/{reportsGID}/key/{reportsKey}/*
`/token/*`
Total # of routes: 5