Skip to content

Commit

Permalink
add pickle viewer fix #987
Browse files Browse the repository at this point in the history
  • Loading branch information
qishibo committed Feb 3, 2024
1 parent a93a3bf commit 99f9f2f
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 6 deletions.
15 changes: 10 additions & 5 deletions build/webpack.base.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,16 @@ module.exports = {
// // resolve('node_modules/@qii404/vue-easy-tree/src/')
// ],
},
// {
// test: /\.js$/,
// loader: 'babel-loader',
// include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client'), resolve('node_modules/@qii404/vue-easy-tree/src/')]
// },
{
test: /\.js$/,
loader: 'babel-loader',
include: [
// resolve('src'),
// resolve('test'),
// resolve('node_modules/webpack-dev-server/client'),
resolve('node_modules/pickleparser')
]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
Expand Down
15 changes: 15 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"keymaster": "^1.6.2",
"monaco-editor": "^0.30.1",
"php-serialize": "^4.0.2",
"pickleparser": "^0.2.1",
"protobufjs": "^6.11.2",
"rawproto": "^0.7.6",
"sortablejs": "^1.14.0",
Expand Down
9 changes: 8 additions & 1 deletion src/components/FormatViewer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ import ViewerCustom from '@/components/ViewerCustom';
import ViewerProtobuf from '@/components/ViewerProtobuf';
import ViewerDeflateRaw from '@/components/ViewerDeflateRaw';
import ViewerJavaSerialize from '@/components/ViewerJavaSerialize';
import ViewerPickle from '@/components/ViewerPickle';

export default {
data() {
Expand All @@ -65,6 +66,7 @@ export default {
{ value: 'ViewerMsgpack', text: 'Msgpack' },
{ value: 'ViewerPHPSerialize', text: 'PHPSerialize' },
{ value: 'ViewerJavaSerialize', text: 'JavaSerialize' },
{ value: 'ViewerPickle', text: 'Pickle' },
{ value: 'ViewerBrotli', text: 'Brotli' },
{ value: 'ViewerGzip', text: 'Gzip' },
{ value: 'ViewerDeflate', text: 'Deflate' },
Expand Down Expand Up @@ -93,6 +95,7 @@ export default {
ViewerProtobuf,
ViewerDeflateRaw,
ViewerJavaSerialize,
ViewerPickle,
},
props: {
float: { default: 'right' },
Expand Down Expand Up @@ -183,10 +186,14 @@ export default {
if (this.$util.isPHPSerialize(this.content)) {
return this.changeViewer('PHPSerialize');
}
// Java unserialize
// java unserialize
if (this.$util.isJavaSerialize(this.content)) {
return this.changeViewer('JavaSerialize');
}
// pickle
if (this.$util.isPickle(this.content)) {
return this.changeViewer('Pickle');
}
// msgpack
if (this.$util.isMsgpack(this.content)) {
return this.changeViewer('Msgpack');
Expand Down
31 changes: 31 additions & 0 deletions src/components/ViewerPickle.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<template>
<JsonEditor ref='editor' :content='newContent' :readOnly='true'></JsonEditor>
</template>

<script type="text/javascript">
import JsonEditor from '@/components/JsonEditor';
import { Parser } from 'pickleparser';

export default {
props: ['content'],
components: {JsonEditor},
computed: {
newContent() {
try {
return (new Parser()).parse(this.content);
} catch (e) {
return 'Pickle parsed failed!';
}
},
},
methods: {
getContent() {
this.$message.error('Pickle is readonly now!');
return false;
},
copyContent() {
return this.$refs.editor.getRawContent();
}
}
}
</script>
10 changes: 10 additions & 0 deletions src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,16 @@ export default {
return false;
}
},
isPickle(buf) {
try {
const Parser = require('pickleparser').Parser;
const result = (new Parser()).parse(buf);
return !!result;
}
catch (e) {
return false;
}
},
isMsgpack(buf) {
const { decode } = require('algo-msgpack-with-bigint');

Expand Down

0 comments on commit 99f9f2f

Please sign in to comment.