예제 #1
0
파일: security.c 프로젝트: Celelibi/yafc
int sec_request_prot(char *level)
{
	int l = name_to_level(level);

	if (l == -1)
		return -1;
	request_data_prot = (enum protection_level)l;
	return 0;
}
예제 #2
0
int
Curl_sec_request_prot(struct connectdata *conn, const char *level)
{
  int l = name_to_level(level);
  if(l == -1)
    return -1;
  conn->request_data_prot = (enum protection_level)l;
  return 0;
}
예제 #3
0
int
Curl_sec_request_prot(struct connectdata *conn, const char *level)
{
  enum protection_level l = name_to_level(level);
  if(l == PROT_NONE)
    return -1;
  DEBUGASSERT(l > PROT_NONE && l < PROT_LAST);
  conn->request_data_prot = l;
  return 0;
}
예제 #4
0
파일: security.c 프로젝트: Celelibi/yafc
void cmd_prot(int argc, char **argv)
{
	int level = -1;

	OPT_HELP
		("Set Kerberos protection level for command or data channel.  Usage:\n"
		 "  idle [options] [command|data] level\n" "Options:\n"
		 "  -h, --help    show this help\n"
		 "level should be one of the following:\n" "  clear\n" "  safe\n"
		 "  confidential\n" "  private\n");

	minargs(optind);
	maxargs(optind + 1);

	if (!ftp->sec_complete) {
		ftp_err(_("No security data exchange has taken place\n"));
		return;
	}
	level = name_to_level(argv[argc - 1]);

	if (level == -1) {
		ftp_err(_("Unrecognized protection level %s\n"), argv[argc - 1]);
		return;
	}

	if ((*ftp->mech->check_prot) (ftp->app_data, level)) {
		ftp_err(_("%s does not implement %s protection\n"),
			   ftp->mech->name, level_to_name(level));
		return;
	}

	if (argc == optind + 1 || strncasecmp(argv[optind], "data",
										  strlen(argv[optind])) == 0) {
		if (sec_prot_internal(level) < 0) {
			return;
		}
	} else if (strncasecmp(argv[optind], "command", strlen(argv[optind])) ==
			   0) set_command_prot(level);
	else {
		ftp_err(_("Syntax error, try %s --help for more information\n"),
			   argv[0]);
	}

	return;
}