Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
6f08e301
Commit
6f08e301
authored
Oct 21, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reflect RPC changes
parent
6ea44c46
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
361 additions
and
370 deletions
+361
-370
webapp.qml
mist/assets/qml/webapp.qml
+359
-368
cmd.go
utils/cmd.go
+2
-2
No files found.
mist/assets/qml/webapp.qml
View file @
6f08e301
...
...
@@ -7,411 +7,402 @@ import QtQuick.Layouts 1.0;
import
QtQuick
.
Window
2.1
;
import
Ethereum
1.0
import
"../ext/qml_messaging.js"
as
Messaging
//ApplicationWindow {
Rectangle
{
id
:
window
property
var
title
:
"Browser"
property
var
iconSource
:
"../browser.png"
property
var
menuItem
property
alias
url
:
webview
.
url
property
alias
webView
:
webview
property
var
cleanPath
:
false
property
var
open
:
function
(
url
)
{
if
(
!
window
.
cleanPath
)
{
var
uri
=
url
;
if
(
!
/.*
\:\/\/
.*/
.
test
(
uri
))
{
uri
=
"http://"
+
uri
;
}
var
reg
=
/
(
^https
?\:\/\/(?:
www
\.)?)([
a-zA-Z0-9_
\-]
*
\.
eth
)(
.*
)
/
if
(
reg
.
test
(
uri
))
{
uri
.
replace
(
reg
,
function
(
match
,
pre
,
domain
,
path
)
{
uri
=
pre
;
var
lookup
=
eth
.
lookupDomain
(
domain
.
substring
(
0
,
domain
.
length
-
4
));
var
ip
=
[];
for
(
var
i
=
0
,
l
=
lookup
.
length
;
i
<
l
;
i
++
)
{
ip
.
push
(
lookup
.
charCodeAt
(
i
))
}
if
(
ip
.
length
!=
0
)
{
uri
+=
lookup
;
}
else
{
uri
+=
domain
;
}
uri
+=
path
;
});
}
window
.
cleanPath
=
true
;
webview
.
url
=
uri
;
//uriNav.text = uri.text.replace(/(^https?\:\/\/(?:www\.)?)([a-zA-Z0-9_\-]*\.\w{2,3})(.*)/, "$1$2<span style='color:#CCC'>$3</span>");
uriNav
.
text
=
uri
;
}
else
{
// Prevent inf loop.
window
.
cleanPath
=
false
;
}
}
Component.onCompleted
:
{
webview
.
url
=
"http://etherian.io"
}
signal
messages
(
var
messages
,
int
id
);
onMessages
:
{
// Bit of a cheat to get proper JSON
var
m
=
JSON
.
parse
(
JSON
.
parse
(
JSON
.
stringify
(
messages
)))
webview
.
postEvent
(
"messages"
,
[
m
,
id
]);
}
Item
{
objectName
:
"root"
id
:
root
anchors.fill
:
parent
state
:
"inspectorShown"
RowLayout
{
id
:
navBar
height
:
40
anchors
{
left
:
parent
.
left
right
:
parent
.
right
leftMargin
:
7
}
Button
{
id
:
back
onClicked
:
{
webview
.
goBack
()
}
style
:
ButtonStyle
{
background
:
Image
{
source
:
"../back.png"
width
:
30
height
:
30
}
}
}
TextField
{
anchors
{
left
:
back
.
right
right
:
toggleInspector
.
left
leftMargin
:
5
rightMargin
:
5
}
text
:
"http://etherian.io"
id
:
uriNav
y
:
parent
.
height
/
2
-
this
.
height
/
2
Keys.onReturnPressed
:
{
webview
.
url
=
this
.
text
;
}
}
Button
{
id
:
toggleInspector
anchors
{
right
:
parent
.
right
}
iconSource
:
"../bug.png"
onClicked
:
{
if
(
inspector
.
visible
==
true
){
inspector
.
visible
=
false
}
else
{
inspector
.
visible
=
true
inspector
.
url
=
webview
.
experimental
.
remoteInspectorUrl
}
}
}
}
WebView
{
objectName
:
"webView"
id
:
webview
anchors
{
left
:
parent
.
left
right
:
parent
.
right
bottom
:
parent
.
bottom
top
:
navBar
.
bottom
}
//property var cleanPath: false
onNavigationRequested
:
{
window
.
open
(
request
.
url
.
toString
());
}
function
sendMessage
(
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
(
data
))
}
onTitleChanged
:
{
var
data
=
Messaging
.
HandleMessage
(
title
);
if
(
data
)
{
sendMessage
(
data
)
}
}
experimental
.
preferences
.
javascriptEnabled
:
true
experimental
.
preferences
.
navigatorQtObjectEnabled
:
true
experimental
.
preferences
.
developerExtrasEnabled
:
true
experimental
.
userScripts
:
[
"../ext/qt_messaging_adapter.js"
,
"../ext/q.js"
,
"../ext/big.js"
,
"../ext/string.js"
,
"../ext/html_messaging.js"
]
experimental
.
onMessageReceived
:
{
console
.
log
(
"[onMessageReceived]: "
,
message
.
data
)
// TODO move to messaging.js
var
data
=
JSON
.
parse
(
message
.
data
)
try
{
switch
(
data
.
call
)
{
case
"compile"
:
postData
(
data
.
_seed
,
eth
.
compile
(
data
.
args
[
0
]))
break
case
"getCoinBase"
:
postData
(
data
.
_seed
,
eth
.
coinBase
())
break
case
"getIsListening"
:
postData
(
data
.
_seed
,
eth
.
isListening
())
break
case
"getIsMining"
:
postData
(
data
.
_seed
,
eth
.
isMining
())
break
Rectangle
{
id
:
window
property
var
title
:
"Browser"
property
var
iconSource
:
"../browser.png"
property
var
menuItem
property
alias
url
:
webview
.
url
property
alias
webView
:
webview
property
var
cleanPath
:
false
property
var
open
:
function
(
url
)
{
if
(
!
window
.
cleanPath
)
{
var
uri
=
url
;
if
(
!
/.*
\:\/\/
.*/
.
test
(
uri
))
{
uri
=
"http://"
+
uri
;
}
var
reg
=
/
(
^https
?\:\/\/(?:
www
\.)?)([
a-zA-Z0-9_
\-]
*
\.
eth
)(
.*
)
/
if
(
reg
.
test
(
uri
))
{
uri
.
replace
(
reg
,
function
(
match
,
pre
,
domain
,
path
)
{
uri
=
pre
;
var
lookup
=
eth
.
lookupDomain
(
domain
.
substring
(
0
,
domain
.
length
-
4
));
var
ip
=
[];
for
(
var
i
=
0
,
l
=
lookup
.
length
;
i
<
l
;
i
++
)
{
ip
.
push
(
lookup
.
charCodeAt
(
i
))
}
if
(
ip
.
length
!=
0
)
{
uri
+=
lookup
;
}
else
{
uri
+=
domain
;
}
uri
+=
path
;
});
}
window
.
cleanPath
=
true
;
webview
.
url
=
uri
;
//uriNav.text = uri.text.replace(/(^https?\:\/\/(?:www\.)?)([a-zA-Z0-9_\-]*\.\w{2,3})(.*)/, "$1$2<span style='color:#CCC'>$3</span>");
uriNav
.
text
=
uri
;
}
else
{
// Prevent inf loop.
window
.
cleanPath
=
false
;
}
}
Component.onCompleted
:
{
webview
.
url
=
"http://etherian.io"
}
signal
messages
(
var
messages
,
int
id
);
onMessages
:
{
// Bit of a cheat to get proper JSON
var
m
=
JSON
.
parse
(
JSON
.
parse
(
JSON
.
stringify
(
messages
)))
webview
.
postEvent
(
"messages"
,
[
m
,
id
]);
}
Item
{
objectName
:
"root"
id
:
root
anchors.fill
:
parent
state
:
"inspectorShown"
RowLayout
{
id
:
navBar
height
:
40
anchors
{
left
:
parent
.
left
right
:
parent
.
right
leftMargin
:
7
}
Button
{
id
:
back
onClicked
:
{
webview
.
goBack
()
}
style
:
ButtonStyle
{
background
:
Image
{
source
:
"../back.png"
width
:
30
height
:
30
}
}
}
TextField
{
anchors
{
left
:
back
.
right
right
:
toggleInspector
.
left
leftMargin
:
5
rightMargin
:
5
}
text
:
"http://etherian.io"
id
:
uriNav
y
:
parent
.
height
/
2
-
this
.
height
/
2
Keys.onReturnPressed
:
{
webview
.
url
=
this
.
text
;
}
}
Button
{
id
:
toggleInspector
anchors
{
right
:
parent
.
right
}
iconSource
:
"../bug.png"
onClicked
:
{
if
(
inspector
.
visible
==
true
){
inspector
.
visible
=
false
}
else
{
inspector
.
visible
=
true
inspector
.
url
=
webview
.
experimental
.
remoteInspectorUrl
}
}
}
}
WebView
{
objectName
:
"webView"
id
:
webview
anchors
{
left
:
parent
.
left
right
:
parent
.
right
bottom
:
parent
.
bottom
top
:
navBar
.
bottom
}
//property var cleanPath: false
onNavigationRequested
:
{
window
.
open
(
request
.
url
.
toString
());
}
function
sendMessage
(
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
(
data
))
}
experimental
.
preferences
.
javascriptEnabled
:
true
experimental
.
preferences
.
navigatorQtObjectEnabled
:
true
experimental
.
preferences
.
developerExtrasEnabled
:
true
experimental
.
userScripts
:
[
"../ext/qt_messaging_adapter.js"
,
"../ext/q.js"
,
"../ext/big.js"
,
"../ext/string.js"
,
"../ext/html_messaging.js"
]
experimental
.
onMessageReceived
:
{
console
.
log
(
"[onMessageReceived]: "
,
message
.
data
)
// TODO move to messaging.js
var
data
=
JSON
.
parse
(
message
.
data
)
try
{
switch
(
data
.
call
)
{
case
"compile"
:
postData
(
data
.
_seed
,
eth
.
compile
(
data
.
args
[
0
]))
break
case
"getCoinBase"
:
postData
(
data
.
_seed
,
eth
.
coinBase
())
break
case
"getIsListening"
:
postData
(
data
.
_seed
,
eth
.
isListening
())
case
"getPeerCount"
:
postData
(
data
.
_seed
,
eth
.
peerCount
())
break
case
"getIsMining"
:
postData
(
data
.
_seed
,
eth
.
isMining
())
break
break
case
"getCountAt"
:
require
(
1
)
postData
(
data
.
_seed
,
eth
.
txCountAt
(
data
.
args
[
0
]))
case
"getPeerCount"
:
postData
(
data
.
_seed
,
eth
.
peerCount
())
break
break
case
"getCodeAt"
:
require
(
1
)
var
code
=
eth
.
codeAt
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
code
);
case
"getCountAt"
:
require
(
1
)
postData
(
data
.
_seed
,
eth
.
txCountAt
(
data
.
args
[
0
]))
break
break
case
"getBlockByNumber"
:
var
block
=
eth
.
blockByNumber
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
block
)
case
"getCodeAt"
:
require
(
1
)
var
code
=
eth
.
codeAt
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
code
);
break
break
case
"getBlockByHash
"
:
var
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
block
)
case
"getBlockByNumber
"
:
var
block
=
eth
.
blockByNumber
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
block
)
break
break
case
"transact"
:
require
(
5
)
case
"getBlockByHash"
:
var
block
=
eth
.
blockByHash
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
block
)
var
tx
=
eth
.
transact
(
data
.
args
)
postData
(
data
.
_seed
,
tx
)
break
break
case
"transact"
:
require
(
5
)
case
"getStorageAt"
:
require
(
2
);
var
tx
=
eth
.
transact
(
data
.
args
)
postData
(
data
.
_seed
,
tx
)
var
storage
=
eth
.
storageAt
(
data
.
args
[
0
],
data
.
args
[
1
]);
postData
(
data
.
_seed
,
storage
)
break
break
case
"getStorageAt"
:
require
(
2
);
case
"call"
:
require
(
1
);
var
ret
=
eth
.
call
(
data
.
args
)
postData
(
data
.
_seed
,
ret
)
var
storage
=
eth
.
storageAt
(
data
.
args
[
0
],
data
.
args
[
1
]);
postData
(
data
.
_seed
,
storage
)
break
break
case
"getEachStorage
"
:
require
(
1
);
var
storage
=
JSON
.
parse
(
eth
.
eachStorage
(
data
.
args
[
0
])
)
postData
(
data
.
_seed
,
storage
)
case
"call
"
:
require
(
1
);
var
ret
=
eth
.
call
(
data
.
args
)
postData
(
data
.
_seed
,
ret
)
break
break
case
"getTransactionsFor
"
:
require
(
1
);
var
txs
=
eth
.
transactionsFor
(
data
.
args
[
0
],
true
)
postData
(
data
.
_seed
,
txs
)
case
"getEachStorage
"
:
require
(
1
);
var
storage
=
JSON
.
parse
(
eth
.
eachStorage
(
data
.
args
[
0
])
)
postData
(
data
.
_seed
,
storage
)
break
break
case
"getBalanceAt"
:
require
(
1
);
case
"getTransactionsFor"
:
require
(
1
);
var
txs
=
eth
.
transactionsFor
(
data
.
args
[
0
],
true
)
postData
(
data
.
_seed
,
txs
)
postData
(
data
.
_seed
,
eth
.
balanceAt
(
data
.
args
[
0
]));
break
break
case
"getBalanceAt"
:
require
(
1
);
case
"getKey"
:
var
key
=
eth
.
key
().
privateKey
;
postData
(
data
.
_seed
,
eth
.
balanceAt
(
data
.
args
[
0
]));
postData
(
data
.
_seed
,
key
)
break
break
case
"watch"
:
require
(
2
)
eth
.
watch
(
data
.
args
[
0
],
data
.
args
[
1
])
case
"getKey"
:
var
key
=
eth
.
key
().
privateKey
;
case
"disconnect"
:
require
(
1
)
postData
(
data
.
_seed
,
null
)
postData
(
data
.
_seed
,
key
)
break
break
;
case
"watch"
:
require
(
2
)
eth
.
watch
(
data
.
args
[
0
],
data
.
args
[
1
])
case
"getSecretToAddress"
:
require
(
1
)
case
"disconnect"
:
require
(
1
)
postData
(
data
.
_seed
,
null
)
var
addr
=
eth
.
secretToAddress
(
data
.
args
[
0
])
console
.
log
(
"getsecret"
,
addr
)
postData
(
data
.
_seed
,
addr
)
break
;
break
;
case
"getSecretToAddress"
:
require
(
1
)
case
"messages"
:
require
(
1
);
var
addr
=
eth
.
secretToAddress
(
data
.
args
[
0
])
console
.
log
(
"getsecret"
,
addr
)
postData
(
data
.
_seed
,
addr
)
var
messages
=
JSON
.
parse
(
eth
.
getMessages
(
data
.
args
[
0
]))
postData
(
data
.
_seed
,
messages
)
break
;
break
case
"messages"
:
require
(
1
);
case
"mutan"
:
require
(
1
)
var
messages
=
JSON
.
parse
(
eth
.
getMessages
(
data
.
args
[
0
]))
postData
(
data
.
_seed
,
messages
)
var
code
=
eth
.
compileMutan
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
"0x"
+
code
)
break
break
;
case
"mutan"
:
require
(
1
)
case
"newFilterString"
:
require
(
1
)
var
id
=
eth
.
newFilterString
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
id
);
break
;
case
"newFilter"
:
require
(
1
)
var
id
=
eth
.
newFilter
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
id
);
break
;
case
"getMessages"
:
require
(
1
);
var
messages
=
eth
.
messages
(
data
.
args
[
0
]);
var
m
=
JSON
.
parse
(
JSON
.
parse
(
JSON
.
stringify
(
messages
)))
postData
(
data
.
_seed
,
m
);
break
;
case
"deleteFilter"
:
require
(
1
);
eth
.
uninstallFilter
(
data
.
args
[
0
])
break
;
}
}
catch
(
e
)
{
console
.
log
(
data
.
call
+
": "
+
e
)
postData
(
data
.
_seed
,
null
);
}
}
function
post
(
seed
,
data
)
{
postData
(
data
.
_seed
,
data
)
}
function
require
(
args
,
num
)
{
if
(
args
.
length
<
num
)
{
throw
(
"required argument count of "
+
num
+
" got "
+
args
.
length
);
}
}
function
postData
(
seed
,
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
({
data
:
data
,
_seed
:
seed
}))
}
function
postEvent
(
event
,
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
({
data
:
data
,
_event
:
event
}))
}
function
onWatchedCb
(
data
,
id
)
{
var
messages
=
JSON
.
parse
(
data
)
postEvent
(
"watched:"
+
id
,
messages
)
}
function
onNewBlockCb
(
block
)
{
postEvent
(
"block:new"
,
block
)
}
function
onObjectChangeCb
(
stateObject
)
{
postEvent
(
"object:"
+
stateObject
.
address
(),
stateObject
)
}
function
onStorageChangeCb
(
storageObject
)
{
var
ev
=
[
"storage"
,
storageObject
.
stateAddress
,
storageObject
.
address
].
join
(
":"
);
postEvent
(
ev
,
[
storageObject
.
address
,
storageObject
.
value
])
}
}
Rectangle
{
id
:
sizeGrip
color
:
"gray"
visible
:
false
height
:
10
anchors
{
left
:
root
.
left
right
:
root
.
right
}
y
:
Math
.
round
(
root
.
height
*
2
/
3
)
MouseArea
{
anchors.fill
:
parent
drag.target
:
sizeGrip
drag.minimumY
:
0
drag.maximumY
:
root
.
height
drag.axis
:
Drag
.
YAxis
}
}
WebView
{
id
:
inspector
visible
:
false
anchors
{
left
:
root
.
left
right
:
root
.
right
top
:
sizeGrip
.
bottom
bottom
:
root
.
bottom
}
}
states
:
[
State
{
name
:
"inspectorShown"
PropertyChanges
{
target
:
inspector
}
}
]
}
}
var
code
=
eth
.
compileMutan
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
"0x"
+
code
)
break
;
case
"newFilterString"
:
require
(
1
)
var
id
=
eth
.
newFilterString
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
id
);
break
;
case
"newFilter"
:
require
(
1
)
var
id
=
eth
.
newFilter
(
data
.
args
[
0
])
postData
(
data
.
_seed
,
id
);
break
;
case
"getMessages"
:
require
(
1
);
var
messages
=
eth
.
messages
(
data
.
args
[
0
]);
var
m
=
JSON
.
parse
(
JSON
.
parse
(
JSON
.
stringify
(
messages
)))
postData
(
data
.
_seed
,
m
);
break
;
case
"deleteFilter"
:
require
(
1
);
eth
.
uninstallFilter
(
data
.
args
[
0
])
break
;
}
}
catch
(
e
)
{
console
.
log
(
data
.
call
+
": "
+
e
)
postData
(
data
.
_seed
,
null
);
}
}
function
post
(
seed
,
data
)
{
postData
(
data
.
_seed
,
data
)
}
function
require
(
args
,
num
)
{
if
(
args
.
length
<
num
)
{
throw
(
"required argument count of "
+
num
+
" got "
+
args
.
length
);
}
}
function
postData
(
seed
,
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
({
data
:
data
,
_seed
:
seed
}))
}
function
postEvent
(
event
,
data
)
{
webview
.
experimental
.
postMessage
(
JSON
.
stringify
({
data
:
data
,
_event
:
event
}))
}
function
onWatchedCb
(
data
,
id
)
{
var
messages
=
JSON
.
parse
(
data
)
postEvent
(
"watched:"
+
id
,
messages
)
}
function
onNewBlockCb
(
block
)
{
postEvent
(
"block:new"
,
block
)
}
function
onObjectChangeCb
(
stateObject
)
{
postEvent
(
"object:"
+
stateObject
.
address
(),
stateObject
)
}
function
onStorageChangeCb
(
storageObject
)
{
var
ev
=
[
"storage"
,
storageObject
.
stateAddress
,
storageObject
.
address
].
join
(
":"
);
postEvent
(
ev
,
[
storageObject
.
address
,
storageObject
.
value
])
}
}
Rectangle
{
id
:
sizeGrip
color
:
"gray"
visible
:
false
height
:
10
anchors
{
left
:
root
.
left
right
:
root
.
right
}
y
:
Math
.
round
(
root
.
height
*
2
/
3
)
MouseArea
{
anchors.fill
:
parent
drag.target
:
sizeGrip
drag.minimumY
:
0
drag.maximumY
:
root
.
height
drag.axis
:
Drag
.
YAxis
}
}
WebView
{
id
:
inspector
visible
:
false
anchors
{
left
:
root
.
left
right
:
root
.
right
top
:
sizeGrip
.
bottom
bottom
:
root
.
bottom
}
}
states
:
[
State
{
name
:
"inspectorShown"
PropertyChanges
{
target
:
inspector
}
}
]
}
}
utils/cmd.go
View file @
6f08e301
...
...
@@ -19,9 +19,9 @@ import (
"github.com/ethereum/eth-go/ethlog"
"github.com/ethereum/eth-go/ethminer"
"github.com/ethereum/eth-go/ethpipe"
"github.com/ethereum/eth-go/ethrpc"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethwire"
"github.com/ethereum/eth-go/rpc"
)
var
logger
=
ethlog
.
NewLogger
(
"CLI"
)
...
...
@@ -244,7 +244,7 @@ func KeyTasks(keyManager *ethcrypto.KeyManager, KeyRing string, GenAddr bool, Se
func
StartRpc
(
ethereum
*
eth
.
Ethereum
,
RpcPort
int
)
{
var
err
error
ethereum
.
RpcServer
,
err
=
eth
rpc
.
NewJsonRpcServer
(
ethpipe
.
NewJSPipe
(
ethereum
),
RpcPort
)
ethereum
.
RpcServer
,
err
=
rpc
.
NewJsonRpcServer
(
ethpipe
.
NewJSPipe
(
ethereum
),
RpcPort
)
if
err
!=
nil
{
logger
.
Errorf
(
"Could not start RPC interface (port %v): %v"
,
RpcPort
,
err
)
}
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment