You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2013/03/20 19:41:37 UTC
svn commit: r1458995 - /subversion/trunk/subversion/svnmucc/svnmucc.c
Author: philip
Date: Wed Mar 20 18:41:37 2013
New Revision: 1458995
URL: http://svn.apache.org/r1458995
Log:
Add --trust-server-cert to svnmucc.
* subversion/svnmucc/svnmucc.c
(create_ra_callbacks, execute): Add trust parameter.
(usage): Add trust help text.
(main): Add trust option.
Modified:
subversion/trunk/subversion/svnmucc/svnmucc.c
Modified: subversion/trunk/subversion/svnmucc/svnmucc.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnmucc/svnmucc.c?rev=1458995&r1=1458994&r2=1458995&view=diff
==============================================================================
--- subversion/trunk/subversion/svnmucc/svnmucc.c (original)
+++ subversion/trunk/subversion/svnmucc/svnmucc.c Wed Mar 20 18:41:37 2013
@@ -108,6 +108,7 @@ create_ra_callbacks(svn_ra_callbacks2_t
const char *config_dir,
svn_config_t *cfg_config,
svn_boolean_t non_interactive,
+ svn_boolean_t trust_server_cert,
svn_boolean_t no_auth_cache,
apr_pool_t *pool)
{
@@ -117,7 +118,7 @@ create_ra_callbacks(svn_ra_callbacks2_t
non_interactive,
username, password, config_dir,
no_auth_cache,
- FALSE /* trust_server_certs */,
+ trust_server_cert,
cfg_config, NULL, NULL, pool));
(*callbacks)->open_tmp_file = open_tmp_file;
@@ -728,6 +729,7 @@ execute(const apr_array_header_t *action
const char *config_dir,
const apr_array_header_t *config_options,
svn_boolean_t non_interactive,
+ svn_boolean_t trust_server_cert,
svn_boolean_t no_auth_cache,
svn_revnum_t base_revision,
apr_pool_t *pool)
@@ -774,8 +776,8 @@ execute(const apr_array_header_t *action
}
SVN_ERR(create_ra_callbacks(&ra_callbacks, username, password, config_dir,
- cfg_config, non_interactive, no_auth_cache,
- pool));
+ cfg_config, non_interactive, trust_server_cert,
+ no_auth_cache, pool));
SVN_ERR(svn_ra_open4(&session, NULL, anchor, NULL, ra_callbacks,
NULL, config, pool));
/* Open, then reparent to avoid AUTHZ errors when opening the reposroot */
@@ -954,6 +956,9 @@ usage(apr_pool_t *pool, int exit_val)
" prompt only if standard input is a terminal)\n"
" --force-interactive : do interactive propmting even if standard\n"
" input is not a terminal\n"
+ " --trust-server-cert : accept SSL server certificates from unknown\n"
+ " certificate authorities without prompting (but\n"
+ " only with '--non-interactive')\n"
" -X [--extra-args] ARG : append arguments from file ARG (one per line;\n"
" : use \"-\" to read from standard input)\n"
" --config-dir ARG : use ARG to override the config directory\n"
@@ -1053,7 +1058,8 @@ main(int argc, const char **argv)
version_opt,
with_revprop_opt,
non_interactive_opt,
- force_interactive_opt
+ force_interactive_opt,
+ trust_server_cert_opt
};
static const apr_getopt_option_t options[] = {
{"message", 'm', 1, ""},
@@ -1068,6 +1074,7 @@ main(int argc, const char **argv)
{NULL, '?', 0, ""},
{"non-interactive", non_interactive_opt, 0, ""},
{"force-interactive", force_interactive_opt, 0, ""},
+ {"trust-server-cert", trust_server_cert_opt, 0, ""},
{"config-dir", config_dir_opt, 1, ""},
{"config-option", config_inline_opt, 1, ""},
{"no-auth-cache", no_auth_cache_opt, 0, ""},
@@ -1082,6 +1089,7 @@ main(int argc, const char **argv)
apr_array_header_t *config_options;
svn_boolean_t non_interactive = FALSE;
svn_boolean_t force_interactive = FALSE;
+ svn_boolean_t trust_server_cert = FALSE;
svn_boolean_t no_auth_cache = FALSE;
svn_revnum_t base_revision = SVN_INVALID_REVNUM;
apr_array_header_t *action_args;
@@ -1163,6 +1171,9 @@ main(int argc, const char **argv)
case force_interactive_opt:
force_interactive = TRUE;
break;
+ case trust_server_cert_opt:
+ trust_server_cert = TRUE;
+ break;
case config_dir_opt:
err = svn_utf_cstring_to_utf8(&config_dir, arg, pool);
if (err)
@@ -1203,6 +1214,14 @@ main(int argc, const char **argv)
non_interactive = !svn_cmdline__be_interactive(non_interactive,
force_interactive);
+ if (trust_server_cert && !non_interactive)
+ {
+ err = svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("--trust-server-cert requires "
+ "--non-interactive"));
+ return svn_cmdline_handle_exit_error(err, pool, "svnmucc: ");
+ }
+
/* Make sure we have a log message to use. */
err = sanitize_log_sources(revprops, message, filedata);
if (err)
@@ -1425,7 +1444,7 @@ main(int argc, const char **argv)
if ((err = execute(actions, anchor, revprops, username, password,
config_dir, config_options, non_interactive,
- no_auth_cache, base_revision, pool)))
+ trust_server_cert, no_auth_cache, base_revision, pool)))
{
if (err->apr_err == SVN_ERR_AUTHN_FAILED && non_interactive)
err = svn_error_quick_wrap(err,