Get BGP hijack events

Get the BGP hijack events. (Beta)

Script cloudflare Verified

by hugo697 ยท 11/16/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 383 days ago
1
type Cloudflare = {
2
  token: string;
3
  email: string;
4
  key: string;
5
};
6
/**
7
 * Get BGP hijack events
8
 * Get the BGP hijack events. (Beta)
9
 */
10
export async function main(
11
  auth: Cloudflare,
12
  page: string | undefined,
13
  per_page: string | undefined,
14
  eventId: string | undefined,
15
  hijackerAsn: string | undefined,
16
  victimAsn: string | undefined,
17
  involvedAsn: string | undefined,
18
  involvedCountry: string | undefined,
19
  prefix: string | undefined,
20
  minConfidence: string | undefined,
21
  maxConfidence: string | undefined,
22
  dateRange:
23
    | "1d"
24
    | "2d"
25
    | "7d"
26
    | "14d"
27
    | "28d"
28
    | "12w"
29
    | "24w"
30
    | "52w"
31
    | "1dControl"
32
    | "2dControl"
33
    | "7dControl"
34
    | "14dControl"
35
    | "28dControl"
36
    | "12wControl"
37
    | "24wControl"
38
    | undefined,
39
  dateStart: string | undefined,
40
  dateEnd: string | undefined,
41
  sortBy: "ID" | "TIME" | "CONFIDENCE" | undefined,
42
  sortOrder: "ASC" | "DESC" | undefined,
43
  format: "JSON" | "CSV" | undefined
44
) {
45
  const url = new URL(
46
    `https://api.cloudflare.com/client/v4/radar/bgp/hijacks/events`
47
  );
48
  for (const [k, v] of [
49
    ["page", page],
50
    ["per_page", per_page],
51
    ["eventId", eventId],
52
    ["hijackerAsn", hijackerAsn],
53
    ["victimAsn", victimAsn],
54
    ["involvedAsn", involvedAsn],
55
    ["involvedCountry", involvedCountry],
56
    ["prefix", prefix],
57
    ["minConfidence", minConfidence],
58
    ["maxConfidence", maxConfidence],
59
    ["dateRange", dateRange],
60
    ["dateStart", dateStart],
61
    ["dateEnd", dateEnd],
62
    ["sortBy", sortBy],
63
    ["sortOrder", sortOrder],
64
    ["format", format],
65
  ]) {
66
    if (v !== undefined && v !== "") {
67
      url.searchParams.append(k, v);
68
    }
69
  }
70
  const response = await fetch(url, {
71
    method: "GET",
72
    headers: {
73
      "X-AUTH-EMAIL": auth.email,
74
      "X-AUTH-KEY": auth.key,
75
      Authorization: "Bearer " + auth.token,
76
    },
77
    body: undefined,
78
  });
79
  if (!response.ok) {
80
    const text = await response.text();
81
    throw new Error(`${response.status} ${text}`);
82
  }
83
  return await response.json();
84
}
85