כמה תקלות שנביא בקווים
-
לימוד-בתורת-מרן כתב:
@לימוד-בתורת-מרן זה "הותר לפרסום"...
אם אנחנו כבר בבמה הזאת אז למה שעושה חיפוש גוגל בפורום
מחזיר לי שגיאה@אז-נדברו יש לך מושג?
-
@לימוד-בתורת-מרן זה "הותר לפרסום"...
אם אנחנו כבר בבמה הזאת אז למה שעושה חיפוש גוגל בפורום
מחזיר לי שגיאהכיון ששמואל לכאורה לא יקדיש זמן לטפל בזה יצרתי לך סקריפט בtampermonkey לתיקון כפתורי "חיפוש גוגל בפורום" ו"חיפוש בהגדרות מתקדמות" (כאן יש הוראות התקנה לתוסף).
הנה הסקריפט:// ==UserScript== // @name פורום ימות - תיקון כפתורי החיפוש // @namespace https://f2.freeivr.co.il/ // @version 1.0.0 // @description מתקן את "חיפוש גוגל בפורום" ואת "חיפוש בהגדרות המתקדמות" - שניהם פותחים חלון חיפוש // @match https://f2.freeivr.co.il/* // @run-at document-idle // @grant none // ==/UserScript== (function () { 'use strict'; const LOGO_URL = 'https://f2.freeivr.co.il/assets/uploads/system/site-logo.gif?v=090613ffd44'; const SITE = location.hostname; // f2.freeivr.co.il const MODAL_ID = 'ym-search-modal'; const ADV_OLD_LABEL = 'חיפוש בהגדרות המתקדמות'; const ADV_LABEL = 'חיפוש באזור התעשייה - הגדרות המערכת'; // ================= עזרים ================= function matchesNavButton(el, hrefRegex, title) { const a = el.closest('a'); if (!a) return false; if (hrefRegex.test(a.getAttribute('href') || '')) return true; const li = a.closest('li'); return !!(li && (li.getAttribute('data-bs-original-title') === title || li.getAttribute('title') === title)); } function currentTopicId() { const m = location.pathname.match(/\/topic\/(\d+)/); return m ? m[1] : null; } // ================= חיפוש גוגל ================= function googleSearch(query, topicId) { const scope = topicId ? `site:${SITE}/topic/${topicId}/` : `site:${SITE}`; const url = 'https://www.google.com/search?q=' + encodeURIComponent(`${scope} ${query}`); window.open(url, '_blank', 'noopener'); } function openGoogleModal() { const topicId = currentTopicId(); openSearchModal({ placeholder: 'הקלידו כדי לחפש בגוגל', logoAlt: 'חיפוש בגוגל', buttons: [ { label: 'חיפוש בכל הפורום', cls: 'btn-secondary', title: 'לחצו על אנטר כדי לחפש', isEnter: true, run: (q) => googleSearch(q, null), }, { label: 'חיפוש בנושא זה', cls: 'btn-primary', available: !!topicId, unavailableTitle: 'זמין רק בתוך נושא', run: (q) => googleSearch(q, topicId), }, ], }); } // ================= חיפוש בהגדרות המתקדמות ================= function advancedSearchPath(term) { return 'search?in=titlesposts&term=' + encodeURIComponent(term) + '&matchWords=all&by=&categories%5B%5D=1&searchChildren=true&hasTags=&replies=' + '&repliesFilter=atleast&timeFilter=newer&timeRange=&sortBy=relevance' + '&sortDirection=desc&showAs=posts'; } function goAdvancedSearch(term, newTab) { const path = advancedSearchPath(term); if (newTab) { window.open('/' + path, '_blank', 'noopener'); } else if (window.ajaxify && typeof window.ajaxify.go === 'function') { window.ajaxify.go(path); // ניווט SPA בלי רענון } else { location.href = '/' + path; } } function openAdvancedModal() { openSearchModal({ placeholder: ADV_LABEL, logoAlt: 'חיפוש בפורום', buttons: [ { label: 'חיפוש', cls: 'btn-primary', title: 'אנטר לחיפוש, Ctrl+אנטר או Ctrl+לחיצה לפתיחה בלשונית חדשה', isEnter: true, run: (q, newTab) => goAdvancedSearch(q, newTab), }, ], }); } // ================= יירוט הלחיצות ================= document.addEventListener('click', (e) => { let handler = null; if (matchesNavButton(e.target, /\/misc\/freeivr\/?$/, 'חיפוש גוגל בפורום')) { handler = openGoogleModal; } else if (matchesNavButton(e.target, /^\/?SearchSettings\/?$/i, ADV_OLD_LABEL) || matchesNavButton(e.target, /^\/?SearchSettings\/?$/i, ADV_LABEL)) { handler = openAdvancedModal; } if (!handler) return; e.preventDefault(); e.stopImmediatePropagation(); // מונע את ajaxify של NodeBB handler(); }, true); // ================= שינוי התווית של כפתור ההגדרות המתקדמות ================= function relabelAdvancedButton() { document.querySelectorAll('a[href="/SearchSettings"], a[href="SearchSettings"]').forEach((a) => { const li = a.closest('li'); if (!li || li.dataset.ymRelabeled === '1') return; li.dataset.ymRelabeled = '1'; // הטקסט הצף (Bootstrap tooltip) li.setAttribute('data-bs-original-title', ADV_LABEL); if (li.hasAttribute('title')) li.setAttribute('title', ADV_LABEL); a.setAttribute('aria-label', ADV_LABEL); try { const tip = window.bootstrap && window.bootstrap.Tooltip && window.bootstrap.Tooltip.getInstance(li); if (tip && typeof tip.setContent === 'function') { tip.setContent({ '.tooltip-inner': ADV_LABEL }); } } catch (err) { /* לא קריטי */ } // הטקסט שמוצג בתפריט בנייד const span = a.querySelector('span.visible-xs-inline'); if (span) span.textContent = ADV_LABEL; }); } relabelAdvancedButton(); let relabelPending = false; new MutationObserver(() => { if (relabelPending) return; relabelPending = true; requestAnimationFrame(() => { relabelPending = false; relabelAdvancedButton(); }); }).observe(document.body, { childList: true, subtree: true }); // ================= סגנון ================= function injectStyle() { if (document.getElementById(MODAL_ID + '-style')) return; const css = ` #${MODAL_ID}{position:fixed;inset:0;z-index:2000;display:flex;align-items:flex-start;justify-content:center; padding:1.75rem .5rem;background:rgba(0,0,0,.5);direction:rtl;} #${MODAL_ID} .ymg-dialog{background:var(--bs-body-bg,#fff);color:var(--bs-body-color,#212529); width:100%;max-width:500px;border-radius:.5rem;box-shadow:0 .5rem 1rem rgba(0,0,0,.25);overflow:hidden;} #${MODAL_ID} .ymg-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem; padding:1rem;border-bottom:1px solid var(--bs-border-color,#dee2e6);} #${MODAL_ID} .ymg-logo{flex:1;text-align:center;} #${MODAL_ID} .ymg-logo img{max-width:100%;max-height:90px;} #${MODAL_ID} .ymg-close{background:none;border:0;font-size:1.75rem;line-height:1;cursor:pointer; color:inherit;opacity:.6;padding:0 .25rem;} #${MODAL_ID} .ymg-close:hover{opacity:1;} #${MODAL_ID} .ymg-body{padding:1rem;} #${MODAL_ID} .ymg-footer{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-start; padding:.75rem 1rem;border-top:1px solid var(--bs-border-color,#dee2e6);} #${MODAL_ID} .btn[disabled]{opacity:.5;cursor:not-allowed;} `; const style = document.createElement('style'); style.id = MODAL_ID + '-style'; style.textContent = css; document.head.appendChild(style); } // ================= חלון חיפוש כללי ================= // buttons: [{ label, cls, title?, isEnter?, available? (ברירת מחדל true), unavailableTitle?, run(query, newTab) }] function openSearchModal({ placeholder, logoAlt, buttons }) { if (document.getElementById(MODAL_ID)) return; injectStyle(); const wrap = document.createElement('div'); wrap.id = MODAL_ID; wrap.setAttribute('role', 'dialog'); wrap.setAttribute('aria-modal', 'true'); wrap.innerHTML = ` <div class="ymg-dialog"> <div class="ymg-header"> <div class="ymg-logo"><img alt=""></div> <button type="button" class="ymg-close" aria-label="סגירה">×</button> </div> <div class="ymg-body"> <input type="text" class="form-control ymg-input" autocomplete="off"> </div> <div class="ymg-footer"></div> </div>`; const img = wrap.querySelector('.ymg-logo img'); img.src = LOGO_URL; img.alt = logoAlt; const input = wrap.querySelector('.ymg-input'); input.placeholder = placeholder; const footer = wrap.querySelector('.ymg-footer'); const btnEls = buttons.map((b) => { const el = document.createElement('button'); el.type = 'button'; el.className = 'btn ' + b.cls; el.textContent = b.label; el.disabled = true; const available = b.available !== false; const t = available ? b.title : b.unavailableTitle; if (t) el.title = t; el.addEventListener('click', (e) => run(b, e.ctrlKey || e.metaKey)); footer.appendChild(el); return { def: b, el, available }; }); const cancel = document.createElement('button'); cancel.type = 'button'; cancel.className = 'btn btn-light'; cancel.textContent = 'ביטול'; footer.appendChild(cancel); document.body.appendChild(wrap); const query = () => input.value.trim(); const updateButtons = () => { const hasText = query().length > 0; btnEls.forEach(({ el, available }) => { el.disabled = !hasText || !available; }); }; const close = () => { wrap.remove(); document.removeEventListener('keydown', onKey, true); }; function run(b, newTab) { const q = query(); if (!q) { input.focus(); return; } close(); b.run(q, newTab); } const onKey = (e) => { if (e.key === 'Escape') { e.preventDefault(); close(); } else if (e.key === 'Enter' && document.activeElement === input) { e.preventDefault(); const enterBtn = btnEls.find(({ def }) => def.isEnter); if (enterBtn && !enterBtn.el.disabled) run(enterBtn.def, e.ctrlKey || e.metaKey); } }; input.addEventListener('input', updateButtons); wrap.querySelector('.ymg-close').addEventListener('click', close); cancel.addEventListener('click', close); wrap.addEventListener('mousedown', (e) => { if (e.target === wrap) close(); }); document.addEventListener('keydown', onKey, true); setTimeout(() => input.focus(), 0); } })(); -
@אז-נדברו
ארכיון הפורום הישן גם לא זמין -
@אז-נדברו ומה תאמר על זה שטוען שנה וחצי

