author | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2011-10-06 00:36:10 (UTC) |
---|---|---|
committer | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2011-10-06 00:36:10 (UTC) |
commit | 6ba274c79e60e417132b260bd0117c5a68121387 (patch) (unidiff) | |
tree | 57c1f95d0fbf9b80312c5c6b6f4a4f951e31c770 /backend | |
parent | 13ebf1b1987a1566d081ff1ba89b4dca197b7d2e (diff) | |
download | clipperz-6ba274c79e60e417132b260bd0117c5a68121387.zip clipperz-6ba274c79e60e417132b260bd0117c5a68121387.tar.gz clipperz-6ba274c79e60e417132b260bd0117c5a68121387.tar.bz2 |
Fixed the copyright headers
-rw-r--r-- | backend/python/src/clipperz.py | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/backend/python/src/clipperz.py b/backend/python/src/clipperz.py index c8d91de..bd5d030 100644 --- a/backend/python/src/clipperz.py +++ b/backend/python/src/clipperz.py | |||
@@ -1,217 +1,214 @@ | |||
1 | # | 1 | # |
2 | #Copyright 2008-2011 Clipperz Srl | 2 | #Copyright 2008-2011 Clipperz Srl |
3 | # | 3 | # |
4 | #This file is part of Clipperz's Javascript Crypto Library. | 4 | #This file is part of Clipperz Community Edition. |
5 | #Javascript Crypto Library provides web developers with an extensive | 5 | #Clipperz Community Edition is an online password manager. |
6 | #and efficient set of cryptographic functions. The library aims to | ||
7 | #obtain maximum execution speed while preserving modularity and | ||
8 | #reusability. | ||
9 | #For further information about its features and functionalities please | 6 | #For further information about its features and functionalities please |
10 | #refer to http://www.clipperz.com | 7 | #refer to http://www.clipperz.com. |
11 | # | 8 | # |
12 | #* Javascript Crypto Library is free software: you can redistribute | 9 | #* Clipperz Community Edition is free software: you can redistribute |
13 | # it and/or modify it under the terms of the GNU Affero General Public | 10 | # it and/or modify it under the terms of the GNU Affero General Public |
14 | # License as published by the Free Software Foundation, either version | 11 | # License as published by the Free Software Foundation, either version |
15 | # 3 of the License, or (at your option) any later version. | 12 | # 3 of the License, or (at your option) any later version. |
16 | # | 13 | # |
17 | #* Javascript Crypto Library is distributed in the hope that it will | 14 | #* Clipperz Community Edition is distributed in the hope that it will |
18 | # be useful, but WITHOUT ANY WARRANTY; without even the implied | 15 | # be useful, but WITHOUT ANY WARRANTY; without even the implied |
19 | # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 16 | # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
20 | # See the GNU Affero General Public License for more details. | 17 | # See the GNU Affero General Public License for more details. |
21 | # | 18 | # |
22 | #* You should have received a copy of the GNU Affero General Public | 19 | #* You should have received a copy of the GNU Affero General Public |
23 | # License along with Javascript Crypto Library. If not, see | 20 | # License along with Clipperz Community Edition. If not, see |
24 | # <http://www.gnu.org/licenses/>. | 21 | # <http://www.gnu.org/licenses/>. |
25 | # | 22 | # |
26 | 23 | ||
27 | import os | 24 | import os |
28 | import cgi | 25 | import cgi |
29 | import wsgiref.handlers | 26 | import wsgiref.handlers |
30 | 27 | ||
31 | import datetime | 28 | import datetime |
32 | import uuid | 29 | import uuid |
33 | import random | 30 | import random |
34 | import hashlib | 31 | import hashlib |
35 | 32 | ||
36 | import logging | 33 | import logging |
37 | 34 | ||
38 | from google.appengine.api import users | 35 | from google.appengine.api import users |
39 | from google.appengine.ext import webapp | 36 | from google.appengine.ext import webapp |
40 | from google.appengine.ext import db | 37 | from google.appengine.ext import db |
41 | from google.appengine.ext.webapp import template | 38 | from google.appengine.ext.webapp import template |
42 | 39 | ||
43 | from django.utils import simplejson | 40 | from django.utils import simplejson |
44 | 41 | ||
45 | #============================================================================== | 42 | #============================================================================== |
46 | 43 | ||
47 | sessionTimeout = datetime.timedelta(minutes=-2) | 44 | sessionTimeout = datetime.timedelta(minutes=-2) |
48 | 45 | ||
49 | def randomSeed(): | 46 | def randomSeed(): |
50 | return hex(random.getrandbits(32*8))[2:-1] | 47 | return hex(random.getrandbits(32*8))[2:-1] |
51 | 48 | ||
52 | def clipperzHash(aString): | 49 | def clipperzHash(aString): |
53 | #logging.info(">>> string: " + aString) | 50 | #logging.info(">>> string: " + aString) |
54 | firstRound = hashlib.sha256() | 51 | firstRound = hashlib.sha256() |
55 | firstRound.update(aString) | 52 | firstRound.update(aString) |
56 | #logging.info("firstRound: " + firstRound.hexdigest() + " - " + firstRound.digest()) | 53 | #logging.info("firstRound: " + firstRound.hexdigest() + " - " + firstRound.digest()) |
57 | result = hashlib.sha256() | 54 | result = hashlib.sha256() |
58 | result.update(firstRound.digest()) | 55 | result.update(firstRound.digest()) |
59 | #logging.info("<<< finalResul: " + result.hexdigest()) | 56 | #logging.info("<<< finalResul: " + result.hexdigest()) |
60 | 57 | ||
61 | return result.hexdigest() | 58 | return result.hexdigest() |
62 | 59 | ||
63 | #============================================================================== | 60 | #============================================================================== |
64 | 61 | ||
65 | class User(db.Model): | 62 | class User(db.Model): |
66 | username= db.StringProperty() | 63 | username= db.StringProperty() |
67 | srp_s = db.StringProperty() | 64 | srp_s = db.StringProperty() |
68 | srp_v = db.StringProperty() | 65 | srp_v = db.StringProperty() |
69 | header = db.TextProperty() | 66 | header = db.TextProperty() |
70 | statistics= db.TextProperty() | 67 | statistics= db.TextProperty() |
71 | auth_version= db.StringProperty() | 68 | auth_version= db.StringProperty() |
72 | version = db.StringProperty() | 69 | version = db.StringProperty() |
73 | lock = db.StringProperty() | 70 | lock = db.StringProperty() |
74 | 71 | ||
75 | def updateCredentials(self, someCredentials): | 72 | def updateCredentials(self, someCredentials): |
76 | self.username = someCredentials['C'] | 73 | self.username = someCredentials['C'] |
77 | self.srp_s = someCredentials['s'] | 74 | self.srp_s = someCredentials['s'] |
78 | self.srp_v = someCredentials['v'] | 75 | self.srp_v = someCredentials['v'] |
79 | self.auth_version= someCredentials['version'] | 76 | self.auth_version= someCredentials['version'] |
80 | 77 | ||
81 | def update(self, someData): | 78 | def update(self, someData): |
82 | self.header = someData['header'] | 79 | self.header = someData['header'] |
83 | self.statistics= someData['statistics'] | 80 | self.statistics= someData['statistics'] |
84 | self.version= someData['version'] | 81 | self.version= someData['version'] |
85 | self.lock = someData['lock'] | 82 | self.lock = someData['lock'] |
86 | 83 | ||
87 | #------------------------------------------------------------------------------ | 84 | #------------------------------------------------------------------------------ |
88 | 85 | ||
89 | class Record(db.Model): | 86 | class Record(db.Model): |
90 | user = db.ReferenceProperty(User) | 87 | user = db.ReferenceProperty(User) |
91 | reference = db.StringProperty() | 88 | reference = db.StringProperty() |
92 | data = db.TextProperty() | 89 | data = db.TextProperty() |
93 | version = db.StringProperty() | 90 | version = db.StringProperty() |
94 | creation_date= db.DateTimeProperty(auto_now_add=True) | 91 | creation_date= db.DateTimeProperty(auto_now_add=True) |
95 | update_date = db.DateTimeProperty(auto_now_add=True) | 92 | update_date = db.DateTimeProperty(auto_now_add=True) |
96 | access_date = db.DateTimeProperty(auto_now_add=True) | 93 | access_date = db.DateTimeProperty(auto_now_add=True) |
97 | 94 | ||
98 | #------------------------------------------------------------------------------ | 95 | #------------------------------------------------------------------------------ |
99 | 96 | ||
100 | class RecordVersion(db.Model): | 97 | class RecordVersion(db.Model): |
101 | record = db.ReferenceProperty(Record) | 98 | record = db.ReferenceProperty(Record) |
102 | reference = db.StringProperty() | 99 | reference = db.StringProperty() |
103 | header = db.TextProperty() | 100 | header = db.TextProperty() |
104 | data = db.TextProperty() | 101 | data = db.TextProperty() |
105 | version = db.StringProperty() | 102 | version = db.StringProperty() |
106 | previousVersionKey= db.StringProperty() | 103 | previousVersionKey= db.StringProperty() |
107 | previousVersion = db.SelfReferenceProperty() | 104 | previousVersion = db.SelfReferenceProperty() |
108 | creation_date = db.DateTimeProperty(auto_now_add=True) | 105 | creation_date = db.DateTimeProperty(auto_now_add=True) |
109 | update_date = db.DateTimeProperty(auto_now_add=True) | 106 | update_date = db.DateTimeProperty(auto_now_add=True) |
110 | access_date = db.DateTimeProperty(auto_now_add=True) | 107 | access_date = db.DateTimeProperty(auto_now_add=True) |
111 | 108 | ||
112 | def update(self, someData): | 109 | def update(self, someData): |
113 | recordData = someData['record']; | 110 | recordData = someData['record']; |
114 | self.parent().reference =recordData['reference'] | 111 | self.parent().reference =recordData['reference'] |
115 | self.parent().data = recordData['data'] | 112 | self.parent().data = recordData['data'] |
116 | self.parent().version = recordData['version'] | 113 | self.parent().version = recordData['version'] |
117 | self.parent().update_date =datetime.datetime.now() | 114 | self.parent().update_date =datetime.datetime.now() |
118 | 115 | ||
119 | recordVersionData = someData['currentRecordVersion']; | 116 | recordVersionData = someData['currentRecordVersion']; |
120 | self.reference = recordVersionData ['reference'] | 117 | self.reference = recordVersionData ['reference'] |
121 | self.data = recordVersionData ['data'] | 118 | self.data = recordVersionData ['data'] |
122 | self.version = recordVersionData ['version'] | 119 | self.version = recordVersionData ['version'] |
123 | #self.previous_version =#recordVersionData ['previousVersion'] | 120 | #self.previous_version =#recordVersionData ['previousVersion'] |
124 | self.previous_version_key =recordVersionData ['previousVersionKey'] | 121 | self.previous_version_key =recordVersionData ['previousVersionKey'] |
125 | self.update_date = datetime.datetime.now() | 122 | self.update_date = datetime.datetime.now() |
126 | 123 | ||
127 | #------------------------------------------------------------------------------ | 124 | #------------------------------------------------------------------------------ |
128 | 125 | ||
129 | class OneTimePassword(db.Model): | 126 | class OneTimePassword(db.Model): |
130 | user = db.ReferenceProperty(User) | 127 | user = db.ReferenceProperty(User) |
131 | status = db.StringProperty() | 128 | status = db.StringProperty() |
132 | reference = db.StringProperty() | 129 | reference = db.StringProperty() |
133 | keyValue = db.StringProperty() | 130 | keyValue = db.StringProperty() |
134 | keyChecksum = db.StringProperty() | 131 | keyChecksum = db.StringProperty() |
135 | data = db.TextProperty() | 132 | data = db.TextProperty() |
136 | version = db.StringProperty() | 133 | version = db.StringProperty() |
137 | creation_date= db.DateTimeProperty(auto_now_add=True) | 134 | creation_date= db.DateTimeProperty(auto_now_add=True) |
138 | request_date= db.DateTimeProperty() | 135 | request_date= db.DateTimeProperty() |
139 | usage_date = db.DateTimeProperty() | 136 | usage_date = db.DateTimeProperty() |
140 | 137 | ||
141 | def update(self, someParameters, aStatus): | 138 | def update(self, someParameters, aStatus): |
142 | self.reference = someParameters['reference'] | 139 | self.reference = someParameters['reference'] |
143 | self.keyValue = someParameters['key'] | 140 | self.keyValue = someParameters['key'] |
144 | self.keyChecksum = someParameters['keyChecksum'] | 141 | self.keyChecksum = someParameters['keyChecksum'] |
145 | self.data = someParameters['data'] | 142 | self.data = someParameters['data'] |
146 | self.version = someParameters['version'] | 143 | self.version = someParameters['version'] |
147 | self.status = aStatus | 144 | self.status = aStatus |
148 | 145 | ||
149 | def reset(self, aStatus): | 146 | def reset(self, aStatus): |
150 | self.data = "" | 147 | self.data = "" |
151 | self.status =aStatus | 148 | self.status =aStatus |
152 | 149 | ||
153 | return self | 150 | return self |
154 | 151 | ||
155 | #------------------------------------------------------------------------------ | 152 | #------------------------------------------------------------------------------ |
156 | 153 | ||
157 | class Session(db.Expando): | 154 | class Session(db.Expando): |
158 | sessionId= db.StringProperty() | 155 | sessionId= db.StringProperty() |
159 | access_date= db.DateTimeProperty() | 156 | access_date= db.DateTimeProperty() |
160 | 157 | ||
161 | #============================================================================== | 158 | #============================================================================== |
162 | 159 | ||
163 | class MainPage(webapp.RequestHandler): | 160 | class MainPage(webapp.RequestHandler): |
164 | def get(self): | 161 | def get(self): |
165 | path = os.path.join(os.path.dirname(__file__), 'static%s' % self.request.path) | 162 | path = os.path.join(os.path.dirname(__file__), 'static%s' % self.request.path) |
166 | self.response.out.write(template.render(path, {})) | 163 | self.response.out.write(template.render(path, {})) |
167 | 164 | ||
168 | #============================================================================== | 165 | #============================================================================== |
169 | 166 | ||
170 | class XHR(webapp.RequestHandler): | 167 | class XHR(webapp.RequestHandler): |
171 | 168 | ||
172 | #========================================================================== | 169 | #========================================================================== |
173 | 170 | ||
174 | def get(self): | 171 | def get(self): |
175 | logging.info("self.request.path: " + self.request.path) | 172 | logging.info("self.request.path: " + self.request.path) |
176 | if self.request.path == "/dump": | 173 | if self.request.path == "/dump": |
177 | session = self.getSession() | 174 | session = self.getSession() |
178 | userData = {} | 175 | userData = {} |
179 | offline_data_placeholder = "" | 176 | offline_data_placeholder = "" |
180 | 177 | ||
181 | user = db.Query(User).filter('username =', session.C).get() | 178 | user = db.Query(User).filter('username =', session.C).get() |
182 | 179 | ||
183 | userData['users'] = { | 180 | userData['users'] = { |
184 | 'catchAllUser': { | 181 | 'catchAllUser': { |
185 | '__masterkey_test_value__': 'masterkey', | 182 | '__masterkey_test_value__': 'masterkey', |
186 | 's': '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', | 183 | 's': '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', |
187 | 'v': '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' | 184 | 'v': '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' |
188 | } | 185 | } |
189 | } | 186 | } |
190 | 187 | ||
191 | records = {} | 188 | records = {} |
192 | for currentRecord in db.Query(Record).ancestor(user): | 189 | for currentRecord in db.Query(Record).ancestor(user): |
193 | versions = {} | 190 | versions = {} |
194 | for currentVersion in db.Query(RecordVersion).ancestor(currentRecord): | 191 | for currentVersion in db.Query(RecordVersion).ancestor(currentRecord): |
195 | versions[currentVersion.reference] ={ | 192 | versions[currentVersion.reference] ={ |
196 | 'header': currentVersion.header, | 193 | 'header': currentVersion.header, |
197 | 'data': currentVersion.data, | 194 | 'data': currentVersion.data, |
198 | 'version': currentVersion.version, | 195 | 'version': currentVersion.version, |
199 | 'creationDate':str(currentVersion.creation_date), | 196 | 'creationDate':str(currentVersion.creation_date), |
200 | 'updateDate':str(currentVersion.update_date), | 197 | 'updateDate':str(currentVersion.update_date), |
201 | 'accessDate':str(currentVersion.access_date) | 198 | 'accessDate':str(currentVersion.access_date) |
202 | } | 199 | } |
203 | 200 | ||
204 | records[currentRecord.reference] = { | 201 | records[currentRecord.reference] = { |
205 | 'data': currentRecord.data, | 202 | 'data': currentRecord.data, |
206 | 'version': currentRecord.version, | 203 | 'version': currentRecord.version, |
207 | 'creationDate': str(currentRecord.creation_date), | 204 | 'creationDate': str(currentRecord.creation_date), |
208 | 'updateDate': str(currentRecord.update_date), | 205 | 'updateDate': str(currentRecord.update_date), |
209 | 'accessDate': str(currentRecord.access_date), | 206 | 'accessDate': str(currentRecord.access_date), |
210 | 'currentVersion':currentVersion.reference, | 207 | 'currentVersion':currentVersion.reference, |
211 | 'versions': versions | 208 | 'versions': versions |
212 | } | 209 | } |
213 | 210 | ||
214 | userData['users'][user.username] = { | 211 | userData['users'][user.username] = { |
215 | 's': user.srp_s, | 212 | 's': user.srp_s, |
216 | 'v': user.srp_v, | 213 | 'v': user.srp_v, |
217 | 'version': user.auth_version, | 214 | 'version': user.auth_version, |