LINUX.ORG.RU

Сообщения Ivan_qrt

 

Fedora 28 и moxa uport 1150.

Форум — Linux-hardware

Привет, ЛОР!

Есть у меня moxa uport 1150 - преобразователь usb <--> rs232. Для него нужно ставить ядерный модуль. Пробовал дрова:

driv_linux_uport1p_v1_3_19_build_17081817.tgz
driv_linux_uport1p_v1.3.21_build_17112717.tgz
driv_linux_mainline_uport1p_v1.4_build_18050314.tgz

Ни один вариант не работает. На modprobe говорит:

# modprobe -v mxu11x0
insmod /lib/modules/4.17.19-200.fc28.x86_64/misc/mxu11x0.ko 
modprobe: ERROR: could not insert 'mxu11x0': Operation not permitted

Пробовал ставить dkms'ом и простым make install'ом. Разницы в поведении нет.

Драйвер для moxa > 1450 в блэклисте:

# cat /etc/modprobe.d/blacklist.conf 
# tusb3410 is disabled by moxa
blacklist ti_usb_3410_5052

В чём ещё может быть проблема?

 , , , ,

Ivan_qrt ()

uwsgi и status 401 unauthorized

Форум — Admin

Привет ЛОР!

Есть flask-приложение с керберос аутентификацией. Запущенное само по себе (app.run()) оно работает нормально.

Пытаюсь соединить его с nginx через uwsgi (тот, который с pypi).

Руководствовался данной инструкцией.

Без kerberos-аутентификации hello world работает без проблем.

А вот с керберосом начинаются проблемы. Аутентификация происходит следующим образом:

  • При получении запроса flask проверяет поле заголовка Authorization, и, если его нет, отправляет 401 unauthorized с заголовком WWW-Authenticate:"Negotiate".
  • В нормальной ситуации, клиент после этого присылает запрос с полем Authorization и всё ок.

Но при работе через uwsgi после первого ответа 401 соединение закрывается, и как с этим бороться непонятно.

Нагуглил нечто про отсутствующий keep-alive в заголовке при http-auth, но добавление Connection:"keep-alive" в заголовок ответа 401 не помогло.

В выводе uwsgi ничего информативного нет:

[pid: 2528|app: 0|req: 2/4] 192.168.0.76 () {46 vars in 1019 bytes} [Thu Mar 16 18:46:19 2017] GET /hello => generated 12 bytes in 2 msecs (HTTP/1.1 401) 4 headers in 142 bytes (1 switches on core 0).

Дебаг режима у uwsgi походу нет (ну я не нашёл).

Подскажите, что делать, куда копать.

PS: Centos 7 x86_64, python3.4, uwsgi-2.0.14.

 , ,

Ivan_qrt ()

Тип многомерного массива.

Форум — Development

Привет ЛОР.

Есть недопонимание того, как работает C (равно как и С++). Проясните, пожалуйста. Собственно код:

#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>

int main() {
    int64_t *p = (int64_t*)malloc(24*sizeof(int64_t));
    for(size_t i = 0; i < 24; ++i) {
        p[i] = i;
    }
    int64_t (*p6)[6] = (int64_t (*)[6])p;
    printf("%d\n", p6[3]);
    printf("%d\n", (*(p6 + 3)));
    free(p);
}
$ gcc --std=c11 test.c && ./a.out
13795488
13795488

Собственно, как видим, p6[3] возвращает адрес в памяти. Я не понимаю, почему. Моя логика такова:

  • p - адрес в куче, где лежит подряд 24 инта, от 0 до 24.
  • p6 - тот же адрес.
  • Из-за того, что p6 указатель на int64_t[6], при его индексации сдвиг происходит на 48 байт.
  • При взятии индекса должно происходить разыменование, т.е. должно возвращаться значение 4-ых 48 байт, а не их адрес.
  • То же верно и для предпоследней строки. p6 + 3 - адрес 4-ых 48 байт.
  • *(p6 + 3) должно вернут значение, а не адрес.

Вопрос, почему работают всякие p6[3][2]?

 , ,

Ivan_qrt ()

ovirt spice - не ставится разрешение больше 1024х768.

Форум — Admin

Привет, лор!

Собственно сабж.

Есть centos 7.2, ovirt 3.6. Hosted engine, из centos-release-ovirt-36.

