Задать вопрос
  • Где найти описание всех ключей сертификатов OpenVPN?

    @res2001
    О чем речь в вопросе? Вы имеете ввиду поля сертификата?
    Их не так что бы много и все они более менее понятны из названия. Не понятны - почитайте какой-нибудь мануал по генерации ключей, на примере поймете. Поля заполняются так как нужно вам, а не так как пишут составители мануалов, там только пример заполнения.
    Как верно написал CityCat4 в своем ответе, openvpn использует стандартные сертификаты openssl, которые соотвентствуют стандарту Х.509. Такие же сертификаты использует и большинство других приложений, работающих с криптографией. Но не все, у некоторых свои подходы (pgp).
  • Как вывести имена сетевых интерфейсов через cmd?

    @res2001
    Денис Давыденко, Фильтровать вывод для получения нужной информации - обычная практика. Большинствуо консольных утилит выводит слишком много не нужной в конкретном случае информации.
    Для фильтрации обычно используют: find, findstr
    Для разделения вывода на поля: for /f
    Для справки:
    find /?
    findstr /?
    for /?
  • Здесь наверное ошибка с памятью?

    @res2001
    С чего вы взяли, что не делается realloc?
    Как проявляется ошибка?
    Что вы сделали, чтоб выяснить где ошибка и причины ошибки?
  • Как пробросить порт через VPN туннель между двумя Mikrotik?

    @res2001
    S10LI, По идее несколько таблиц маршрутизации не должны снижать производительность больше, чем маскарадинг. Но мне не приходилось это использовать на микротиках.
  • Как пробросить порт через VPN туннель между двумя Mikrotik?

    @res2001
    S10LI, Самый простой вариант - нужно сделать, чтоб веб сервер был доступен непосредственно по адресу микротик2. Т.к. у вас там динамический серый адрес, то проще всего получить у провайдера статический белый, настроить ДНС и профит.

    Если это почему то не возможно, то остается ходить таким корявым маршрутом через микротик1 с маскарадом. Чтоб отказаться от маскарадинга на веб сервере вы должны на микротик2 сделать шлюзом по умолчанию ВПН адрес микротик1, но, видимо, это не совсем то что вам хочется.
  • Как ограничить доступ на изменения к папке с репозиторием git на windows server?

    @res2001
    Vito Ombero, Какие права? Если у пользователя git нормально работает - значит права у него есть, значит запустив консоль по ssh он получит доступ непосредственно к файлам репозитория.
  • Корректное использование poll recv?

    @res2001
    maaGames, Да, accept будет сразу возвращаться, если нет соединения. Для слушающего сокета наравне со всеми остальными можно вызывать poll. Если poll вернет, что сокет готов для чтения - есть соединение для вызова accept.
    C connect несколько сложнее. Она завершается сразу, при этом процесс соединения будет продолжаться. После вызова poll/select на этом сокете, если сокет готов для чтения или для записи, то вызвав getsockopt(SO_ERROR) можно получить код ошибки, если он нулевой - то соединение установлено.

    На счет разделения на 2 сокета - избыточно, не вижу как это может помешать в отладке. Но это ваши дела.

    Рекомендую для сетевого программирования книгу Р.Стивенс "Unix. Разработка сетевых приложений" 3-е издание. Новую уже не купите, она 2007 года, но книга очень хороша, аналогов по глубине материала на русском я не видел. Можно купить через сайты, которые продают букинистические книги. Я свой экземпляр выуживал около года на alib.ru :-)
  • Как ограничить доступ на изменения к папке с репозиторием git на windows server?

    @res2001
    Что помешает пользователю имеющему легальный ключ зайти по ssh в командную строку и там что-то испортить?
    Да, это сложнее и требует дополнительных телодвижений, но тем не менее возможность остается.
  • Корректное использование poll recv?

    @res2001
    maaGames,
    я могу ждать в recv хоть сколько, если это в принципе допустимо сокетами.

    Вполне допустимо, если вас это устраивает. Обычно есть причины, чтоб не висеть слишком долго в одной операции.
    Помните только, что пока ваш поток заблокирован на записи, вы не можете ничего прочитать. И наоборот. Со всеми вытекающими из этого последствиями.
    Т.е. при испоьзовании блокирующих сокетов можно вообще без poll/select обойтись и сразу вызывать recv и в ней сидеть и ждать

    В любом варианте сокетов использование poll/select не обязательно. Они просто добавляют дополнительный функционал при работе с вводом/выводом. Вообще если вы работаете только с 1 сокетом в блокирующем режиме, то использование функций мультиплексоров (poll/select/epoll) не особо нужно.
    Они становятся особенно актуальны, когда у вас куча соединений. Да и то, стандартный подход - каждому клиенту свой поток переводит работу с пачкой клиентов в работу с одним клиентом. Хорошо подходит для не сильно нагруженных приложений.
    Но в приложения, которые должны работать с сотнями и тысячами соединений такой подход быстро вызовет перерасход ресурсов.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick,
    Просто теперь любопытно почему такой метод срабатывает если я буду работать с delay.h из стандартной библиотеки, при абсолютно таком же коде

    Вы заблуждаетесь. Проанализируйте внимательно код, изучите вывод компилятора.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick, Все верно. Предупреждение выдается при компиляции led_display.c.
    Просто выделите все общие макросы в отдельный заголовочный файл, в этом же файле можете подключать и include/led_display.h. В .c файлах (во всех где нужно), вместо определения макросов просто включаете этот заголовок. Профит.
  • Почему переменная иногда пуста?

    @res2001
    River0051, Согласен с AUser0
    Правило слишком общее.
    Но это значит, что правило должно срабатывать чаще, чем нужно.
    Хорошо бы вывод этой всей связки сохранять в файл, тогда вы сможете проверить, что выдает ваша конструкция.
    Кроме того не понятно зачем вам для подобной задачи понадобился autoit? У вас в этом скрипте уже почти готовый батник.
  • Как проще в VIsual C/C++ заменить "//" на "/" в переданном аргументе командной строки?

    @res2001
    DWZ, Можно сделать шел скриптом. Выдергиваете из строки путь, обрезаете имя файла, переходите по указанному пути, сохраняете pwd и подменяете им оригинальный путь.
    Примерно так:
    full_name="G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavformat_isom.c.patch"
    abs_dir="`dirname \"${full_name}\"`"        		# relative
    abs_dir="`( cd \"${abs_dir}\" && pwd )`"	# absolutized and normalized
  • Как лучше поднять почтовый сервер на Windows?

    @res2001
    А логи отправки на яндекс и прочее где? Спрашиваете про одно, а логи показываете другие.
    Уверен, что вам не нужен другой почтовик, просто вы этот как-то не правильно приготовили. Не факт, что и с другим не будет того же самого.
    Для внешнего почтовика, кроме самого почтовика нужно в DNSе, доступном снаружи указать MX запись для вашего домена. "А" запись для почтовика, указанного в MX должна соответствовать PTR записи, иначе многие нормальные почтовики откажутся с вами работать. Это минимум.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick, Можете запостить сюда под спойлер кусок вывода компилятора с предупреждением.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick, Из вашего вопроса следует, что предупреждение появляется при компиляции led_display.c, а не main.c. А сейчас у вас уже другая версия :) Вы определитесь как-то. Причем это вполне может быть, т.к. макрос определен только в main.c.
    Почему предупреждение при компиляции led_display.c и как этого избежать я вам объяснил. При компиляции main.c предупреждения быть не должно.

    Внимательно смотрите вывод компилятора, там можно увидеть при компиляции какого файла случилось предупреждение.
  • Как параллельно запустить программу?

    @res2001
    NikitaWeb, Использовать надо CreateProcess, а не ShellExecuteA.

    Почитайте что-нибудь про "дочерние и родительские процессы", наследование дескрипторов дочерним процессом, межпроцессное взаимодействие (IPC), синхронизация процессов.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Включение заголовков из #include в полную единицу трансляции, конечно происходит в том порядке, в котором директивы указаны в коде. Т.е. по факту вместо директивы #include у вас будет содержимое заголовка после препроцессора.

    Кстати в компиляторе обычно есть опции, позволяющие сохранять эти промежуточные файлы после обработки препроцесором вашего кода.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick,
    на этапе компиляции он умеет "подхватывать" это значение из main.c

    Файлы заголовков, которые подключаются в .c файлы не являются отдельными единицами трансляции. Препроцессор Си сначала создает объединенный файл в который включаются все заголовки из директив #include рекурсивно и непосредственно код из .c файла.
    Вот этот объединенный файл уже и будет полной единицей трансляции, которая передается компилятору.
    Исходя из вышеописанного если вы объявите макрос до включения заголовка, то этот макрос может быть использован в заголовке при включении.

    На самом деле процесс может быть оптимизирован, но проще думать об этом именно так, а детали уже не столь важны.
  • Как запустить OpenVPN в несколько потоков?

    @res2001
    AkZwork, Если у вас большой трафик по ВПН, возможно затык не в канале, а в ЦП (т.е. в крипто операциях над передаваемыми данными). Посмотрите загрузку ЦП. Но в любом случае OpenVPN однопоточный (в смысле потоков выполнения, а не потоков передачи), т.е. он не умеет использовать несколько ядер процессора и работает только на одном.
    Возможно вам нужно использовать более производительный вариант ВПН. Попробуйте L2TP/IPsec.