本文整理汇总了C++中Sock::get_encryption方法的典型用法代码示例。如果您正苦于以下问题:C++ Sock::get_encryption方法的具体用法?C++ Sock::get_encryption怎么用?C++ Sock::get_encryption使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sock
的用法示例。
在下文中一共展示了Sock::get_encryption方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: my_master
int
store_cred(const char* user, const char* pw, int mode, Daemon* d, bool force) {
int result;
int return_val;
Sock* sock = NULL;
// to help future debugging, print out the mode we are in
static const int mode_offset = 100;
static const char *mode_name[] = {
ADD_CREDENTIAL,
DELETE_CREDENTIAL,
QUERY_CREDENTIAL
#ifdef WIN32
, CONFIG_CREDENTIAL
#endif
};
dprintf ( D_ALWAYS,
"STORE_CRED: In mode '%s'\n",
mode_name[mode - mode_offset] );
// If we are root / SYSTEM and we want a local daemon,
// then do the work directly to the local registry.
// If not, then send the request over the wire to a remote credd or schedd.
if ( is_root() && d == NULL ) {
// do the work directly onto the local registry
return_val = store_cred_service(user,pw,mode);
} else {
// send out the request remotely.
// first see if we're operating on the pool password
int cmd = STORE_CRED;
char const *tmp = strchr(user, '@');
if (tmp == NULL || tmp == user || *(tmp + 1) == '\0') {
dprintf(D_ALWAYS, "store_cred: user not in [email protected] format\n");
return FAILURE;
}
if (((mode == ADD_MODE) || (mode == DELETE_MODE)) &&
( (size_t)(tmp - user) == strlen(POOL_PASSWORD_USERNAME)) &&
(memcmp(POOL_PASSWORD_USERNAME, user, tmp - user) == 0))
{
cmd = STORE_POOL_CRED;
user = tmp + 1; // we only need to send the domain name for STORE_POOL_CRED
}
if (d == NULL) {
if (cmd == STORE_POOL_CRED) {
// need to go to the master for setting the pool password
dprintf(D_FULLDEBUG, "Storing credential to local master\n");
Daemon my_master(DT_MASTER);
sock = my_master.startCommand(cmd, Stream::reli_sock, 0);
}
else {
dprintf(D_FULLDEBUG, "Storing credential to local schedd\n");
Daemon my_schedd(DT_SCHEDD);
sock = my_schedd.startCommand(cmd, Stream::reli_sock, 0);
}
} else {
dprintf(D_FULLDEBUG, "Starting a command on a REMOTE schedd\n");
sock = d->startCommand(cmd, Stream::reli_sock, 0);
}
if( !sock ) {
dprintf(D_ALWAYS,
"STORE_CRED: Failed to start command.\n");
dprintf(D_ALWAYS,
"STORE_CRED: Unable to contact the REMOTE schedd.\n");
return FAILURE;
}
// for remote updates (which send the password), verify we have a secure channel,
// unless "force" is specified
if (((mode == ADD_MODE) || (mode == DELETE_MODE)) && !force && (d != NULL) &&
((sock->type() != Stream::reli_sock) || !((ReliSock*)sock)->triedAuthentication() || !sock->get_encryption())) {
dprintf(D_ALWAYS, "STORE_CRED: blocking attempt to update over insecure channel\n");
delete sock;
return FAILURE_NOT_SECURE;
}
if (cmd == STORE_CRED) {
result = code_store_cred(sock, const_cast<char*&>(user),
const_cast<char*&>(pw), mode);
if( result == FALSE ) {
dprintf(D_ALWAYS, "store_cred: code_store_cred failed.\n");
delete sock;
return FAILURE;
}
}
else {
// only need to send the domain and password for STORE_POOL_CRED
if (!sock->code(const_cast<char*&>(user)) ||
!sock->code(const_cast<char*&>(pw)) ||
!sock->end_of_message()) {
dprintf(D_ALWAYS, "store_cred: failed to send STORE_POOL_CRED message\n");
delete sock;
return FAILURE;
}
}
//.........这里部分代码省略.........