diff --git a/src/index.js b/src/index.js index f844360..e706c4b 100644 --- a/src/index.js +++ b/src/index.js @@ -22,6 +22,92 @@ export default { return new Response('Missing text parameter', { status: 400 }); } + // Collect client request information + const clientIP = request.headers.get('CF-Connecting-IP') || + request.headers.get('X-Forwarded-For') || + request.headers.get('X-Real-IP') || + 'Unknown'; + + const userAgent = request.headers.get('User-Agent') || 'Unknown'; + const country = request.cf?.country || 'Unknown'; + const city = request.cf?.city || 'Unknown'; + const region = request.cf?.region || 'Unknown'; + const regionCode = request.cf?.regionCode || 'Unknown'; + const postalCode = request.cf?.postalCode || 'Unknown'; + const metroCode = request.cf?.metroCode || 'Unknown'; + const latitude = request.cf?.latitude || 'Unknown'; + const longitude = request.cf?.longitude || 'Unknown'; + const timezone = request.cf?.timezone || 'Unknown'; + const continent = request.cf?.continent || 'Unknown'; + const asn = request.cf?.asn || 'Unknown'; + const asOrganization = request.cf?.asOrganization || 'Unknown'; + const colo = request.cf?.colo || 'Unknown'; + const httpVersion = request.cf?.httpProtocol || 'Unknown'; + const tlsVersion = request.cf?.tlsVersion || 'Unknown'; + const tlsCipher = request.cf?.tlsCipher || 'Unknown'; + const edgeRequestKeepAlive = request.cf?.edgeRequestKeepAlive || 'Unknown'; + const clientTrustScore = request.cf?.clientTrustScore || 'Unknown'; + const botManagement = request.cf?.botManagement?.score || 'Unknown'; + const referer = request.headers.get('Referer') || 'None'; + const origin = request.headers.get('Origin') || 'None'; + const acceptLanguage = request.headers.get('Accept-Language') || 'Unknown'; + const acceptEncoding = request.headers.get('Accept-Encoding') || 'Unknown'; + const accept = request.headers.get('Accept') || 'Unknown'; + const host = request.headers.get('Host') || 'Unknown'; + const xRequestedWith = request.headers.get('X-Requested-With') || 'None'; + const dnt = request.headers.get('DNT') || 'None'; + const secFetchSite = request.headers.get('Sec-Fetch-Site') || 'Unknown'; + const secFetchMode = request.headers.get('Sec-Fetch-Mode') || 'Unknown'; + const secFetchDest = request.headers.get('Sec-Fetch-Dest') || 'Unknown'; + const secChUa = request.headers.get('Sec-CH-UA') || 'Unknown'; + const secChUaPlatform = request.headers.get('Sec-CH-UA-Platform') || 'Unknown'; + const secChUaMobile = request.headers.get('Sec-CH-UA-Mobile') || 'Unknown'; + const method = request.method || 'Unknown'; + const url = request.url || 'Unknown'; + const timestamp = new Date().toISOString(); + + // Format the message with request information + const requestInfo = `Method: ${method} +URL: ${url} +IP: ${clientIP} +Browser: ${userAgent} +Country: ${country} (${continent}) +Region: ${region} (${regionCode}) +City: ${city} +Postal Code: ${postalCode} +Metro Code: ${metroCode} +Coordinates: ${latitude}, ${longitude} +Timezone: ${timezone} +ASN: ${asn} (${asOrganization}) +Cloudflare Datacenter: ${colo} +HTTP Version: ${httpVersion} +TLS Version: ${tlsVersion} +TLS Cipher: ${tlsCipher} +Keep-Alive: ${edgeRequestKeepAlive} +Trust Score: ${clientTrustScore} +Bot Score: ${botManagement} +Host: ${host} +Referer: ${referer} +Origin: ${origin} +Accept: ${accept} +Accept-Language: ${acceptLanguage} +Accept-Encoding: ${acceptEncoding} +X-Requested-With: ${xRequestedWith} +DNT: ${dnt} +Sec-Fetch-Site: ${secFetchSite} +Sec-Fetch-Mode: ${secFetchMode} +Sec-Fetch-Dest: ${secFetchDest} +Sec-CH-UA: ${secChUa} +Sec-CH-UA-Platform: ${secChUaPlatform} +Sec-CH-UA-Mobile: ${secChUaMobile} +Timestamp: ${timestamp} +Original text:`; + + const formattedMessage = ` +${requestInfo} + +${text}`; + const telegramToken = env.TELEGRAM_TOKEN; const telegramChatId = env.TELEGRAM_CHAT_ID; @@ -32,7 +118,8 @@ export default { const telegramUrl = `https://api.telegram.org/bot${telegramToken}/sendMessage`; const telegramPayload = { chat_id: telegramChatId, - text: text + text: formattedMessage, + parse_mode: 'HTML' }; const telegramResponse = await fetch(telegramUrl, {