Задать вопрос
  • Как скомпилировать программу с библиотекой gtk?

    @res2001
    Natriom, Помимо добавления пути в PATH, нужно еще установить переменную окружения: MINGW_HOME=c:\msys64\mingw64
    и жедательно MSYS_HOME=c:\msys64\usr
    Сам пользуюсь такими настройками.

    Начал компилировать через msys2 mingw64. Использовал команды: cd c:\capps; ...

    Тут видно, что вы компилируете не в командной строке msys2, а просто в виндовой cmd. Для того что бы в cmd утилиты из msys2 видели правильно свое окружение установите вышеприведенные переменные окружения Windows.
    Если собирать из командной строки msys2, то, вероятно, результат может быть и положительным, если библиотека все таки установлена правильно, т.к. в этом случае окружение уже доступно для утилит.
    Написано
  • Как разделить весь путь?

    @res2001
    dim5x, ИВАН, Не стоит использовать переменную с именем PATH, т.к. это системная переменная окружения.
    В приведенном примере проблем не будет. Но если этот рецепт войдет как составляющая в таком же виде в скрипт большего размера, то вероятны неприятные побочные эффекты.
  • Как разделить весь путь?

    @res2001
    ИВАН, Ты задаешь вопросы достаточно простые, которые можно решить самому просто прочитав нужную документацию.
    Читай про модификаторы для работы с подстроками тут: set /?
    Модификаторы для работы с путями: for /?
  • Нахождения первой папки в пути?

    @res2001
    Оно работает, только делает немного не то что вам нужно - выдает последнюю папку, а не первую.
    Но таким способом (через модификаторы) можно получить любой каталог в пути, рекурсивно раскручивая путь, только вместо цикла в этом случае надо использовать процедуры - для аргументов процедур так же можно использовать модификаторы. Примерно так:
    @echo off
    setlocal enabledelayedexpansion
    
    :: Путь передается первым параметром скрипта
    set "path=%~1"
    
    call:GetPathPart "%path%"
    
    goto:eof
    
    :: Рекурсивная процедура, выводящая на экран все имена в переданном в первом параметре  процедуры пути
    :GetPathPart
    if "%~1" equ "" exit /b 0
    if "%~1" equ "\" exit /b 0
    :: извлекаем имя файла (последнюю часть пути) и выводим ее на экран
    set "getfile=%~nx1"
    echo %getfile%
    :: убираем имя диска и имя файла
    set "tmpath=%~p1"
    :: убираем последний слэш из пути, оставшийся после предыдущей операции
    if "%tmpath:~-1%" equ "\" set "tmpath=%tmpath:~0,-1%"
    :: рекурсивно вызываем себя же, с обновленным аргументом
    call:GetPathPart "%tmpath%"
    exit /b 0


    Этот код то же делает не то, что вам нужно - он выводит все составляющие части пути, кроме имени диска.

    Справка по модификатором содержится: for /?
    Справка по модификаторам для выделения подстрок и т.п.: set /?
  • В чём преимущество Clang перед GCC? Что использовать для кросс-компиляции?

    @res2001
    Vamp,
    Полагаю, гугл выкинул gcc не из-за того, что не смог разобраться в парочке опций компилятора.

    Полагаю гугл выкинул gcc из-за того, что лично он, гугл, начал вплотную финансировать шланг. И это в корне меняет его отношение к конкурентным продуктам: https://foundation.llvm.org/sponsors Не смог сходу найти спонсоров gcc/gnu, так что вполне может быть, что гугл и там то же присутствует.
    Впрочем это вопрос дискуссионный, не буду тут разводить холивар, к тому же, я то же не сильно разбираюсь в вопросе. Но лично у меня в конторе используется GCC.

    Шланг, как более новый компилятор, возможно, написан более "красиво" и современно, но по той же причине, наверняка, у него меньше поддерживаемых аппаратных платформ и на выходе код чуть менее оптимизирован. Это лично мое мнение, основанное на информации, которую где-то когда-то видел в интернете, ссылок на которую дать не могу и за достоверность которой не ручаюсь, не претендую ни на что, просто для размышления ТСу, возможно захочет более детально разобраться в вопросе и, может быть, тут написать свои выводы :)
    Написано
  • В чём преимущество Clang перед GCC? Что использовать для кросс-компиляции?

    @res2001
    Особо не занимался сравнениями, но на мой взгляд:
    1. GCC дополнительными опциями то же можно заставить строже относиться к стандартам. Так что не вижу тут большой разницы, конечно могут быть нюансы в разных местах и разные трактовки тонких мест стандарта. Кроме того clang поддерживает многие расширения GCC, т.к. многие крупные продукты предполагают наличие подобных расширений (например ядро линукс).
    2. Основное отличие - лицензия. У шланга она BSD-like, т.е. можно делать все что угодно с ним. У GCC - GPL - можешь делать все что угодно, но будь любезен исходники своего изделия открывай. Тут имею ввиду не исходники твоей программы, которую ты собрал компилем, а исходники тобой измененного компилятора. Возможно поэтому большим производителям железок шланг удобней.
    Написано
  • Что за вкладка Hostname в настройках DHCP сервера?

    @res2001
    В DHCP целая куча разнообразных опций, подробней можно посмотреть в RFC2132, а так же в документации на ПО, реализующем функционал DHCP сервера в вашем конкретном случае.
    Чаще всего разнообразные GUI конфигурилки DHCP или вообще не поддерживают доп.опций или поддерживают какой-то их ограниченный набор на собственное усмотрение.
    Ваш вариант похож на опцию 12 - hostname из RFC. C ней в паре обычно идет еще опция 15 - domain name.
    В GUI конфигурилке вполне вероятно опция задается как одна строка FQDN, а потом она программно разделяется на hostname и domain name.
    Написано
  • Как обойти блокировку 80 и 443 порта Ростелеком?

    @res2001
    Александр Касаткин,
    всё-таки проблема на стороне РТ

    Второй то роутер наверное то же ваш и вы его настраивали примерно так же, поэтому и проблемы там примерно одинаковые.
    Попробуйте для эксперимента, раз уж у вас 2 роутера, сбросьте настройки одного из них на заводские. В большинстве домашних роутеров по умолчанию все роутерские примочки слушают только локальный интерфейс, поэтому в заводских настройках все (или почти все) внешние порты должны быть доступны. Настройте только подключение к провайдеру и проброс порта на сервер на стандартном 80/443 порту.

    Помимо того, что порт на роутере может быть занят, трафик можно блокировать фаерволом, проверьте настройки фаервола роутера и сервера. Для тестов можно отключить фаервол, но когда заработает обратно его включить и донастроить при необходимости.
    Написано
  • Как обойти блокировку 80 и 443 порта Ростелеком?

    @res2001
    Александр Касаткин,
    проброс портов работает

    Если внешний порт занят (например веб морда самого роутера выпущена в интренет со стандартными портами), то проброс портов в NATе вы настроить сможете, но вот запросы из интернета будет получать веб сервер роутера, а не NAT и по факту проброс портов работать не будет. При этом nat loopback, вполне вероятно, работать будет.
    В своем первом комментарии я спрашивал:
    Что-то открывается или браузер ошибку показывает?

    Как раз предположил такой вариант с занятым портом. Возможно порт занимает не веб морда, а что-то другое, что в браузере не увидеть.
    По хорошему проверять соединение для начала лучше не в браузере, а, например, в телнете - там можно просто проверить сам факт подключения, которое должно быть в любом случае и не важно какая служба висит на TCP порту - веб сервер, ssh или еще что-то.
    Написано
  • Как обойти блокировку 80 и 443 порта Ростелеком?

    @res2001
    Александр Касаткин,
    я думаю, что не совсем из интернета. это вроде как называется nat loopback.

    Тогда это не совсем корректный тест, т.к. трафик приходит на роутер из внутренней сети и уходит во внутреннюю сеть - в роутере отрабатывают немногодругие цепочки, по сравнению с вариантом, когда запрос приходит с внешнего интерфейса.
    Для экспериментов можно взять где-нибудь VPS, многие операторы VPS предоставляют тестовый период с минимальной конфигурацией, вам будет достаточно для проверки работоспособности. Но с другой стороны тест с телефона через мобильный интернет вполне заслуживает доверия.
    Написано
  • Как обойти блокировку 80 и 443 порта Ростелеком?

    @res2001
    Александр Касаткин,
    когда открываю на компьютере, всё открывается. захожу на телефоне с мобильного - сайт не загружается

    На компьютере из интернета открываете и открывается? Порты 80/443?

    вот некоторые пруфы

    В возможности операторов блокировать порты я нисколько не сомневаюсь. Они вообще могут делать с вашим трафиком все что угодно.
    Я сомневаюсь в том, что оператор блокирует именно IPv4 80/443, при этом оставил IPv6 80/443.

    и страничка с сайта version6, обратите внимание

    Сайт посвящен IPv6, на страничке указано, что IPv6 ростелекомом официально не поддерживается и проблемы с http там указаны относительно IPv6. Кстати, не знаю насколько эта страничка актуальна, я бы ей не сильно доверял. У вас же по IPv6 как раз все открывается.

    Посмотрите комментарий Alexey Dmitriev, я думаю так же.
    Написано
  • Как обойти блокировку 80 и 443 порта Ростелеком?

    @res2001
    веб страницы на других портах без проблем открываются с мобильного интернета.

    Но, что интересно, по IPv6 порты не блокируют. К сожалению, этим сервером буду пользоваться не только я, так что доступ по IPv4 всё таки должен быть.

    Вот из-за этого я сильно сомневаюсь, что ростелеком заблокировал только порты 80/443 на IPv4. Ему ничего не стоит точно так же заблокировать и IPv6 и это было бы сделано, реши они вдруг блокировать порты.
    К тому же реши они блокировать все службы, которые может развернуть у себя клиент они бы могли просто блокировать TCP:SYN пакеты с клиентским адресом назначения и не заниматься ерундой с блокировкой отдельных портов. Этим бы заблокировали вообще все службы, которые работают поверх TCP не важно на каком порту они висят. При этом приложения-киленты работали бы нормально.

    Вы как ходите на ваш сайт снаружи? В браузере что указываете IP или имя (DDNS)? Что-то открывается или браузер ошибку показывает? Проброс портов в NAT на роутере настраивали? При пробросе внутренний адрес сервера и порт верно указываете?
    Написано
  • Как маршрутизировать обернутый в https трафик WireGuard?

    @res2001
    PPTP умеют идентифицировать, да.
    Да, согласен, GRE не вписывается, не прав тут.
    Была мысль избавиться еще от одного уровня шифрования, можно поискать другие решения. На линуксе есть несколько вариантов нешифрованных туннелей поверх UDP: https://developers.redhat.com/blog/2019/05/17/an-i...
    Не знаю можно ли завернуть UDP в stunnel :)
    Написано
  • Как маршрутизировать обернутый в https трафик WireGuard?

    @res2001
    Роман,
    С белым ip это легко, а вот можно ли без него - вопрос

    Белый IP у вас есть - вы же попадаете в интернет как-то.
    Можно использовать DDNS и ходить по имени. Но для этого роутер должен уметь в DDNS и отправлять туда свой новый адрес. Но, конечно, лучше статический IP.

    Конечно остается вариант, когда вам провайдер выдает серые адреса и отправляет через свой NAT. В этом случае ничего не поможет - провайдер под вас не станет пробрасывать порты у себя. Теоретически эту проблему можно решить с провайдером (пообщайтесь с тех поддержкой, купить в конце концов статический белый адрес). Например знаю, что в ДОМ.РУ по умолчанию используется такая схема с провайдерским NATом, но можно отключить NAT просто в настройках тарифа в их мобильном приложении, бесплатно. У других операторов это может быть организовано по другому.

    Идея в том что если порты и будут блокировать то явно не 443-й.

    Порт не важен. DPI системы анализируют не порт, а сам трафик. Порт, конечно, то же учитывают, но лишь как один из факторов, далеко не самый главный. Никто не запрещает вам вешать HTTPS сайт на произвольный порт, правда в браузере придется порт руками писать. Точно так же и с другими сервисами.
    stunnel маскирует произвольный трафик под HTTPS, так что должно работать.
    Если же все таки хочется все повесить на 443 порт включая и другие сервисы, то видимо надо разворачивать обратный HTTPS прокс - nginx и т.п. Т.е. со стороны сервера будет сначала NAT на роутере, на котором настроен проброс на nginx, а там уже на stunnel. Цепочка получается довольно длинная, я бы не заморачивался, если заработает на произвольном порту. Не уверен, но может быть тот же stunnel может работать как обратный прокси, я им давно уже не пользовался. Тогда на stunnel можно завернуть и другие HTTPS службы.
    Не совсем понятно, зачем вам WireGuard, можно трафик завернуть в простой GRE туннель без шифрования и его уже заворачивать в stunnel. Впрочем дело ваше.
    Написано
  • Как маршрутизировать обернутый в https трафик WireGuard?

    @res2001
    Роман, У вас же там stunnel - настройте любой порт какой вам нравиться.
    Кстати порт на NATе может не совпадать с портом stunnelа на сервере, т.е. внешний порт роутера на который будет приходить клиентский трафик может отличаться от порта сконфигурированного в stunnel на сервере - NAT при пробросе подменит порты.
    В stunnel клиента надо, конечно, указывать порт сервер, который на роутере будет.
    Написано
  • Как маршрутизировать обернутый в https трафик WireGuard?

    @res2001
    Роман, Где в схеме интернет? Полагаю интернет между клиентом и микротиком.
    Значит на микротике настроен NAT. Просто в NAT настраиваете проброс портов и указываете внутренний адрес и порт вашего сервера. Все. Тут даже маршрутизировать ничего не надо, т.к. сервер и микротик, видимо, находятся в одной локальной сети - у них прямой доступ друг к другу без маршрутизации.
    Написано
  • Как можно перенести установленную программу с одного компьютера на другой?

    @res2001
    Помимо перенести файлы и зарегистрировать dll нужно еще и перенести ветки реестра, которые использует программа. Как правило виндовый софт свои настройки хранит в реестре.
    Но это все для относительно простых программ. Более сложные варианты могут, например, устанавливать в систему свои драйвера ...
    Написано
  • Возможен ли SelfInterface NAT?

    @res2001
    Для начала разрешить пересылку пакетов: net.ipv4.ip_forward
    Можно NAT на ВПН интерфейс повесить.
    Или настроить маршрутизацию на ВПН клиенте. Клиент, видимо, ничего не знает о вашей сети за ВПН, поэтому ответные пакеты идут не туда. Некоторые ВПН сервера умеют добавлять маршруты клиентам (OpenVPN например) при подключении.
    Написано
  • Непонятная ошибка G++?

    @res2001
    Haaaaz, Не думаю, что ошибка тут в разных слешах. Винда давно уже нормально переваривает оба варианта, но учитывая, что у вас g++, а это все таки инструмент из мира юникс, то могут быть нюансы. Хотя я никогда не сталкивался с проблемами из-за разных слешей. Обычно всегда использую unix вариант слеша.

    На скрине реальной ошибки нет, есть только команда и итог "Build error", но причины нет.
    Если в IDE другой информации нет, попробуйте запустить ту же команду (скопируйте из IDE) в cmd.exe.
    Тут же можете поправить слеши, приведя их к стандартному для ОС виду.
    Запускайте только вторую команду там где собственно вызов g++, chcp не нужно. chcp добавляет IDE для собственных нужд - чтоб корректно отображать вывод команды.
    Написано
  • Как обеспечить себе стабильный интернет на ноутбуке?

    @res2001
    Сейчас то какой интернет используете?
    Университетский WiFi? Или раздаете с телефона?
    При большом скоплении народа оба варианта плохие, т.к. полоса пропускания ограничена и она делится между всеми пользователями, а пользователей много.

    Мобильный роутер будет работать примерно так же как и раздача WiFi с телефона. Разве что попробовать другого оператора, но без гарантий.

    Тут хороший выход - это проводной интернет, но, видимо, это не ваш вариант.
    Написано