|
import gradio as gr |
|
import socket |
|
|
|
def predict(text, request: gr.Request): |
|
client_ip = request.client.host |
|
local_ip = socket.gethostbyname(socket.gethostbyname("")) |
|
headers = request.kwargs['headers'] |
|
if headers and 'x-forwarded-for' in headers: |
|
x_forwarded_for = headers['x-forwarded-for'] |
|
client_ip = x_forwarded_for.split(' ')[0] if x_forwarded_for else "" |
|
|
|
print("client_ip", client_ip, text, "\n\n") |
|
return text, {"client_ip": client_ip, |
|
"local_ip": local_ip, |
|
"headers": headers} |
|
|
|
|
|
with gr.Blocks() as block: |
|
gr.Markdown("## Gradio get client IP") |
|
text = gr.Textbox(label="dummy input") |
|
output = gr.JSON({}) |
|
btn = gr.Button("Test") |
|
|
|
btn.click(predict, inputs=[text], outputs=[text, output]) |
|
|
|
|
|
block.launch(share=False, server_name='0.0.0.0', show_api=True) |
|
|