mirror of
https://github.com/OutCast3k/coinbin.git
synced 2026-10-02 18:10:23 +02:00
coinb.in can now scan qrcodes
This commit is contained in:
1 parent
f3aa1ba027
commit
c150800a5f
4 files changed
+103
-6
No files matched your search
+30
-3
@@ -24,6 +24,7 @@
|
||||
<script type="text/javascript" src="js/aes.js"></script>
|
||||
|
||||
<script type="text/javascript" src="js/qrcode.js"></script>
|
||||
<script type="text/javascript" src="js/qcode-decoder.min.js"></script>
|
||||
<script type="text/javascript" src="js/jsbn.js"></script>
|
||||
<script type="text/javascript" src="js/ellipticcurve.js"></script>
|
||||
|
||||
@@ -316,6 +317,9 @@
|
||||
|
||||
<b>Address, WIF key or Multisig Redeem Script</b>:
|
||||
<div class="input-group">
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-info qrcodeScanner" type="button" data-toggle="modal" data-target="#modalQrcodeScanner" forward-result="#redeemFrom"><span class="glyphicon glyphicon-camera"></span></button>
|
||||
</span>
|
||||
<input type="text" id="redeemFrom" class="form-control" value="">
|
||||
<span class="input-group-btn">
|
||||
<button id="redeemFromBtn" class="btn btn-info" type="button">Load</button>
|
||||
@@ -357,8 +361,8 @@
|
||||
</div>
|
||||
|
||||
<ul class="nav nav-tabs" id="putTabs">
|
||||
<li class="active"><a href="#txoutputs" data-toggle="tab">Outputs (<span id="totalOutput">0.0000</span>)</a></li>
|
||||
<li><a href="#txinputs" data-toggle="tab">Inputs (<span id="totalInput">0.0000</span>)</a></li>
|
||||
<li class="active"><a href="#txoutputs" data-toggle="tab">Outputs <small>(<span id="totalOutput">0.0000</span>)</small></a></li>
|
||||
<li><a href="#txinputs" data-toggle="tab">Inputs <small>(<span id="totalInput">0.0000</span>)</small></a></li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
@@ -665,13 +669,36 @@
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" id="agentClose">Close</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" id="qrCodeClose">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- qrcode modal -->
|
||||
|
||||
<!-- qrcode scanner modal -->
|
||||
<div class="modal fade" id="modalQrcodeScanner" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">qrcode scanner</h4>
|
||||
</div>
|
||||
|
||||
<div class="modal-body" align="center">
|
||||
<select id="videoSource" class="form-control"></select>
|
||||
<video id="videoReader" muted autoplay style="width:100%;height:100%"></video>
|
||||
<div id="qrcode-scanner-callback-to" class="hidden"></div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" id="qrScanClose">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- qrcode scanner modal -->
|
||||
|
||||
<div class="hidden" id="entropybucket"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -413,6 +413,73 @@ $(document).ready(function() {
|
||||
totalInputAmount();
|
||||
});
|
||||
|
||||
/* code for the qr code scanner */
|
||||
|
||||
function gotSources(sourceInfos) {
|
||||
for (var i = 0; i !== sourceInfos.length; ++i) {
|
||||
var sourceInfo = sourceInfos[i];
|
||||
var option = document.createElement('option');
|
||||
option.value = sourceInfo.id;
|
||||
if (sourceInfo.kind === 'video') {
|
||||
option.text = sourceInfo.label || 'camera ' + ($("select#videoSource options").length + 1);
|
||||
$(option).appendTo("select#videoSource");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof MediaStreamTrack === 'undefined'){
|
||||
return alert('This browser does not support MediaStreamTrack.\n\nTry Chrome Canary.');
|
||||
} else {
|
||||
MediaStreamTrack.getSources(gotSources);
|
||||
}
|
||||
|
||||
function videoStart(){
|
||||
|
||||
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
|
||||
|
||||
if (!!window.stream) {
|
||||
$("video").attr('src',null);
|
||||
window.stream.stop();
|
||||
}
|
||||
|
||||
var videoSource = $("select#videoSource").val()
|
||||
var constraints = {
|
||||
video: {
|
||||
optional: [{sourceId: videoSource}]
|
||||
}
|
||||
};
|
||||
navigator.getUserMedia(constraints, function(stream){
|
||||
window.stream = stream; // make stream available to console
|
||||
var videoElement = document.querySelector('video');
|
||||
videoElement.src = window.URL.createObjectURL(stream);
|
||||
videoElement.play();
|
||||
}, function(error){ });
|
||||
|
||||
QCodeDecoder().decodeFromCamera(document.getElementById('videoReader'), function(er,data){
|
||||
if(!er){
|
||||
var r = '';
|
||||
var match = data.match(/^bitcoin\:(.*)\??$/i);
|
||||
if(match){
|
||||
r = match[1];
|
||||
} else {
|
||||
r = data;
|
||||
}
|
||||
|
||||
$(""+$("#qrcode-scanner-callback-to").html()).val(r);
|
||||
$("#qrScanClose").click();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(".qrcodeScanner").click(function(){
|
||||
$("select#videoSource").change(function(){
|
||||
videoStart()
|
||||
});
|
||||
videoStart();
|
||||
|
||||
$("#qrcode-scanner-callback-to").html($(this).attr('forward-result'));
|
||||
});
|
||||
|
||||
$("#redeemFromBtn").click(function(){
|
||||
var thisbtn = this;
|
||||
var addr = '';
|
||||
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.qrcode=t()}(this,function(){function e(e,t){this.count=e,this.dataCodewords=t,this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("DataCodewords",function(){return this.dataCodewords})}function t(e,t,r){this.ecCodewordsPerBlock=e,this.ecBlocks=r?new Array(t,r):new Array(t),this.__defineGetter__("ECCodewordsPerBlock",function(){return this.ecCodewordsPerBlock}),this.__defineGetter__("TotalECCodewords",function(){return this.ecCodewordsPerBlock*this.NumBlocks}),this.__defineGetter__("NumBlocks",function(){for(var e=0,t=0;t<this.ecBlocks.length;t++)e+=this.ecBlocks[t].length;return e}),this.getECBlocks=function(){return this.ecBlocks}}function r(e,t,r,n,i,o){this.versionNumber=e,this.alignmentPatternCenters=t,this.ecBlocks=new Array(r,n,i,o);for(var a=0,s=r.ECCodewordsPerBlock,h=r.getECBlocks(),w=0;w<h.length;w++){var f=h[w];a+=f.Count*(f.DataCodewords+s)}this.totalCodewords=a,this.__defineGetter__("VersionNumber",function(){return this.versionNumber}),this.__defineGetter__("AlignmentPatternCenters",function(){return this.alignmentPatternCenters}),this.__defineGetter__("TotalCodewords",function(){return this.totalCodewords}),this.__defineGetter__("DimensionForVersion",function(){return 17+4*this.versionNumber}),this.buildFunctionPattern=function(){var e=this.DimensionForVersion,t=new d(e);t.setRegion(0,0,9,9),t.setRegion(e-8,0,8,9),t.setRegion(0,e-8,9,8);for(var r=this.alignmentPatternCenters.length,n=0;r>n;n++)for(var i=this.alignmentPatternCenters[n]-2,o=0;r>o;o++)0==n&&(0==o||o==r-1)||n==r-1&&0==o||t.setRegion(this.alignmentPatternCenters[o]-2,i,5,5);return t.setRegion(6,9,1,e-17),t.setRegion(9,6,e-17,1),this.versionNumber>6&&(t.setRegion(e-11,0,3,6),t.setRegion(0,e-11,6,3)),t},this.getECBlocksForLevel=function(e){return this.ecBlocks[e.ordinal()]}}function n(){return new Array(new r(1,new Array,new t(7,new e(1,19)),new t(10,new e(1,16)),new t(13,new e(1,13)),new t(17,new e(1,9))),new r(2,new Array(6,18),new t(10,new e(1,34)),new t(16,new e(1,28)),new t(22,new e(1,22)),new t(28,new e(1,16))),new r(3,new Array(6,22),new t(15,new e(1,55)),new t(26,new e(1,44)),new t(18,new e(2,17)),new t(22,new e(2,13))),new r(4,new Array(6,26),new t(20,new e(1,80)),new t(18,new e(2,32)),new t(26,new e(2,24)),new t(16,new e(4,9))),new r(5,new Array(6,30),new t(26,new e(1,108)),new t(24,new e(2,43)),new t(18,new e(2,15),new e(2,16)),new t(22,new e(2,11),new e(2,12))),new r(6,new Array(6,34),new t(18,new e(2,68)),new t(16,new e(4,27)),new t(24,new e(4,19)),new t(28,new e(4,15))),new r(7,new Array(6,22,38),new t(20,new e(2,78)),new t(18,new e(4,31)),new t(18,new e(2,14),new e(4,15)),new t(26,new e(4,13),new e(1,14))),new r(8,new Array(6,24,42),new t(24,new e(2,97)),new t(22,new e(2,38),new e(2,39)),new t(22,new e(4,18),new e(2,19)),new t(26,new e(4,14),new e(2,15))),new r(9,new Array(6,26,46),new t(30,new e(2,116)),new t(22,new e(3,36),new e(2,37)),new t(20,new e(4,16),new e(4,17)),new t(24,new e(4,12),new e(4,13))),new r(10,new Array(6,28,50),new t(18,new e(2,68),new e(2,69)),new t(26,new e(4,43),new e(1,44)),new t(24,new e(6,19),new e(2,20)),new t(28,new e(6,15),new e(2,16))),new r(11,new Array(6,30,54),new t(20,new e(4,81)),new t(30,new e(1,50),new e(4,51)),new t(28,new e(4,22),new e(4,23)),new t(24,new e(3,12),new e(8,13))),new r(12,new Array(6,32,58),new t(24,new e(2,92),new e(2,93)),new t(22,new e(6,36),new e(2,37)),new t(26,new e(4,20),new e(6,21)),new t(28,new e(7,14),new e(4,15))),new r(13,new Array(6,34,62),new t(26,new e(4,107)),new t(22,new e(8,37),new e(1,38)),new t(24,new e(8,20),new e(4,21)),new t(22,new e(12,11),new e(4,12))),new r(14,new Array(6,26,46,66),new t(30,new e(3,115),new e(1,116)),new t(24,new e(4,40),new e(5,41)),new t(20,new e(11,16),new e(5,17)),new t(24,new e(11,12),new e(5,13))),new r(15,new Array(6,26,48,70),new t(22,new e(5,87),new e(1,88)),new t(24,new e(5,41),new e(5,42)),new t(30,new e(5,24),new e(7,25)),new t(24,new e(11,12),new e(7,13))),new r(16,new Array(6,26,50,74),new t(24,new e(5,98),new e(1,99)),new t(28,new e(7,45),new e(3,46)),new t(24,new e(15,19),new e(2,20)),new t(30,new e(3,15),new e(13,16))),new r(17,new Array(6,30,54,78),new t(28,new e(1,107),new e(5,108)),new t(28,new e(10,46),new e(1,47)),new t(28,new e(1,22),new e(15,23)),new t(28,new e(2,14),new e(17,15))),new r(18,new Array(6,30,56,82),new t(30,new e(5,120),new e(1,121)),new t(26,new e(9,43),new e(4,44)),new t(28,new e(17,22),new e(1,23)),new t(28,new e(2,14),new e(19,15))),new r(19,new Array(6,30,58,86),new t(28,new e(3,113),new e(4,114)),new t(26,new e(3,44),new e(11,45)),new t(26,new e(17,21),new e(4,22)),new t(26,new e(9,13),new e(16,14))),new r(20,new Array(6,34,62,90),new t(28,new e(3,107),new e(5,108)),new t(26,new e(3,41),new e(13,42)),new t(30,new e(15,24),new e(5,25)),new t(28,new e(15,15),new e(10,16))),new r(21,new Array(6,28,50,72,94),new t(28,new e(4,116),new e(4,117Line truncated
|
||||
if(null!=c)return c}}if(0!=this.possibleCenters.length)return this.possibleCenters[0];throw"Couldn't find enough alignment patterns"}}function D(e,t,r){this.blockPointer=0,this.bitPointer=7,this.dataLength=0,this.blocks=e,this.numErrorCorrectionCode=r,9>=t?this.dataLengthMode=0:t>=10&&26>=t?this.dataLengthMode=1:t>=27&&40>=t&&(this.dataLengthMode=2),this.getNextBits=function(e){var t=0;if(e<this.bitPointer+1){for(var r=0,n=0;e>n;n++)r+=1<<n;return r<<=this.bitPointer-e+1,t=(this.blocks[this.blockPointer]&r)>>this.bitPointer-e+1,this.bitPointer-=e,t}if(e<this.bitPointer+1+8){for(var i=0,n=0;n<this.bitPointer+1;n++)i+=1<<n;return t=(this.blocks[this.blockPointer]&i)<<e-(this.bitPointer+1),this.blockPointer++,t+=this.blocks[this.blockPointer]>>8-(e-(this.bitPointer+1)),this.bitPointer=this.bitPointer-e%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}if(e<this.bitPointer+1+16){for(var i=0,o=0,n=0;n<this.bitPointer+1;n++)i+=1<<n;var a=(this.blocks[this.blockPointer]&i)<<e-(this.bitPointer+1);this.blockPointer++;var s=this.blocks[this.blockPointer]<<e-(this.bitPointer+1+8);this.blockPointer++;for(var n=0;n<e-(this.bitPointer+1+8);n++)o+=1<<n;o<<=8-(e-(this.bitPointer+1+8));var h=(this.blocks[this.blockPointer]&o)>>8-(e-(this.bitPointer+1+8));return t=a+s+h,this.bitPointer=this.bitPointer-(e-8)%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}return 0},this.NextMode=function(){return this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2?0:this.getNextBits(4)},this.getDataLength=function(e){for(var t=0;;){if(e>>t==1)break;t++}return this.getNextBits(qrcode.sizeOfDataLengthInfo[this.dataLengthMode][t])},this.getRomanAndFigureString=function(e){var t=e,r=0,n="",i=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":");do if(t>1){r=this.getNextBits(11);var o=Math.floor(r/45),a=r%45;n+=i[o],n+=i[a],t-=2}else 1==t&&(r=this.getNextBits(6),n+=i[r],t-=1);while(t>0);return n},this.getFigureString=function(e){var t=e,r=0,n="";do t>=3?(r=this.getNextBits(10),100>r&&(n+="0"),10>r&&(n+="0"),t-=3):2==t?(r=this.getNextBits(7),10>r&&(n+="0"),t-=2):1==t&&(r=this.getNextBits(4),t-=1),n+=r;while(t>0);return n},this.get8bitByteArray=function(e){var t=e,r=0,n=new Array;do r=this.getNextBits(8),n.push(r),t--;while(t>0);return n},this.getKanjiString=function(e){var t=e,r=0,n="";do{r=getNextBits(13);var i=r%192,o=r/192,a=(o<<8)+i,s=0;s=40956>=a+33088?a+33088:a+49472,n+=String.fromCharCode(s),t--}while(t>0);return n},this.__defineGetter__("DataByte",function(){for(var e=new Array,t=1,r=2,n=4,i=8;;){var o=this.NextMode();if(0==o){if(e.length>0)break;throw"Empty data block"}if(o!=t&&o!=r&&o!=n&&o!=i)throw"Invalid mode: "+o+" in (block:"+this.blockPointer+" bit:"+this.bitPointer+")";if(dataLength=this.getDataLength(o),1>dataLength)throw"Invalid data length: "+dataLength;switch(o){case t:for(var a=this.getFigureString(dataLength),s=new Array(a.length),h=0;h<a.length;h++)s[h]=a.charCodeAt(h);e.push(s);break;case r:for(var a=this.getRomanAndFigureString(dataLength),s=new Array(a.length),h=0;h<a.length;h++)s[h]=a.charCodeAt(h);e.push(s);break;case n:var d=this.get8bitByteArray(dataLength);e.push(d);break;case i:var a=this.getKanjiString(dataLength);e.push(a)}}return e})}GridSampler={},GridSampler.checkAndNudgePoints=function(e,t){for(var r=qrcode.width,n=qrcode.height,i=!0,o=0;o<t.length&&i;o+=2){var a=Math.floor(t[o]),s=Math.floor(t[o+1]);if(-1>a||a>r||-1>s||s>n)throw"Error.checkAndNudgePoints ";i=!1,-1==a?(t[o]=0,i=!0):a==r&&(t[o]=r-1,i=!0),-1==s?(t[o+1]=0,i=!0):s==n&&(t[o+1]=n-1,i=!0)}i=!0;for(var o=t.length-2;o>=0&&i;o-=2){var a=Math.floor(t[o]),s=Math.floor(t[o+1]);if(-1>a||a>r||-1>s||s>n)throw"Error.checkAndNudgePoints ";i=!1,-1==a?(t[o]=0,i=!0):a==r&&(t[o]=r-1,i=!0),-1==s?(t[o+1]=0,i=!0):s==n&&(t[o+1]=n-1,i=!0)}},GridSampler.sampleGrid3=function(e,t,r){for(var n=new d(t),i=new Array(t<<1),o=0;t>o;o++){for(var a=i.length,s=o+.5,h=0;a>h;h+=2)i[h]=(h>>1)+.5,i[h+1]=s;r.transformPoints1(i),GridSampler.checkAndNudgePoints(e,i);try{for(var h=0;a>h;h+=2){var w=4*Math.floor(i[h])+Math.floor(i[h+1])*qrcode.width*4,f=e[Math.floor(i[h])+qrcode.width*Math.floor(i[h+1])];qrcode.imagedata.data[w]=f?255:0,qrcode.imagedata.data[w+1]=f?255:0,qrcode.imagedata.data[w+2]=0,qrcode.imagedata.data[w+3]=255,f&&n.set_Renamed(h>>1,o)}}catch(c){throw"Error.checkAndNudgePoints"}}return n},GridSampler.sampleGridx=function(e,t,r,n,o,a,s,h,d,w,f,c,u,l,v,g,m,y){var p=i.quadrilateralToQuadrilateral(r,n,o,a,s,h,d,w,f,c,u,l,v,g,m,y);return GridSampler.sampleGrid3(e,t,p)},r.VERSION_DECODE_INFO=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),r.VERSIONS=n(),r.getVersionForNumber=function(e){if(1>e||e>40)throw"ArgumentException";reLine truncated
|
||||
@@ -1,4 +1,4 @@
|
||||
---- Version 1.0 2015.01.08 ----
|
||||
---- Version 1.0 2015.03.09 ----
|
||||
e6810907c901e6bd34a28735a68850936f0823b8 ./js/ellipticcurve.js
|
||||
9ba5ede3d7f9d4c8fd623395f196adfdcf7e970f ./js/crypto-min.js
|
||||
77e4519962e2f6a9fc93342137dbb31c33b76b04 ./js/aes.js
|
||||
@@ -8,9 +8,10 @@ be17ca7c834204bff711f582e41f76c06d472bac ./js/jsbn.js
|
||||
8bc3bd34c0f7605ea49e56a65841eab9d0dbf53b ./js/cryptojs.ripemd160.js
|
||||
15a81fe4074f920898e98b1b42cf11bda26da0a8 ./js/bootstrap.min.js
|
||||
f7c09f2f5a721371e7d478050119f7e2d58e3ef9 ./js/crypto-sha256-hmac.js
|
||||
0ce26da5ef686d4ece91acd6cb6506559e11ab07 ./js/qcode-decoder.min.js
|
||||
ad038e1f39646b68ae666324ed4c2882a8c42474 ./js/qrcode.js
|
||||
64eb4ea5c882f8bce3e1885bf00728455f1c2f4c ./js/ripemd160.js
|
||||
429a82eac1aa02c9a3a340adf8176b17fcf98c25 ./js/coinbin.js
|
||||
3450ac66ed7608ac5c12db73e5afcdc0683226b7 ./js/coinbin.js
|
||||
46f1b2e7f64482753f5f0ecde3ec2af7b01812f7 ./js/coin.js
|
||||
ae49e56999d82802727455f0ba83b63acd90a22b ./js/jquery-1.9.1.min.js
|
||||
5f570018ed044eafd464f7e0ab1783b966224055 ./LICENCE
|
||||
@@ -24,4 +25,4 @@ ecee9033d9183117d8f59df0e7238e2b24002b24 ./fonts/glyphicons-halflings-regular.s
|
||||
c6ea7b1a5bb16b160cc9b8a02f6f6371b5ef7b73 ./fonts/glyphicons-halflings-regular.woff
|
||||
536d2b1b2f3462fb122df1922f2e232546f1b11d ./fonts/glyphicons-halflings-regular.ttf
|
||||
64d660230800302cae4e94f3660b0b9233a56559 ./README.md
|
||||
215e858ba5406a1858fc8125ec427bec171e4165 ./index.html
|
||||
a82c6ea039866790d2126923d3e8dfaa449dbbfd ./index.html
|
||||
Reference in new issue
Block a user