diff options
| author | Mattias Andrée <maandree@operamail.com> | 2013-10-31 11:57:53 +0100 |
|---|---|---|
| committer | Mattias Andrée <maandree@operamail.com> | 2013-10-31 11:57:53 +0100 |
| commit | 6addb47d7d38de0185456688d08a94aba10e396c (patch) | |
| tree | bbad1a947d6f9a1a0101d051a27f906e06c0a754 | |
| parent | Merge branch 'master' of github.com:GNU-Pony/gates-of-tartaros (diff) | |
| download | gates-of-tartaros-6addb47d7d38de0185456688d08a94aba10e396c.tar.gz gates-of-tartaros-6addb47d7d38de0185456688d08a94aba10e396c.tar.bz2 gates-of-tartaros-6addb47d7d38de0185456688d08a94aba10e396c.tar.xz | |
add got-diminished, no pun intended
Signed-off-by: Mattias Andrée <maandree@operamail.com>
| -rwxr-xr-x | got-diminished | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/got-diminished b/got-diminished new file mode 100755 index 0000000..ff1d8d1 --- /dev/null +++ b/got-diminished @@ -0,0 +1,92 @@ +#!/usr/bin/env bash + +# gates-of-tartaros – Minimal replacement for agetty with SSH support +# +# Copyright © 2013 Mattias Andrée (maandree@member.fsf.org) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +# Read the parameters: the first is the tty, the rest are exports +tty="$1" +shift 1 +if [ ! $# = 0 ]; then + export "$@" +fi + +# Change TTY +exec 0<>"@dev@/${tty}" +exec 1>&0 +exec 2>&0 + + +# This is required if you want to use dash (and ash, since dash +# [dash not ash] does not recognise $''). +echo () +{ + @echo@ "$@" +} + + +# Function used for printing information on the terminal for the user +display_function=_display +_display () +{ + echo -en '\e[H\e[2J' + echo -e "\e[${ANSI_COLOR}m${NAME} (${tty})\e[00m" + echo + echo -n 'Login: ' +} + +# Function for reading the username form the terminal +read_function=_read +_read () +{ + read user +} + +# Function for logging in the user +login_function=_login +_login () +{ + if [ ! "${user%@*}" = "${user}" ]; then + exec setsid -c @ssh@ ${user} || sleep 3 + # The sleep allows you to see any error you made + elif [ ! "${user}" = "" ] && [ "${user%%-*}" = "" ]; then + tty_settings="$(stty --save)" + stty -icanon -echo -isig -ixon -ixoff -ixany + echo -e '\e[01;31mNice try! Sleeping for 10 minutes...\e[00m' + sleep 600 + stty "${tty_settings}" + else + exec setsid -c login -- "${user}" + fi +} + + +# Load OS information and extensions +NAME="$(uname -o)" +ANSI_COLOR='01;34' # must be exactly ANSI_COLOR as it is defined in /etc/os-release +if [ -f "@etc@/os-release" ]; then + . "@etc@/os-release" +fi +if [ -f "@etc@/@command@rc" ]; then + . "@etc@/@command@rc" +fi + +# Let the user log in +$display_function +$read_function +$login_function + |
