LINUX.ORG.RU

Сообщения sirius

 

Сервис на С с поддержкой OpenAPI

Всем привет. Нужно реализовать микросервис на C, с интерфейсом OpenAPI. Не нашел библиотек для его парсинга(плохо искал?). У меня пока нет идей, кроме «свой парсер-велосипед» c «libevent» или с «libev + http-parser». Какой из этих вариантов лучше(в поиске по истории лора есть нелестные отзывы о реализации http в libevent, но вдруг что-то изменилось с тех пор)?

 ,

sirius
()

Вопрос по применению c-ares

Всем привет. Есть такой пример кода:

/*
 *  gcc -o c-ares_test c-ares.c -static -I/usr/pkg/include -L/usr/pkg/lib -lcares_static -lm -std=c11
 *  gcc -o c-ares_test c-ares.c -I/usr/pkg/include -L/usr/pkg/lib -lcares -lm -std=c11
*/

#include <time.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <ares.h>

void dns_callback (void* arg, int status, int timeouts, struct hostent* host)
{
    if(status == ARES_SUCCESS) {
        //memcpy(host1, &host, sizeof(host));
        printf("%s\n", host->h_name);
        char ip[INET6_ADDRSTRLEN];
        for (int i = 0; host->h_addr_list[i]; ++i) {
            inet_ntop(host->h_addrtype, host->h_addr_list[i], ip, sizeof(ip));
            printf("%s\n", ip);
        }
    }
    else {
        printf("lookup failed: %s\n", ares_strerror(status));
    }
}

static void ares_loop(ares_channel channel) {
    int nfds, count;
    fd_set readers, writers;
    struct timeval tv, *tvp;
    while (1) {
        FD_ZERO(&readers);
        FD_ZERO(&writers);
        nfds = ares_fds(channel, &readers, &writers);
        if (nfds == 0)break;
        tvp = ares_timeout(channel, NULL, &tv);
        count = select(nfds, &readers, &writers, NULL, tvp);
        ares_process(channel, &readers, &writers);
     }

}

int main(int argc, char **argv) {
    int status;
    ares_channel channel;

    status = ares_library_init(ARES_LIB_INIT_ALL);
    if (status != ARES_SUCCESS){
        printf("ares_library_init: %s\n", ares_strerror(status));
        return 1;
    }
    if((status = ares_init(&channel)) != ARES_SUCCESS) {
        printf("ares feiled:  %s\n", ares_strerror(status));
        return 1;
    }
    ares_gethostbyname(channel, "google.com", AF_INET6, dns_callback, NULL);
    ares_gethostbyname(channel, "google.com", AF_INET, dns_callback, NULL);
    ares_loop(channel);
    ares_destroy(channel);
    ares_library_cleanup();
     
    return 0;
}

Как правильно вытащить результаты днс резольвинга в функцию main для дальнейшего использования в программе? Подозреваю, что нужно прокинуть указатель на структуру struct hostent* в callback функцию через void *arg, создать копию struct hostent* host, скопировать в нее данные и связать с указателем arg. Но так у меня не получилось - может не знаю как правильно, а может вообще не так надо... В общем, нужен ликбез по использованию библиотеки.

 

sirius
()

FreeBSD. Вопрос по взаимодействию с разработчиками.

Есть необходимость добавить поддержку модема(Quectel EM12) FreeBSD. По сути там надо по одной строчке в два файла добавить и все, модем взлетает и работает(в RAS режиме).

Собственно вопрос: как и куда написать разработчикам?

Попробовал создать себе аккаунт в https://bugs.freebsd.org/bugzilla/createaccount.cgi - письмо просто не приходит.

Возможно, кто-то из использующих FreeBSD уже подобным занимался, просветите, плиз…

 

sirius
()

Несколько вопросов по FreeBSD

Поставил в виртуалку FreeBSD, поразбирался немного. В общем это то что я так долго искал в Linux - базовая система + свежие пакеты програм. Есть желание перевести на нее на домашних компьтеры. Так как с системой знаком пока поверхностно - есть вопросы:

Что лучше использовать для домашнего NAS на FreeBSD (gmirror + ufs2) или zfs. Памяти там 8Гб, кроме хранилища там же будут развернуты xwiki (JAVA, PostgreSQL(БД небольшая), tomcat, nginx) и возможно nextcloud (еще одна бд в PostgreSQL + php-fpm)?

Насколько UFS2 (и с какими опциями) подходит для рабочих станций и ноутбуков? Как она переносит ресеты и прочие неожиданные перезапуски без размонтирования?

Как дела в данной ОС с WIFI. Есть ли перспектива получить на ней работающие 802.11ax/802.11ac?

Как подбираете оборудование для данной ОС?

Как дела с поддержкой принтеров/сканеров?

 

sirius
()

Проброс sip линий на АТС в локальную сеть

