You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
from pappyproxy import http
|
|
|
|
from twisted.internet import defer
|
|
|
|
|
|
|
|
"""
|
|
|
|
Schema v2
|
|
|
|
|
|
|
|
Description:
|
|
|
|
Adds support for specifying the port of a request and specify its port. This
|
|
|
|
lets requests that have the port/ssl settings specified in the CONNECT request
|
|
|
|
maintain that information.
|
|
|
|
"""
|
|
|
|
|
|
|
|
update_queries = [
|
|
|
|
"""
|
|
|
|
ALTER TABLE requests ADD COLUMN port INTEGER;
|
|
|
|
""",
|
|
|
|
|
|
|
|
"""
|
|
|
|
ALTER TABLE requests ADD COLUMN is_ssl INTEGER;
|
|
|
|
""",
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
@defer.inlineCallbacks
|
|
|
|
def update(dbpool):
|
|
|
|
for query in update_queries:
|
|
|
|
yield dbpool.runQuery(query)
|
|
|
|
|
|
|
|
# Update metadata for each request
|
|
|
|
reqrows = yield dbpool.runQuery(
|
|
|
|
"""
|
|
|
|
SELECT id, full_request
|
|
|
|
FROM requests;
|
|
|
|
""",
|
|
|
|
)
|
|
|
|
|
|
|
|
# Create an object and get its port/is_ssl
|
|
|
|
for reqrow in reqrows:
|
|
|
|
reqid = reqrow[0]
|
|
|
|
fullreq = reqrow[1]
|
|
|
|
r = http.Request(fullreq)
|
|
|
|
port = r.port
|
|
|
|
is_ssl = r.is_ssl
|
|
|
|
yield dbpool.runQuery(
|
|
|
|
"""
|
|
|
|
UPDATE requests SET port=?,is_ssl=? WHERE id=?;
|
|
|
|
""",
|
|
|
|
(port, is_ssl, reqid)
|
|
|
|
)
|
|
|
|
|
|
|
|
yield dbpool.runQuery(
|
|
|
|
"""
|
|
|
|
UPDATE schema_meta SET version=2;
|
|
|
|
"""
|
|
|
|
)
|