• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    1. דף הבית
    2. שמואל ש.
    3. פוסטים
    ש
    • פרופיל
    • עוקב אחרי 0
    • עוקבים 8
    • נושאים 205
    • פוסטים 2404
    • הגבוה ביותר 506
    • שנוי במחלוקת 9
    • קבוצות 0

    הודעות שפורסמו על ידי שמואל ש.

    • RE: איך להודיע ללקוח באופן אוטומטי כשיש תקלה בשימוש בAPI

      @עידו כתב באיך להודיע ללקוח באופן אוטומטי כשיש תקלה בשימוש בAPI:

      זה שרת שלו

      אם זה שרת שלו אז זה שלו, אצלי זה על שרת שלי ולכן תקלות בשרת קשורות אלי

      פורסם בפורום מפתחים API
      ש
      שמואל ש.
    • RE: איך להודיע ללקוח באופן אוטומטי כשיש תקלה בשימוש בAPI

      @לעזור-לכולם כתב באיך להודיע ללקוח באופן אוטומטי כשיש תקלה בשימוש בAPI:

      @שמואל-ש
      אפשר לקבל את הסקריפט?

      בכייף
      הרבה בעזרת GPT...

      <?php
      include 'functions.php';
      
      function log_message($message)
      {
          $logFile = __DIR__ . '/server_monitor.log';
          date_default_timezone_set('Asia/Jerusalem');
          file_put_contents($logFile, date('Y-m-d H:i:s') . ' - ' . $message . PHP_EOL, FILE_APPEND);
      }
      
      function send_mail($subject, $body)
      {
          emailSend("aaaaa@gmail.com", "", "זהירות!!! השרת לא תקין!", "$subject\n\n$body", "");
      }
      
      // 1. זיכרון RAM
      $meminfo = file_get_contents('/proc/meminfo');
      preg_match('/MemTotal:\s+(\d+)/', $meminfo, $total);
      preg_match('/MemAvailable:\s+(\d+)/', $meminfo, $available);
      $ram_total = (int)$total[1];
      $ram_available = (int)$available[1];
      $ram_used = $ram_total - $ram_available;
      
      // 2. שימוש במעבד
      function get_cpu_usage_per_core()
      {
          $stat1 = file('/proc/stat');
          sleep(1); // המתנה קצרה למדידה מדויקת
          $stat2 = file('/proc/stat');
      
          $cpus = [];
          foreach ($stat1 as $i => $line) {
              if (strpos($line, 'cpu') !== 0 || strpos($line, 'cpu ') === 0) continue;
              $parts1 = preg_split('/\s+/', trim($line));
              $parts2 = preg_split('/\s+/', trim($stat2[$i]));
      
              $total1 = array_sum(array_slice($parts1, 1));
              $idle1  = $parts1[4];
      
              $total2 = array_sum(array_slice($parts2, 1));
              $idle2  = $parts2[4];
      
              $total_diff = $total2 - $total1;
              $idle_diff = $idle2 - $idle1;
      
              $usage = 100 * (1 - $idle_diff / $total_diff);
              $cpus[] = round($usage, 2);
          }
      
          return $cpus;
      }
      
      $cpu_usages = get_cpu_usage_per_core();
      $cpu_count = count($cpu_usages);
      $cpu_average = array_sum($cpu_usages) / $cpu_count;
      
      // 3. דיסק
      $disk_total = disk_total_space("/");
      $disk_free = disk_free_space("/");
      $disk_used = $disk_total - $disk_free;
      
      log_message("*************");
      
      // 4. בדיקת MySQL
      $mysql_ok = true;
      try {
          $dbname = 'sql';
          $serverName = "localhost";
          $username = "name";
          $pw = "pass";
          $pdo = new PDO("mysql:host=$serverName;charset=utf8;dbname=$dbname", "$username", "$pw");
          $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          $pdo->query('SELECT 1');
      } catch (Exception $e) {
          $mysql_ok = false;
          log_message("שגיאת mysql: " . $e->getMessage());
          send_mail("שגיאת חיבור לmysql", $e->getMessage());
      }
      
      // 5. בדיקה כללית
      $ram_used_in_gb = round($ram_used / 1024 / 1024, 2);
      $ram_total_in_gb = round($ram_total / 1024 / 1024, 2);
      log_message("ראם בשימוש: {$ram_used_in_gb} GB / {$ram_total_in_gb} GB");
      log_message("מעבדים בשימוש: " . implode('% | ', $cpu_usages) . '%');
      log_message("ממוצע שימוש במעבדים: " . round($cpu_average, 2) . "%");
      log_message("זיכרון דיסק בשימוש: " . formatBytes($disk_used) . " / " . formatBytes($disk_total));
      log_message("mysql חיבור ל: " . ($mysql_ok ? "OK" : "FAILED"));
      
      $start_con = time();
      $conn = shell_exec("curl -s -o /dev/null -w \"%{http_code}\" 'https://****.co.il'");
      $end_con = time();
      $conn_time = ($end_con - $start_con);
      log_message("חיבור לשרת : $conn TIME: $conn_time");
      
      
      log_message("*************\n----------");
      
      // 6. שליחת מייל אם משהו לא תקין
      if ($ram_available < 200000) { // פחות מ-200MB
          send_mail("אין מספיק ראם זמין", "Only " . round($ram_available / 1024, 2) . " MB RAM available");
      }
      
      if (min($cpu_usages) >= 90) { // אם כל המעבדים מעל 90%
          send_mail("שימוש מעבדים גבוה", "All CPU cores are over 90% usage.\nPer core: " . implode('% | ', $cpu_usages));
      }
      
      if ($disk_free < 8 * 1024 * 1024 * 1024) { // פחות מ־8GB
          send_mail("זיכרון דיסק מלא", "Only " . round(($disk_free / $disk_total) * 100, 2) . "% disk space free");
      }
      if ($conn != '200' || $conn_time > 7) {
          send_mail("לא ניתן להתחבר לשרת", "PING ZAKENU: $conn TIME: $conn_time");
      }
      
      // פונקציה לעיצוב
      function formatBytes($bytes, $precision = 2)
      {
          $units = ['B', 'KB', 'MB', 'GB', 'TB'];
      
          $bytes = max($bytes, 0);
          $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
          $pow = min($pow, count($units) - 1);
      
          $bytes /= pow(1024, $pow);
      
          return round($bytes, $precision) . ' ' . $units[$pow];
      }
      

      חלק מהקוד בפרוייקט היה צריך להתחבר לשרת חיצוני לכן את הקריאת chrl לבדיקת תקינות החיבור
      אגב על קריסת השרת עצמו אין לי בדיקה, אבל בחברת שרתים רגילה (למעט קונטבו למשל) זה לא קורה

      פורסם בפורום מפתחים API
      ש
      שמואל ש.
    • RE: איך להודיע ללקוח באופן אוטומטי כשיש תקלה בשימוש בAPI

      @עידו למה ליידע את הלקוח? מה יהיה לו מהידע הזה? תיידע ישירות את מי שאמור לטפל בזה...

      אני עשיתי אצלי סקריפט שבודק כל דקה האם יש חיבור לשרת, ואת ניצול כל המשאבים (ראם/מעבדים/זיכרון וכו') וכן בודק את החיבור לmysql שזה בעצם מכסה את רוב רובם של סוגי השגיאות מצד השרת (לא מצד הקוד עצמו)
      ואם יש שגיאה כלשהיא הוא שולח לי מייל עם השגיאה
      הרי ללקוח אין מה לעשות עם הודעה שהחיבור למסד נכשל, לא?


      פעם אחת ראיתי באמצע הלילה שיש לי יותר ממאה מיילים על תקלה בשרת...
      וזה באמת הציל אותי, כי אם לא לא הייתי יודע שיש תקלה אלא רק ע"י שיחות זועמות מהלקוחות...

      פורסם בפורום מפתחים API
      ש
      שמואל ש.
    • RE: access denied מכירים תגובה כזו מימות?

      @אופיר גם אני נפגשתי בזה...
      ופעם אחרי זה באותם פרטים הכל הולך...
      @שמואל מה זה?

      פורסם בפורום מפתחים API
      ש
      שמואל ש.
    • RE: חדש! חדש! חדש! בינה מלאכותית שעוזרת ביצירת מערכת!

      @HTML זה נראה ממש טוב
      שאלתי אותו על מודול API והוא ידע להסביר איך זה עובד (מה שרוב הAI נכשלו)
      גם באקסס פילטר הוא הסתדר טוב מאוד!

      פורסם בשאלות ועזרה הדדית
      ש
      שמואל ש.
    • RE: בדיקה האם קובץ קיים לא מגיב

      @מוטי-לוין עכשיו זה כבר עובד
      מוזר

      פורסם בפורום מפתחים API
      ש
      שמואל ש.
    • RE: בדיקה האם קובץ קיים לא מגיב

      @y6714453 כתב בבדיקה האם קובץ קיים לא מגיב:

      כנראה שהפעלת את האכיפה המוקדמת

      לא הפעלתי

      פורסם בפורום מפתחים API
      ש
      שמואל ש.
    • RE: בדיקה האם קובץ קיים לא מגיב

      @y6714453 אה, שכחתי לציין שזה גם לא עבד בשימוש עם מספר:סיסמה

      פורסם בפורום מפתחים API
      ש
      שמואל ש.
    • בדיקה האם קובץ קיים לא מגיב

      אני מנסה להריץ את זה (טשטשתי את הטוקן)

      https://www.call2all.co.il/ym/api/CheckIfFileExists?token=eW10YQ.apik_4-XQIEhZOt22nE2stfjT7g.UIiueYNJriEh6PT3O2k4U6Yh_qlhZeSk&path=ivr2:files/file.wav
      

      אך זה מסתובב ומסתובב המון זמן, ורק אחרי כמה דקות אני מקבל

      {
      "yemotAPIVersion": 6,
      "responseStatus": "EXCEPTION",
      "message": "Invalid yALogs request"
      }
      

      מה זה?
      @שמואל

      פורסם בפורום מפתחים API
      ש
      שמואל ש.
    • RE: FTP הפסיק לעבוד, נפתר! תוכנה חדשה!

      @yankl כולו עובד עם הapi של העלאת והורדת קבצים/קבלת מידע על השלוחה וכו'?
      יש לך אינטרנט די מהיר...

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ש
      שמואל ש.
    • RE: חדש! ניתוב שיחה ליעד מוגדר מראש במודול ניתוביה - ללא עלות יחידות!

      @יהודה-צ-כ כתב בחדש! ניתוב שיחה ליעד מוגדר מראש במודול ניתוביה - ללא עלות יחידות!:

      מהיום ניתן לקבל את השיחה המזוהה היישר אל הטלפון באמצעות המודול הזה!!!

      ולשמוע פרסומת מעניינת על הדרך...

      פורסם בחדש במערכת
      ש
      שמואל ש.
    • RE: חדש! מודול שיתוף מערכת בין מאזינים

      @מתעניין כתב בחדש! מודול שיתוף מערכת בין מאזינים:

      לכאורה זה פיתרון לשידור חי מהמחשב ע"י סיפ.

      אשמח להסבר ודוגמאות מית זה בא לשימוש
      תודה

      פורסם בחדש במערכת
      ש
      שמואל ש.
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @שמואל כתב באבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻:

      @CUBASE @מוטי-לוין קיבלתם:

      016bcecd-4509-45bd-8099-f757e33ae51d-image.png

      אני לא מבטיח שזה ישאר ככה ויעלה באמת בכל המנוע, נראה. כרגע זה עובד על מה שזה עלה עליו.

      אדיר!
      תודה רבה!

      אבל באמת חייבים למצוא פיתרון לכל מי שפתח מערכת באחד הריסיילרים ועכשיו אין לו שום אמצעי לאימות
      מה עושים כל האנשים האלה?

      @y6714453 תודה רבה, הוספת לי הרבה בהירות בנושא!

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ש
      שמואל ש.
    • RE: תוסף לנוחות העבודה בימות המשיח (פוטר את העתקת הקודים והבלאגן...)

      @מים-אחרונים שני הערות
      1.בקובץ manifest בערך matches אפשר לשנות לhttps://www.call2all.co.il/ym/index.php?view=ivr2 כך שיוצג רק בלשונית מערכת תוכן
      2.כרגע מה שיש בגיטהאב זה אובייקט ולא מערך אז החלפתי אצלי

            const resp = await fetch(url);
            const data = await resp.json();
            ITEMS = data;
      

      ל

            const resp = await fetch(url);
            const data = await resp.json();
            const arrays = Object.values(data);
            const merged = arrays.flatMap(group => {
              return Object.keys(group)
                .filter(key => key !== 'id')
                .map(key => group[key]);
            });
            ITEMS = merged;
      
      פורסם בטיפים עצות והדגמות מהמשתמשים
      ש
      שמואל ש.
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @עידו כתב באבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻:

      באדיבות GPT (לקח לי המון זמן לעשות את זה, להסביר במדויק הכל זה לא פשוט!) הוכן כלי לבדיקת קוים אם מכילים משהו שיכול להיות כמו סיסמא וטוקן, הוא בודק אם יש token, Token, TOKEN או משהו בפורמט מספר:סיסמה. ככה מנהלי קוים יכולים לבדוק יחסית בקלות אם יש שם משהו שיצטרך שינוי. כמובן זה לא מכסה את כל המקרים, אבל עוזר.
      מוזמנים לבדוק ולעדכן איך עובד.
      הכל עובד מהדפדפן ככה שהסיסמה והמספר לא עוברים לשום מקום (חוץ מימות המשיח כמובן), אין לי אחריות על כלום, כפשוטו ממש!

      yemot_extini_scanner (3).html

      חשוב גם שיבדוק אם יש פרמטר pass או password כי יש הרבה שלוקחים את המספר שהתקשר ורק את הסיסמה לוקחים מהשלוחה

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ש
      שמואל ש.
    • RE: הודעת פלאש בסמסים - אכן עובד?

      עכשיו מישהו שלח לי דוגמא
      אפשר לראות שם דוגמא של הודעה רגילה ודוגמא של תמונה של הודעת פלאש שקפצה
      46d61c22-ef18-4e69-83cb-4fad06ff509f-image.png

      פורסם בשאלות ועזרה הדדית
      ש
      שמואל ש.
    • הודעת פלאש בסמסים - אכן עובד?

      בשליחת סמס יש אפשרות של הודעת פלאש
      האפשרות אכן עובדת?
      מישהו יכול לשלוח תמונה איך זה מתקבל במכשיר המקבל אם בחרו בהודעת פלאש?

      פורסם בשאלות ועזרה הדדית
      ש
      שמואל ש.
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @שמואל עשיתי אצלי אימות דו שלבי ונכתב לי למעלה
      37925d2f-055b-4b4e-9014-bb3d1b8ea2d9-image.png

      אך כשנכנסתי למערכת בפעם הבאה קיבלתי שוב
      fc4d917b-b39d-444c-9e98-7c162df1ef75-image.png

      יש לי כבר שיטות אימות
      f62c7820-b39a-4b26-8122-8be8a282e1ca-image.png

      מה זה?

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ש
      שמואל ש.
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @שמואל כתב באבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻:

      יש בעיה.. כי מי שמשתמש עם API הוא יפסיק לעבוד. האפשרות היחידה להשתמש עם הapi ״המסורתי״ אחרי תאריך האכיפה - יהיה לעשות אימות דו שלבי עם ״זכור אותי״, וזה יפתח את הip לחודש.

      כתבתי את זה ל @פלוס שכתב שחייבים כזה דבר אז ציטטתי לו שכתבת שאכן הולך להיות אימות דו שלבי

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ש
      שמואל ש.
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @פלוס

      @שמואל כתב באבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻:

      מאחרי התאריך, הAPI לא ממש יעבוד בצורה הנוכחית, כי כן, יהיה צריך אימות דו-שלבי גם בו.

      אז מה הבעיה?

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ש
      שמואל ש.