OPCUA-Open62541
view release on metacpan or search on metacpan
Open62541.xs view on Meta::CPAN
PREINIT:
UA_UsernamePasswordLogin * loginList;
size_t loginSize;
UA_UsernamePasswordLoginCallback callback;
void * context;
CODE:
/* Use fallback like UA_ServerConfig_setDefaultWithSecurityPolicies */
if (optUserTokenPolicyUri == NULL &&
config->svc_serverconfig->securityPoliciesSize > 0) {
optUserTokenPolicyUri =
&config->svc_serverconfig->securityPolicies
[config->svc_serverconfig->securityPoliciesSize - 1].
policyUri;
}
if (optVerifyX509 && optUserTokenPolicyUri == NULL)
CROAK("VerifyX509 needs userTokenPolicyUri");
unpack_UA_UsernamePasswordLogin_List(&loginList, &loginSize,
usernamePasswordLogin);
if (loginSize > 0 && optUserTokenPolicyUri == NULL)
CROAK("UsernamePasswordLogin needs userTokenPolicyUri");
if (!SvOK(loginCallback)) {
callback = NULL;
context = NULL;
} else if (SvROK(loginCallback) &&
SvTYPE(SvRV(loginCallback)) == SVt_PVCV) {
(void)loginContext;
CROAK("Perl callback not implemented");
#ifdef HAVE_CRYPT_CHECKPASS
} else if (strcmp(SvPV_nolen(loginCallback), "crypt_checkpass") == 0) {
callback = loginCryptCheckpassCallback;
context = NULL;
#endif /* HAVE_CRYPT_CHECKPASS */
} else {
CROAK("Callback '%s' is not CODE reference and unknown check",
SvPV_nolen(loginCallback));
}
#ifdef HAVE_UA_ACCESSCONTROL_DEFAULT_VERIFYX509
RETVAL = UA_AccessControl_defaultWithLoginCallback(
config->svc_serverconfig, allowAnonymous, optVerifyX509,
optUserTokenPolicyUri, loginSize, loginList, callback, context);
#else
RETVAL = UA_AccessControl_defaultWithLoginCallback(
config->svc_serverconfig, allowAnonymous,
optUserTokenPolicyUri, loginSize, loginList, callback, context);
#endif /* HAVE_UA_ACCESSCONTROL_DEFAULT_VERIFYX509 */
OUTPUT:
RETVAL
#endif /* HAVE_UA_ACCESSCONTROL_DEFAULTWITHLOGINCALLBACK */
#ifdef HAVE_CRYPT_CHECKPASS
SV *
UA_ServerConfig_AccessControl_CryptNewhash(config, password, \
pref = &PL_sv_undef)
OPCUA_Open62541_ServerConfig config
SV * password
SV * pref
PREINIT:
const char *passstr;
const char *prefstr = NULL;
char hash[_PASSWORD_LEN + 1];
CODE:
(void)config;
if (!SvOK(password))
CROAK("Undef password");
passstr = SvPV_nolen(password);
if (SvOK(pref))
prefstr = SvPV_nolen(pref);
if (crypt_newhash(passstr, prefstr, hash, _PASSWORD_LEN) != 0)
CROAKE("crypt_newhash");
RETVAL = newSVpv(hash, 0);
OUTPUT:
RETVAL
#endif /* HAVE_CRYPT_CHECKPASS */
#ifdef HAVE_UA_SERVERCONFIG_CUSTOMHOSTNAME
SV *
UA_ServerConfig_getCustomHostname(config)
OPCUA_Open62541_ServerConfig config
CODE:
RETVAL = sv_2mortal(newSV(0));
pack_UA_String(RETVAL, &config->svc_serverconfig->customHostname);
SvREFCNT_inc_NN(RETVAL);
OUTPUT:
RETVAL
void
UA_ServerConfig_setCustomHostname(config, customHostname)
OPCUA_Open62541_ServerConfig config
SV * customHostname
CODE:
UA_String_clear(&config->svc_serverconfig->customHostname);
unpack_UA_String(&config->svc_serverconfig->customHostname,
customHostname);
#endif /* HAVE_UA_SERVERCONFIG_CUSTOMHOSTNAME */
#ifdef HAVE_UA_SERVERCONFIG_SERVERURLS
void
UA_ServerConfig_setServerUrls(config, ...)
OPCUA_Open62541_ServerConfig config
PREINIT:
int i;
CODE:
UA_Array_delete(config->svc_serverconfig->serverUrls,
config->svc_serverconfig->serverUrlsSize,
&UA_TYPES[UA_TYPES_STRING]);
config->svc_serverconfig->serverUrls = NULL;
config->svc_serverconfig->serverUrlsSize = 0;
if (items <= 1)
XSRETURN_EMPTY;
config->svc_serverconfig->serverUrls = UA_Array_new(items - 1,
&UA_TYPES[UA_TYPES_STRING]);
if (config->svc_serverconfig->serverUrls == NULL)
CROAKE("UA_Array_new size %d", items - 1);
config->svc_serverconfig->serverUrlsSize = items - 1;
for (i = 1; i < items; i++) {
config->svc_serverconfig->serverUrls[i - 1] =
XS_unpack_UA_String(ST(i));
}
#endif /* HAVE_UA_SERVERCONFIG_SERVERURLS */
void
UA_ServerConfig_setEndpointDescriptions(config, endpointsSV)
OPCUA_Open62541_ServerConfig config
( run in 2.068 seconds using v1.01-cache-2.11-cpan-a5162978ef8 )