Re: [PATCH] make cwm parse /etc/ssh/ssh_known_hosts (global known hosts) as well as user's known_hosts
I don't like this, and think it is dangerous coupling between systems. If anything similar to browsers, window managers should not have access to anything in the ~/.ssh directory. Or well, any other object they don't actually need. Franz Bettag wrote: > Dear OpenBSD folks, > > appended you will find a patch allowing cwm to also parse the contents > of /etc/ssh/ssh_known_hosts and thus extend the ssh menu. > > the diff was taken against the latest source on the github xenocara repo. > > comments and/or feedback is much appreciated. > > thanks for considering this. :) > > best regards > > Franz Bettag > > diff --git app/cwm/calmwm.h app/cwm/calmwm.h > index 008c16e1..445dab9e 100644 > --- app/cwm/calmwm.h > +++ app/cwm/calmwm.h > @@ -305,6 +305,7 @@ struct conf { > int xrandr_event_base; > char*conf_file; > char*known_hosts; > + char*global_known_hosts; > char*wm_argv; > int debug; > }; > diff --git app/cwm/conf.c app/cwm/conf.c > index c84be55b..62994b11 100644 > --- app/cwm/conf.c > +++ app/cwm/conf.c > @@ -318,6 +318,7 @@ conf_init(struct conf *c) > } > xasprintf(>conf_file, "%s/%s", home, ".cwmrc"); > xasprintf(>known_hosts, "%s/%s", home, ".ssh/known_hosts"); > + xasprintf(>global_known_hosts, "/etc/ssh/ssh_known_hosts"); > } > > void > @@ -365,6 +366,7 @@ conf_clear(struct conf *c) > > free(c->conf_file); > free(c->known_hosts); > + free(c->global_known_hosts); > free(c->font); > free(c->wmname); > } > diff --git app/cwm/cwm.1 app/cwm/cwm.1 > index fc8f0ece..ddadea0e 100644 > --- app/cwm/cwm.1 > +++ app/cwm/cwm.1 > @@ -146,6 +146,8 @@ Spawn > dialog. > This parses > .Pa $HOME/.ssh/known_hosts > +and > +.Pa /etc/ssh/ssh_known_hosts > to provide host auto-completion. > .Xr ssh 1 > will be executed via the configured terminal emulator. > diff --git app/cwm/kbfunc.c app/cwm/kbfunc.c > index 48404874..6b4c05dc 100644 > --- app/cwm/kbfunc.c > +++ app/cwm/kbfunc.c > @@ -670,6 +670,34 @@ kbfunc_menu_ssh(void *ctx, struct cargs *cargs) > > if ((fp = fopen(Conf.known_hosts, "r")) == NULL) { > warn("%s: %s", __func__, Conf.known_hosts); > + goto global; > + } > + > + lbuf = NULL; > + len = 0; > + while ((slen = getline(, , fp)) != -1) { > + buf = lbuf; > + if (buf[slen - 1] == '\n') > + buf[slen - 1] = '\0'; > + > + /* skip hashed hosts */ > + if (strncmp(buf, HASH_MARKER, strlen(HASH_MARKER)) == 0) > + continue; > + for (p = buf; *p != ',' && *p != ' ' && p != buf + slen; p++) > + ; > + /* ignore badness */ > + if (p - buf + 1 > sizeof(hostbuf)) > + continue; > + (void)strlcpy(hostbuf, buf, p - buf + 1); > + menuq_add(, NULL, "%s", hostbuf); > + } > + free(lbuf); > + if (ferror(fp)) > + err(1, "%s", path); > + (void)fclose(fp); > +global: > + if ((fp = fopen(Conf.global_known_hosts, "r")) == NULL) { > + warn("%s: %s", __func__, Conf.global_known_hosts); > goto menu; > } >
Re: [PATCH] make cwm parse /etc/ssh/ssh_known_hosts (global known hosts) as well as user's known_hosts
On Wed 2020.02.12 at 22:03 +0100, Solene Rapenne wrote: > On Wed, Feb 12, 2020 at 07:15:36PM +0100, Franz Bettag wrote: > > Dear OpenBSD folks, > > > > appended you will find a patch allowing cwm to also parse the contents > > of /etc/ssh/ssh_known_hosts and thus extend the ssh menu. > > > > the diff was taken against the latest source on the github xenocara repo. > > > > comments and/or feedback is much appreciated. > > > > thanks for considering this. :) > > > > best regards > > seems people agreed to remove this feature 3 weeks ago but it's still > not committed. > > https://marc.info/?l=openbsd-tech=157972423522573=2 There's a lot of private diapproval; one person gave an alternative (thank you), which might be feasible in some way, but I'm still unconvinced any of this belongs in a wm. At this point I don't care enough - it is not getting in the way, but I object to giving it more features; once this thing gets in the way, it's another story.
Re: [PATCH] make cwm parse /etc/ssh/ssh_known_hosts (global known hosts) as well as user's known_hosts
On Wed, Feb 12, 2020 at 07:15:36PM +0100, Franz Bettag wrote: > Dear OpenBSD folks, > > appended you will find a patch allowing cwm to also parse the contents > of /etc/ssh/ssh_known_hosts and thus extend the ssh menu. > > the diff was taken against the latest source on the github xenocara repo. > > comments and/or feedback is much appreciated. > > thanks for considering this. :) > > best regards seems people agreed to remove this feature 3 weeks ago but it's still not committed. https://marc.info/?l=openbsd-tech=157972423522573=2
[PATCH] make cwm parse /etc/ssh/ssh_known_hosts (global known hosts) as well as user's known_hosts
Dear OpenBSD folks, appended you will find a patch allowing cwm to also parse the contents of /etc/ssh/ssh_known_hosts and thus extend the ssh menu. the diff was taken against the latest source on the github xenocara repo. comments and/or feedback is much appreciated. thanks for considering this. :) best regards Franz Bettag diff --git app/cwm/calmwm.h app/cwm/calmwm.h index 008c16e1..445dab9e 100644 --- app/cwm/calmwm.h +++ app/cwm/calmwm.h @@ -305,6 +305,7 @@ struct conf { int xrandr_event_base; char*conf_file; char*known_hosts; + char*global_known_hosts; char*wm_argv; int debug; }; diff --git app/cwm/conf.c app/cwm/conf.c index c84be55b..62994b11 100644 --- app/cwm/conf.c +++ app/cwm/conf.c @@ -318,6 +318,7 @@ conf_init(struct conf *c) } xasprintf(>conf_file, "%s/%s", home, ".cwmrc"); xasprintf(>known_hosts, "%s/%s", home, ".ssh/known_hosts"); + xasprintf(>global_known_hosts, "/etc/ssh/ssh_known_hosts"); } void @@ -365,6 +366,7 @@ conf_clear(struct conf *c) free(c->conf_file); free(c->known_hosts); + free(c->global_known_hosts); free(c->font); free(c->wmname); } diff --git app/cwm/cwm.1 app/cwm/cwm.1 index fc8f0ece..ddadea0e 100644 --- app/cwm/cwm.1 +++ app/cwm/cwm.1 @@ -146,6 +146,8 @@ Spawn dialog. This parses .Pa $HOME/.ssh/known_hosts +and +.Pa /etc/ssh/ssh_known_hosts to provide host auto-completion. .Xr ssh 1 will be executed via the configured terminal emulator. diff --git app/cwm/kbfunc.c app/cwm/kbfunc.c index 48404874..6b4c05dc 100644 --- app/cwm/kbfunc.c +++ app/cwm/kbfunc.c @@ -670,6 +670,34 @@ kbfunc_menu_ssh(void *ctx, struct cargs *cargs) if ((fp = fopen(Conf.known_hosts, "r")) == NULL) { warn("%s: %s", __func__, Conf.known_hosts); + goto global; + } + + lbuf = NULL; + len = 0; + while ((slen = getline(, , fp)) != -1) { + buf = lbuf; + if (buf[slen - 1] == '\n') + buf[slen - 1] = '\0'; + + /* skip hashed hosts */ + if (strncmp(buf, HASH_MARKER, strlen(HASH_MARKER)) == 0) + continue; + for (p = buf; *p != ',' && *p != ' ' && p != buf + slen; p++) + ; + /* ignore badness */ + if (p - buf + 1 > sizeof(hostbuf)) + continue; + (void)strlcpy(hostbuf, buf, p - buf + 1); + menuq_add(, NULL, "%s", hostbuf); + } + free(lbuf); + if (ferror(fp)) + err(1, "%s", path); + (void)fclose(fp); +global: + if ((fp = fopen(Conf.global_known_hosts, "r")) == NULL) { + warn("%s: %s", __func__, Conf.global_known_hosts); goto menu; }