Files
EdgeOne-Functions/ipapi.js

57 lines
2.0 KiB
JavaScript

async function handleRequest(request) {
// 创建一个空对象来存储请求头数据
const headers = {}
// 遍历请求头数据并将其存储在对象中
for (const [name, value] of request.headers.entries()) {
headers[name] = value
}
const url = new URL(request.url);
const path = url.pathname;
// 用来返回的数据
let returnData = {}
returnData["ip"] = headers["EO-Connecting-IP"];
returnData["user-agent"] = headers["User-Agent"];
if(returnData["user-agent"] === undefined){
returnData["user-agent"] = headers["user-agent"];
}
returnData["geo"] = request.eo.geo;
returnData["version"] = "0.4";
if(path === "/"){
const returnDataStr = "/\t\t\tHelp\n/info\t\t\tALL Info(JSON)\n/ip\t\t\tIP(String)\n/ip/json\t\tIP(Json)\n/ua\t\t\tUser-Agent Data\n/country\t\tCountry";
return new Response(returnDataStr, {status: 200})
} else if(path === "/country"){
const country = returnData["geo"]?.countryCodeAlpha2 || "Country not available";
return new Response(country, {status: 200})
} else if(path === "/ua"){
const returnDataStr = returnData["user-agent"];
return new Response(returnDataStr, {status: 200})
}else if(path === "/info"){
const returnDataStr = JSON.stringify(returnData);
return new Response(returnDataStr, {status: 200,headers: {'Content-Type':'application/json'}})
}else if(path === "/ip/json"){
let returnDataTemp ={};
returnDataTemp["ip"] = returnData["ip"];
returnDataTemp["geo"] = returnData["geo"];
const returnDataStr = JSON.stringify(returnDataTemp)
return new Response(returnDataStr, {status: 200,headers: {'Content-Type':'application/json'}})
}else if(path === "/ip"){
const returnDataStr = returnData["ip"];
return new Response(returnDataStr, {status: 200})
}else if(path === "/favicon.ico"){
// 浏览器图标响应200
return new Response("", {status: 200})
}else{
return new Response("404", {status: 404})
}
}
addEventListener('fetch', event => {
return event.respondWith(handleRequest(event.request));
});