1 from sfa.trust.certificate import Keypair, Certificate
2 from sfa.client.sfaserverproxy import SfaServerProxy
3 from sfa.client.return_value import ReturnValue
5 from manifold.core.query import Query
7 from django.shortcuts import render_to_response
9 from unfold.loginrequired import LoginRequiredView
11 from rest import ObjectRequest, error
13 from string import join
15 from django.http import HttpResponse
16 from rest import error
19 def dispatch(request, method):
25 if request.method == 'POST':
26 req_items = request.POST
27 elif request.method == 'GET':
28 req_items = request.GET
30 for el in req_items.items():
31 if el[0].startswith('rspec'):
33 if el[0].startswith('platform'):
34 platforms += req_items.getlist('platform[]')
35 elif el[0].startswith('options'):
36 options += req_items.getlist('options[]')
39 platforms.append('myslice')
40 #results = {'method':method,'platforms':platforms,'rspec':rspec,'options':options}
42 from manifoldapi.manifoldapi import execute_admin_query
44 platform_query = Query().get('local:platform').filter_by('platform', '==', pf).select('config')
45 platform_result = execute_admin_query(request, platform_query)
46 platform = json.loads(platform_result[0]['config'])
48 if 'sm' in platform and len(platform['sm']) > 0:
50 server_url = platform['sm']
51 if 'rm' in platform and len(platform['rm']) > 0:
53 server_url = platform['rm']
54 if 'registry' in platform and len(platform['registry']) > 0:
56 server_url = platform['registry']
58 pkey_path = os.path.abspath(platform['user_private_key'])
59 if not os.path.isfile(pkey_path) :
60 return HttpResponse(json.dumps({'error' : '-2'}), content_type="application/json")
61 pkey_file = open(pkey_path,'r')
62 pkey = pkey_file.read()
63 x = pkey.encode('latin1')
64 keypair = Keypair(string=x)
65 self_signed = Certificate(subject = platform['user'])
66 self_signed.set_pubkey(keypair)
67 self_signed.set_issuer(keypair, subject=platform['user'].encode('latin1'))
69 sscert_path = self_signed.save_to_random_tmp_file()
70 print "path of tmp sscert: %s" % sscert_path
72 server = SfaServerProxy(server_url, pkey_path, sscert_path)
73 os.remove(sscert_path)
75 if method == "GetVersion":
76 print "this is the result of GetVersion:"
77 result = server.GetVersion()
79 return HttpResponse(json.dumps({'error' : '-1','msg':'method not supported yet'}), content_type="application/json")
82 return HttpResponse(json.dumps(results), content_type="application/json")