diff options
author | Ori Bernstein <ori@eigenstate.org> | 2021-06-14 00:00:37 +0000 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2021-06-14 00:00:37 +0000 |
commit | a73a964e51247ed169d322c725a3a18859f109a3 (patch) | |
tree | 3f752d117274d444bda44e85609aeac1acf313f3 /sys/lib/python/factotum.py | |
parent | e64efe273fcb921a61bf27d33b230c4e64fcd425 (diff) |
python, hg: tow outside the environment.
they've served us well, and can ride off into the sunset.
Diffstat (limited to 'sys/lib/python/factotum.py')
-rw-r--r-- | sys/lib/python/factotum.py | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/sys/lib/python/factotum.py b/sys/lib/python/factotum.py deleted file mode 100644 index 0a8ebcd3a..000000000 --- a/sys/lib/python/factotum.py +++ /dev/null @@ -1,102 +0,0 @@ -'''factotum for py''' - -import subprocess - -class FactotumError(Exception): - pass - -class PhaseError(Exception): - pass - -class NeedkeyError(Exception): - pass - -class Factotum: - def start(self, **args): - self.f = open('/mnt/factotum/rpc', 'r+', 0) - msg = 'start' - for k, v in args.iteritems(): - msg += ' ' + k + '=\'' + v + '\'' - while True: - self.f.write(msg) - ret = self.f.read(4096) - if ret[:7] != "needkey": break - self.needkey(ret[8:]) - if ret == "ok": return - if ret[:5] == "error": raise FactotumError(ret[6:]) - raise FactotumError("start: unexpected " + ret) - def needkey(self, string): - subprocess.call(['/bin/auth/factotum', '-g', string]) - def read(self): - while True: - self.f.write('read') - ret = self.f.read(4096) - if ret[:7] != "needkey": break - self.needkey(ret[8:]) - if ret == "ok": return "" - if ret[:3] == "ok ": return ret[3:] - if ret[:5] == "error": raise FactotumError(ret[6:]) - if ret[:5] == "phase": raise PhaseError(ret[6:]) - raise FactotumError("read: unexpected " + ret) - def write(self, data): - while True: - self.f.write('write ' + data) - ret = self.f.read(4096) - if ret[:7] != "needkey": break - self.needkey(ret[8:]) - if ret == "ok": return 0 - if ret[:3] == "toosmall ": return int(ret[4:]) - if ret[:5] == "error": raise FactotumError(ret[6:]) - if ret[:5] == "phase": raise PhaseError(ret[6:]) - raise FactotumError("write: unexpected " + ret) - def attr(self): - self.f.write('attr') - ret = self.f.read(4096) - if ret[:5] == "error": raise FactotumError(ret[6:]) - if ret[:3] == "ok ": - dict = {} - ret = ret[3:] - mode = 0 - key = "" - value = "" - while ret != "": - if mode == 0: - if ret[0] == '=': - if ret[1] == '\'': - mode = 2 - ret = ret[1:] - else: - mode = 1 - else: - key += ret[0] - elif mode == 1: - if ret[0] == ' ': - dict[key] = value - key = "" - value = "" - mode = 0 - else: - value += ret[0] - elif mode == 2: - if ret[0] == '\'': - ret = ret[1:] - dict[key] = value - key = "" - value = "" - mode = 0 - else: - value += ret[0] - if ret != "": ret = ret[1:] - if key != "": - dict[key] = value - return dict - raise FactotumError("unexpected " + ret) - def close(self): - self.f.close() - def delkey(self, **args): - f = open('/mnt/factotum/ctl', 'w', 0) - msg = 'delkey' - for k, v in args.iteritems(): - msg += ' ' + k + '=\'' + v + '\'' - f.write(msg) - f.close() |