phanterpwa 13.15.1__py3-none-any.whl → 13.16.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- phanterpwa/__init__.py +1 -1
- phanterpwa/backend/request_handlers/admin.py +108 -0
- phanterpwa/backend/request_handlers/auth.py +218 -0
- phanterpwa/backend/request_handlers/cas.py +18 -0
- phanterpwa/backend/request_handlers/credentials.py +90 -0
- phanterpwa/backend/request_handlers/errors.py +18 -0
- phanterpwa/backend/request_handlers/i18n_server.py +18 -0
- phanterpwa/backend/request_handlers/internal_messages.py +36 -0
- phanterpwa/backend/request_handlers/oauth.py +36 -0
- {phanterpwa-13.15.1.dist-info → phanterpwa-13.16.0.dist-info}/METADATA +1 -1
- {phanterpwa-13.15.1.dist-info → phanterpwa-13.16.0.dist-info}/RECORD +16 -16
- {phanterpwa-13.15.1.dist-info → phanterpwa-13.16.0.dist-info}/LICENSE +0 -0
- {phanterpwa-13.15.1.dist-info → phanterpwa-13.16.0.dist-info}/WHEEL +0 -0
- {phanterpwa-13.15.1.dist-info → phanterpwa-13.16.0.dist-info}/dependency_links.txt +0 -0
- {phanterpwa-13.15.1.dist-info → phanterpwa-13.16.0.dist-info}/entry_points.txt +0 -0
- {phanterpwa-13.15.1.dist-info → phanterpwa-13.16.0.dist-info}/top_level.txt +0 -0
phanterpwa/__init__.py
CHANGED
|
@@ -92,6 +92,24 @@ class UserManager(web.RequestHandler):
|
|
|
92
92
|
def check_origin(self, origin):
|
|
93
93
|
return True
|
|
94
94
|
|
|
95
|
+
def _request_summary(self) -> str:
|
|
96
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
97
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
98
|
+
self.request.remote_ip
|
|
99
|
+
summary = "{0} {1} ({2})".format(
|
|
100
|
+
self.request.method,
|
|
101
|
+
self.request.uri,
|
|
102
|
+
client_ip,
|
|
103
|
+
)
|
|
104
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
105
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
106
|
+
self.request.method,
|
|
107
|
+
self.request.uri,
|
|
108
|
+
client_ip,
|
|
109
|
+
self.phanterpwa_current_user.email
|
|
110
|
+
)
|
|
111
|
+
return summary
|
|
112
|
+
|
|
95
113
|
def options(self, *args):
|
|
96
114
|
self.set_status(200)
|
|
97
115
|
self.write({"status": "OK"})
|
|
@@ -686,6 +704,24 @@ class UserImage(web.RequestHandler):
|
|
|
686
704
|
def check_origin(self, origin):
|
|
687
705
|
return True
|
|
688
706
|
|
|
707
|
+
def _request_summary(self) -> str:
|
|
708
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
709
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
710
|
+
self.request.remote_ip
|
|
711
|
+
summary = "{0} {1} ({2})".format(
|
|
712
|
+
self.request.method,
|
|
713
|
+
self.request.uri,
|
|
714
|
+
client_ip,
|
|
715
|
+
)
|
|
716
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
717
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
718
|
+
self.request.method,
|
|
719
|
+
self.request.uri,
|
|
720
|
+
client_ip,
|
|
721
|
+
self.phanterpwa_current_user.email
|
|
722
|
+
)
|
|
723
|
+
return summary
|
|
724
|
+
|
|
689
725
|
def options(self, *args):
|
|
690
726
|
self.set_status(200)
|
|
691
727
|
return self.write({"status": "OK"})
|
|
@@ -778,6 +814,24 @@ class RoleManager(web.RequestHandler):
|
|
|
778
814
|
def check_origin(self, origin):
|
|
779
815
|
return True
|
|
780
816
|
|
|
817
|
+
def _request_summary(self) -> str:
|
|
818
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
819
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
820
|
+
self.request.remote_ip
|
|
821
|
+
summary = "{0} {1} ({2})".format(
|
|
822
|
+
self.request.method,
|
|
823
|
+
self.request.uri,
|
|
824
|
+
client_ip,
|
|
825
|
+
)
|
|
826
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
827
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
828
|
+
self.request.method,
|
|
829
|
+
self.request.uri,
|
|
830
|
+
client_ip,
|
|
831
|
+
self.phanterpwa_current_user.email
|
|
832
|
+
)
|
|
833
|
+
return summary
|
|
834
|
+
|
|
781
835
|
def options(self, *args):
|
|
782
836
|
self.set_status(200)
|
|
783
837
|
self.write({"status": "OK"})
|
|
@@ -1121,6 +1175,24 @@ class Impersonate(web.RequestHandler):
|
|
|
1121
1175
|
def check_origin(self, origin):
|
|
1122
1176
|
return True
|
|
1123
1177
|
|
|
1178
|
+
def _request_summary(self) -> str:
|
|
1179
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
1180
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
1181
|
+
self.request.remote_ip
|
|
1182
|
+
summary = "{0} {1} ({2})".format(
|
|
1183
|
+
self.request.method,
|
|
1184
|
+
self.request.uri,
|
|
1185
|
+
client_ip,
|
|
1186
|
+
)
|
|
1187
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
1188
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
1189
|
+
self.request.method,
|
|
1190
|
+
self.request.uri,
|
|
1191
|
+
client_ip,
|
|
1192
|
+
self.phanterpwa_current_user.email
|
|
1193
|
+
)
|
|
1194
|
+
return summary
|
|
1195
|
+
|
|
1124
1196
|
def options(self, *args):
|
|
1125
1197
|
self.set_status(200)
|
|
1126
1198
|
self.write({"status": "OK"})
|
|
@@ -1188,6 +1260,24 @@ class RequestAccount(web.RequestHandler):
|
|
|
1188
1260
|
def check_origin(self, origin):
|
|
1189
1261
|
return True
|
|
1190
1262
|
|
|
1263
|
+
def _request_summary(self) -> str:
|
|
1264
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
1265
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
1266
|
+
self.request.remote_ip
|
|
1267
|
+
summary = "{0} {1} ({2})".format(
|
|
1268
|
+
self.request.method,
|
|
1269
|
+
self.request.uri,
|
|
1270
|
+
client_ip,
|
|
1271
|
+
)
|
|
1272
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
1273
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
1274
|
+
self.request.method,
|
|
1275
|
+
self.request.uri,
|
|
1276
|
+
client_ip,
|
|
1277
|
+
self.phanterpwa_current_user.email
|
|
1278
|
+
)
|
|
1279
|
+
return summary
|
|
1280
|
+
|
|
1191
1281
|
def get(self, *args, **kargs):
|
|
1192
1282
|
self.set_status(200)
|
|
1193
1283
|
self.write({"status": "OK"})
|
|
@@ -1377,6 +1467,24 @@ class ChangePassword(web.RequestHandler):
|
|
|
1377
1467
|
def check_origin(self, origin):
|
|
1378
1468
|
return True
|
|
1379
1469
|
|
|
1470
|
+
def _request_summary(self) -> str:
|
|
1471
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
1472
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
1473
|
+
self.request.remote_ip
|
|
1474
|
+
summary = "{0} {1} ({2})".format(
|
|
1475
|
+
self.request.method,
|
|
1476
|
+
self.request.uri,
|
|
1477
|
+
client_ip,
|
|
1478
|
+
)
|
|
1479
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
1480
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
1481
|
+
self.request.method,
|
|
1482
|
+
self.request.uri,
|
|
1483
|
+
client_ip,
|
|
1484
|
+
self.phanterpwa_current_user.email
|
|
1485
|
+
)
|
|
1486
|
+
return summary
|
|
1487
|
+
|
|
1380
1488
|
@requires_authentication(roles_name="root")
|
|
1381
1489
|
@check_private_csrf_token(form_identify=["phanterpwa-form-auth_user"])
|
|
1382
1490
|
def post(self):
|
|
@@ -43,6 +43,7 @@ from phanterpwa.gallery.integrationDAL import PhanterpwaGalleryUserImage
|
|
|
43
43
|
from tornado import (
|
|
44
44
|
web
|
|
45
45
|
)
|
|
46
|
+
from tornado.log import access_log
|
|
46
47
|
from phanterpwa.backend.security import (
|
|
47
48
|
Serialize,
|
|
48
49
|
SignatureExpired,
|
|
@@ -283,6 +284,7 @@ class Auth(web.RequestHandler):
|
|
|
283
284
|
self.Translator_email = Translator_email
|
|
284
285
|
self.i18nTranslator = i18nTranslator
|
|
285
286
|
self.SMSSender = SMSSender
|
|
287
|
+
self.logger_api = access_log
|
|
286
288
|
if logger_api:
|
|
287
289
|
self.logger_api = logger_api
|
|
288
290
|
if i18nTranslator:
|
|
@@ -315,6 +317,24 @@ class Auth(web.RequestHandler):
|
|
|
315
317
|
def check_origin(self, origin):
|
|
316
318
|
return True
|
|
317
319
|
|
|
320
|
+
def _request_summary(self) -> str:
|
|
321
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
322
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
323
|
+
self.request.remote_ip
|
|
324
|
+
summary = "{0} {1} ({2})".format(
|
|
325
|
+
self.request.method,
|
|
326
|
+
self.request.uri,
|
|
327
|
+
client_ip,
|
|
328
|
+
)
|
|
329
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
330
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
331
|
+
self.request.method,
|
|
332
|
+
self.request.uri,
|
|
333
|
+
client_ip,
|
|
334
|
+
self.phanterpwa_current_user.email
|
|
335
|
+
)
|
|
336
|
+
return summary
|
|
337
|
+
|
|
318
338
|
def options(self, *args):
|
|
319
339
|
self.set_status(200)
|
|
320
340
|
self.write({"status": "OK"})
|
|
@@ -1139,6 +1159,24 @@ class Activity(web.RequestHandler):
|
|
|
1139
1159
|
def check_origin(self, origin):
|
|
1140
1160
|
return True
|
|
1141
1161
|
|
|
1162
|
+
def _request_summary(self) -> str:
|
|
1163
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
1164
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
1165
|
+
self.request.remote_ip
|
|
1166
|
+
summary = "{0} {1} ({2})".format(
|
|
1167
|
+
self.request.method,
|
|
1168
|
+
self.request.uri,
|
|
1169
|
+
client_ip,
|
|
1170
|
+
)
|
|
1171
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
1172
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
1173
|
+
self.request.method,
|
|
1174
|
+
self.request.uri,
|
|
1175
|
+
client_ip,
|
|
1176
|
+
self.phanterpwa_current_user.email
|
|
1177
|
+
)
|
|
1178
|
+
return summary
|
|
1179
|
+
|
|
1142
1180
|
def options(self, *args):
|
|
1143
1181
|
self.set_status(200)
|
|
1144
1182
|
self.write({"status": "OK"})
|
|
@@ -1206,6 +1244,24 @@ class TwoFactor(web.RequestHandler):
|
|
|
1206
1244
|
def check_origin(self, origin):
|
|
1207
1245
|
return True
|
|
1208
1246
|
|
|
1247
|
+
def _request_summary(self) -> str:
|
|
1248
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
1249
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
1250
|
+
self.request.remote_ip
|
|
1251
|
+
summary = "{0} {1} ({2})".format(
|
|
1252
|
+
self.request.method,
|
|
1253
|
+
self.request.uri,
|
|
1254
|
+
client_ip,
|
|
1255
|
+
)
|
|
1256
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
1257
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
1258
|
+
self.request.method,
|
|
1259
|
+
self.request.uri,
|
|
1260
|
+
client_ip,
|
|
1261
|
+
self.phanterpwa_current_user.email
|
|
1262
|
+
)
|
|
1263
|
+
return summary
|
|
1264
|
+
|
|
1209
1265
|
def options(self, *args):
|
|
1210
1266
|
self.set_status(200)
|
|
1211
1267
|
self.write({"status": "OK"})
|
|
@@ -1440,6 +1496,24 @@ class LockUser(web.RequestHandler):
|
|
|
1440
1496
|
def check_origin(self, origin):
|
|
1441
1497
|
return True
|
|
1442
1498
|
|
|
1499
|
+
def _request_summary(self) -> str:
|
|
1500
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
1501
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
1502
|
+
self.request.remote_ip
|
|
1503
|
+
summary = "{0} {1} ({2})".format(
|
|
1504
|
+
self.request.method,
|
|
1505
|
+
self.request.uri,
|
|
1506
|
+
client_ip,
|
|
1507
|
+
)
|
|
1508
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
1509
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
1510
|
+
self.request.method,
|
|
1511
|
+
self.request.uri,
|
|
1512
|
+
client_ip,
|
|
1513
|
+
self.phanterpwa_current_user.email
|
|
1514
|
+
)
|
|
1515
|
+
return summary
|
|
1516
|
+
|
|
1443
1517
|
@check_client_token()
|
|
1444
1518
|
@check_user_token()
|
|
1445
1519
|
def get(self):
|
|
@@ -1498,6 +1572,24 @@ class ImageUser(web.RequestHandler):
|
|
|
1498
1572
|
def check_origin(self, origin):
|
|
1499
1573
|
return True
|
|
1500
1574
|
|
|
1575
|
+
def _request_summary(self) -> str:
|
|
1576
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
1577
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
1578
|
+
self.request.remote_ip
|
|
1579
|
+
summary = "{0} {1} ({2})".format(
|
|
1580
|
+
self.request.method,
|
|
1581
|
+
self.request.uri,
|
|
1582
|
+
client_ip,
|
|
1583
|
+
)
|
|
1584
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
1585
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
1586
|
+
self.request.method,
|
|
1587
|
+
self.request.uri,
|
|
1588
|
+
client_ip,
|
|
1589
|
+
self.phanterpwa_current_user.email
|
|
1590
|
+
)
|
|
1591
|
+
return summary
|
|
1592
|
+
|
|
1501
1593
|
@check_url_token(ignore_user_agent=True)
|
|
1502
1594
|
def get(self, *args, **kargs):
|
|
1503
1595
|
"""
|
|
@@ -1601,6 +1693,24 @@ class ChangeAccount(web.RequestHandler):
|
|
|
1601
1693
|
def check_origin(self, origin):
|
|
1602
1694
|
return True
|
|
1603
1695
|
|
|
1696
|
+
def _request_summary(self) -> str:
|
|
1697
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
1698
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
1699
|
+
self.request.remote_ip
|
|
1700
|
+
summary = "{0} {1} ({2})".format(
|
|
1701
|
+
self.request.method,
|
|
1702
|
+
self.request.uri,
|
|
1703
|
+
client_ip,
|
|
1704
|
+
)
|
|
1705
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
1706
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
1707
|
+
self.request.method,
|
|
1708
|
+
self.request.uri,
|
|
1709
|
+
client_ip,
|
|
1710
|
+
self.phanterpwa_current_user.email
|
|
1711
|
+
)
|
|
1712
|
+
return summary
|
|
1713
|
+
|
|
1604
1714
|
@check_private_csrf_token(form_identify=["phanterpwa-form-profile", "phanterpwa-form-change_account"])
|
|
1605
1715
|
def put(self, *args, **kargs):
|
|
1606
1716
|
|
|
@@ -2012,6 +2122,24 @@ class CreateAccount(web.RequestHandler):
|
|
|
2012
2122
|
def check_origin(self, origin):
|
|
2013
2123
|
return True
|
|
2014
2124
|
|
|
2125
|
+
def _request_summary(self) -> str:
|
|
2126
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
2127
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
2128
|
+
self.request.remote_ip
|
|
2129
|
+
summary = "{0} {1} ({2})".format(
|
|
2130
|
+
self.request.method,
|
|
2131
|
+
self.request.uri,
|
|
2132
|
+
client_ip,
|
|
2133
|
+
)
|
|
2134
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
2135
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
2136
|
+
self.request.method,
|
|
2137
|
+
self.request.uri,
|
|
2138
|
+
client_ip,
|
|
2139
|
+
self.phanterpwa_current_user.email
|
|
2140
|
+
)
|
|
2141
|
+
return summary
|
|
2142
|
+
|
|
2015
2143
|
@requires_no_authentication()
|
|
2016
2144
|
@check_public_csrf_token(form_identify="phanterpwa-form-register")
|
|
2017
2145
|
def post(self):
|
|
@@ -2277,6 +2405,24 @@ class RequestAccount(web.RequestHandler):
|
|
|
2277
2405
|
def check_origin(self, origin):
|
|
2278
2406
|
return True
|
|
2279
2407
|
|
|
2408
|
+
def _request_summary(self) -> str:
|
|
2409
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
2410
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
2411
|
+
self.request.remote_ip
|
|
2412
|
+
summary = "{0} {1} ({2})".format(
|
|
2413
|
+
self.request.method,
|
|
2414
|
+
self.request.uri,
|
|
2415
|
+
client_ip,
|
|
2416
|
+
)
|
|
2417
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
2418
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
2419
|
+
self.request.method,
|
|
2420
|
+
self.request.uri,
|
|
2421
|
+
client_ip,
|
|
2422
|
+
self.phanterpwa_current_user.email
|
|
2423
|
+
)
|
|
2424
|
+
return summary
|
|
2425
|
+
|
|
2280
2426
|
@requires_no_authentication()
|
|
2281
2427
|
@check_public_csrf_token(form_identify="phanterpwa-form-request_password")
|
|
2282
2428
|
def post(self, *args, **kargs):
|
|
@@ -2647,6 +2793,24 @@ class ActiveAccount(web.RequestHandler):
|
|
|
2647
2793
|
def check_origin(self, origin):
|
|
2648
2794
|
return True
|
|
2649
2795
|
|
|
2796
|
+
def _request_summary(self) -> str:
|
|
2797
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
2798
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
2799
|
+
self.request.remote_ip
|
|
2800
|
+
summary = "{0} {1} ({2})".format(
|
|
2801
|
+
self.request.method,
|
|
2802
|
+
self.request.uri,
|
|
2803
|
+
client_ip,
|
|
2804
|
+
)
|
|
2805
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
2806
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
2807
|
+
self.request.method,
|
|
2808
|
+
self.request.uri,
|
|
2809
|
+
client_ip,
|
|
2810
|
+
self.phanterpwa_current_user.email
|
|
2811
|
+
)
|
|
2812
|
+
return summary
|
|
2813
|
+
|
|
2650
2814
|
@check_user_token(ignore_activation=True)
|
|
2651
2815
|
def get(self, *args, **kargs):
|
|
2652
2816
|
now = datetime.now()
|
|
@@ -3140,6 +3304,24 @@ class ChangePassword(web.RequestHandler):
|
|
|
3140
3304
|
def check_origin(self, origin):
|
|
3141
3305
|
return True
|
|
3142
3306
|
|
|
3307
|
+
def _request_summary(self) -> str:
|
|
3308
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
3309
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
3310
|
+
self.request.remote_ip
|
|
3311
|
+
summary = "{0} {1} ({2})".format(
|
|
3312
|
+
self.request.method,
|
|
3313
|
+
self.request.uri,
|
|
3314
|
+
client_ip,
|
|
3315
|
+
)
|
|
3316
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
3317
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
3318
|
+
self.request.method,
|
|
3319
|
+
self.request.uri,
|
|
3320
|
+
client_ip,
|
|
3321
|
+
self.phanterpwa_current_user.email
|
|
3322
|
+
)
|
|
3323
|
+
return summary
|
|
3324
|
+
|
|
3143
3325
|
@check_private_csrf_token(form_identify="phanterpwa-form-change_password")
|
|
3144
3326
|
def post(self):
|
|
3145
3327
|
dict_arguments = {k: self.request.arguments.get(k)[0].decode('utf-8') for k in self.request.arguments}
|
|
@@ -3310,6 +3492,24 @@ class SMSGateway(web.RequestHandler):
|
|
|
3310
3492
|
def check_origin(self, origin):
|
|
3311
3493
|
return True
|
|
3312
3494
|
|
|
3495
|
+
def _request_summary(self) -> str:
|
|
3496
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
3497
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
3498
|
+
self.request.remote_ip
|
|
3499
|
+
summary = "{0} {1} ({2})".format(
|
|
3500
|
+
self.request.method,
|
|
3501
|
+
self.request.uri,
|
|
3502
|
+
client_ip,
|
|
3503
|
+
)
|
|
3504
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
3505
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
3506
|
+
self.request.method,
|
|
3507
|
+
self.request.uri,
|
|
3508
|
+
client_ip,
|
|
3509
|
+
self.phanterpwa_current_user.email
|
|
3510
|
+
)
|
|
3511
|
+
return summary
|
|
3512
|
+
|
|
3313
3513
|
def options(self, *args):
|
|
3314
3514
|
self.set_status(200)
|
|
3315
3515
|
self.write({"status": "OK"})
|
|
@@ -3495,6 +3695,24 @@ class AuthUserAutoComplete(web.RequestHandler):
|
|
|
3495
3695
|
def check_origin(self, origin):
|
|
3496
3696
|
return True
|
|
3497
3697
|
|
|
3698
|
+
def _request_summary(self) -> str:
|
|
3699
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
3700
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
3701
|
+
self.request.remote_ip
|
|
3702
|
+
summary = "{0} {1} ({2})".format(
|
|
3703
|
+
self.request.method,
|
|
3704
|
+
self.request.uri,
|
|
3705
|
+
client_ip,
|
|
3706
|
+
)
|
|
3707
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
3708
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
3709
|
+
self.request.method,
|
|
3710
|
+
self.request.uri,
|
|
3711
|
+
client_ip,
|
|
3712
|
+
self.phanterpwa_current_user.email
|
|
3713
|
+
)
|
|
3714
|
+
return summary
|
|
3715
|
+
|
|
3498
3716
|
def options(self, *args):
|
|
3499
3717
|
self.set_status(200)
|
|
3500
3718
|
self.write({"status": "OK"})
|
|
@@ -94,6 +94,24 @@ class CAS(web.RequestHandler):
|
|
|
94
94
|
def check_origin(self, origin):
|
|
95
95
|
return True
|
|
96
96
|
|
|
97
|
+
def _request_summary(self) -> str:
|
|
98
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
99
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
100
|
+
self.request.remote_ip
|
|
101
|
+
summary = "{0} {1} ({2})".format(
|
|
102
|
+
self.request.method,
|
|
103
|
+
self.request.uri,
|
|
104
|
+
client_ip,
|
|
105
|
+
)
|
|
106
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
107
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
108
|
+
self.request.method,
|
|
109
|
+
self.request.uri,
|
|
110
|
+
client_ip,
|
|
111
|
+
self.phanterpwa_current_user.email
|
|
112
|
+
)
|
|
113
|
+
return summary
|
|
114
|
+
|
|
97
115
|
def options(self, *args):
|
|
98
116
|
self.set_status(200)
|
|
99
117
|
self.write({"status": "OK"})
|
|
@@ -70,6 +70,24 @@ class SignClient(web.RequestHandler):
|
|
|
70
70
|
def check_origin(self, origin):
|
|
71
71
|
return True
|
|
72
72
|
|
|
73
|
+
def _request_summary(self) -> str:
|
|
74
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
75
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
76
|
+
self.request.remote_ip
|
|
77
|
+
summary = "{0} {1} ({2})".format(
|
|
78
|
+
self.request.method,
|
|
79
|
+
self.request.uri,
|
|
80
|
+
client_ip,
|
|
81
|
+
)
|
|
82
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
83
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
84
|
+
self.request.method,
|
|
85
|
+
self.request.uri,
|
|
86
|
+
client_ip,
|
|
87
|
+
self.phanterpwa_current_user.email
|
|
88
|
+
)
|
|
89
|
+
return summary
|
|
90
|
+
|
|
73
91
|
@check_application()
|
|
74
92
|
def get(self, *args, **kargs):
|
|
75
93
|
expire_date = datetime.now() - timedelta(seconds=self.projectConfig['BACKEND'][self.app_name]['default_time_client_token_expire'])
|
|
@@ -423,6 +441,24 @@ class SignForms(web.RequestHandler):
|
|
|
423
441
|
def check_origin(self, origin):
|
|
424
442
|
return True
|
|
425
443
|
|
|
444
|
+
def _request_summary(self) -> str:
|
|
445
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
446
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
447
|
+
self.request.remote_ip
|
|
448
|
+
summary = "{0} {1} ({2})".format(
|
|
449
|
+
self.request.method,
|
|
450
|
+
self.request.uri,
|
|
451
|
+
client_ip,
|
|
452
|
+
)
|
|
453
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
454
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
455
|
+
self.request.method,
|
|
456
|
+
self.request.uri,
|
|
457
|
+
client_ip,
|
|
458
|
+
self.phanterpwa_current_user.email
|
|
459
|
+
)
|
|
460
|
+
return summary
|
|
461
|
+
|
|
426
462
|
@check_user_token(ignore_activation=True)
|
|
427
463
|
def get(self, *args, **kargs):
|
|
428
464
|
"""
|
|
@@ -527,6 +563,24 @@ class SignLockForm(web.RequestHandler):
|
|
|
527
563
|
def check_origin(self, origin):
|
|
528
564
|
return True
|
|
529
565
|
|
|
566
|
+
def _request_summary(self) -> str:
|
|
567
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
568
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
569
|
+
self.request.remote_ip
|
|
570
|
+
summary = "{0} {1} ({2})".format(
|
|
571
|
+
self.request.method,
|
|
572
|
+
self.request.uri,
|
|
573
|
+
client_ip,
|
|
574
|
+
)
|
|
575
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
576
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
577
|
+
self.request.method,
|
|
578
|
+
self.request.uri,
|
|
579
|
+
client_ip,
|
|
580
|
+
self.phanterpwa_current_user.email
|
|
581
|
+
)
|
|
582
|
+
return summary
|
|
583
|
+
|
|
530
584
|
@check_client_token()
|
|
531
585
|
def get(self, *args, **kargs):
|
|
532
586
|
"""
|
|
@@ -636,6 +690,24 @@ class SignCaptchaForms(web.RequestHandler):
|
|
|
636
690
|
def check_origin(self, origin):
|
|
637
691
|
return True
|
|
638
692
|
|
|
693
|
+
def _request_summary(self) -> str:
|
|
694
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
695
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
696
|
+
self.request.remote_ip
|
|
697
|
+
summary = "{0} {1} ({2})".format(
|
|
698
|
+
self.request.method,
|
|
699
|
+
self.request.uri,
|
|
700
|
+
client_ip,
|
|
701
|
+
)
|
|
702
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
703
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
704
|
+
self.request.method,
|
|
705
|
+
self.request.uri,
|
|
706
|
+
client_ip,
|
|
707
|
+
self.phanterpwa_current_user.email
|
|
708
|
+
)
|
|
709
|
+
return summary
|
|
710
|
+
|
|
639
711
|
@check_client_token()
|
|
640
712
|
def get(self, *args, **kargs):
|
|
641
713
|
"""
|
|
@@ -848,6 +920,24 @@ class ReSing(web.RequestHandler):
|
|
|
848
920
|
def check_origin(self, origin):
|
|
849
921
|
return True
|
|
850
922
|
|
|
923
|
+
def _request_summary(self) -> str:
|
|
924
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
925
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
926
|
+
self.request.remote_ip
|
|
927
|
+
summary = "{0} {1} ({2})".format(
|
|
928
|
+
self.request.method,
|
|
929
|
+
self.request.uri,
|
|
930
|
+
client_ip,
|
|
931
|
+
)
|
|
932
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
933
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
934
|
+
self.request.method,
|
|
935
|
+
self.request.uri,
|
|
936
|
+
client_ip,
|
|
937
|
+
self.phanterpwa_current_user.email
|
|
938
|
+
)
|
|
939
|
+
return summary
|
|
940
|
+
|
|
851
941
|
@check_user_token()
|
|
852
942
|
def get(self, *args, **kargs):
|
|
853
943
|
q_client = self.DALDatabase(self.DALDatabase.client.token == self.phanterpwa_client_token).select().first()
|
|
@@ -73,6 +73,24 @@ class Errors(web.RequestHandler):
|
|
|
73
73
|
def check_origin(self, origin):
|
|
74
74
|
return True
|
|
75
75
|
|
|
76
|
+
def _request_summary(self) -> str:
|
|
77
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
78
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
79
|
+
self.request.remote_ip
|
|
80
|
+
summary = "{0} {1} ({2})".format(
|
|
81
|
+
self.request.method,
|
|
82
|
+
self.request.uri,
|
|
83
|
+
client_ip,
|
|
84
|
+
)
|
|
85
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
86
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
87
|
+
self.request.method,
|
|
88
|
+
self.request.uri,
|
|
89
|
+
client_ip,
|
|
90
|
+
self.phanterpwa_current_user.email
|
|
91
|
+
)
|
|
92
|
+
return summary
|
|
93
|
+
|
|
76
94
|
def options(self, *args):
|
|
77
95
|
self.set_status(200)
|
|
78
96
|
self.write({"status": "OK"})
|
|
@@ -38,6 +38,24 @@ class I18N(web.RequestHandler):
|
|
|
38
38
|
def check_origin(self, origin):
|
|
39
39
|
return True
|
|
40
40
|
|
|
41
|
+
def _request_summary(self) -> str:
|
|
42
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
43
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
44
|
+
self.request.remote_ip
|
|
45
|
+
summary = "{0} {1} ({2})".format(
|
|
46
|
+
self.request.method,
|
|
47
|
+
self.request.uri,
|
|
48
|
+
client_ip,
|
|
49
|
+
)
|
|
50
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
51
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
52
|
+
self.request.method,
|
|
53
|
+
self.request.uri,
|
|
54
|
+
client_ip,
|
|
55
|
+
self.phanterpwa_current_user.email
|
|
56
|
+
)
|
|
57
|
+
return summary
|
|
58
|
+
|
|
41
59
|
def options(self, *args):
|
|
42
60
|
self.set_status(200)
|
|
43
61
|
return self.write({"status": "OK"})
|
|
@@ -66,6 +66,24 @@ class Messages(web.RequestHandler):
|
|
|
66
66
|
def check_origin(self, origin):
|
|
67
67
|
return True
|
|
68
68
|
|
|
69
|
+
def _request_summary(self) -> str:
|
|
70
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
71
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
72
|
+
self.request.remote_ip
|
|
73
|
+
summary = "{0} {1} ({2})".format(
|
|
74
|
+
self.request.method,
|
|
75
|
+
self.request.uri,
|
|
76
|
+
client_ip,
|
|
77
|
+
)
|
|
78
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
79
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
80
|
+
self.request.method,
|
|
81
|
+
self.request.uri,
|
|
82
|
+
client_ip,
|
|
83
|
+
self.phanterpwa_current_user.email
|
|
84
|
+
)
|
|
85
|
+
return summary
|
|
86
|
+
|
|
69
87
|
def options(self, *args):
|
|
70
88
|
self.set_status(200)
|
|
71
89
|
self.write({"status": "OK"})
|
|
@@ -206,6 +224,24 @@ class Message(web.RequestHandler):
|
|
|
206
224
|
def check_origin(self, origin):
|
|
207
225
|
return True
|
|
208
226
|
|
|
227
|
+
def _request_summary(self) -> str:
|
|
228
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
229
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
230
|
+
self.request.remote_ip
|
|
231
|
+
summary = "{0} {1} ({2})".format(
|
|
232
|
+
self.request.method,
|
|
233
|
+
self.request.uri,
|
|
234
|
+
client_ip,
|
|
235
|
+
)
|
|
236
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
237
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
238
|
+
self.request.method,
|
|
239
|
+
self.request.uri,
|
|
240
|
+
client_ip,
|
|
241
|
+
self.phanterpwa_current_user.email
|
|
242
|
+
)
|
|
243
|
+
return summary
|
|
244
|
+
|
|
209
245
|
def options(self, *args):
|
|
210
246
|
self.set_status(200)
|
|
211
247
|
self.write({"status": "OK"})
|
|
@@ -70,6 +70,24 @@ class Prompt(web.RequestHandler):
|
|
|
70
70
|
def check_origin(self, origin):
|
|
71
71
|
return True
|
|
72
72
|
|
|
73
|
+
def _request_summary(self) -> str:
|
|
74
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
75
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
76
|
+
self.request.remote_ip
|
|
77
|
+
summary = "{0} {1} ({2})".format(
|
|
78
|
+
self.request.method,
|
|
79
|
+
self.request.uri,
|
|
80
|
+
client_ip,
|
|
81
|
+
)
|
|
82
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
83
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
84
|
+
self.request.method,
|
|
85
|
+
self.request.uri,
|
|
86
|
+
client_ip,
|
|
87
|
+
self.phanterpwa_current_user.email
|
|
88
|
+
)
|
|
89
|
+
return summary
|
|
90
|
+
|
|
73
91
|
def options(self, *args):
|
|
74
92
|
self.set_status(200)
|
|
75
93
|
self.write({"status": "OK"})
|
|
@@ -195,6 +213,24 @@ class Redirect(web.RequestHandler):
|
|
|
195
213
|
def check_origin(self, origin):
|
|
196
214
|
return True
|
|
197
215
|
|
|
216
|
+
def _request_summary(self) -> str:
|
|
217
|
+
client_ip = self.request.headers.get('X-Real-IP') or\
|
|
218
|
+
self.request.headers.get('X-Forwarded-For', '').split(',')[0].strip() or\
|
|
219
|
+
self.request.remote_ip
|
|
220
|
+
summary = "{0} {1} ({2})".format(
|
|
221
|
+
self.request.method,
|
|
222
|
+
self.request.uri,
|
|
223
|
+
client_ip,
|
|
224
|
+
)
|
|
225
|
+
if hasattr(self, "phanterpwa_current_user") and self.phanterpwa_current_user is not None:
|
|
226
|
+
summary = "{0} {1} ({2} - {3})".format(
|
|
227
|
+
self.request.method,
|
|
228
|
+
self.request.uri,
|
|
229
|
+
client_ip,
|
|
230
|
+
self.phanterpwa_current_user.email
|
|
231
|
+
)
|
|
232
|
+
return summary
|
|
233
|
+
|
|
198
234
|
def options(self, *args):
|
|
199
235
|
self.set_status(200)
|
|
200
236
|
self.write({"status": "OK"})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
phanterpwa/__init__.py,sha256=
|
|
1
|
+
phanterpwa/__init__.py,sha256=0Fhf-LP42upGQx_l99loC0TYGzj8LaT-yv-rEKcc1jQ,397
|
|
2
2
|
phanterpwa/__main__.py,sha256=1vSHtv6-sgAgpZiklf9bwarXX1b-fmKx1rjwJw4h78o,4017
|
|
3
3
|
phanterpwa/compiler.py,sha256=Je3qtVO_cZ69_PPWcXKyBgnRfQ-Ev-zkZ3UTN-ddOTQ,47478
|
|
4
4
|
phanterpwa/configer.py,sha256=O0IO5rf-hwFNdBjcz94OF-fqXKTWbqPElTsfS5V2beY,26327
|
|
@@ -21,14 +21,14 @@ phanterpwa/backend/pydal/extra_validations.py,sha256=1FlOZhUuYg4aybL4EwSzH3zWUXb
|
|
|
21
21
|
phanterpwa/backend/pydal/gallery.py,sha256=nETfQ2Dv-0N94Ypq14uGiDKeGlWgxDHLjY4s1zFrnWs,870
|
|
22
22
|
phanterpwa/backend/pydal/internal_messages.py,sha256=DYDNWpjrvAM0Nn4m5fGkJXJsMVQjwuJgcMaRzOEzmE4,1379
|
|
23
23
|
phanterpwa/backend/request_handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
phanterpwa/backend/request_handlers/admin.py,sha256=
|
|
25
|
-
phanterpwa/backend/request_handlers/auth.py,sha256=
|
|
26
|
-
phanterpwa/backend/request_handlers/cas.py,sha256=
|
|
27
|
-
phanterpwa/backend/request_handlers/credentials.py,sha256=
|
|
28
|
-
phanterpwa/backend/request_handlers/errors.py,sha256=
|
|
29
|
-
phanterpwa/backend/request_handlers/i18n_server.py,sha256=
|
|
30
|
-
phanterpwa/backend/request_handlers/internal_messages.py,sha256=
|
|
31
|
-
phanterpwa/backend/request_handlers/oauth.py,sha256=
|
|
24
|
+
phanterpwa/backend/request_handlers/admin.py,sha256=QnpoCTMRBuviSCdB84G0pUb13kIg6ky8Wv4DEVB7tRQ,63978
|
|
25
|
+
phanterpwa/backend/request_handlers/auth.py,sha256=epJ2ura3u6YDKNRmvyYGR7FzF1nrgwTpneibP0z9zzw,177284
|
|
26
|
+
phanterpwa/backend/request_handlers/cas.py,sha256=TeeQaodcHVkhu-cUqesh9NeAuo0oXylzcPXpQ9wG6H4,24996
|
|
27
|
+
phanterpwa/backend/request_handlers/credentials.py,sha256=mEWyPrt_3Bd6rKIJcvpTsvngEo0alPZ-JNose7S4DtQ,51277
|
|
28
|
+
phanterpwa/backend/request_handlers/errors.py,sha256=x3SMdpkO4mxaSRZZQQxtH1zUFh47C06kssfI4CoPokc,4472
|
|
29
|
+
phanterpwa/backend/request_handlers/i18n_server.py,sha256=p3LQxOdcLHIjgaFs4wO1V2_7gKpfcDT7pDPa7m0-UbQ,3205
|
|
30
|
+
phanterpwa/backend/request_handlers/internal_messages.py,sha256=w_u3NYw0KZfuCIS8tHJhV12tj_UA0_aBekk22nR3oCc,17382
|
|
31
|
+
phanterpwa/backend/request_handlers/oauth.py,sha256=CTKEhW0NutGgCSk6G6xNnWryteg-fCNCpXYFVfS3Qjs,45985
|
|
32
32
|
phanterpwa/backend/request_handlers/websocket.py,sha256=KgS9RCsMlTmvFWG8kaLrsL3sv2O3rS4yn63FbNtr0tg,5716
|
|
33
33
|
phanterpwa/backend/request_handlers/welcome.py,sha256=w_h7UccR9g1-Dfy7AVqc74FLQzrgBjbY5rDhgAMUHno,723
|
|
34
34
|
phanterpwa/captchasvg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -435,10 +435,10 @@ phanterpwa/usual_sass/preloaders/indefined_text.sass,sha256=z4JuUtBrzoqH3HuNFXvN
|
|
|
435
435
|
phanterpwa/usual_sass/preloaders/run_points.sass,sha256=EYl93ljfgAc-ZLJ0VScrCoIlHP7Nr6NLdxj1zk2wm_E,3367
|
|
436
436
|
phanterpwa/usual_sass/preloaders/square.sass,sha256=TOsh9muP4zkYLUJcw4i1LeRs60NrtgRWBk_1oMt2_58,1348
|
|
437
437
|
phanterpwa/usual_sass/preloaders/squares.sass,sha256=kH1I89qEfmbvYxCtKFVNcxP5bWIjnqbheXVnyGF0VNo,3862
|
|
438
|
-
phanterpwa-13.
|
|
439
|
-
phanterpwa-13.
|
|
440
|
-
phanterpwa-13.
|
|
441
|
-
phanterpwa-13.
|
|
442
|
-
phanterpwa-13.
|
|
443
|
-
phanterpwa-13.
|
|
444
|
-
phanterpwa-13.
|
|
438
|
+
phanterpwa-13.16.0.dist-info/LICENSE,sha256=lGEW1PRSZOkug2-d0IJgryCjqt6zhxN5x9pFgy3lx2E,1087
|
|
439
|
+
phanterpwa-13.16.0.dist-info/METADATA,sha256=90Dv4MNxkYX35GrRbrYPgQAgtkMDrWKzD2NkgtygzBg,1939
|
|
440
|
+
phanterpwa-13.16.0.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
441
|
+
phanterpwa-13.16.0.dist-info/dependency_links.txt,sha256=Pslekmz-4l1SpBO0x2aYkYZPCScmbrB9HUq1YvXYUzM,40
|
|
442
|
+
phanterpwa-13.16.0.dist-info/entry_points.txt,sha256=siJH2lFXIdsUBDRgcXV4blOb2_iku1vcbqxJ-trIQrw,56
|
|
443
|
+
phanterpwa-13.16.0.dist-info/top_level.txt,sha256=nF1WJ8AByxBv3bLKp3xySR2l2Twrj5n5n7C404lULSk,5319
|
|
444
|
+
phanterpwa-13.16.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|