Дано: (SIPGW провайдера, IP:1.1.1.1 ) - (сеть 2.2.2.0) - (роутер с openwrt, IP:2.2.2.10) - (АТС в локальной сети, адрес 3.3.3.3).

Роутер - Asus RT-N10+. АТС - Panasonic KX-NCP1000.

Задача - подключить sip линии к УАТС(Panasonic KX-NCP1000). Условия прохождения исходящих вызовов: Авторизация по sip на SIPGW - отключена(условие провайдера); в поле from: номер_тлефона@2.2.2.10; в поле to: номер_телефона_адресата@1.1.1.1

Что пробовал: 1.Прокинуть порты АТС родной прошивкой - не заработало. 2.Залил openwrt, с помощью siproxd добился прохождения входящих. Исходящие не проходят, так как при исходящем звонке в поле to прописывается (в зависимости от настроек siproxd и АТС) или номер_телефона_адресата@2.2.2.10 или номер_телефона_адресата@3.3.3.3 Заменять домен на произвольный для исходящих вызовов siproxd судя по всему не умеет(или я не нашел такой опции).

Поможет ли мне opensips + rtpproxy решить данную задачу или, возможно есть другие способы?

sirius
()

python3 web кодинг. вывод UTF-8

Ни print(), ни sys.stdout.write() не выводят строки с символами, отличными от латиницы.
Где-то месяц назад находил решение, даже проверял - работало, но пример не сохранился а повторно найти не получается.
Версия python: 3.2
Help.
Если можно - лучше с примером.

sirius
()

Вопрос по cmake

Есть проект с такой структурой:
libs
prog1
prog2
CMakeLists.txt,
где libs, prog1, и prog2 - проекты со своими CMakeLists.txt. причем prog1 и prog2 зависят от собраной библиотеки libs libs.so.

Подскажите, что и как прописать в корневом CMakeLists.txt и одноименных файлах проектов prog1 и prog2, чтобы при сборке сначала собиралась библиотека, а потом подключая ее собирались prog1 и prog2?
Спасибо.

sirius
()

Посоветуйте sip-сервер

Посоветуйте sip-сервер с поддержкой конференц-связи.
Asterisk вроде может все это, но на мой взгляд избыточен.
Opensips - не могу найти инфу, умеет конференции или нет.
Что из этого лучше использовать? Какое еще есть ПО, чтобы реализовать сабж?
Спасибо.

sirius
()

e17 Модуль переключения раскладки

Как сабж настроить? Вводные данные: xorg.conf нет - все цепляется через hal, переключалка раскладки(на данный момент) тоже. Спасибо.

sirius
()

Genius video wonder pro 2 v2 + пульт

Плата на чипе bt878a. тип тюнера на плате не видно, предполагаю что филипс.
Без пульта заводиться при нескольких параметрах bttv (например:card=21,tuner=3; card=54,tuner=5...), а вот с пультом проблема:
bttv видит пульт с параметрами card=34 и card=152. в первом случае не на все кнопки пульта есть реакция, звук остается даже после выключения tvtime(помогает только выгрузка модуля);
Во втором реакция есть на все кнопки пульта(но на все кнопки одинаковый кейкод) и не удалось добиться звука.
перебор тюнеров конечно же делал.

P.S. Вчера с горя залез в исходники bttv, подправил 152 карту - звук появился. Проблему с одинаковыми кейкодами еще не решил.

Если кто заводил данный девайс, просьба откликнуться.
Идеи тоже приветствуются, очень хочеться проблему без правки исходников решить...

sirius
()

html

Вот этот код:
<button name=Go value=2 type=submit>Go!</button>
не работает в IE6, но при этом в firefox и mozilla все срабатывает(данные формы уходят на сервер). Кто-нибудь просветить  может - чего IE не нравиться?
sirius
()

Когда gentoo 2005.0 выйдет?

Решил gentoo дома поставить, и соответственно взять хочется самый новый...
sirius
()

подключение телефона через data кабель

Как подключать/работать с телефоном(nokia 6610) через data кабель (usb)?
sirius
()

Связка dns + dhcpd

Можно ли сделать так, чтобы при обновлении данные хранились в файлах *.jnl, а текстовые файлы зон оставались без изменений?
sirius
()

ipsec in 2.6

Кто-нибудь настраивал встроенный в 2.6 ipsec? Какие впечатления? И где можно инфы по настройке нарыть?
sirius
()

Kernel 2.6 & Graphics

Перекомпилил ядро (... ну надо было), заодно выкинул из него все лишнее и видимо перестарался. Теперь Иксы ваабще не стартуют(говорят что ошибка 
инициализации драйвера)
Система FC2, ядро из коробки, видеокарта nvidia (geforce4).
Подскажите - какие опции вкючать в ядре для графики?
sirius
()

RSS подписка на новые темы