diff --git a/webpages/__pycache__/reference.cpython-312.pyc b/webpages/__pycache__/reference.cpython-312.pyc index 9d7b7d78b..6a24ce3a5 100644 Binary files a/webpages/__pycache__/reference.cpython-312.pyc and b/webpages/__pycache__/reference.cpython-312.pyc differ diff --git a/webpages/__pycache__/testing.cpython-312.pyc b/webpages/__pycache__/testing.cpython-312.pyc index 32af22229..a97b58d15 100644 Binary files a/webpages/__pycache__/testing.cpython-312.pyc and b/webpages/__pycache__/testing.cpython-312.pyc differ diff --git a/webpages/testing.py b/webpages/testing.py index f2f73bcf2..0e9bbaeaf 100644 --- a/webpages/testing.py +++ b/webpages/testing.py @@ -9,48 +9,81 @@ from datetime import datetime from webpages import code_editor as ce -def get_ip(): - try: - response = requests.get('https://api.ipify.org') - return response.text - except: - return "Unable to get IP" +# def get_ip(): +# try: +# response = requests.get('https://api.ipify.org') +# return response.text +# except: +# return "Unable to get IP" -def get_location(ip_address): - try: - response = requests.get(f'https://ipapi.co/{ip_address}/json/') - data = response.json() - return data['latitude'], data['longitude'], data['city'], data['country_name'] - except: - return None, None, "Unknown", "Unknown" +# def get_location(ip_address): +# try: +# response = requests.get(f'https://ipapi.co/{ip_address}/json/') +# data = response.json() +# return data['latitude'], data['longitude'], data['city'], data['country_name'] +# except: +# return None, None, "Unknown", "Unknown" -def save_visitor(conn, lat, lon, city, country): - timestamp = datetime.now() - c = conn.cursor() - c.execute("INSERT INTO visitors (latitude, longitude, city, country, timestamp) VALUES (?, ?, ?, ?, ?)", - (lat, lon, city, country, timestamp)) - conn.commit() +# def save_visitor(conn, lat, lon, city, country): +# timestamp = datetime.now() +# c = conn.cursor() +# c.execute("INSERT INTO visitors (latitude, longitude, city, country, timestamp) VALUES (?, ?, ?, ?, ?)", +# (lat, lon, city, country, timestamp)) +# conn.commit() -def get_all_visitors(conn): - df = pd.read_sql_query("SELECT * from visitors", conn) - return df +# def get_all_visitors(conn): +# df = pd.read_sql_query("SELECT * from visitors", conn) +# return df -def create_map(df): - m = folium.Map(location=[41.2706, -97.1749], zoom_start=4) - # Create a custom icon +# def create_map(df): +# m = folium.Map(location=[41.2706, -97.1749], zoom_start=4) +# # Create a custom icon - for _, row in df.iterrows(): - folium.Marker( - location = [row['latitude'], row['longitude']], - popup=f"{row['city']}", - tooltip=f"{row['city']}" - ).add_to(m) - return m +# for _, row in df.iterrows(): +# folium.Marker( +# location = [row['latitude'], row['longitude']], +# popup=f"{row['city']}", +# tooltip=f"{row['city']}" +# ).add_to(m) +# return m def testing(): st.title("Testing Page") + st.title("Title") + st.markdown(f"The remote ip is {get_remote_ip()}") + st.write(st.context.headers) +from streamlit import runtime +from streamlit.runtime.scriptrunner import get_script_run_ctx +from streamlit.web.server.websocket_headers import _get_websocket_headers + +def get_forwarded_ip(): + headers = _get_websocket_headers() + # Example: "X-Forwarded-For': '13.51.91.225, 162.158.90.188'" + x_forwarded_for = headers['X-Forwarded-For'] + first_ip = x_forwarded_for.split(', ')[0] + + return first_ip + +def get_remote_ip() -> str: + """Get remote ip.""" + + try: + ctx = get_script_run_ctx() + if ctx is None: + return None + + session_info = runtime.get_instance().get_client(ctx.session_id) + if session_info is None: + return None + except Exception as e: + return None + + return session_info.request.remote_ip + + + # ce.code_editor() # # # [Work]code for instering youtube videos @@ -59,53 +92,53 @@ def testing(): # Initialize the database - conn = sqlite3.connect('./files/visitor_locations.db') - c = conn.cursor() - c.execute('''CREATE TABLE IF NOT EXISTS visitors - (id INTEGER PRIMARY KEY AUTOINCREMENT, - latitude REAL, - longitude REAL, - city TEXT, - country TEXT, - timestamp DATETIME)''') - conn.commit() + # conn = sqlite3.connect('./files/visitor_locations.db') + # c = conn.cursor() + # c.execute('''CREATE TABLE IF NOT EXISTS visitors + # (id INTEGER PRIMARY KEY AUTOINCREMENT, + # latitude REAL, + # longitude REAL, + # city TEXT, + # country TEXT, + # timestamp DATETIME)''') + # conn.commit() - st.title('Visitor Location Tracker') + # st.title('Visitor Location Tracker') - # Get and save current visitor's location - ip = get_ip() - lat, lon, city, country = get_location(ip) - if lat and lon: - save_visitor(conn, lat, lon, city, country) - st.write(f"Your location: {city}, {country}") - else: - st.write("Unable to determine your location") + # # Get and save current visitor's location + # ip = get_ip() + # lat, lon, city, country = get_location(ip) + # if lat and lon: + # save_visitor(conn, lat, lon, city, country) + # st.write(f"Your location: {city}, {country}") + # else: + # st.write("Unable to determine your location") - # Display all visitors on a map - st.subheader('All Visitor Locations') - df = get_all_visitors(conn) - if not df.empty: - m = create_map(df) - folium_static(m) - else: - st.write("No visitor data available yet.") + # # Display all visitors on a map + # st.subheader('All Visitor Locations') + # df = get_all_visitors(conn) + # if not df.empty: + # m = create_map(df) + # folium_static(m) + # else: + # st.write("No visitor data available yet.") - # Display visitor statistics - st.subheader('Visitor Statistics') - col_visitors, col_cities, col_countries = st.columns(3) - if not df.empty: - with col_visitors: - st.metric(label="Total visitors", value= df['id'].nunique()) - with col_cities: - st.metric(label="Total cities", value= df['city'].nunique()) - with col_countries: - st.metric(label="Total countries", value= df['country'].nunique()) - st.write("Top 5 cities:") - st.write(df['city'].value_counts().head()) - else: - st.write("No visitor data available yet.") + # # Display visitor statistics + # st.subheader('Visitor Statistics') + # col_visitors, col_cities, col_countries = st.columns(3) + # if not df.empty: + # with col_visitors: + # st.metric(label="Total visitors", value= df['id'].nunique()) + # with col_cities: + # st.metric(label="Total cities", value= df['city'].nunique()) + # with col_countries: + # st.metric(label="Total countries", value= df['country'].nunique()) + # st.write("Top 5 cities:") + # st.write(df['city'].value_counts().head()) + # else: + # st.write("No visitor data available yet.") - # Close the database connection - conn.close() \ No newline at end of file + # # Close the database connection + # conn.close() \ No newline at end of file