// src/templates/populated-worker/src/index.js
var src_default = {
async fetch(request, env) {
const { DATABASE, r2_dl} = env;
const url = new URL(request.url);
switch (url.pathname) {
case "/ping":
return new Response('pong', { status: 200 });
case "/upload": {
// --- 新增 Basic Auth 校验 ---
const auth = request.headers.get("Authorization");
if (!auth) {
return new Response("Unauthorized", {
status: 401,
headers: { "WWW-Authenticate": 'Basic realm="Upload Access"' }
});
}
// 解析 Basic Auth 字符串 (Base64 解码)
const base64 = auth.split(' ')[1];
const decoded = atob(base64);
const [user, pass] = decoded.split(':');
// 验证用户名和密码 (对应后台设置的环境变量)
if (user !== "v2ex" || pass !== "xe2v") {
return new Response("Forbidden", { status: 403 });
}
// --- 校验结束 ---
if (request.method !== "PUT") {
return new Response("Method Not Allowed", { status: 405 });
}
const fileName = url.searchParams.get("filename");
if (!fileName) {
return new Response("Missing 'filename' parameter", { status: 400 });
}
try {
await r2_dl.put(fileName, request.body, {
httpMetadata: {
contentType: fileName.endsWith(".apk")
? "application/vnd.android.package-archive"
: "application/octet-stream",
}
});
return new Response(`Successfully uploaded: ${fileName}`, { status: 200 });
} catch (e) {
return new Response(`Upload failed: ${e.message}`, { status: 500 });
}
}
case "/download": {
const fileName = url.searchParams.get("file");
if (!fileName) return new Response("Missing 'file'", { status: 400 });
const object = await r2_dl.get(fileName);
if (object === null) return new Response("Not Found", { status: 404 });
const headers = new Headers();
object.writeHttpMetadata(headers);
headers.set("etag", object.httpEtag);
headers.set("Content-Disposition", `attachment; filename="${encodeURIComponent(fileName.split('/').pop())}"`);
return new Response(object.body, { headers });
}
default:
return new Response('Not Found', { status: 404 });
}
}
};
export { src_default as default };
"www.visa.cn", // Visa 中国官网(带 www ) - CloudFlare CDN
"www.visa.com", // Visa 国际官网
"visa.com", // Visa 国际
"www.shopify.com", // Shopify 官方
"store.ubi.com", // Ubisoft 商店
"mfa.gov.ua", // 乌克兰外交部
使用上面的 ip 随机来请求,上面的 ip 比较稳定.
val 运营商 = if(手机是 wifi 或者 vpn) {
//那么直接使用 ipinfo 之类来获取运营商
}else{
// 安卓直接 simOperator 来获取运营商信息
}
// 使用
val ipStr = if(result == "中国联通"){
httpRequest("https://cf.090227.xyz/cu")
}else if(result == "中国移动"){
httpRequest("https://cf.090227.xyz/cmccd")
}else if(result == "中国电信"){
httpRequest("https://cf.090227.xyz/ct")
}else{
// 不知道是杀,听天由命了。 选择最快的的 ip
httpRequest("https://cf.090227.xyz/ip.164746.xyz")
}
拿到 ip 后再访问下载站。
当然你也可以使用 github release 的方式找几个 proxy 来下载请求,
我推荐的是最开始优选 github 代理加速, 代理炸了,再使用 cf 优选 ip.
然后上面的一些地址最好使用 dns txt 保持动态更新。 美滋滋。 上面优选 ip 最好先并发请求一下,能够 ping 测速一下在做真实请求。 这样一来每个月 50g 的流量,一年能省不少的钱。谁叫国内没法上架呢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.