Skip to content

Commit b1f37cf

Browse files
committed
feat: add support for tracking all programs
1 parent 16519cf commit b1f37cf

17 files changed

+11847
-6830
lines changed

Diff for: .gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
global/
2+
13
# Generated by Cargo
24
# will have compiled files and executables
35
debug/

Diff for: README.md

+7-10
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,20 @@ Monitor HackerOne reports and track changes in the leaderboard of programs using
88
It uses the HackerOne GraphQL API to poll for new reports and leaderboard changes every 5 minutes, then sends a message to the webhook you conifugre.
99

1010
[HackerOne reputation overview](https://docs.hackerone.com/hackers/reputation.html)
11-
1211
![showcase](https://i.imgur.com/g2J0xRK.png)
13-
![showcase 2](https://i.imgur.com/N1CbWJp.png)
1412

15-
https://github.com/hackermondev/hackerone-tracker
1613

17-
## Setup
14+
## Installation
1815

1916
Clone the repository (requires [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/)):
2017
```bash
21-
git clone https://github.com/hackermondev/sexurity
18+
git clone https://github.com/hackermondev/hackerone-tracker
2219
```
2320
or clone on Replit:<br>
2421
[![Run on Repl.it](https://replit.com/badge/github/hackermondev/hackerone-tracker)](https://replit.com/new/github/hackermondev/hackerone-tracker)
2522

2623

2724

28-
2925
### Setup your configuration (config.example.yaml):
3026
```yaml
3127
discord:
@@ -37,13 +33,14 @@ poller:
3733
handle: "" # HackerOne team handle
3834
session_token: "" # HackerOne session token (the "__Host-session" cookie), this is only required if you're tracking a private team
3935
```
40-
(If you're entering your session token and using Replit, make sure your repl is set to private. You'll also need to make sure you're logged in with HackerOne on the "2 weeks" session option and update your session token every 2 weeks)
36+
(If you're entering your session token and using Replit, make sure your repl is set to private. You'll also need to make sure you're logged in with HackerOne on the "2 weeks" session option and update your session token every 2 weeks in config)
4137
38+
If you're wish to track leaderboard changes and reports in all public programs, simply remove the `handle: ""` line.
4239

4340
After entering your config, **rename the file to ``config.yaml``**. If you're using Replit, simply click the ``Run`` button, otherwise with Docker compose run: ``sudo docker compose up --build -d``. Wait for it to build (this can take up to 5 minutes) and then you should now be tracking the leaderboad changes.
44-
If you use this, Star the repository please :)
4541

46-
If you're using Replit, make sure to enable "Always On" with Replit or use a pinger to make sure it's always running.
42+
If you're using Replit, make sure to enable "Always On" with Replit to ensure it keeps running.
43+
4744

4845
## Contributing
49-
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
46+
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Diff for: config.example.yaml

+4-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@ discord:
55
poller:
66
redis: redis://redis:6379 # Don't change this if you're using the default Docker compose/Replit configuration
77
handle: "" # HackerOne team handle
8-
session_token: "" # HackerOne session token (the "__Host-session" cookie), this is optional if you're using a public team
8+
session_token: "" # HackerOne session token (the "__Host-session" cookie), this is optional if you're using a public team
9+
10+
### disable_reputation_polling: "true"
11+
### disable_hackactivity_polling: "true"

Diff for: graphql/CompleteHacktivitySearchQuery.graphql

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
query CompleteHacktivitySearchQuery($queryString: String!, $from: Int, $size: Int, $sort: SortInput!) {
2+
search(
3+
index: CompleteHacktivityReportIndexService
4+
query_string: $queryString
5+
from: $from
6+
size: $size
7+
sort: $sort
8+
) {
9+
__typename
10+
total_count
11+
nodes {
12+
__typename
13+
... on CompleteHacktivityReportDocument {
14+
_id
15+
reporter {
16+
id
17+
name
18+
username
19+
__typename
20+
}
21+
cve_ids
22+
cwe
23+
severity_rating
24+
public
25+
report {
26+
id
27+
title
28+
substate
29+
url
30+
disclosed_at
31+
report_generated_content {
32+
hacktivity_summary
33+
__typename
34+
}
35+
__typename
36+
}
37+
votes
38+
team {
39+
handle
40+
name
41+
medium_profile_picture: profile_picture(size: medium)
42+
url
43+
currency
44+
}
45+
total_awarded_amount
46+
latest_disclosable_action
47+
latest_disclosable_activity_at
48+
submitted_at
49+
disclosed
50+
has_collaboration
51+
__typename
52+
}
53+
}
54+
}
55+
}

Diff for: graphql/DiscoveryQuery.graphql

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
query DiscoveryQuery($query: OpportunitiesQuery!, $filter: QueryInput!, $from: Int, $size: Int, $sort: [SortInput!], $post_filters: OpportunitiesFilterInput) {
2+
opportunities_search(
3+
query: $query
4+
filter: $filter
5+
from: $from
6+
size: $size
7+
sort: $sort
8+
post_filters: $post_filters
9+
) {
10+
nodes {
11+
... on OpportunityDocument {
12+
handle
13+
__typename
14+
}
15+
__typename
16+
}
17+
total_count
18+
__typename
19+
}
20+
}

Diff for: graphql/TeamNameHacktivityQuery.graphql

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
query TeamNameHacktivityQuery($handle: String!) {
2+
team(handle: $handle) {
3+
id
4+
name
5+
__typename
6+
}
7+
}

0 commit comments

Comments
 (0)