type Cloudflare = {
token: string;
email: string;
key: string;
};
/**
* Create Load Balancer
* Create a new load balancer.
*/
export async function main(
auth: Cloudflare,
identifier: string,
body: {
adaptive_routing?: {
failover_across_pools?: boolean;
[k: string]: unknown;
};
country_pools?: { [k: string]: unknown };
default_pools: string[];
description?: string;
fallback_pool: { [k: string]: unknown };
location_strategy?: {
mode?: "pop" | "resolver_ip";
prefer_ecs?: "always" | "never" | "proximity" | "geo";
[k: string]: unknown;
};
name: string;
pop_pools?: { [k: string]: unknown };
proxied?: boolean;
random_steering?: {
default_weight?: number;
pool_weights?: { [k: string]: unknown };
[k: string]: unknown;
};
region_pools?: { [k: string]: unknown };
rules?: {
condition?: string;
disabled?: boolean;
fixed_response?: {
content_type?: string;
location?: string;
message_body?: string;
status_code?: number;
[k: string]: unknown;
};
name?: string;
overrides?: {
adaptive_routing?: {
failover_across_pools?: boolean;
[k: string]: unknown;
};
country_pools?: { [k: string]: unknown };
default_pools?: string[];
fallback_pool?: { [k: string]: unknown };
location_strategy?: {
mode?: "pop" | "resolver_ip";
prefer_ecs?: "always" | "never" | "proximity" | "geo";
[k: string]: unknown;
};
pop_pools?: { [k: string]: unknown };
random_steering?: {
default_weight?: number;
pool_weights?: { [k: string]: unknown };
[k: string]: unknown;
};
region_pools?: { [k: string]: unknown };
session_affinity?: "none" | "cookie" | "ip_cookie" | "header" | '""';
session_affinity_attributes?: {
drain_duration?: number;
headers?: string & string[];
require_all_headers?: boolean;
samesite?: "Auto" | "Lax" | "None" | "Strict";
secure?: "Auto" | "Always" | "Never";
zero_downtime_failover?: "none" | "temporary" | "sticky";
[k: string]: unknown;
};
session_affinity_ttl?: number;
steering_policy?:
| "off"
| "geo"
| "random"
| "dynamic_latency"
| "proximity"
| "least_outstanding_requests"
| "least_connections"
| '""';
ttl?: number;
[k: string]: unknown;
};
priority?: number;
terminates?: boolean;
}[];
session_affinity?: "none" | "cookie" | "ip_cookie" | "header" | '""';
session_affinity_attributes?: {
drain_duration?: number;
headers?: string & string[];
require_all_headers?: boolean;
samesite?: "Auto" | "Lax" | "None" | "Strict";
secure?: "Auto" | "Always" | "Never";
zero_downtime_failover?: "none" | "temporary" | "sticky";
[k: string]: unknown;
};
session_affinity_ttl?: number;
steering_policy?:
| "off"
| "geo"
| "random"
| "dynamic_latency"
| "proximity"
| "least_outstanding_requests"
| "least_connections"
| '""';
ttl?: number;
[k: string]: unknown;
}
) {
const url = new URL(
`https://api.cloudflare.com/client/v4/zones/${identifier}/load_balancers`
);
const response = await fetch(url, {
method: "POST",
headers: {
"X-AUTH-EMAIL": auth.email,
"X-AUTH-KEY": auth.key,
"Content-Type": "application/json",
Authorization: "Bearer " + auth.token,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 86 days ago
type Cloudflare = {
token: string;
email: string;
key: string;
};
/**
* Create Load Balancer
* Create a new load balancer.
*/
export async function main(
auth: Cloudflare,
identifier: string,
body: {
adaptive_routing?: {
failover_across_pools?: boolean;
[k: string]: unknown;
};
country_pools?: { [k: string]: unknown };
default_pools: string[];
description?: string;
fallback_pool: { [k: string]: unknown };
location_strategy?: {
mode?: "pop" | "resolver_ip";
prefer_ecs?: "always" | "never" | "proximity" | "geo";
[k: string]: unknown;
};
name: string;
pop_pools?: { [k: string]: unknown };
proxied?: boolean;
random_steering?: {
default_weight?: number;
pool_weights?: { [k: string]: unknown };
[k: string]: unknown;
};
region_pools?: { [k: string]: unknown };
rules?: {
condition?: string;
disabled?: boolean;
fixed_response?: {
content_type?: string;
location?: string;
message_body?: string;
status_code?: number;
[k: string]: unknown;
};
name?: string;
overrides?: {
adaptive_routing?: {
failover_across_pools?: boolean;
[k: string]: unknown;
};
country_pools?: { [k: string]: unknown };
default_pools?: string[];
fallback_pool?: { [k: string]: unknown };
location_strategy?: {
mode?: "pop" | "resolver_ip";
prefer_ecs?: "always" | "never" | "proximity" | "geo";
[k: string]: unknown;
};
pop_pools?: { [k: string]: unknown };
random_steering?: {
default_weight?: number;
pool_weights?: { [k: string]: unknown };
[k: string]: unknown;
};
region_pools?: { [k: string]: unknown };
session_affinity?: "none" | "cookie" | "ip_cookie" | "header" | '""';
session_affinity_attributes?: {
drain_duration?: number;
headers?: string & string[];
require_all_headers?: boolean;
samesite?: "Auto" | "Lax" | "None" | "Strict";
secure?: "Auto" | "Always" | "Never";
zero_downtime_failover?: "none" | "temporary" | "sticky";
[k: string]: unknown;
};
session_affinity_ttl?: number;
steering_policy?:
| "off"
| "geo"
| "random"
| "dynamic_latency"
| "proximity"
| "least_outstanding_requests"
| "least_connections"
| '""';
ttl?: number;
[k: string]: unknown;
};
priority?: number;
terminates?: boolean;
}[];
session_affinity?: "none" | "cookie" | "ip_cookie" | "header" | '""';
session_affinity_attributes?: {
drain_duration?: number;
headers?: string & string[];
require_all_headers?: boolean;
samesite?: "Auto" | "Lax" | "None" | "Strict";
secure?: "Auto" | "Always" | "Never";
zero_downtime_failover?: "none" | "temporary" | "sticky";
[k: string]: unknown;
};
session_affinity_ttl?: number;
steering_policy?:
| "off"
| "geo"
| "random"
| "dynamic_latency"
| "proximity"
| "least_outstanding_requests"
| "least_connections"
| '""';
ttl?: number;
[k: string]: unknown;
}
) {
const url = new URL(
`https://api.cloudflare.com/client/v4/zones/${identifier}/load_balancers`
);
const response = await fetch(url, {
method: "POST",
headers: {
"X-AUTH-EMAIL": auth.email,
"X-AUTH-KEY": auth.key,
"Content-Type": "application/json",
Authorization: "Bearer " + auth.token,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 624 days ago