[PATCH] Implement motd for PostgreSQL - Mailing list pgsql-hackers

From Joel Jacobson
Subject [PATCH] Implement motd for PostgreSQL
Date
Msg-id 52ea0d51-7377-4a0a-aa24-f0fdf4c8bce1@www.fastmail.com
Whole thread Raw
Responses Re: [PATCH] Implement motd for PostgreSQL  (Chapman Flack <chap@anastigmatix.net>)
Re: [PATCH] Implement motd for PostgreSQL  (Marko Tiikkaja <marko@joh.to>)
Re: [PATCH] Implement motd for PostgreSQL  (Bruce Momjian <bruce@momjian.us>)
Re: [PATCH] Implement motd for PostgreSQL  (Michael Paquier <michael@paquier.xyz>)
Re: [PATCH] Implement motd for PostgreSQL  (Fabien COELHO <coelho@cri.ensmp.fr>)
List pgsql-hackers
Dear fellow hackers,

This patch is one day late, my apologies for missing the deadline this year.

PostgreSQL has since long been suffering from the lack of a proper UNIX style motd (message of the day).

DBAs have no ways of conveying important information to users,
having to rely on external protocols, such as HTTPS and "websites" to provide such information.

By adding a motd configuration parameter, the DBA can set this to a text string,
which will be automatically presented to the user as a NOTICE when logging on to the server.

While at it, fix escape_single_quotes_ascii() to properly escape newlines,
so that such can be used in ALTER SYSTEM values.
This makes sense, since parsing \n in config values works just fine.

To demonstrate the usefulness of this feature,
I've setup an open public PostgreSQL server at "pit.org",
to which anyone can connect without a password.

You need to know the username though,
which will hopefully make problems for bots.

$ psql -U brad -h pit.org motd
NOTICE:
   ____  ______  ___
  /    )/      /
(     / __    _    )
      (/ o)  ( o)   )
   _  (_  )    )  /
       /_/    )_/
      /  //|  |\
          v |  | v
            __/

This was accomplished by setting the "motd",
which requires superuser privileges:

$ psql motd
psql (14devel)
Type "help" for help.

motd=# ALTER SYSTEM SET motd TO E'\u001B[94m'
'\n   ____  ______  ___  '
'\n  /    )/      \/   \ '
'\n (     / __    _\    )'
'\n  \    (/ o)  ( o)   )'
'\n   \_  (_  )   \ )  / '
'\n     \  /\_/    \)_/  '
'\n      \/  //|  |\\    '
'\n          v |  | v    '
'\n            \__/      '
'\u001b[0m';
ALTER SYSTEM
motd=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)

motd=# \q

Ascii elephant in example by Michael Paquier [1], with ANSI colors added by me.


Happy Easter!

/Joel
Attachment

pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Making wait events a bit more efficient
Next
From: Bruce Momjian
Date:
Subject: Re: [PATCH] Implement motd for PostgreSQL