Bug 46583

Summary: Смена управляемого домена в ADMC
Product: Sisyphus Reporter: Владимир Савченко <savchenko>
Component: admcAssignee: Samael <knyazevsr>
Status: ASSIGNED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: amakeenk, kevl, knyazevsr
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Владимир Савченко 2023-06-19 06:19:18 MSK
Приветствую! Необходимо добавить функционал, позволяющий изменить домен по умолчанию, который берется из контекста Kerberos, в сложных сетях зачастую используется трасты между доменами и делегируются полномочия по созданию объектов в каталоге, пользователям из доверенного домена, что и реализовано в моем случае. Отсутствие данного функционала не позволяет импортозаместить рабочие места администраторов с ОС Windows + RSAT.
Comment 1 Alexander Makeenkov 2023-06-19 10:06:10 MSK
Здравствуйте.

В admc есть возможность переключиться на другой домен. Для этого нужно открыть меню Файл -> Параметры подключения -> включить чекбокс Другой и указать имя домена.

Это не то, что вам нужно?
Comment 2 Владимир Савченко 2023-06-20 05:59:26 MSK
Здравствуйте, это не оно, я смотрел исходники, то о чем Вы говорите это указание альтернативного контроллера, который по каким либо причинам не был получен через SRV записи ДНС.
Comment 3 Владимир Савченко 2023-06-20 06:55:01 MSK
(Ответ для Alexander Makeenkov на комментарий #1)
> Здравствуйте.
> 
> В admc есть возможность переключиться на другой домен. Для этого нужно
> открыть меню Файл -> Параметры подключения -> включить чекбокс Другой и
> указать имя домена.
> 
> Это не то, что вам нужно?

отвечу более предметно, вот выдержки из src, возможности переключится на другой домен нет.

https://github.com/altlinux/admc/blob/master/src/admc/connection_options_dialog.ui

104 - <widget class="QLineEdit" name="host_custom_edit"/>

https://github.com/altlinux/admc/blob/master/src/admc/connection_options_dialog.cpp

66 - const QString domain = get_default_domain_from_krb5();

122 - const QString custom_host = ui->host_custom_edit->text();

https://github.com/altlinux/admc/blob/master/src/adldap/ad_config.cpp

77 - d->domain = get_default_domain_from_krb5(); 

https://github.com/altlinux/admc/blob/master/src/adldap/ad_interface.cpp

177 - d->domain = get_default_domain_from_krb5();

https://github.com/altlinux/admc/blob/master/src/adldap/ad_utils.cpp

351 -  const QString out = QString::fromLocal8Bit(default_principal->realm.data,...
Comment 4 Владимир Савченко 2023-09-06 12:17:43 MSK
Коллеги подскажите как можно собрать admc 0.14.0 под QT 5.12.9-alt1? Может патч накидаете?
при сборке получаю:

[  2%] Building CXX object src/adldap/CMakeFiles/adldap.dir/ad_config.cpp.o
/usr/src/RPM/BUILD/admc-0.14.0/src/adldap/ad_config.cpp: In member function 'bool AdConfig::rights_applies_to_class(const QString&, const QList<QString>&) const':
/usr/src/RPM/BUILD/admc-0.14.0/src/adldap/ad_config.cpp:797:102: error: no matching function for call to 'QSet<QString>::QSet(QList<QString>::const_iterator, QList<QString>::const_iterator)'
     const QSet<QString> applies_to_set = QSet<QString>(applies_to_list.begin(), applies_to_list.end());
                                                                                                      ^
In file included from /usr/include/qt5/QtCore/QSet:1,
                 from /usr/src/RPM/BUILD/admc-0.14.0/src/adldap/ad_interface.h:31,
                 from /usr/src/RPM/BUILD/admc-0.14.0/src/adldap/ad_config.cpp:25:
/usr/include/qt5/QtCore/qset.h:61:12: note: candidate: 'QSet<T>::QSet(std::initializer_list<_Tp>) [with T = QString]'
     inline QSet(std::initializer_list<T> list)
            ^~~~


--------------------

usr/include/qt5/QtCore/qset.h:54:7: note:   candidate expects 1 argument, 2 provided
/usr/include/qt5/QtCore/qset.h:54:7: note: candidate: 'QSet<QString>::QSet(QSet<QString>&&)'
/usr/include/qt5/QtCore/qset.h:54:7: note:   candidate expects 1 argument, 2 provided
/usr/src/RPM/BUILD/admc-0.14.0/src/adldap/ad_config.cpp:799:87: error: no matching function for call to 'QSet<QString>::QSet(QList<QString>::const_iterator, QList<QString>::const_iterator)'
     const QSet<QString> class_set = QSet<QString>(class_list.begin(), class_list.end());
                                                                                       ^
In file included from /usr/include/qt5/QtCore/QSet:1,
                 from /usr/src/RPM/BUILD/admc-0.14.0/src/adldap/ad_interface.h:31,
                 from /usr/src/RPM/BUILD/admc-0.14.0/src/adldap/ad_config.cpp:25:
/usr/include/qt5/QtCore/qset.h:61:12: note: candidate: 'QSet<T>::QSet(std::initializer_list<_Tp>) [with T = QString]'
     inline QSet(std::initializer_list<T> list)
            ^~~~
/usr/include/qt5/QtCore/qset.h:61:12: note:   candidate expects 1 argument, 2 provided
/usr/include/qt5/QtCore/qset.h:59:12: note: candidate: 'QSet<T>::QSet() [with T = QString]'
     inline QSet() Q_DECL_NOTHROW {}
Comment 5 Samael 2023-09-06 13:57:26 MSK
https://github.com/Samael340/admc/tree/patch_0_14_p9
Ветка для p9, по идее должно собираться
Comment 6 Владимир Савченко 2023-09-07 09:15:05 MSK
(Ответ для Samael на комментарий #5)
> https://github.com/Samael340/admc/tree/patch_0_14_p9
> Ветка для p9, по идее должно собираться

Спасибо огромное! все собралось, по первым результатом тестирования необходимый функционал завелся.