Задать вопрос
  • Как сделать аутентификацию на сайте через телеграм?

    CoDeR2006
    @CoDeR2006 Автор вопроса
    TS
    И так, для меня в будущем, и для тех кто это нагуглил:

    Дело в том что без виджета на начало 2024 сделать авторизацию практический не возможно, вот реально правильное решение если у вас похожий стэк, и вы планируете делегировать саму регистрацию на сервер, а не делать все через front.

    Интегрируем виджет в приложение react + ts:
    (это если вам надо что бы был не редирект, а вызов функции со стороны telegram)
    import { useEffect } from 'react'
    import { ITelegramUser } from '../../../../types/telegram/api-telegram-user.ts'
    
    declare global {
      interface Window {
        onTelegramAuth: (user: ITelegramUser) => void
      }
    }
    
    export const ButtonTelegramAuth = () => {
      useEffect(() => {
        const button = document.createElement('script')
        button.async = true
        button.src = 'https://telegram.org/js/telegram-widget.js?22'
        button.setAttribute('data-telegram-login', 'name_bot')
        button.setAttribute('data-size', 'large')
        button.setAttribute('data-radius', '20')
        button.setAttribute('data-onauth', 'onTelegramAuth')
    
        document.body.appendChild(button)
    
        window.onTelegramAuth = function (user) {
          alert(
            'Logged in as ' +
              user.first_name +
              ' ' +
              user.last_name +
              ' (' +
              user.id +
              (user.username ? ', @' + user.username : '') +
              ')'
          )
        }
    
        return () => {
          document.body.removeChild(button)
        }
      }, [])
    
      return <div id="telegram-widget-container"></div>
    }


    если нужен все таки редирект мы добавляем такое поле:
    script.setAttribute('data-auth-url', 'https://site.pw');

    и удаляем это:
    button.setAttribute('data-onauth', 'onTelegramAuth')
    
    declare global {
      interface Window {
        onTelegramAuth: (user: ITelegramUser) => void
      }
    }
    
     window.onTelegramAuth = function (user) {
          alert(
            'Logged in as ' +
              user.first_name +
              ' ' +
              user.last_name +
              ' (' +
              user.id +
              (user.username ? ', @' + user.username : '') +
              ')'
          )
        }


    И так объясняю в чем задумка:
    В ваше приложение react интегрируется все тот же виджет, но правильным образом. После нажатия на виджет происходит авторизация пользователя (он вводит свои данные / просто нажимает войти). Потом телеграм передает все его данные вам (в функцию - №1 способ / по get параметрам в url). Если вы делегируете
    регистрацию на сервер (а так правильно) то выбираете 2 способ. Сервер получает данные валидирует их и заносит в БД, затем делает редирект вашего пользователя к вам обратно на front, и заносит token (или что там еще не разобрался) в HttpOnly Ckookie. Ну а далее в моем случае Guard будет проверять есть этот token или нет, годен он или нет.

    Передаю привет Максиму в будущем. Как дела Макс ?
    Ответ написан
    11 комментариев
  • Как исправить артефакты при перемещении по монтажной области в Illustator?

    c0nt0rti0m
    @c0nt0rti0m
    Препресс для флексы и офсетной печати.
    99 процентов глюков просмотра в Иллюстраторе лечатся отключением использования GPU
    68380d0b5964c025323523.jpeg
    Ответ написан
    Комментировать
  • Как получить username пользователя имея id без использования telegram web, но используя Python?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Получить id по username средствами Bot API нельзя. Его можно получить только вместе с событием, связанным с пользователем. Например, пользователь нажал кнопку /start, пользователь написал боту или в общую группу с ботом, пользователь вступил в группу...

    Telegram Bot API предполагает (и это абсолютно правильно!), что боты не могут писать произвольным пользователям и вообще знать об их существовании. Речь должна идти исключительно об инициативе пользователя начать коммуникацию. Иногда косвенно: например, вступая в группу, куда администратор добавил бот. Но случайных пользователей без их явно выраженного действия бот не может найти.

    Конечно, это можно обойти клиентским API (telethon выкидывает из-за того что его активно используют спамеры, но это тоже решаемо). Но я бы рекомендовал зайти с другой стороны: не надо вообще делать всякую фигню, на которую Bot API не рассчитан. Никакой пользы от неё нет.

    Например, если задача в том, чтобы получить список контактов для взаимодействия, то НЕ НАДО было собирать ссылки на профили пользователей. Вместо этого следовало просить их написать боту или вступить в группу. А там уже ботом словить информацию по ним и записать куда надо для ботовых задач.
    Ответ написан
    Комментировать
  • Netbird или Netmaker для корпоративной сети?

    @Drno
    Zerotier. И контроллер на свой сервер - https://github.com/sinamics/ztnet?tab=readme-ov-file
    То что Вы посмотрели работает на протоколе WG, он блокируется уже местами

    Если уж есть желание на WG это использовать тогда можно попробовать TailScale
    Ответ написан
  • Сыпится (пикселится) картинка на мониторе?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Отвал памяти либо чипа видеокарты. Лечится перепайкой чипов в СЦ. Меньшая вероятность - выход из строя памяти или чипа, в этом случае тогда только замена неисправного чипа. Если видеокарта старая или из дешёвых затычек - выкидывается и заменяется новой, т.к. дешевле купить новую или б/у (с проверкой, само собой), чем заниматься некромантией.
    Ответ написан
    2 комментария
  • Насколько безопасен DNS comss.one?

    @SCT
    Как автоматически настроить свой ПК на Windows 11 под использование DoH через ComssDNS.

    1. Создай файл universal-set-dns-comss.bat (https://gist.github.com/adgooroo/c1ed11198ae31407b...)
    Что он делает:

    Этот .bat‑файл автоматически находит все активные сетевые адаптеры на компьютере (Ethernet, Wi-Fi и любые другие) и вручную прописывает в них DNS:

    основной DNS: 83.220.169.155

    резервный DNS: 212.109.195.93

    для IPv6 прописывает ::1 (вместо внешнего сервера, чтобы исключить утечки через IPv6)

    Кроме того, этот файл автоматически запускает файл enable-doh-comss.reg, чтобы включить поддержку защищённого DNS (DoH).

    2. Создай файл enable-doh-comss.reg (https://gist.github.com/adgooroo/26f72b9f5f98f69fa...)
    Что он делает:
    Этот .reg‑файл вносит изменения в системный реестр Windows, чтобы:

    включить DNS over HTTPS (DoH);

    указать, что в качестве DoH-сервера нужно использовать https://dns.comss.one/dns-query;

    задать режим, при котором Windows будет всегда использовать DoH, если это возможно.

    Таким образом, DNS-запросы будут не только направляться на нужные IP, но и зашифрованы по HTTPS.

    3. Создай папку и оба файла помести вместе, например C:\DNSSetup\
    Что дальше делать:

    Дважды кликаешь по universal-set-dns-comss.bat (ПКМ по файлу, от имени администратора) → он сам применяет настройки ко всем адаптерам и запускает файл реестра.
    Никаких дополнительных действий не требуется. Всё происходит автоматически.

    Для опытных:

    ✅ 4. Создай файл block-other-dns.ps1 (https://gist.github.com/adgooroo/bda27d6a1129d0a55...)
    Что дальше делать:
    Для отлова утечек, например, настроек браузера и т.д. можно применить хардконый метод жесткого ограничения на использование только DoH через ComssDNS.

    Варнинг: если вы используете у себя на компьютере, хотя бы иногда VPN - он умрёт после запретительных правил. Можно используя PowerShell (ПКМ по файлу, от имени администратора) прописать эти команды построчно, не используя то, что не нужно.

    5. "Сделайте мне хорошо, а потом обратно как было"
    Что дальше делать:

    Если вам нужно вернуть настройки DNS на состояние "по-умолчанию", то создайте файл reset-dns.bat (https://gist.github.com/adgooroo/35af8511ec364f371...) (ПКМ по файлу, от имени администратора) → он сам сбросит все настройки.

    Если нужно вернуть настройки в реестре на состояние "по-умолчанию", то создайте файл remove-doh-comss.reg (https://gist.github.com/adgooroo/5d8fca6e1fb5f2e6c...) и запустите его.

    Если использовались фаервол-правила. Если ты добавлял правила блокировки других DNS, их тоже можно удалить, создаём файл remove-dns-firewall-rules.ps1 (https://gist.github.com/adgooroo/3c7d320d6d3f2836a...) и включаем в свою сборку или используя PowerShell (ПКМ по файлу, от имени администратора) прописать эти команды построчно.
    Ответ написан
    Комментировать
  • Как пустить трафик конкретного устройства в сети через VPN?

    Mi11er
    @Mi11er
    A human...
    Делаем ip - firewall - mangle
    правило на prerouting, где в src address указываем IP адрес ps3 , а экшн делаем mark routing

    Далее в ip- routes, делаем маршрут 0.0.0.0/0 , gateway ваш vpn, routing mark из mangle

    Вот так выглядит правила у меня, правда вместо src adr испольузется лист с адресами назначения

    /ip firewall mangle
    add action=mark-routing chain=prerouting dst-address-list=Telegramm \
        new-routing-mark=Blocked passthrough=yes
    
    /ip routes
    add distance=1 gateway=pptp-digital_ocen routing-mark=Blocked
    Ответ написан
    Комментировать