anglelove_199x
Đã tốn tiền
mình update helper là bị lỗi luôn chủ tịch ơiUpdate thêm một cách khác để chữa cháy, đó là liên tục request nhét vào mồm thằng cf nếu nó lỗi, chừng nào chạy đc thì thôi. Ưu điểm là mốt cf nó sửa lại hết giới hạn thì lại tự chạy nhanh lại, và tiết kiệm thời gian chạy xuống một chút hagezi normal khoảng tầm 8p.
Ai đã làm như quote trên rồi hoặc đã sync fork bản mới nhất của repo gốc thì vào đây
Copy paste vào filelib/api.js
Sau đó copy paste đè toàn bộ nội dung filelib/helpers.jsrồi bấm commit
Sau đó nhớ sửa file .yml workflow mục checkout giống y như vậyMã:import { ACCOUNT_EMAIL, ACCOUNT_ID, API_HOST, API_KEY, API_TOKEN, } from "./constants.js"; if (!globalThis.fetch) { console.warn( "\nIMPORTANT: Your Node.js version doesn't have native fetch support and may not be supported in the future. Please update to v18 or later.\n" ); // Advise what to do if running in GitHub Actions if (process.env.GITHUB_WORKSPACE) console.warn( "Since you're running in GitHub Actions, you should update your Actions workflow configuration to use Node v18 or higher." ); // Import node-fetch since there's no native fetch in this environment globalThis.fetch = (await import("node-fetch")).default; } /** * Sends a message to a Discord-compatible webhook. * @param {url|string} url The webhook URL. * @param {string} message The message to be sent. * @returns {Promise} */ async function sendMessageToWebhook(url, message) { // Create the payload object with the message // The message is provided as 2 different properties to improve compatibility with webhook servers outside Discord const payload = { content: message, body: message }; // Send a POST request to the webhook url with the payload as JSON try { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), }); // Check if the request was successful if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } else { return true; } } catch (error) { console.error('Error sending message to webhook:', error); return false; } } /** * Sends a CGPS notification to a Discord-compatible webhook. * Automatically checks if the webhook URL exists. * @param {string} msg The message to be sent. * @returns {Promise} */ export async function notifyWebhook(msg) { // Check if the webhook URL exists const webhook_url = process.env.DISCORD_WEBHOOK_URL; if (webhook_url && webhook_url.startsWith('http')) { // Send the message to the webhook try { await sendMessageToWebhook(webhook_url, `CGPS: ${msg}`); } catch (e) { console.error('Error sending message to Discord webhook:', e); } } // Not logging the lack of a webhook URL since it's not a feature everyone would use } /** * Fires request to the specified URL. * @param {string} url The URL to which the request will be fired. * @param {RequestInit} options The options to be passed to `fetch`. * @returns {Promise} */ const request = async (url, options) => { if (!(API_TOKEN || API_KEY) || !ACCOUNT_ID) { throw new Error( "The following secrets are required: CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID" ); } const headers = API_TOKEN ? { Authorization: `Bearer ${API_TOKEN}`, "Content-Type": "application/json", } : { Authorization: `Bearer ${API_KEY}`, "Content-Type": "application/json", "X-Auth-Email": ACCOUNT_EMAIL, "X-Auth-Key": API_KEY, }; const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms)); let response; let data; let attempts = 0; while(attempts < 50) { try { response = await fetch(url, { ...options, headers: { ...options.headers, ...headers, }, }); data = await response.json(); if (!response.ok) { throw new Error('Response not OK'); } return data; } catch (error) { attempts++; if(attempts >= 50) { // Send a message to the Discord webhook if it exists await notifyWebhook(`An HTTP error has occurred (${response.status}) while making a web request. Please check the logs for further details.`); throw new Error(`HTTP error! Status: ${response.status} - ${ 'errors' in data ? data.errors[0].message : JSON.stringify(data) }`); } await wait(5000); } } }; /** * Fires request to the Zero Trust gateway. * @param {string} path The path which will be appended to the request URL. * @param {RequestInit} options The options to be passed to `fetch`. * @returns {Promise} */ export const requestGateway = (path, options) => request(`${API_HOST}/accounts/${ACCOUNT_ID}/gateway${path}`, options); /** * Normalizes a domain. * @param {string} value The value to be normalized. * @param {boolean} isAllowlisting Whether the value is to be allowlisted. * @returns {string} */ export const normalizeDomain = (value, isAllowlisting) => { const normalized = value .replace(/(0\.0\.0\.0|127\.0\.0\.1|::1|::)\s+/, "") .replace("||", "") .replace("^$important", "") .replace("*.", "") .replace("^", ""); if (isAllowlisting) return normalized.replace("@@||", ""); return normalized; };
Xem tệp đính kèm 2534110
Mã:
Number of processed domains: 686408
Number of duplicate domains: 346842
Number of unnecessary domains: 113317
Number of allowed domains: 768
Number of blocked domains: 225481
Number of lists to be created: 226
Creating 226 lists for 225481 domains...
Error occurred while creating lists - TypeError: Cannot use 'in' operator to search for 'errors' in undefined
file:///home/runner/work/cloudflare-gateway-pihole-scripts/cloudflare-gateway-pihole-scripts/lib/helpers.js:126
throw new Error(`HTTP error! Status: ${response.status} - ${ 'errors' in data ? data.errors[0].message : JSON.stringify(data) }`);
^
TypeError: Cannot use 'in' operator to search for 'errors' in undefined
at request (file:///home/runner/work/cloudflare-gateway-pihole-scripts/cloudflare-gateway-pihole-scripts/lib/helpers.js:126:79)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Promise.all (index 108)
at async createZeroTrustListsAtOnce (file:///home/runner/work/cloudflare-gateway-pihole-scripts/cloudflare-gateway-pihole-scripts/lib/api.js:77:5)
at async file:///home/runner/work/cloudflare-gateway-pihole-scripts/cloudflare-gateway-pihole-scripts/cf_list_create.js:139:5
Node.js v20.14.0
Error: Process completed with exit code 1.


giờ anh nextdns giá x5 lần mặn quá


