Feature to show client's public ip address when 'my ip' is used as a search keyword #407

This commit is contained in:
Vansh Comar 2021-10-18 19:57:39 +05:30
parent ff046e788a
commit 8df2322fda

View File

@ -3,6 +3,7 @@ import base64
import io import io
import json import json
import pickle import pickle
import re
import urllib.parse as urlparse import urllib.parse as urlparse
import uuid import uuid
from functools import wraps from functools import wraps
@ -11,6 +12,7 @@ import waitress
from flask import jsonify, make_response, request, redirect, render_template, \ from flask import jsonify, make_response, request, redirect, render_template, \
send_file, session, url_for send_file, session, url_for
from requests import exceptions from requests import exceptions
from bs4 import BeautifulSoup as bsoup
from app import app from app import app
from app.models.config import Config from app.models.config import Config
@ -250,6 +252,50 @@ def search():
# Return 503 if temporarily blocked by captcha # Return 503 if temporarily blocked by captcha
resp_code = 503 if has_captcha(str(response)) else 200 resp_code = 503 if has_captcha(str(response)) else 200
# Feature to display IP address
html_soup = bsoup(response,'html.parser')
if not html_soup.select_one(".EY24We") and html_soup.select_one(".OXXup").get_text().lower()=="all":
if re.search("([^a-z0-9]|^)my *[^a-z0-9] *(ip|internet protocol)(\Z|( *[^a-z0-9] *(((addres|address|adres|adress)|a)? *\Z)))",query.lower()):
# HTML IP card tag
ip_tag = html_soup.new_tag("div")
ip_tag["class"]="ZINbbc xpd O9g5cc uUPGi"
# What is my IP tag
q_tag=html_soup.new_tag("div")
q_tag["class"]="kCrYT"
q_tag.string="What's my IP"
# Distinction boundary
line = html_soup.new_tag("div")
line["class"]="x54gtf"
# For IP Address html tag
ip_address = html_soup.new_tag("div")
ip_address["class"]="kCrYT"
ip_address["style"]="padding-bottom:0;"
ip_address.string= request.remote_addr
# Text below the IP address
ip_text = html_soup.new_tag("div")
ip_text.string="Your public IP address"
ip_text["class"]="kCrYT"
ip_text["style"]="padding-top:0; color: #9e9e9e!important;"
# Adding all the above html tags to the IP card
ip_tag.append(q_tag)
ip_tag.append(line)
ip_tag.append(ip_address)
ip_tag.append(ip_text)
# Finding the element before which the IP card would be placed
ref_element = html_soup.select_one(".BNeawe.vvjwJb.AP7Wnd").find_parent(class_="ZINbbc xpd O9g5cc uUPGi")
# Inserting the element
ref_element.insert_before(ip_tag)
response = html_soup
return render_template( return render_template(
'display.html', 'display.html',
query=urlparse.unquote(query), query=urlparse.unquote(query),