Add a preference list for SSH-2 key exchange algorithms, on a new "Kex" panel
[u/mdw/putty] / unix / uxcons.c
index 881b6bf..b5bf840 100644 (file)
@@ -16,6 +16,8 @@
 
 int console_batch_mode = FALSE;
 
+static void *console_logctx = NULL;
+
 /*
  * Clean up and exit.
  */
@@ -33,6 +35,14 @@ void update_specials_menu(void *frontend)
 {
 }
 
+void notify_remote_exit(void *frontend)
+{
+}
+
+void timer_change_notify(long next)
+{
+}
+
 void verify_ssh_host_key(void *frontend, char *host, int port, char *keytype,
                         char *keystr, char *fingerprint)
 {
@@ -133,18 +143,17 @@ void verify_ssh_host_key(void *frontend, char *host, int port, char *keytype,
 }
 
 /*
- * Ask whether the selected cipher is acceptable (since it was
+ * Ask whether the selected algorithm is acceptable (since it was
  * below the configured 'warn' threshold).
- * cs: 0 = both ways, 1 = client->server, 2 = server->client
  */
-void askcipher(void *frontend, char *ciphername, int cs)
+void askalg(void *frontend, const char *algtype, const char *algname)
 {
     static const char msg[] =
-       "The first %scipher supported by the server is\n"
+       "The first %s supported by the server is\n"
        "%s, which is below the configured warning threshold.\n"
        "Continue with connection? (y/n) ";
     static const char msg_batch[] =
-       "The first %scipher supported by the server is\n"
+       "The first %s supported by the server is\n"
        "%s, which is below the configured warning threshold.\n"
        "Connection abandoned.\n";
     static const char abandoned[] = "Connection abandoned.\n";
@@ -152,17 +161,11 @@ void askcipher(void *frontend, char *ciphername, int cs)
     char line[32];
 
     if (console_batch_mode) {
-       fprintf(stderr, msg_batch,
-               (cs == 0) ? "" :
-               (cs == 1) ? "client-to-server " : "server-to-client ",
-               ciphername);
+       fprintf(stderr, msg_batch, algtype, algname);
        cleanup_exit(1);
     }
 
-    fprintf(stderr, msg,
-           (cs == 0) ? "" :
-           (cs == 1) ? "client-to-server " : "server-to-client ",
-           ciphername);
+    fprintf(stderr, msg, algtype, algname);
     fflush(stderr);
 
     {
@@ -258,9 +261,15 @@ void old_keyfile_warning(void)
     fputs(message, stderr);
 }
 
+void console_provide_logctx(void *logctx)
+{
+    console_logctx = logctx;
+}
+
 void logevent(void *frontend, const char *string)
 {
-    log_eventlog(logctx, string);
+    if (console_logctx)
+       log_eventlog(console_logctx, string);
 }
 
 int console_get_line(const char *prompt, char *str,
@@ -272,6 +281,7 @@ int console_get_line(const char *prompt, char *str,
     if (console_batch_mode) {
        if (maxlen > 0)
            str[0] = '\0';
+       return 0;
     } else {
        tcgetattr(0, &oldmode);
        newmode = oldmode;
@@ -294,8 +304,9 @@ int console_get_line(const char *prompt, char *str,
 
        if (is_pw)
            fputs("\n", stdout);
+
+       return 1;
     }
-    return 1;
 }
 
 void frontend_keypress(void *handle)
@@ -305,3 +316,18 @@ void frontend_keypress(void *handle)
      */
     return;
 }
+
+int is_interactive(void)
+{
+    return isatty(0);
+}
+
+/*
+ * X11-forwarding-related things suitable for console.
+ */
+
+const char platform_x11_best_transport[] = "unix";
+
+char *platform_get_x_display(void) {
+    return dupstr(getenv("DISPLAY"));
+}