ובסוף מראה וי ואז אתה רואה שזה לא העלה כלום?
-
@אז-נדברו סליחה. התכוונתי לאתר הניהול החדש ששם אני מעלה את הקובץ, וזה מגיע ל40% ואז כותב שגיאה, עכשיו ניסיתי לעלות דרך האתר הרגיל וכן העלה לי. (יכול להיות שזה קשור לזה שהקובץ ארוך מאוד בסביבות שעה ו10 דקות?). עכ"פ זה לא פותר את בעיית האימות הדו שלבי כי רק באתר החדש אין אימות דו שלבי אבל באתר הישן יש ואם אני צריך להיכנס לאתר הישן אז מה עשינו? ובכל מקרה אני ישמח שתשים בבקשות לפיתוח את האפשרות של בחירת אימות דו שלבי (זה נראה שיש כבר את התשתית כי כמו שאמרתי יש אפשרות לבחור האם יהיה אימות דו שלבי בAPI).
ובעיה נוספת: באתר החדש אפשר להיכנס דרך מספר מערכת וסיסמה או דרך שם משתמש שאין לי מושג מאיזה, ומתי שאני מנסה להירשם זה אומר שאני כבר רשום, ואין לי מושג מה השם משתמש שלי, ומתי שאני מנסה לשלוח קוד פה למייל או לפלאפון לשתיהם זה לא שולח. -
@המתכנת-הראשי מה הבעיה לעבור אימות דו שלבי?
-
@אז-נדברו זה משגע שכל פעם שאני נכנס אני צריך לאמת את הפלאפון שלי על ידי שיחה, במיוחד שאני מנהל מערכו של אנשים שונים ועשרות מערכות שונות, וכל פעם אני צריך לעבור את האימות. (תסתכל ביומן שיחות שלי ותבין
) -
@אז-נדברו זה משגע שכל פעם שאני נכנס אני צריך לאמת את הפלאפון שלי על ידי שיחה, במיוחד שאני מנהל מערכו של אנשים שונים ועשרות מערכות שונות, וכל פעם אני צריך לעבור את האימות. (תסתכל ביומן שיחות שלי ותבין
)למה אתה לא יכול להוסיף מפתח גישה ע"י טביעת אצבע, או בכלל להכניס את כתובת הIP של המחשב לרשימה לבנה וכך לא תצטרך לעבור כל פעם אימות?
-
@אז-נדברו עיין כאן וחוץ מזה מדובר בעשרות מערכות שונות שמתוכם זה פרויקטים אישיים קטנים שלי, שאני לא מפחד שיפרצו לי לשם, ואפילו אם יפרצו זה לא יוזיז לי, ובנוגע למפתחות גישה לא שמתי לב שיש כזה דבר אבל בכל מקרה אין לי אפשרות לטביעת אצבע במחשב.
ואם כבר מי שיודע יש כמה דרכים שונות לעקוף את החסימות ולהיכנס לניהול או לכל מקום אחר בקו בלי הסיסמת ניהול וללא קשר לאימות, אז למה לא חושבים לעשות אימות עם המנהל על כל פעולה שאתה עושה בקו שלו? לא שאני חושב שזה הגיוני, אבל אני פורק את התיסכול שלי על המקלדת, וזה פעם ה15 להיום שאני צריך לקבל שיחת אימות על דבר שהייתי מוותר מרצון.
-
@המתכנת-הראשי מה ההיגיון של הסינון להחליף IP כל כמה שעות ? אי אפשר אצלם בתשלום של 15 שח לקבל IP קבוע ?
מפתח אבטחה יכול להיות שמור בחשבון מייקרוסופט אם המחשב שלך מוגן אם פין לי יש מפתח אבטחה במחשב אתה מקיש קוד בן 6 ספרות ועובר אימות דו"ש -
אי אפשר אצלם בתשלום של 15 שח לקבל IP קבוע ?
אכן בכל סינון זה אפשרי בתשלום.
-
@שלוחה-404 אני יודע?? אין לי מושג אני באתרוג במסלול ללא גלישה וזה מה שקורה, פעם התלוננתי אצלם ע הכתובות IP והנציג החזיר לי תשובה שזה חלק מהסינון וזה מגן עליי מסייבר ולא יודע מה.
@אז-נדברו תכלס יש מצב שיהיה אפשרות אם לבטל את זה או לא? -
@אז-נדברו תכלס יש מצב שיהיה אפשרות אם לבטל את זה או לא?
אעביר את זה בעז"ה לגורמים הרלוונטיים
-
גם שמיעת כמות הדקות שנכנסו למערכת לא עובד בשרת החדש - זה משמיע אפס תמיד
בס"ד הבאג טופל.
-
@המתכנת-הראשי ככה זה גם בנטפרי לא כל כמה שעות אבל גם מתחלף מי הספק תגיד לו שאתה רוצה IP קבוע זה עולה 15 שקל בכל חברות התקשורת אני גם עשיתי את זה תקופה שהיה לי הרבה עבודה ולא היה לי סבלנות לדו"ש כל פעם
תנסה מפתח גישה בחשבון מייקרוסופט -
@שלוחה-404 תאמין לי שאם היה לי כוח הייתי עושה את זה, אבל להמחשה אני יגיד לך שאפילו חיפוש בגוגל אין לי ואני פועל על מסלול מייל ורשימה לבנה בלבד, ואין לי כוח להתנהל מול הנציגים באתרוג, מה גם שאין לי שום עניין בכתובת IP קבועה, כל הבעיה שלי זה רק האימות הדו שלבי.
במיוחד שהנציג מאתרוג הצליח לשכנע אותי שבשניה שיהיה לי כתובת IP קבועה תוך 2 דקות אני מקבל הודעת כופר
-
-
מישהו יכול לבדוק זאת?
תוקן רק חלקית
אם אני שומע את פירוט החודש - משמיע
אם אני עושה רק על היום - לא משמיעבטיפול
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות