Created
June 21, 2021 00:24
-
-
Save ShaRose/1f0b51aa42057336fe1e61f4f7b41dab to your computer and use it in GitHub Desktop.
simple torrent IP checker for Cloudflare Workers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
addEventListener('fetch', function(event) { | |
const { request } = event | |
const response = handleRequest(request).catch(handleError) | |
event.respondWith(response) | |
}) | |
async function handleRequest(request) { | |
const { method, url } = request | |
const { host, pathname } = new URL(url) | |
if(pathname == '/download') { | |
return respondDownload(request) | |
} | |
if(pathname.startsWith('/announce')) { | |
return respondAccounce(request) | |
} | |
return respondHelp(request) | |
} | |
function handleError(error) { | |
console.error('Uncaught error:', error) | |
const { stack } = error | |
return new Response(stack || error, { | |
status: 500, | |
headers: { | |
'Content-Type': 'text/plain;charset=UTF-8' | |
} | |
}) | |
} | |
async function respondAccounce(request) { | |
cip = request.headers.get('cf-connecting-ip') | |
if ( cip == null) { | |
cip = "NULL" | |
} | |
return new Response("d14:failure reason" + (14 + cip.length) + ":client IP is: "+ cip +"e") | |
} | |
async function respondDownload(request) { | |
let { readable, writable } = new TransformStream() | |
const writer = writable.getWriter() | |
let encoder = new TextEncoder() | |
writer.write(encoder.encode("d8:announce")) | |
var announceurl = "https://" + new URL(request.url).host + "/announce" | |
writer.write(encoder.encode(announceurl.length + ":" + announceurl)) | |
writer.write(encoder.encode("13:creation datei994032000e4:infod6:lengthi128e4:name10:IP Checker12:piece lengthi262144e6:pieces20:dummydummydummydummy7:privatei1eee")) | |
return new Response(readable, { | |
status: 200, | |
headers: { | |
'Content-Type': 'application/octet-stream', | |
'Content-Disposition': 'attachment; filename="ip checker.torrent"' | |
} | |
}) | |
} | |
async function respondHelp(request) { | |
var downloadurl = "https://" + new URL(request.url).host + "/download" | |
return new Response("<html><h3>Simple torrent IP checker</h3><br><a href=\"" + downloadurl + "\">Download Here</a><br><p>Will show your IP right in your client.</p></html>",{ | |
headers: { | |
'Content-Type': 'text/html' | |
} | |
}) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment