]> andersk Git - openssh.git/blobdiff - readconf.c
20010115
[openssh.git] / readconf.c
index 4f4a16de8f18775bd8340d837c269feb9289a6c3..5b552815ff8dbc0c109ce4a9efcc5a67bfe0cee3 100644 (file)
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: readconf.c,v 1.47 2000/09/07 21:13:37 markus Exp $");
+RCSID("$OpenBSD: readconf.c,v 1.53 2001/01/07 11:28:05 markus Exp $");
 
 #include "ssh.h"
-#include "cipher.h"
 #include "readconf.h"
 #include "match.h"
 #include "xmalloc.h"
@@ -69,7 +68,7 @@ RCSID("$OpenBSD: readconf.c,v 1.47 2000/09/07 21:13:37 markus Exp $");
    # Defaults for various options
    Host *
      ForwardAgent no
-     ForwardX11 yes
+     ForwardX11 no
      RhostsAuthentication yes
      PasswordAuthentication yes
      RSAAuthentication yes
@@ -102,8 +101,9 @@ typedef enum {
        oGlobalKnownHostsFile, oUserKnownHostsFile, oConnectionAttempts,
        oBatchMode, oCheckHostIP, oStrictHostKeyChecking, oCompression,
        oCompressionLevel, oKeepAlives, oNumberOfPasswordPrompts, oTISAuthentication,
-       oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol, oIdentityFile2,
-       oGlobalKnownHostsFile2, oUserKnownHostsFile2, oDSAAuthentication
+       oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol,
+       oGlobalKnownHostsFile2, oUserKnownHostsFile2, oPubkeyAuthentication,
+       oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias
 } OpCodes;
 
 /* Textual representations of the tokens. */
