Skip to content

Instantly share code, notes, and snippets.

@ShaRose
Created June 21, 2021 00:24
Show Gist options
  • Save ShaRose/1f0b51aa42057336fe1e61f4f7b41dab to your computer and use it in GitHub Desktop.
Save ShaRose/1f0b51aa42057336fe1e61f4f7b41dab to your computer and use it in GitHub Desktop.
simple torrent IP checker for Cloudflare Workers
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