8888 print ('Option reading error (ssl).' )
8989 exit (1 )
9090
91- def sql_to_json (result ):
91+ def sql_to_json (result , list = False ):
9292 """
9393 This function prettify a sql result into json
9494 """
95- d_result = {}
96- if result is not None :
95+ if result is None :
96+ return None
97+ if list :
98+ d_result = {}
99+ for res in result :
100+ d_sub_result = {}
101+ d_sub_result ['username' ] = res [0 ]
102+ d_sub_result ['realname' ] = res [1 ]
103+ d_sub_result ['status' ] = STATES [res [2 ]]
104+ d_sub_result ['expiration' ] = datetime .fromtimestamp (res [3 ]).strftime ('%Y-%m-%d %H:%M:%S' )
105+ d_sub_result ['ssh_key_hash' ] = res [4 ]
106+ d_result [res [0 ]] = d_sub_result
107+ return dumps (d_result , indent = 4 , sort_keys = True )
108+ else :
109+ d_result = {}
97110 d_result ['username' ] = result [0 ]
98111 d_result ['realname' ] = result [1 ]
99112 d_result ['status' ] = STATES [result [2 ]]
100113 d_result ['expiration' ] = datetime .fromtimestamp (result [3 ]).strftime ('%Y-%m-%d %H:%M:%S' )
101114 d_result ['ssh_key_hash' ] = result [4 ]
102- return dumps (d_result , indent = 4 , sort_keys = True )
115+ return dumps (d_result , indent = 4 , sort_keys = True )
103116
104117def pg_connection (
105118 dbname = SERVER_OPTS ['db_name' ],
@@ -129,6 +142,7 @@ def list_keys(username=None, realname=None):
129142 if pg_conn is None :
130143 return message
131144 cur = pg_conn .cursor ()
145+ is_list = False
132146
133147 if realname is not None :
134148 cur .execute ("""SELECT * FROM USERS WHERE lower(REALNAME)=lower('%s')""" % realname )
@@ -139,9 +153,10 @@ def list_keys(username=None, realname=None):
139153 else :
140154 cur .execute ("""SELECT * FROM USERS""" )
141155 result = cur .fetchall ()
156+ is_list = True
142157 cur .close ()
143158 pg_conn .close ()
144- return sql_to_json (result )
159+ return sql_to_json (result , list = is_list )
145160
146161def ldap_authentification (admin = False ):
147162 """
@@ -199,6 +214,9 @@ def GET(self, username):
199214 return message
200215 cur = pg_conn .cursor ()
201216
217+ if username == 'all' and do_status :
218+ return list_keys ()
219+
202220 # Search if key already exists
203221 cur .execute ("""SELECT * FROM USERS WHERE NAME='%s'""" % username )
204222 user = cur .fetchone ()
0 commit comments