На нём виртуалка с fedora (на 23 и 24 ситуация одинакова) x68_64. Внутри ovirt-guest-agent и spice-vdagent установлены и запущены. Определение ip и копипаста работает.

Запускаем lxqt (openbox). Запускается как 1024х768. Разрешение экрана выше установить не получается.

$ xrandr --output Virtual-0 --mode  1920x1080 
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  139 (RANDR)
  Minor opcode of failed request:  7 (RRSetScreenSize)
  Serial number of failed request:  36
  Current serial number in output stream:  37

$ xrandr -s 1920x1080

выдаёт failed to change resolution. При этом зависает openbox и ни на что не реагирует. На 800х600 и обратно смениться можно.

Параметры видеокарты:

qxl
{slot=0x02, bus=0x00, domain=0x0000, type=pci, function=0x0}
{'vram': '8192', 'vgamem': '16384', 'heads': '1', 'ram': '65536'}

Что с этим можно сделать и как бороться?

Ovirt 4.0 ставить пробовал, но были проблемы с vdsmd и ipv6. В рассылке это было. Возможно, уже починили, не проверял.

 , , ,

Ivan_qrt ()

failed to open drm device: Operation not permitted

Форум — Desktop

Привет лор.

Запускаю контейнер через systemd-nspawn:

sudo systemd-nspawn --bind-ro=/home/ivan/.Xauthority --bind=/tmp/.X11-unix 
--bind=/dev/snd --bind=/dev/shm --bind=/dev/dri --network-bridge=br0 --capability=all 
-D /media/storage/steam/ -b

Логинюсь в контейнере, запускаю glxinfo:

$ glxinfo | grep -i direct
libGL error: failed to open drm device: Operation not permitted
libGL error: failed to load driver: r600
direct rendering: Yes

Перерыл весь гугл, пробовал: xhost +

Mode 0666 в Section «DRI» в xorg.conf.

setenforce 0 (ausearch молчит).

chmod 666 на всё, что есть в /dev/dri + chmod 777 на сам /dev/dri.

Ничего не помогает. Куда копать?

Host: Centos 7 x86_64 + mesa из гита (r600). Container: Fedora rawhide.

 , ,

Ivan_qrt ()

Собираю reopenldap. Разыскивается ac/assert.h.

Форум — General

Привет ЛОР!

Собираю reopenldap.

Написал для него spec-файл для rpm. Configure проходит нормально, есть строки

checking assert.h usability... yes
checking assert.h presence... yes
checking for assert.h... yes
Но дальше сборка отваливается, т.к. не найден ac/assert.h. Никаких assert.h в исходниках я не нашёл. Где взять? build.log.

Кусок portable.h:

#include "ac/fdset.h"

#include "ldap_cdefs.h"
#include "ldap_features.h"

#include "ac/assert.h"
#include "ac/localize.h"

#endif /* _LDAP_PORTABLE_H */
/* end of portable.h.post */

ac/localize.h в include есть, а ac/assert.h нет.

Для Ъ:

