Skip to content

Commit

Permalink
Merge pull request #18 from denandz/replayhist
Browse files Browse the repository at this point in the history
Add Replay History - closes issue 15
  • Loading branch information
denandz authored Jan 3, 2024
2 parents 04372e0 + ec24988 commit 7c834cd
Show file tree
Hide file tree
Showing 9 changed files with 648 additions and 97 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ The sitemap shows the various URLs and hosts that have been accessed via the pro

In the proxy page, hit `ctrl-r` on an entry and it will be sent to the replay page, where you can modify the request and re-issue it. If you hit `ctrl-r` in the Replay page, it'll duplicated the current item.

The replays support a history of your sent data. As you modify requests and send them, the history will grow. You can go back and view the previous requests. Editing a previous request that has a response will automatically create a new history entry so you don't lose your old request data.

#### Editing

Highlight the request text box and hit `ctrl-e`. This will open the request in VI and let you edit it.
Expand All @@ -112,6 +114,8 @@ You can then open that file with any editor and changes will auto-load into Glor

![replayer](./gif/replayer.gif)

You can have multiple external editors open; however, only the one currently focused in glorp will auto-send.

### Log Page

This is the general log info page and takes no user input. Glorp is set up such that any call to `log.Println` or similar will end up in this view.
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/denandz/glorp

go 1.15
go 1.16

