gpt4 book ai didi

c - 在 Perl 中查找 LDAP 命令的适当等价物(最初用 C 编写)

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:01 24 4
gpt4 key购买 nike

我目前的任务是将旧的 c 脚本升级到 perl,其功能主要是通过 LDAP 记录并锁定/解锁各种帐户。如果我提供的信息太多或太少,我深表歉意,这是我的第一个问题。

我正在苦苦挣扎的是找到 A:关于我看到的一些常量的文档和 B:在 perl 中找到与某些 c 函数相当的适当子例程。也许我什至不需要它们,我希望有人能够澄清。

这是一段相关的 C 代码:

int auth_method = LDAP_AUTH_SIMPLE;
int desired_version = LDAP_VERSION3;

if (ldap_set_option (ld, LDAP_OPT_PROTOCOL_VERSION, &desired_version) != LDAP_OPT_SUCCESS) {
ldap_perror (ld, "ldap_set_option failed!");
exit (EXIT_FAILURE);
}

if (ldap_bind_s (ld, root_dn, root_pw, auth_method) != LDAP_SUCCESS) {
ldap_perror (ld, "ldap_bind failed");
exit (EXIT_FAILURE);
}

现在,就我所关心的常量而言,到目前为止,我无法看到 LDAP_AUTH_SIMPLELDAP_VERSION3 表示的是什么整数(尽管后者我可以假设。)甚至比这更重要的是,我完全没有成功地在 Net::LDAP 中的任何地方找到一个 perl 函数,它允许以这种方式或以任何方式设置选项。

我是不是看错地方了?我可以向你保证,我做了不止几分钟的“谷歌搜索”,因为我决定来找你们所有人。我不想问一个愚蠢的问题。在此先感谢您,如果需要更多/更少的信息,或者我是否可以做其他不同或更好的事情,请告诉我。谢谢。

编辑:我意识到第一个 if 语句可以通过在构造 LDAP 对象时设置版本来完全规避,虽然我仍然想知道如何在 perl 中设置选项,但我找到的文档不是很清楚相对于语法和常量/变量期望的内容很有用,我主要从经验示例中收集了这些信息。

我关于常量的问题仍然存在,主要是出于好奇和潜在的 future 需求(我对这个脚本转换不是很深入,不想让这样的事情堆积起来)

最佳答案

Net::LDAP 的文档 constructor指定一个 version 字段并明确说明 LDAPv3 是默认值。 LDAP 简单例份验证是通过在 bind 方法中提供明文密码来完成的。所以这应该大致相当于你想要的:

use strict;
use warnings;

use Net::LDAP;

my $root_dn = '...';
my $root_pw = '...';

my $ldap = Net::LDAP->new( $root_dn ); # LDAPv3 by default
my $mesg = $ldap->bind( $root_dn, password => $root_pw );

if ( $mesg->code ) {
die "LDAP error: " . $mesg->error;
}

以上内容应该可以帮助您入门,但可能并不完全正确。我已经有大约 10 亿年没有使用 LDAP 做过任何事情了。

关于c - 在 Perl 中查找 LDAP 命令的适当等价物(最初用 C 编写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24517706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com