Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
| 1 |
import streamlit as st
|
| 2 |
-
|
|
|
|
| 3 |
from PIL import Image
|
| 4 |
import torch
|
| 5 |
from torchvision import transforms
|
|
@@ -15,81 +16,82 @@ st.set_page_config(
|
|
| 15 |
layout="wide"
|
| 16 |
)
|
| 17 |
|
| 18 |
-
# --- <<<
|
| 19 |
|
| 20 |
# تهيئة متغير "المصادقة" في حالة الجلسة
|
| 21 |
if 'authenticated' not in st.session_state:
|
| 22 |
-
|
|
|
|
| 23 |
|
| 24 |
-
# --- <<< هذا هو الجزء
|
| 25 |
# كود HTML/JavaScript الذي سيتم حقنه في Streamlit
|
| 26 |
-
auth_listener_html = """
|
| 27 |
-
<script>
|
| 28 |
-
// --- الجزء الأول: الاستماع لرسالة المصادقة من الأب ---
|
| 29 |
-
|
| 30 |
-
// النطاقات المسموحة (للرسالة القادمة)
|
| 31 |
-
const allowedOrigins = [
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
];
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
window.addEventListener('message', (event) => {
|
| 43 |
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
}, false);
|
| 62 |
|
| 63 |
|
| 64 |
-
// --- الجزء
|
| 65 |
-
// (هذا الكود سيعمل فوراً عند تحميل هذا المكوّن)
|
| 66 |
|
| 67 |
-
const readyMessage = JSON.stringify({ source: 'streamlit-ready' });
|
| 68 |
|
| 69 |
-
// يجب أن نرسل الرسالة إلى النطاقات المسموحة للأب
|
| 70 |
-
allowedOrigins.forEach(origin => {
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
});
|
| 78 |
|
| 79 |
-
</script>
|
| 80 |
-
"""
|
| 81 |
-
# --- <<< نهاية الجزء
|
| 82 |
|
| 83 |
-
# تشغيل "المستمع" كعنصر HTML غير مرئي
|
| 84 |
-
auth_result = components.html(auth_listener_html, height=0, width=0)
|
| 85 |
|
| 86 |
-
# (الكود الذي أصلحناه سابقاً -
|
| 87 |
-
if auth_result and isinstance(auth_result, dict) and auth_result.get("authenticated") == True:
|
| 88 |
-
|
| 89 |
-
# --- نهاية خطوة المصادقة ---
|
| 90 |
|
| 91 |
|
| 92 |
# --- التحقق الرئيسي: لا تقم بتشغيل أي شيء إلا بعد المصادقة ---
|
|
|
|
| 93 |
if st.session_state.authenticated:
|
| 94 |
|
| 95 |
# --- 2. كود التصميم (CSS) ---
|
|
@@ -295,8 +297,10 @@ if st.session_state.authenticated:
|
|
| 295 |
|
| 296 |
|
| 297 |
# --- إذا فشلت المصادقة ---
|
|
|
|
| 298 |
else:
|
| 299 |
-
|
| 300 |
-
st.error("🔒 الوصول مرفوض.")
|
| 301 |
-
st.error("لا يمكن تشغيل هذه الأداة إلا من خلال النطاق المعتمد: https://www.skydata.kozow.com/")
|
| 302 |
-
st.warning("Access Denied. This tool can only be run when embedded on https://www.skydata.kozow.com/")
|
|
|
|
|
|
| 1 |
import streamlit as st
|
| 2 |
+
# تمت إزالة استيراد components
|
| 3 |
+
# import streamlit.components.v1 as components # لاستقبال الرسائل
|
| 4 |
from PIL import Image
|
| 5 |
import torch
|
| 6 |
from torchvision import transforms
|
|
|
|
| 16 |
layout="wide"
|
| 17 |
)
|
| 18 |
|
| 19 |
+
# --- <<< إزالة كاملة لخطوة المصادقة والتحقق من النطاق ---
|
| 20 |
|
| 21 |
# تهيئة متغير "المصادقة" في حالة الجلسة
|
| 22 |
if 'authenticated' not in st.session_state:
|
| 23 |
+
# **التعديل هنا:** تعيين القيمة إلى True بشكل افتراضي لتجاوز التحقق
|
| 24 |
+
st.session_state.authenticated = True
|
| 25 |
|
| 26 |
+
# --- <<< هذا هو الجزء الذي تم تعديله (تمت إزالته) ---
|
| 27 |
# كود HTML/JavaScript الذي سيتم حقنه في Streamlit
|
| 28 |
+
# auth_listener_html = """
|
| 29 |
+
# <script>
|
| 30 |
+
# // --- الجزء الأول: الاستماع لرسالة المصادقة من الأب ---
|
| 31 |
+
|
| 32 |
+
# // النطاقات المسموحة (للرسالة القادمة)
|
| 33 |
+
# const allowedOrigins = [
|
| 34 |
+
# "https://www.skydata.kozow.com",
|
| 35 |
+
# "https://skydata.kozow.com"
|
| 36 |
+
# ];
|
| 37 |
+
# const allowedDomains = [
|
| 38 |
+
# "www.skydata.kozow.com",
|
| 39 |
+
# "skydata.kozow.com"
|
| 40 |
+
# ];
|
| 41 |
+
|
| 42 |
+
# // الاستماع للرسائل القادمة من النافذة "الأب"
|
| 43 |
+
# window.addEventListener('message', (event) => {
|
|
|
|
| 44 |
|
| 45 |
+
# // التحقق إذا كان مصدر الرسالة ضمن القائمة المسموحة
|
| 46 |
+
# if (!allowedOrigins.includes(event.origin)) {
|
| 47 |
+
# console.warn("تم رفض رسالة من نطاق غير مصرح به:", event.origin);
|
| 48 |
+
# return;
|
| 49 |
+
# }
|
| 50 |
+
|
| 51 |
+
# try {
|
| 52 |
+
# const data = JSON.parse(event.data);
|
| 53 |
|
| 54 |
+
# // التحقق من محتوى الرسالة (لزيادة الأمان)
|
| 55 |
+
# if (data.source === 'skydata-auth' && allowedDomains.includes(data.domain)) {
|
| 56 |
+
# // إذا نجحت المصادقة، أرسل "True" إلى Streamlit
|
| 57 |
+
# Streamlit.setComponentValue({ "authenticated": true });
|
| 58 |
+
# }
|
| 59 |
+
# } catch (e) {
|
| 60 |
+
# console.error("خطأ في معالجة الرسالة:", e);
|
| 61 |
+
# }
|
| 62 |
+
# }, false);
|
| 63 |
|
| 64 |
|
| 65 |
+
# // --- الجزء الثاني (الجديد): إرسال رسالة "أنا جاهز" إلى الأب ---
|
| 66 |
+
# // (هذا الكود سيعمل فوراً عند تحميل هذا المكوّن)
|
| 67 |
|
| 68 |
+
# const readyMessage = JSON.stringify({ source: 'streamlit-ready' });
|
| 69 |
|
| 70 |
+
# // يجب أن نرسل الرسالة إلى النطاقات المسموحة للأب
|
| 71 |
+
# allowedOrigins.forEach(origin => {
|
| 72 |
+
# try {
|
| 73 |
+
# // إرسال الرسالة إلى النافذة "الأب"
|
| 74 |
+
# window.parent.postMessage(readyMessage, origin);
|
| 75 |
+
# } catch (e) {
|
| 76 |
+
# console.error("فشل إرسال رسالة الاستعداد إلى الأب:", origin, e);
|
| 77 |
+
# }
|
| 78 |
+
# });
|
| 79 |
|
| 80 |
+
# </script>
|
| 81 |
+
# """
|
| 82 |
+
# --- <<< نهاية الجزء الذي تم تعديله (تمت إزالته) ---
|
| 83 |
|
| 84 |
+
# تشغيل "المستمع" كعنصر HTML غير مرئي (تمت إزالته)
|
| 85 |
+
# auth_result = components.html(auth_listener_html, height=0, width=0)
|
| 86 |
|
| 87 |
+
# (الكود الذي أصلحناه سابقاً - تمت إزالته لعدم الحاجة)
|
| 88 |
+
# if auth_result and isinstance(auth_result, dict) and auth_result.get("authenticated") == True:
|
| 89 |
+
# st.session_state.authenticated = True
|
| 90 |
+
# --- نهاية خطوة المصادقة (تمت إزالة الأجزاء غير الضرورية) ---
|
| 91 |
|
| 92 |
|
| 93 |
# --- التحقق الرئيسي: لا تقم بتشغيل أي شيء إلا بعد المصادقة ---
|
| 94 |
+
# **تم ترك هذا التحقق، لكن بما أن القيمة هي True افتراضياً، سيتم تشغيل التطبيق**
|
| 95 |
if st.session_state.authenticated:
|
| 96 |
|
| 97 |
# --- 2. كود التصميم (CSS) ---
|
|
|
|
| 297 |
|
| 298 |
|
| 299 |
# --- إذا فشلت المصادقة ---
|
| 300 |
+
# **تمت إزالة الكود الذي يعرض رسالة "الوصول مرفوض"**
|
| 301 |
else:
|
| 302 |
+
pass
|
| 303 |
+
# st.error("🔒 الوصول مرفوض.")
|
| 304 |
+
# st.error("لا يمكن تشغيل هذه الأداة إلا من خلال النطاق المعتمد: https://www.skydata.kozow.com/")
|
| 305 |
+
# st.warning("Access Denied. This tool can only be run when embedded on https://www.skydata.kozow.com/")
|
| 306 |
+
|