read public keys from vsys. Thanks to Giovanni
Barış Metin [Wed, 23 Jun 2010 15:05:27 +0000 (17:05 +0200)]
omf_keys/key_fs.py

index b9f6c33..383b432 100644 (file)
 
 
 import os
+import sys
 import stat
 import errno
 import fuse
-import sys
+import fcntl
+import select
 from fuse import Fuse
 
 fuse.fuse_python_api = (0, 2)
@@ -25,9 +27,20 @@ fuse.fuse_python_api = (0, 2)
 keys_dir = "/keys"
 keys_file = os.path.join(keys_dir, "all")
 
-# TODO: for Giovanni
 def read_keys():
-    return "reading PLC users' public keys\n"
+    fin = os.open("/vsys/publickeys.in", os.O_NONBLOCK | os.O_WRONLY)
+    fout = os.open("/vsys/publickeys.out", os.O_NONBLOCK | os.O_RDONLY)
+    
+    in_flags = fcntl.fcntl(fin, fcntl.F_GETFL)
+    out_flags = fcntl.fcntl(fin, fcntl.F_GETFL)
+    
+    res = select.select([fout], [], [])
+    
+    fcntl.fcntl(fin, fcntl.F_SETFL, in_flags & ~os.O_NONBLOCK)
+    fcntl.fcntl(fout, fcntl.F_SETFL, out_flags & ~os.O_NONBLOCK)
+    
+    f = os.fdopen(fout, "r")
+    return f.read()
 
 class MyStat(fuse.Stat):
     def __init__(self):