|
1 | | -## `greasereport` |
| 1 | +# ECH GREASE Report Generation |
2 | 2 |
|
3 | 3 | This tool, located in the `greasereport/` directory, issues HEAD requests to a list of domains with and without ECH GREASE to test for compatibility. It uses a custom-built ECH-enabled `curl` binary for these requests. |
4 | 4 |
|
| 5 | +## Requirements |
| 6 | + |
| 7 | +You need to build the ECH-enabled `curl` and place it in the workspace directory. See [instructions](../curl/README.md). |
| 8 | + |
| 9 | +## Running |
| 10 | + |
5 | 11 | To run the tool, use the `go run` command from the `ech-test` directory: |
6 | 12 |
|
7 | 13 | ```sh |
@@ -41,60 +47,7 @@ The tool generates a CSV file (`workspace/grease-results-top<N>.csv`) with the f |
41 | 47 | * `total_time_ms`: The total duration of the request. |
42 | 48 | * `http_status`: The HTTP status code of the response. |
43 | 49 |
|
44 | | ---- |
45 | | - |
46 | | -## ECH-enabled `curl` |
47 | | - |
48 | | -This is a custom build of `curl` with ECH support from the [DEfO project](https://github.com/defo-project). It is useful for manually testing ECH functionality against specific web servers. |
49 | | - |
50 | | -### Prerequisites (for building on macOS) |
51 | | - |
52 | | -* Homebrew |
53 | | -* `automake` |
54 | | -* `libtool` |
55 | | -* `pkg-config` |
56 | | -* `libpsl` |
57 | | - |
58 | | -### Building |
59 | | - |
60 | | -A helper script, `build-curl.sh`, is provided to automate the build process for `curl` and its dependency, `openssl`. |
61 | | - |
62 | | -To build the ECH-enabled `curl`, run the script from the `greasereport` directory and provide an output path: |
63 | | - |
64 | | -```sh |
65 | | -./build-curl.sh <output_directory> |
66 | | -``` |
67 | | - |
68 | | -For example, to build `curl` and place the output in the `workspace` directory: |
69 | | - |
70 | | -```sh |
71 | | -./build-curl.sh ../workspace |
72 | | -``` |
73 | | - |
74 | | -The script will download the source code for `openssl` and `curl`, build them, and install the final binaries in the specified output directory. |
75 | | - |
76 | | -For more details on how to use `curl` with ECH, see the [official documentation](https://github.com/defo-project/curl/blob/master/docs/ECH.md). |
77 | | - |
78 | | -### Verifying the build |
79 | | - |
80 | | -To test that your custom `curl` build is working correctly, run it against the DEfO test server: |
81 | | - |
82 | | -```sh |
83 | | -"$(pwd)/workspace/output/bin/curl" --ech=true --doh-url https://1.1.1.1/dns-query 'https://test.defo.ie/echstat.php?format=json' | jq |
84 | | -``` |
85 | | - |
86 | | -Example output: |
87 | | -```json |
88 | | -{ |
89 | | - "SSL_ECH_OUTER_SNI": "public.test.defo.ie", |
90 | | - "SSL_ECH_INNER_SNI": "test.defo.ie", |
91 | | - "SSL_ECH_STATUS": "success", |
92 | | - "date": "2025-11-06T19:36:47+00:00", |
93 | | - "config": "min-ng.test.defo.ie" |
94 | | -} |
95 | | -``` |
96 | | - |
97 | | -### Report |
| 50 | +## Report |
98 | 51 |
|
99 | 52 | After running the `greasereport` tool, a `report` subdirectory is created within the `greasereport` directory. This directory contains: |
100 | 53 |
|
|
0 commit comments