@@ -119,8 +119,11 @@ static struct {
        { "useprivilegedport", oUsePrivilegedPort },
        { "rhostsauthentication", oRhostsAuthentication },
        { "passwordauthentication", oPasswordAuthentication },
+       { "kbdinteractiveauthentication", oKbdInteractiveAuthentication },
+       { "kbdinteractivedevices", oKbdInteractiveDevices },
        { "rsaauthentication", oRSAAuthentication },
-       { "dsaauthentication", oDSAAuthentication },
+       { "pubkeyauthentication", oPubkeyAuthentication },
+       { "dsaauthentication", oPubkeyAuthentication },         /* alias */
        { "skeyauthentication", oSkeyAuthentication },
 #ifdef KRB4
        { "kerberosauthentication", oKerberosAuthentication },
@@ -132,8 +135,9 @@ static struct {
        { "fallbacktorsh", oFallBackToRsh },
        { "usersh", oUseRsh },
        { "identityfile", oIdentityFile },
-       { "identityfile2", oIdentityFile2 },
+       { "identityfile2", oIdentityFile },                     /* alias */
        { "hostname", oHostName },
+       { "hostkeyalias", oHostKeyAlias },
        { "proxycommand", oProxyCommand },
        { "port", oPort },
        { "cipher", oCipher },
@@ -212,7 +216,7 @@ add_remote_forward(Options *options, u_short port, const char *host,
 static OpCodes
 parse_token(const char *cp, const char *filename, int linenum)
 {
-       unsigned int i;
+       u_int i;
 
        for (i = 0; keywords[i].name; i++)
                if (strcasecmp(cp, keywords[i].name) == 0)
@@ -290,8 +294,16 @@ parse_flag:
                intptr = &options->password_authentication;
                goto parse_flag;
 
-       case oDSAAuthentication:
-               intptr = &options->dsa_authentication;
+       case oKbdInteractiveAuthentication:
+               intptr = &options->kbd_interactive_authentication;
+               goto parse_flag;
+
+       case oKbdInteractiveDevices:
+               charptr = &options->kbd_interactive_devices;
+               goto parse_string;
+
+       case oPubkeyAuthentication:
+               intptr = &options->pubkey_authentication;
                goto parse_flag;
 
        case oRSAAuthentication:
@@ -376,20 +388,15 @@ parse_flag:
                goto parse_int;
 
        case oIdentityFile:
-       case oIdentityFile2:
                arg = strdelim(&s);
                if (!arg || *arg == '\0')
                        fatal("%.200s line %d: Missing argument.", filename, linenum);
                if (*activep) {
-                       intptr = (opcode == oIdentityFile) ?
-                           &options->num_identity_files :
-                           &options->num_identity_files2;
+                       intptr = &options->num_identity_files;
                        if (*intptr >= SSH_MAX_IDENTITY_FILES)
                                fatal("%.200s line %d: Too many identity files specified (max %d).",
                                      filename, linenum, SSH_MAX_IDENTITY_FILES);
-                       charptr = (opcode == oIdentityFile) ?
-                           &options->identity_files[*intptr] :
-                           &options->identity_files2[*intptr];
+                       charptr =  &options->identity_files[*intptr];
                        *charptr = xstrdup(arg);
                        *intptr = *intptr + 1;
                }
@@ -429,6 +436,10 @@ parse_string:
                charptr = &options->hostname;
                goto parse_string;
 
+       case oHostKeyAlias:
+               charptr = &options->host_key_alias;
+               goto parse_string;
+
        case oProxyCommand:
                charptr = &options->proxy_command;
                string = xstrdup("");
@@ -567,10 +578,10 @@ parse_int:
                if (!arg || *arg == '\0')
                        fatal("%.200s line %d: Missing argument.", filename, linenum);
                if (arg[0] == '^' && arg[2] == 0 &&
-                   (unsigned char) arg[1] >= 64 && (unsigned char) arg[1] < 128)
-                       value = (unsigned char) arg[1] & 31;
+                   (u_char) arg[1] >= 64 && (u_char) arg[1] < 128)
+                       value = (u_char) arg[1] & 31;
                else if (strlen(arg) == 1)
-                       value = (unsigned char) arg[0];
+                       value = (u_char) arg[0];
                else if (strcmp(arg, "none") == 0)
                        value = -2;
                else {
@@ -654,7 +665,7 @@ initialize_options(Options * options)
        options->use_privileged_port = -1;
        options->rhosts_authentication = -1;
        options->rsa_authentication = -1;
-       options->dsa_authentication = -1;
+       options->pubkey_authentication = -1;
        options->skey_authentication = -1;
 #ifdef KRB4
        options->kerberos_authentication = -1;
@@ -664,6 +675,8 @@ initialize_options(Options * options)
        options->afs_token_passing = -1;
 #endif
        options->password_authentication = -1;
+       options->kbd_interactive_authentication = -1;
+       options->kbd_interactive_devices = NULL;
        options->rhosts_rsa_authentication = -1;
        options->fallback_to_rsh = -1;
        options->use_rsh = -1;
@@ -680,8 +693,8 @@ initialize_options(Options * options)
        options->ciphers = NULL;
        options->protocol = SSH_PROTO_UNKNOWN;
        options->num_identity_files = 0;
-       options->num_identity_files2 = 0;
        options->hostname = NULL;
+       options->host_key_alias = NULL;
        options->proxy_command = NULL;
        options->user = NULL;
        options->escape_char = -1;
@@ -718,8 +731,8 @@ fill_default_options(Options * options)
                options->rhosts_authentication = 1;
        if (options->rsa_authentication == -1)
                options->rsa_authentication = 1;
-       if (options->dsa_authentication == -1)
-               options->dsa_authentication = 1;
+       if (options->pubkey_authentication == -1)
+               options->pubkey_authentication = 1;
        if (options->skey_authentication == -1)
                options->skey_authentication = 0;
 #ifdef KRB4
@@ -734,6 +747,8 @@ fill_default_options(Options * options)
 #endif /* AFS */
        if (options->password_authentication == -1)
                options->password_authentication = 1;
+       if (options->kbd_interactive_authentication == -1)
+               options->kbd_interactive_authentication = 0;
        if (options->rhosts_rsa_authentication == -1)
                options->rhosts_rsa_authentication = 1;
        if (options->fallback_to_rsh == -1)
@@ -765,16 +780,18 @@ fill_default_options(Options * options)
        if (options->protocol == SSH_PROTO_UNKNOWN)
                options->protocol = SSH_PROTO_1|SSH_PROTO_2|SSH_PROTO_1_PREFERRED;
        if (options->num_identity_files == 0) {
-               options->identity_files[0] =
-                       xmalloc(2 + strlen(SSH_CLIENT_IDENTITY) + 1);
-               sprintf(options->identity_files[0], "~/%.100s", SSH_CLIENT_IDENTITY);
-               options->num_identity_files = 1;
-       }
-       if (options->num_identity_files2 == 0) {
-               options->identity_files2[0] =
-                       xmalloc(2 + strlen(SSH_CLIENT_ID_DSA) + 1);
-               sprintf(options->identity_files2[0], "~/%.100s", SSH_CLIENT_ID_DSA);
-               options->num_identity_files2 = 1;
+               if (options->protocol & SSH_PROTO_1) {
+                       options->identity_files[options->num_identity_files] =
+                           xmalloc(2 + strlen(SSH_CLIENT_IDENTITY) + 1);
+                       sprintf(options->identity_files[options->num_identity_files++],
+                           "~/%.100s", SSH_CLIENT_IDENTITY);
+               }
+               if (options->protocol & SSH_PROTO_2) {
+                       options->identity_files[options->num_identity_files] =
+                           xmalloc(2 + strlen(SSH_CLIENT_ID_DSA) + 1);
+                       sprintf(options->identity_files[options->num_identity_files++],
+                           "~/%.100s", SSH_CLIENT_ID_DSA);
+               }
        }
        if (options->escape_char == -1)
                options->escape_char = '~';
@@ -787,8 +804,9 @@ fill_default_options(Options * options)
        if (options->user_hostfile2 == NULL)
                options->user_hostfile2 = SSH_USER_HOSTFILE2;
        if (options->log_level == (LogLevel) - 1)
-               options->log_level = SYSLOG_LEVEL_INFO;
+               options->log_level = SYSLOG_LEVEL_NOTICE;
        /* options->proxy_command should not be set by default */
        /* options->user will be set in the main program if appropriate */
        /* options->hostname will be set in the main program if appropriate */
+       /* options->host_key_alias should not be set by default */
 }
This page took 0.039031 seconds and 4 git commands to generate.