In file included from entropy.c:22:0:
../../include/portable.h:1198:23: fatal error: ac/assert.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'entropy.o' failed
make[2]: *** [entropy.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from base64.c:38:0:
../../include/portable.h:1198:23: fatal error: ac/assert.h: No such file or directory
compilation terminated.
In file included from sasl.c:16:0:
../../include/portable.h:1198:23: fatal error: ac/assert.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'base64.o' failed
make[2]: *** [base64.o] Error 1
In file included from signal.c:16:0:
../../include/portable.h:1198:23: fatal error: ac/assert.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'sasl.o' failed
make[2]: *** [sasl.o] Error 1
<builtin>: recipe for target 'signal.o' failed
make[2]: *** [signal.o] Error 1
In file included from md5.c:46:0:
../../include/portable.h:1198:23: fatal error: ac/assert.h: No such file or directory
compilation terminated.
In file included from hash.c:22:0:
../../include/portable.h:1198:23: fatal error: ac/assert.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'md5.o' failed
<builtin>: recipe for target 'hash.o' failed
make[2]: *** [md5.o] Error 1
make[2]: *** [hash.o] Error 1
In file included from passfile.c:16:0:
../../include/portable.h:1198:23: fatal error: ac/assert.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'passfile.o' failed
make[2]: *** [passfile.o] Error 1
In file included from passwd.c:29:0:
../../include/portable.h:1198:23: fatal error: ac/assert.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'passwd.o' failed
make[2]: *** [passwd.o] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/reopenldap-2.4.41/reopenldap-349e358/libraries/liblutil'
Makefile:296: recipe for target 'all-common' failed
make[1]: Leaving directory '/builddir/build/BUILD/reopenldap-2.4.41/reopenldap-349e358/libraries'
make[1]: *** [all-common] Error 1
Makefile:312: recipe for target 'all-common' failed
make: *** [all-common] Error 1

 , , ,

Ivan_qrt ()

openldap и права доступа

Форум — General

Привет ЛОР!

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

Учёток не так уж и много, где-то 14 тыс., из под rootdn всё быстро бегает. Все записи можно получить за пару секунд. А вот из под учёток, для которых проверяются права всё в разы дольше. Дело начинает идти на десятки минут.

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

Может быть посоветуете какую-нибудь морду, которая позволяет удобно раздавать права, но при этом генерирует не тормозящие olcAccess листы?

Пример:

olcAccess: to dn.regex="^uid=[^,=]*,ou=(students,ou=sync|asp,ou=sync|int,ou=sync|mag,ou=sync|ord,ou=sync|other,ou=sync|people),dc=education,dc=local$" attrs=telephonenumber,mail
  by dn.exact="cn=lib_auth_user,cn=users,dc=ad,dc=local" write
  by dn.exact="cn=portal auth user,cn=users,dc=ad,dc=local" write
  by self write
  by set="[cn=admins,ou=groups,dc=education,dc=local]/member* & user" write
  by set="[cn=accountManagers,ou=groups,dc=education,dc=local]/member* & user" write
  by set="[cn=lurk,ou=groups,dc=education,dc=local]/member* & user" read
  by * none

 ,

Ivan_qrt ()

Как использовать radeon vce?

Форум — Talks

Привет лор!

В mesa реализовали поддержку аппаратного кодирования для radeonsi на vce через openmax. Собственно вопрос: кто из софта умеет этим пользоваться? Нагуглил только про gstreamer, но gst-launch я не осилил.

Есть истории успеха?

 , ,

Ivan_qrt ()

Общее рабочее пространство для двух видеокарт.

Форум — Desktop

Привет ЛОР!

Есть комп с возможностью включать одновременно интегрированный интел и дискретный радеон. Собственно так я и сделал. Подцепил с каждой карте по монитору.

После загрузки всё пошло нормально, kscreen подцепил оба монитора.

Но на мониторе с radeon hd4650 возникли проблемы с отрисовкой. Решаются они добавлением

Option "EXAPixmaps" "off"
в Device секцию xorg.conf.

Но после того, как я это сделал, началась порнография с автоопередлением настроек. Перепробовал много разных вариантов, но сделать так же, как определяется автоматом так и не смог.

Если оставить только описание device (неважно, одно или оба), то запускается только одна видеокарта. Если добавить секции Screen для каждого монитора, то оба активны, но на каждом из них запускается своя копия плазмы и, вообще, они все из себя отдельные.

xrandr -q видит только монитор текущей видеокарты, а не оба. Сейчас xorg.conf.d со следующим содержимым:

Section "Device"
        Identifier      "Intel"
        Driver          "intel"
        BusID           "PCI:0:2:0"
        Option          "monitor-VGA-0" "LG"
EndSection

Section "Device"
        Identifier      "Radeon"
        Driver          "radeon"
        Option          "EXAPixmaps"    "off"
        BusID           "PCI:1:0:0"
        Option          "monitor-VGA-1" "AOC"
EndSection
Section "Monitor"
        Identifier      "LG"
        Option          "primary"
EndSection

Section "Monitor"
        Identifier      "AOC"
        Option          "LeftOf"        "LG"
EndSection
Section "Screen"
        Identifier "Intel"
        Device     "Intel"
        Monitor    "LG"
EndSection

Section "Screen"
        Identifier "Radeon"
        Device     "Radeon"
        Monitor    "AOC"
EndSection
Section "ServerLayout"
        Identifier      "Layout"
        Screen          0               "Intel"
        Screen          1               "Radeon"
EndSection

Что надо сделать, чтобы оба монитора были логически одним экраном?

Или можно ли задать EXAPixmaps off не через xorg.conf?

 , , ,

Ivan_qrt ()

ovirtmgmt сохранить адрес присвоенный хосту между перезагрузками.

Форум — Admin

Привет ЛОР!

Есть хост на centos 7 являющийся нодой ovirt'a (hosted engine 3.5).

На одном из интерфейсов сконфигурирован мост ovirtmgmt.

А дальше начался лютый ужас.

  • Во-первых, он сам не смог добавить его в сеть ovirtmgmt датацентра.
  • Во-вторых, когда мост ovirtmgmt хоста присоединяешь к сети ovirtmgmt через веб морду, он удаляет все настройки этого моста, убирает ip-адрес, и, внезапно, не может, добавить мост в сеть, т.к. хост не доступен. Решилось перемещением ip-адреса на другой интерфейс, но ситуация умиляет, и что делать если интерфейс один, или все в бонде, непонятно.
  • В-третьих, когда мост добавлен в сеть, vdsm стремиться при каждой перезагрузке удалить ему все настройки. Как следствие, после ребута хоста ему не присваивается никаких ip-адресов, и хост, внезапно, недоступен.

И побороть третий пункт у меня до сих пор не вышло. Помимо закономерного вопроса, wtf? есть вопрос, что делать.

Как его заставить восстанавливать настройки ip после перезагрузки.

Ну и в дополнение, меня ждёт увлекательное добавление моста ovirtmgmt в соответствующую сеть для хоста, на котором крутится ovirt-engine, и чувствую я, что всё благополучно сдохнет. Кто-нибудь с подобным сталкивался? И как боролся? Или я один такой неудачник? Сейчас этот хост в состоянии non-operational, т.к. на нём нет сетки ovirtmgmt.

 ,

Ivan_qrt ()

vim + autocomplete + golang

Форум — Desktop

Привет ЛОР!

В общем я неосилятор.

Есть такой текстовый редактор - vim. И есть такой язычок - go, который я сейчас пытаюсь изучать. Хочется чтобы в виме у него нормально работало автодополнение. Желательно как в нормальных ide, типа liteide или qtcreator - ввёл три буквы или точку, и он сам предложил варианты.

omni с его ctrl-x + ctrl-o - это совсем не удобно.

Так вот, суть проблемы - нашёл gocode, поставил и он работает, но через omni. Подскажите, какой-нибудь более удобный комплит, и как его скрестить с gocode.

PS: liteide довольно-таки удобен, но я уже плотно подсел на vim-навигацию и хочется vim-style редактор. Редактора, я думаю, мне пока достаточно. Всё равно, по большей части всё руками делаю.

 , ,

Ivan_qrt ()

openldap зависает со временем при мульти-мастер репликации

Форум — Admin

Привет ЛОР!

Есть 3 openldap-сервера с учётками для пользователей. Используются пока только для аутентификации, нагрузка маленькая.

На них настроена мультимастер репликация посредством syncrepl. Реплицируются конфиги(cn=config) и одна база(hdb).

Проблема заключается в том, что сервера регулярно зависают. Выражается это в том, что сервера принимают запросы, начинают ssl-аутентификацию и зависают на этом этапе. openssl s_client так же виснет.

В логе указано:

ноя 19 23:44:53 ldap0.test.local slapd[24580]: conn=1068 fd=22 ACCEPT from IP=10.111.0.11:57573 (IP=10.112.100.10:636)
ноя 19 23:44:53 ldap0.test.local slapd[24580]: 546d0145 daemon: activity on 1 descriptor
ноя 19 23:44:53 ldap0.test.local slapd[24580]: 546d0145 daemon: activity on:546d0145  22r546d0145
ноя 19 23:44:53 ldap0.test.local slapd[24580]: 546d0145 daemon: read active on 22
ноя 19 23:44:53 ldap0.test.local slapd[24580]: 546d0145 daemon: epoll: listen=7 active_threads=0 tvp=zero
ноя 19 23:44:53 ldap0.test.local slapd[24580]: 546d0145 daemon: epoll: listen=8 active_threads=0 tvp=zero
ноя 19 23:44:53 ldap0.test.local slapd[24580]: 546d0145 connection_get(22)
ноя 19 23:44:53 ldap0.test.local slapd[24580]: 546d0145 connection_get(22): got connid=1068
ноя 19 23:44:53 ldap0.test.local slapd[24580]: 546d0145 connection_read(22): checking for input on id=1068

Происходит это через какое-то время после старта сервера. Если не запускать реплики и сервер крутится один/не настраивать репликацию, то всё ок. Все сервера синхронизируются по chrony с одним локальным ntp-сервером. Соединения принимаются только по ldaps.

Если, например, работают только две реплики, то после рестарта любой из реплик какое-то время(10 мин) работают оба, потом опять зависают.

Проблема присутствует на разных ВМ с режимами RefreshAndPersist и RefreshOnly. Пробовал много разных вариантов, но так и не победил.

Куда копать?

Ах да:

Centos 7 x86_64
kernel: 3.10.0-123.9.3.el7.x86_64
OpenLDAP: slapd 2.4.39 (Jun  9 2014 23:23:12)

 , ,

Ivan_qrt ()

Ограничения на скрипты в nginx + fastcgi + php-fpm

Форум — Admin

Привет ЛОР!

Собственно сервак переезжает с апача на nginx. Переезжает, в основном, от нечего делать, а не по острой надобности, но тем не менее.

На сервере установлен moodle (он на php), соответственно, на нём иногда надо из веб-морды запускать тяжёлые скрипты.

В апаче с ограничениями пыхи всё довольно просто, всё собрано в php.ini.

А вот в случае с nginx + php-fpm ограничения дублируются и в php.ini, и в php-fpm.d, и в nginx.conf(ограничения на fastcgi). Соответственно скрипты отваливаются непонятно из-за чего.

Киньтесь ссылкой, где внятно описано, как с этим бороться и описаны наиболее важные ограничения. Читать подряд про все параметры fastcgi и php-fpm я не осилил.

 , , , ,

Ivan_qrt ()

Обрывается загрузка файлов с nginx|fastcgi|php-fpm

Форум — General

Привет ЛОР!

У меня есть сайт с moodle. Хочу перевести его на nginx.

Но возникла проблема, которую я всё не могу преодолеть:

При попытке загрузить файл(через форму для загрузки на сайте), размером больше 1023K, он выдаёт «Ошибка соединения с сервером»(error connecting to the server). И всё, больше никаких ошибок. С apache таких ошибок нет.

Платформа:

Centos 7 x86_64
nginx 1.6.1
php-fpm 5.4.16
postgresql 9.2.7

В /etc/php.ini

post_max_size = 4096M
upload_max_filesize = 4096M
max_file_uploads = 200
max_execution_time = 600
/etc/nginx/nginx.conf
user                                                    nginx;
worker_processes                                        auto;
error_log                                               /var/log/nginx/error.log;
pid                                                     /run/nginx.pid;
events {
        worker_connections                              1024;
}

http {
        include                                         /etc/nginx/mime.types;
        default_type                                    application/octet-stream;
        log_format                                      main    '$remote_addr - $remote_user [$time_local] "$request" '
                                                        '$status $body_bytes_sent "$http_referer" '
                                                        '"$http_user_agent" "$http_x_forwarded_for"';
        access_log                                      /var/log/nginx/access.log  main;
        index                                           index.html index.htm;
        server
        {
                access_log                              /var/log/nginx/moodle-access.log;
                error_log                               /var/log/nginx/moodle-error.log debug;
                listen                                  80;
                server_name                             moodle.domain.ru;
                location /
                {
                        root                            /var/www/moodle;
                        index                           index.php index.html index.htm;
                        # moodle rewrite rules
                        rewrite                         ^/(.*.php)(/)(.*)$ /$1?file=/$3 last;
                }
                # php parsing
                location ~ \.php$
                {
                        root                            /var/www/moodle;
                        try_files                       $uri =404;
                        include                         fastcgi_params;
                        fastcgi_split_path_info         ^(.+\.php)(/.+)$;
                        fastcgi_pass                    unix:/run/php5-fpm.sock;
                        #fastcgi_pass                    127.0.0.1:9000;
                        fastcgi_index                   index.php;
                        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        #fastcgi_buffer_size             1280k;
                        #fastcgi_buffers 256             40k;
                        #fastcgi_busy_buffers_size       2560k;
                        #fastcgi_temp_file_write_size    2560k;
                }
        }
}

moodle-error.log

 , , , ,

Ivan_qrt ()

NetworkManager не изменяет настройки сети после рестарта.

Форум — Admin

Привет ЛОР!

Тыкаю седьмую центось и столкнулся с такой проблемой:

По дефолту центось хранит свои настройки в /etc/sysconfig/network-scripts/ifcfg-eth0 (смотря какой интерфейс) и nm читает его через плагин ifcfg-rh. Если изменить этот файл и сделать

systemctl restart Networmanager.service
то вместо применения новых настроек, он создаёт ещё одно соединение с таким же названием, но новыми настройками.
nmcli con reload eth0
так же настройки из файла не перечитывает.

Если редактировать настройки через nmtui, то история та же.

Собственно вопрос, как его заставить нормально менять настройки?

 ,

Ivan_qrt ()

oVirt - насколько оно стабильно и каким его вариантом лучше пользоваться.

Форум — Admin

Привет лор!

Есть у меня несколько древних серверов, которые используются для целей тестирования всяких разных вещей. Сейчас на них используется proxmox, но я хочу попробовать переехать на oVirt. В связи с этим вопросы:

  • На сколько оно стабильно, если регулярно обновляться «не глядя», часто ли оно ломается и требуется ли ручное вмешательство? Можно ли спокойно обновляться на мажорные релизы?
  • Есть ли какие-нибудь стабильные репы(пересборка RHEV?) и какие репы лучше использовать?
  • Как лучше ставить?

    Есть liveimage, который, я так понял, можно установить. Есть ли в нем поддержка установки на софт-рэйд, или надо будет костылять? Я так понял, это та же centos 6 + ovirt repo, но простое в установке. Или это что-то другое? Можно ли мешать хост-системы (centos 6, 7, fedora) при условии одинаковых версий ovirt'a (ну там, посмотреть как оно на 7 центоси)?

    Или надо ставить отдельно центос и на него из реп ovirt?

Сильно много времени я на это растратить не могу, так что хотелось бы, чтобы сразу «приемлимо» заработало.

В общем ждём истории успеха и ваши впечатления.

Перемещено DoctorSinus из talks

 , , ,

Ivan_qrt ()

Локаль в сессии x2go в kde.

Форум — General

Привет ЛОР!

Есть виртуалка с rfremix 20, к которой мне нужно удалённо подключаться. Использую для этих целей x2go, создаю сессию с kde.

Возникла проблема: kde лишь частично локализовано, например в kickoff список приложений на русском, а shutdown и т.п. на английском. В приложениях все на английском, а так же установлена кодировка iso-8859-1 (dolphin кракозябрами отображает русские директории в utf8, в konsole дефолтная кодировка такая).

На чистом профиле ситуация та же, только ещё панелька плазмы не загрузилась.

Куда копать?

ЗЫЖ На обычной федоре ситуация такая же.

Ivan_qrt ()

toupper<char32_t> выкидывает исключение std::bad_cast

Форум — Development

Привет лор!

Возникла необходимость сравнивать русский текст регистронезависимо. Для перевода в utf32 нашел такую штуку: http://utfcpp.sourceforge.net/

И вроде она работает, но возникает проблема: при вызове boost::iequals(u32string, u32string) вызывается toupper<char32_t>, который выбрасывает std::bad_cast, и что с этим делать непонятно.

#include <string>
#include <boost/algorithm/string/predicate.hpp>
#include "utf8.h"

using namespace std;

inline bool reliable_iequals(const string &str1, const string &str2)
{
    u32string str1_32, str2_32;
    utf8::utf8to32(str1.begin(), str1.end(), back_inserter(str1_32));
    utf8::utf8to32(str2.begin(), str2.end(), back_inserter(str2_32));
    return boost::iequals(str1_32, str2_32);
}

int main()
{
    if(reliable_iequals("Одна строка", "ОДНА СтрОкА"))
        cout << "reliable_iequals работает.\n";
    else
        cout << "reliable_iequals не работает.\n";
    return 0;
}
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast

Система - Fedora 19 x86_64

locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

 , , ,

Ivan_qrt ()

ldapc++ undefined reference to

Форум — Development

Привет ЛОР!

У openldap'a в contrib есть библиотека ldapc++. Соответственно, мне захотелось ей воспользоваться, но я столкнулся с проблемой:

/media/storage/Projects/Parusyncka/userldapwriter.cpp:7: ошибка: undefined reference to `vtable for UserLDAPWriter'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:7: ошибка: undefined reference to `LDAPConstraints::LDAPConstraints()'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:7: ошибка: undefined reference to `LDAPConnection::LDAPConnection(std::string const&, int, LDAPConstraints*)'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:10: ошибка: undefined reference to `LDAPConnection::bind(std::string const&, std::string const&, LDAPConstraints*)'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:12: ошибка: undefined reference to `LDAPException::~LDAPException()'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:14: ошибка: undefined reference to `LDAPException::getResultMsg() const'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:12: ошибка: undefined reference to `LDAPException::~LDAPException()'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:7: ошибка: undefined reference to `LDAPConnection::~LDAPConnection()'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:21: ошибка: undefined reference to `StringList::StringList()'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:21: ошибка: undefined reference to `LDAPConnection::search(std::string const&, int, std::string const&, StringList const&, bool, LDAPConstraints const*)'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:21: ошибка: undefined reference to `StringList::~StringList()'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:26: ошибка: undefined reference to `LDAPEntry::getDN() const'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:24: ошибка: undefined reference to `LDAPSearchResults::getNext()'
/media/storage/Projects/Parusyncka/userldapwriter.cpp:21: ошибка: undefined reference to `StringList::~StringList()'
/media/storage/Projects/Parusyncka/libldapcpp/include/LDAPException.h:23: ошибка: undefined reference to `vtable for LDAPException'
(.gcc_except_table+0x30):-1: ошибка: undefined reference to `typeinfo for LDAPException'
:-1: ошибка: collect2: error: ld returned 1 exit status
ls -l /media/storage/Projects/Parusyncka/libldapcpp/lib 
итого 10956
-rw-r--r--. 1 ivan ivan 8182356 дек 12 15:35 libldapcpp.a
-rwxr-xr-x. 1 ivan ivan     853 дек 12 15:35 libldapcpp.la
lrwxrwxrwx. 1 ivan ivan      19 дек 12 15:35 libldapcpp.so -> libldapcpp.so.0.0.0
lrwxrwxrwx. 1 ivan ivan      19 дек 12 15:35 libldapcpp.so.0 -> libldapcpp.so.0.0.0
-rwxr-xr-x. 1 ivan ivan 3029195 дек 12 15:35 libldapcpp.so.0.0.0

Кусок Parusyncka.pro:

INCLUDEPATH += "/usr/include/oracle/12.1/client64"
INCLUDEPATH += "/usr/include"
INCLUDEPATH += "libldapcpp/include"

QMAKE_RPATHDIR += "/usr/lib/oracle/12.1/client64/lib"
QMAKE_RPATHDIR += "/media/storage/Projects/Parusyncka/libldapcpp/lib"

Если добавить в .pro файл LIBS += "-llibldapcpp", то ld говорит от том, что не может найти libldapcpp.

Соответственно три вопроса:

  • ЧЯДНТ?
  • Есть .a, есть .la, есть .so. Какой из них лучше использовать и как? Меня вполне устроит распространять либу вместе с приложением, ибо либы всё равно в репах нет. Никаких действий для подключения динамических библиотек не предпринимал.
  • Если кинетесь ссылкой на небольшое, но понятное объяснение, как вообще все эти библиотеки подключать/использовать буду благодарен.

И последнее readelf --dyn-syms -W lib/libldapcpp.so

 , , ,

Ivan_qrt ()

Как задать пароль для пользователя из ldap.

Форум — Development

Привет ЛОР!

Создаю пользователей в ldap-сервере, использую mozilla c sdk. Пользователи заводятся, но возникла проблема. Нужно им задавать стандартный пароль, и хотелось бы, чтобы он хранился хэшем.

Насколько я понял, достаточно просто сгенерировать SSHA-hash и записать его в атрибут userPassword. Но вот как можно сгенерировать SSHA из крестов я так и не понял. Судя по интернетам openssl умеет sha1, но не ssha. Подскажите, какая либа умеет генерировать ssha, или ткните мордой в мое неосиляторство openssl.

Спасибо!

 , , ,

Ivan_qrt ()

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