nice alias system
[saartuer.git] / tyshell
diff --git a/tyshell b/tyshell
index c9a09273c96d837f1e3a018320aa8122e961e1b8..c35ec0ebbe9da65439d6411246ceeecff076ebce 100755 (executable)
--- a/tyshell
+++ b/tyshell
@@ -6,6 +6,7 @@ import sys
 import subprocess
 import socket
 import pwd
 import subprocess
 import socket
 import pwd
+import grp
 
 tuerSock = "/run/tuer.sock"
 
 
 tuerSock = "/run/tuer.sock"
 
@@ -34,9 +35,9 @@ def sendcmd(addr, cmd):
                print("Running %s..." % (cmd))
                s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
                s.connect(addr)
                print("Running %s..." % (cmd))
                s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
                s.connect(addr)
-               s.settimeout(10.0)
+               s.settimeout(60.0)
                s.send(cmd.encode())
                s.send(cmd.encode())
-               data = s.recv(4)
+               data = s.recv(256)
                s.close()
                print(data.decode('utf-8'))
        return run
                s.close()
                print(data.decode('utf-8'))
        return run
@@ -46,17 +47,25 @@ def exitcmd(c):
        return True
 
 def whocmd(c):
        return True
 
 def whocmd(c):
-       for p in filter(lambda x:x.pw_shell=="/opt/tuer/tyshell",pwd.getpwall()):
+       for n in grp.getgrnam("tuer").gr_mem:
+               p = pwd.getpwnam(n)
                print (p.pw_name, " - ", p.pw_gecos)
 
                print (p.pw_name, " - ", p.pw_gecos)
 
-commands = {
+def alias (cmds, aliases):
+       for newname, oldname in aliases.items():
+               cmds[newname] = cmds[oldname]
+       return cmds
+
+commands = alias({
        'exit': exitcmd,
        'help': helpcmd,
        'open': sendcmd(tuerSock, 'unlock'),
        'exit': exitcmd,
        'help': helpcmd,
        'open': sendcmd(tuerSock, 'unlock'),
-       'unlock': sendcmd(tuerSock, 'unlock'),
        'buzz': sendcmd(tuerSock, 'buzz'),
        'who': whocmd,
        'buzz': sendcmd(tuerSock, 'buzz'),
        'who': whocmd,
-}
+},{
+       # aliases
+       'unlock': 'open',
+})
 
 def complete_command(cmd):
        '''returns a list of commands (as strings) starting with cmd'''
 
 def complete_command(cmd):
        '''returns a list of commands (as strings) starting with cmd'''