|
新建一个cloudflare workers 绑定KV
编辑workers.js代码
- export default {
- async fetch(request, env, ctx) {
- // 设置默认 Cache-Control 头信息
- const defaultHeaders = {
- 'Cache-Control': 'no-store, no-cache, must-revalidate',
- 'Pragma': 'no-cache',
- 'Expires': '0',
- };
- // 设置密码
- const password = null;
- // 从请求中提取信息
- const { url, headers } = request;
- const host = headers.get('host');
- const visitorIP = headers.get('cf-connecting-ip');
- const queryParams = new URL(url).searchParams;
- // 获取'password'参数值
- const passwordValue = queryParams.get('password');
- if (password !== passwordValue) {
- // 密码不正确退出
- return new Response('', { status: 404, headers: defaultHeaders });
- }
- // 获取'domain'参数值
- const paramValue = queryParams.get('domain');
- // 定义用于验证标准域名的正则表达式
- const domainRegex = /^[a-zA-Z0-9-]+(\.[a-zA-Z]{2,})+$/;
- const isValidDomain = domainRegex.test(paramValue);
- // 处理不同的主机值
- if (host === 'set-ip.xxx.xxx') {
- // 如果是有效的域名,使用域名作为键,否则使用 'ddnsIp'
- const key = isValidDomain ? paramValue : 'ddnsIp';
- // 获取之前存储的IP
- const storedIP = await env.DDNS.get(key);
- // 如果新IP与存储的IP相同,则不执行更新
- if (storedIP !== visitorIP) {
- await env.DDNS.put(key, visitorIP);
- }
- return new Response('DDNS IP 设置成功!', { status: 200, headers: defaultHeaders });
- }
- if (host === 'get-ip.xxx.xxx') {
- // 如果是有效的域名,使用域名作为键,否则使用 'ddnsIp'
- const key = isValidDomain ? paramValue : 'ddnsIp';
- const ddnsIp = await env.DDNS.get(key);
- if (ddnsIp !== null) {
- return new Response(ddnsIp, { status: 200, headers: defaultHeaders });
- } else {
- return new Response('DDNS IP 未找到!', { status: 404, headers: defaultHeaders });
- }
- }
- // 默认逻辑用于处理其他请求
- const responseBody = `你好!你的 IP 是:${visitorIP},主机是:${host}`;
- return new Response(responseBody, { status: 200, headers: defaultHeaders });
- },
- };
复制代码 你可以设置默认密码,默认是空密码,因为我是放在爱快用,修改爱快的wan口网络检查域名为上面设置的set-ip.xxx.xxx,爱快默认是www.baidu.com。
你也可以在openwrt上用,wan口重启处罚访问set-ip.xxx.xxx即可,
设备重启后访问get-ip.xxx.xxx,就可以知道新IP。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|