Skydata001 commited on
Commit
00af269
·
verified ·
1 Parent(s): 8ebaa14

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +67 -63
app.py CHANGED
@@ -1,5 +1,6 @@
1
  import streamlit as st
2
- import streamlit.components.v1 as components # لاستقبال الرسائل
 
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
- st.session_state.authenticated = False
 
23
 
24
- # --- <<< هذا هو الجزء الحاسم للمصادقة (auth_listener_html) ---
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
- // النطاقات المسموحة (للدومين داخل حمولة الرسالة)
36
- const allowedDomains = [
37
- "www.skydata.kozow.com",
38
- "skydata.kozow.com"
39
- ];
40
-
41
- // الاستماع للرسائل القادمة من النافذة "الأب"
42
- window.addEventListener('message', (event) => {
43
 
44
- // التحقق إذا كان مصدر الرسالة ضمن القائمة المسموحة
45
- if (!allowedOrigins.includes(event.origin)) {
46
- console.warn("تم رفض رسالة من نطاق غير مصرح به:", event.origin);
47
- return;
48
- }
49
-
50
- try {
51
- const data = JSON.parse(event.data);
52
 
53
- // التحقق من محتوى الرسالة (لزيادة الأمان)
54
- if (data.source === 'skydata-auth' && allowedDomains.includes(data.domain)) {
55
- // إذا نجحت المصادقة، أرسل "True" إلى Streamlit
56
- window.Streamlit.setComponentValue({ "authenticated": true });
57
- }
58
- } catch (e) {
59
- console.error("خطأ في معالجة الرسالة:", e);
60
- }
61
- }, false);
62
 
63
 
64
- // --- الجزء الثاني: إرسال رسالة "أنا جاهز" إلى الأب ---
65
- // (هذا الكود سيعمل فوراً عند تحميل هذا المكوّن)
66
 
67
- const readyMessage = JSON.stringify({ source: 'streamlit-ready' });
68
 
69
- // يجب أن نرسل الرسالة إلى النطاقات المسموحة للأب
70
- allowedOrigins.forEach(origin => {
71
- try {
72
- // إرسال الرسالة إلى النافذة "الأب"
73
- window.parent.postMessage(readyMessage, origin);
74
- } catch (e) {
75
- console.error("فشل إرسال رسالة الاستعداد إلى الأب:", origin, e);
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
- st.session_state.authenticated = True
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
+