Ignore:
Timestamp:
Oct 10, 2007, 1:56:37 AM (17 years ago)
Author:
ecprice
Message:

Several modifications.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/templates/getafsgroups.py

    r161 r177  
    2929    checkAfsGroup(user, group) returns True if and only if user is in AFS group group in cell cell
    3030    """
    31     print user, group
    32     p = subprocess.Popen(["pts", "membership", group, '-c', cell], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    33     p2 = subprocess.Popen(["grep", "-v", "^Members"], stdin=p.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    34     if p2.wait():
     31    p = subprocess.Popen(["pts", "membership", group, '-c', cell],
     32                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     33    if p.wait():
    3534        return False
    36     for member in p2.stdout.read().split():
    37         if member == user:
     35    for line in p.stdout.readlines()[1:]:
     36        if line.strip() == user:
    3837            return True
    3938    return False
    4039
    41 def checkLockerOwner(user, locker):
     40def checkLockerOwner(user, locker, verbose=False):
    4241    """
    4342    checkLockerOwner(user, locker) returns True if and only if user administers locker
    4443    """
    45     p = subprocess.Popen(["fs", "whichcell", "/mit/" + locker], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    46     if (p.wait()):
     44    p = subprocess.Popen(["fs", "whichcell", "/mit/" + locker],
     45                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     46    if p.wait():
     47        if verbose:
     48            return p.stderr.read()
    4749        return False
    4850    cell = p.stdout.read().split()[-1][1:-1]
    49     p = subprocess.Popen(["fs", "listacl", "/mit/" + locker], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    50     p2 = subprocess.Popen(["grep", "^  .* rlidwka$"], stdin=p.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    51     if (p2.wait()):
     51    p = subprocess.Popen(["fs", "listacl", "/mit/" + locker],
     52                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     53    if p.wait():
     54        if verbose:
     55            return p.stderr.read()
    5256        return False
    53     for line in p2.stdout.read().split('\n'):
     57    for line in p.stdout.readlines()[1:]:
    5458        entry = line.split()
    55         if entry == [] or entry[0] == "Negative":
     59        if not entry or entry[0] == "Negative":
    5660            break
    5761        if entry[1] == "rlidwka":
    58             if entry[0] == user or (entry[0][0:6] == "system" and checkAfsGroup(user, entry[0], cell)):
     62            if entry[0] == user or (entry[0][0:6] == "system" and
     63                                    checkAfsGroup(user, entry[0], cell)):
    5964                return True
     65    if verbose:
     66        return "You don't have admin bits on /mit/" + locker
    6067    return False
    6168
Note: See TracChangeset for help on using the changeset viewer.