require (
github.com/fsnotify/fsnotify v1.6.0
Expand Down
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
Expand Down Expand Up @@ -115,7 +114,6 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
Expand Down
132 changes: 132 additions & 0 deletions tests/oldsave.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
{
"Replays": [
{
"ID": "1445586a66b80188",
"Host": "example.com",
"Port": "443",
"TLS": true,
"RawRequest": "R0VUIC8gSFRUUC8xLjENCkhvc3Q6IGV4YW1wbGUuY29tDQpBY2NlcHQ6ICovKg0KQ29ubmVjdGlvbjogY2xvc2UNClVzZXItQWdlbnQ6IGN1cmwvNy43NC4wDQoNCg==",
"RawResponse": "SFRUUC8xLjEgMjAwIE9LDQpBY2NlcHQtUmFuZ2VzOiBieXRlcw0KQWdlOiA0MjU4MDkNCkNhY2hlLUNvbnRyb2w6IG1heC1hZ2U9NjA0ODAwDQpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOA0KRGF0ZTogVHVlLCAwMiBKYW4gMjAyNCAyMzoyNDoyOCBHTVQNCkV0YWc6ICIzMTQ3NTI2OTQ3Ig0KRXhwaXJlczogVHVlLCAwOSBKYW4gMjAyNCAyMzoyNDoyOCBHTVQNCkxhc3QtTW9kaWZpZWQ6IFRodSwgMTcgT2N0IDIwMTkgMDc6MTg6MjYgR01UDQpTZXJ2ZXI6IEVDUyAobGFhLzdCRDYpDQpWYXJ5OiBBY2NlcHQtRW5jb2RpbmcNClgtQ2FjaGU6IEhJVA0KQ29udGVudC1MZW5ndGg6IDEyNTYNCkNvbm5lY3Rpb246IGNsb3NlDQoNCjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+CiAgICA8dGl0bGU+RXhhbXBsZSBEb21haW48L3RpdGxlPgoKICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgYm9keSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsICJPcGVuIFNhbnMiLCAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgIAogICAgfQogICAgZGl2IHsKICAgICAgICB3aWR0aDogNjAwcHg7CiAgICAgICAgbWFyZ2luOiA1ZW0gYXV0bzsKICAgICAgICBwYWRkaW5nOiAyZW07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZjsKICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVlbTsKICAgICAgICBib3gtc2hhZG93OiAycHggM3B4IDdweCAycHggcmdiYSgwLDAsMCwwLjAyKTsKICAgIH0KICAgIGE6bGluaywgYTp2aXNpdGVkIHsKICAgICAgICBjb2xvcjogIzM4NDg4ZjsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICB9CiAgICBAbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHsKICAgICAgICBkaXYgewogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgfQogICAgfQogICAgPC9zdHlsZT4gICAgCjwvaGVhZD4KCjxib2R5Pgo8ZGl2PgogICAgPGgxPkV4YW1wbGUgRG9tYWluPC9oMT4KICAgIDxwPlRoaXMgZG9tYWluIGlzIGZvciB1c2UgaW4gaWxsdXN0cmF0aXZlIGV4YW1wbGVzIGluIGRvY3VtZW50cy4gWW91IG1heSB1c2UgdGhpcwogICAgZG9tYWluIGluIGxpdGVyYXR1cmUgd2l0aG91dCBwcmlvciBjb29yZGluYXRpb24gb3IgYXNraW5nIGZvciBwZXJtaXNzaW9uLjwvcD4KICAgIDxwPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlhbmEub3JnL2RvbWFpbnMvZXhhbXBsZSI+TW9yZSBpbmZvcm1hdGlvbi4uLjwvYT48L3A+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K",
"ResponseTime": "797.977292ms"
}
],
"Proxyentries": [
{
"_id": "1445586a66b80188",
"startedDateTime": "2024-01-02T23:24:06.021266539Z",
"time": 1436,
"request": {
"method": "GET",
"url": "https://example.com/",
"httpVersion": "HTTP/1.1",
"bodySize": 0,
"Raw": "R0VUIC8gSFRUUC8xLjENCkhvc3Q6IGV4YW1wbGUuY29tDQpVc2VyLUFnZW50OiBjdXJsLzcuNzQuMA0KQWNjZXB0OiAqLyoNCkFjY2VwdC1FbmNvZGluZzogZ3ppcA0KDQo=",
"Host": "example.com",
"TLS": false
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"redirectURL": "",
"headers": {
"Accept-Ranges": [
"bytes"
],
"Age": [
"385056"
],
"Cache-Control": [
"max-age=604800"
],
"Content-Length": [
"1256"
],
"Content-Type": [
"text/html; charset=UTF-8"
],
"Date": [
"Tue, 02 Jan 2024 23:24:07 GMT"
],
"Etag": [
"\"3147526947\""
],
"Expires": [
"Tue, 09 Jan 2024 23:24:07 GMT"
],
"Last-Modified": [
"Thu, 17 Oct 2019 07:18:26 GMT"
],
"Server": [
"ECS (laa/7BA2)"
],
"Vary": [
"Accept-Encoding"
],
"X-Cache": [
"HIT"
]
},
"bodySize": 1256,
"Raw": "SFRUUC8xLjEgMjAwIE9LDQpDb250ZW50LUxlbmd0aDogMTI1Ng0KQWNjZXB0LVJhbmdlczogYnl0ZXMNCkFnZTogMzg1MDU2DQpDYWNoZS1Db250cm9sOiBtYXgtYWdlPTYwNDgwMA0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgNCkRhdGU6IFR1ZSwgMDIgSmFuIDIwMjQgMjM6MjQ6MDcgR01UDQpFdGFnOiAiMzE0NzUyNjk0NyINCkV4cGlyZXM6IFR1ZSwgMDkgSmFuIDIwMjQgMjM6MjQ6MDcgR01UDQpMYXN0LU1vZGlmaWVkOiBUaHUsIDE3IE9jdCAyMDE5IDA3OjE4OjI2IEdNVA0KU2VydmVyOiBFQ1MgKGxhYS83QkEyKQ0KVmFyeTogQWNjZXB0LUVuY29kaW5nDQpYLUNhY2hlOiBISVQNCg0KPCFkb2N0eXBlIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDx0aXRsZT5FeGFtcGxlIERvbWFpbjwvdGl0bGU+CgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSIgLz4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICBib2R5IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgIk9wZW4gU2FucyIsICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgCiAgICB9CiAgICBkaXYgewogICAgICAgIHdpZHRoOiA2MDBweDsKICAgICAgICBtYXJnaW46IDVlbSBhdXRvOwogICAgICAgIHBhZGRpbmc6IDJlbTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGZmOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNWVtOwogICAgICAgIGJveC1zaGFkb3c6IDJweCAzcHggN3B4IDJweCByZ2JhKDAsMCwwLDAuMDIpOwogICAgfQogICAgYTpsaW5rLCBhOnZpc2l0ZWQgewogICAgICAgIGNvbG9yOiAjMzg0ODhmOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIH0KICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3MDBweCkgewogICAgICAgIGRpdiB7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICB9CiAgICB9CiAgICA8L3N0eWxlPiAgICAKPC9oZWFkPgoKPGJvZHk+CjxkaXY+CiAgICA8aDE+RXhhbXBsZSBEb21haW48L2gxPgogICAgPHA+VGhpcyBkb21haW4gaXMgZm9yIHVzZSBpbiBpbGx1c3RyYXRpdmUgZXhhbXBsZXMgaW4gZG9jdW1lbnRzLiBZb3UgbWF5IHVzZSB0aGlzCiAgICBkb21haW4gaW4gbGl0ZXJhdHVyZSB3aXRob3V0IHByaW9yIGNvb3JkaW5hdGlvbiBvciBhc2tpbmcgZm9yIHBlcm1pc3Npb24uPC9wPgogICAgPHA+PGEgaHJlZj0iaHR0cHM6Ly93d3cuaWFuYS5vcmcvZG9tYWlucy9leGFtcGxlIj5Nb3JlIGluZm9ybWF0aW9uLi4uPC9hPjwvcD4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo="
}
},
{
"_id": "4f96cb38fd8fb1fc",
"startedDateTime": "2024-01-02T23:24:11.772473767Z",
"time": 190,
"request": {
"method": "GET",
"url": "https://example.com/asdf",
"httpVersion": "HTTP/1.1",
"bodySize": 0,
"Raw": "R0VUIC9hc2RmIEhUVFAvMS4xDQpIb3N0OiBleGFtcGxlLmNvbQ0KVXNlci1BZ2VudDogY3VybC83Ljc0LjANCkFjY2VwdDogKi8qDQpBY2NlcHQtRW5jb2Rpbmc6IGd6aXANCg0K",
"Host": "example.com",
"TLS": false
},
"response": {
"status": 404,
"statusText": "Not Found",
"httpVersion": "HTTP/1.1",
"redirectURL": "",
"headers": {
"Accept-Ranges": [
"bytes"
],
"Age": [
"187982"
],
"Cache-Control": [
"max-age=604800"
],
"Content-Length": [
"433"
],
"Content-Type": [
"text/html; charset=UTF-8"
],
"Date": [
"Tue, 02 Jan 2024 23:24:11 GMT"
],
"Expires": [
"Tue, 09 Jan 2024 23:24:11 GMT"
],
"Last-Modified": [
"Sun, 31 Dec 2023 19:11:09 GMT"
],
"Server": [
"ECS (laa/7B44)"
],
"Vary": [
"Accept-Encoding"
],
"X-Cache": [
"404-HIT"
]
},
"bodySize": 433,
"Raw": "SFRUUC8xLjEgNDA0IE5vdCBGb3VuZA0KQ29udGVudC1MZW5ndGg6IDQzMw0KQWNjZXB0LVJhbmdlczogYnl0ZXMNCkFnZTogMTg3OTgyDQpDYWNoZS1Db250cm9sOiBtYXgtYWdlPTYwNDgwMA0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgNCkRhdGU6IFR1ZSwgMDIgSmFuIDIwMjQgMjM6MjQ6MTEgR01UDQpFeHBpcmVzOiBUdWUsIDA5IEphbiAyMDI0IDIzOjI0OjExIEdNVA0KTGFzdC1Nb2RpZmllZDogU3VuLCAzMSBEZWMgMjAyMyAxOToxMTowOSBHTVQNClNlcnZlcjogRUNTIChsYWEvN0I0NCkNClZhcnk6IEFjY2VwdC1FbmNvZGluZw0KWC1DYWNoZTogNDA0LUhJVA0KDQo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCiAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iPgoJPGhlYWQ+CgkJPHRpdGxlPjQwNCAtIE5vdCBGb3VuZDwvdGl0bGU+Cgk8L2hlYWQ+Cgk8Ym9keT4KCQk8aDE+NDA0IC0gTm90IEZvdW5kPC9oMT4KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvL29iai5hYy5iY29uLmVjZG5zLm5ldC9lY190cG1fYmNvbi5qcyI+PC9zY3JpcHQ+Cgk8L2JvZHk+CjwvaHRtbD4K"
}
}
]
}
Loading

0 comments on commit 7c834cd

Please sign in to comment.