Skydata001 commited on
Commit
d10b790
·
verified ·
1 Parent(s): 06a33e4

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -16
app.py CHANGED
@@ -22,18 +22,24 @@ if 'authenticated' not in st.session_state:
22
  st.session_state.authenticated = False
23
 
24
  # --- <<< هذا هو الجزء الذي تم تعديله ---
25
- # كود HTML/JavaScript الذي سيتم حقنه في Streamlit "للاستماع"
26
  auth_listener_html = """
27
  <script>
 
 
 
 
 
 
 
 
 
 
 
 
28
  // الاستماع للرسائل القادمة من النافذة "الأب"
29
  window.addEventListener('message', (event) => {
30
 
31
- // --- تعديل 1: قائمة النطاقات المسموحة (مع وبدون www) ---
32
- const allowedOrigins = [
33
- "https://www.skydata.kozow.com",
34
- "https://skydata.kozow.com"
35
- ];
36
-
37
  // التحقق إذا كان مصدر الرسالة ضمن القائمة المسموحة
38
  if (!allowedOrigins.includes(event.origin)) {
39
  console.warn("تم رفض رسالة من نطاق غير مصرح به:", event.origin);
@@ -43,15 +49,8 @@ window.addEventListener('message', (event) => {
43
  try {
44
  const data = JSON.parse(event.data);
45
 
46
- // --- تعديل 2: قائمة أسماء النطاقات المسموحة (للتأكيد) ---
47
- const allowedDomains = [
48
- "www.skydata.kozow.com",
49
- "skydata.kozow.com"
50
- ];
51
-
52
  // التحقق من محتوى الرسالة (لزيادة الأمان)
53
  if (data.source === 'skydata-auth' && allowedDomains.includes(data.domain)) {
54
-
55
  // إذا نجحت المصادقة، أرسل "True" إلى Streamlit
56
  Streamlit.setComponentValue({ "authenticated": true });
57
  }
@@ -59,6 +58,23 @@ window.addEventListener('message', (event) => {
59
  console.error("خطأ في معالجة الرسالة:", e);
60
  }
61
  }, false);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  </script>
63
  """
64
  # --- <<< نهاية الجزء المعدل ---
@@ -212,7 +228,7 @@ if st.session_state.authenticated:
212
  loc = localization[lang_code]
213
 
214
  # --- 7. واجهة التطبيق الرئيسية (Main App) ---
215
- LOGO_URL = "https://i.ibb.co/v4vwvcGq/skydata.webp" # تم تغيير الرابط لإصلاح خطأ سابق محتمل
216
  col1, col2 = st.columns([1, 6])
217
  with col1:
218
  st.image(LOGO_URL, width=80)
@@ -223,7 +239,6 @@ if st.session_state.authenticated:
223
  selected_tab = st.sidebar.radio(loc['input_method'], [loc['tab_upload'], loc['tab_url'], loc['tab_file']])
224
 
225
  # --- 8. منطق التبويبات ---
226
- # ... (باقي كود التبويبات يبقى كما هو تماماً) ...
227
  if selected_tab == loc['tab_upload']:
228
  uploaded_file = st.file_uploader(loc['upload_prompt'], type=["jpg", "jpeg", "png"])
229
  if uploaded_file is not None:
 
22
  st.session_state.authenticated = False
23
 
24
  # --- <<< هذا هو الجزء الذي تم تعديله ---
25
+ # كود HTML/JavaScript الذي سيتم حقنه في Streamlit
26
  auth_listener_html = """
27
  <script>
28
+ // --- الجزء الأول: الاستماع لرسالة المصادقة من الأب ---
29
+
30
+ // النطاقات المسموحة (للرسالة القادمة)
31
+ const allowedOrigins = [
32
+ "https://www.skydata.kozow.com",
33
+ "https://skydata.kozow.com"
34
+ ];
35
+ const allowedDomains = [
36
+ "www.skydata.kozow.com",
37
+ "skydata.kozow.com"
38
+ ];
39
+
40
  // الاستماع للرسائل القادمة من النافذة "الأب"
41
  window.addEventListener('message', (event) => {
42
 
 
 
 
 
 
 
43
  // التحقق إذا كان مصدر الرسالة ضمن القائمة المسموحة
44
  if (!allowedOrigins.includes(event.origin)) {
45
  console.warn("تم رفض رسالة من نطاق غير مصرح به:", event.origin);
 
49
  try {
50
  const data = JSON.parse(event.data);
51
 
 
 
 
 
 
 
52
  // التحقق من محتوى الرسالة (لزيادة الأمان)
53
  if (data.source === 'skydata-auth' && allowedDomains.includes(data.domain)) {
 
54
  // إذا نجحت المصادقة، أرسل "True" إلى Streamlit
55
  Streamlit.setComponentValue({ "authenticated": true });
56
  }
 
58
  console.error("خطأ في معالجة الرسالة:", e);
59
  }
60
  }, false);
61
+
62
+
63
+ // --- الجزء الثاني (الجديد): إرسال رسالة "أنا جاهز" إلى الأب ---
64
+ // (هذا الكود سيعمل فوراً عند تحميل هذا المكوّن)
65
+
66
+ const readyMessage = JSON.stringify({ source: 'streamlit-ready' });
67
+
68
+ // يجب أن نرسل الرسالة إلى النطاقات المسموحة للأب
69
+ allowedOrigins.forEach(origin => {
70
+ try {
71
+ // إرسال الرسالة إلى النافذة "الأب"
72
+ window.parent.postMessage(readyMessage, origin);
73
+ } catch (e) {
74
+ console.error("فشل إرسال رسالة الاستعداد إلى الأب:", origin, e);
75
+ }
76
+ });
77
+
78
  </script>
79
  """
80
  # --- <<< نهاية الجزء المعدل ---
 
228
  loc = localization[lang_code]
229
 
230
  # --- 7. واجهة التطبيق الرئيسية (Main App) ---
231
+ LOGO_URL = "https://i.ibb.co/v4vwvcGq/skydatafull.webp"
232
  col1, col2 = st.columns([1, 6])
233
  with col1:
234
  st.image(LOGO_URL, width=80)
 
239
  selected_tab = st.sidebar.radio(loc['input_method'], [loc['tab_upload'], loc['tab_url'], loc['tab_file']])
240
 
241
  # --- 8. منطق التبويبات ---
 
242
  if selected_tab == loc['tab_upload']:
243
  uploaded_file = st.file_uploader(loc['upload_prompt'], type=["jpg", "jpeg", "png"])
244
  if uploaded_file is not None: