Ticket #6096: torcache.patch

File torcache.patch, 6.7 KB (added by cfpp2p, 5 years ago)
  • J:/T1/trunk-web-031216/web/javascript/remote.js

    old new  
    241241        if (url.match(/^[0-9a-f]{40}$/i)) {
    242242            url = 'magnet:?xt=urn:btih:' + url;
    243243        }
     244        else {
     245            var hash = ' ';
     246            var hashValid = false;
     247            if (/^t magnet:\?/i.test(url)) {
     248                const magnetData = /xt=urn:btih:([a-z0-9]+)/i;
     249                const magnetHash = magnetData.exec(url);
     250                if (magnetHash) {
     251                   hash = magnetHash[1];
     252                   hash = hash.toUpperCase();
     253                }
     254            }
     255            else if (/^t /i.test(url)) {
     256                const hashData = /t ([a-z0-9]+)/i;
     257                const hashHash = hashData.exec(url);
     258                if (hashHash) {
     259                   hash = hashHash[1];
     260                   hash = hash.toUpperCase();
     261                }
     262            }
     263            if (hash.length === 32 && /\b[A-Z2-7]{32}\b/.test(hash)) {
     264
     265                 /*
     266                 Nibbler - Multi-Base Encoder
     267                 version 2010-04-07 mini
     268                 Copyright (c) 2010 Thomas Peri
     269                 http://www.tumuski.com/
     270                 MIT License
     271                 */
     272                var Nibbler=function(A){var B,C,D,E,F,G,H,I,J,K,L,M,N;B=function(){var x,y,z;C=A.pad||'';D=A.dataBits;E=A.codeBits;F=A.keyString;G=A.arrayData;y=Math.max(D,E);z=0;H=[];for(x=0;x<y;x+=1){H.push(z);z+=z+1;}J=z;I=D/K(D,E);};K=function(u,v){var w;while(v!==0){w=v;v=u%v;u=w;}return u;};L=function(f,g,h,j){var k,l,m,o,p,q,r,s;s=function(e){if(!j){r.push(F.charAt(e));}else if(G){r.push(e);}else{r.push(String.fromCharCode(e));}};p=0;q=0;r=[];l=f.length;for(k=0;k<l;k+=1){q+=g;if(j){m=f.charAt(k);o=F.indexOf(m);if(m===C){break;}else if(o<0){throw'the character "'+m+'" is not a member of '+F;}}else{if(G){o=f[k];}else{o=f.charCodeAt(k);}if((o|J)!==J){throw o+" is outside the range 0-"+J;}}p=(p<<g)|o;while(q>=h){q-=h;s(p>>q);p&=H[q];}}if(!j&&q>0){s(p<<(h-q));l=r.length%I;for(k=0;k<l;k+=1){r.push(C);}}return(G&&j)?r:r.join('');};M=function(d){return L(d,D,E,false);};N=function(c){return L(c,E,D,true);};this.encode=M;this.decode=N;B();};
     273
     274                const base32 = new Nibbler({
     275                    dataBits: 8,
     276                    codeBits: 5,
     277                    keyString: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',
     278                    pad: '='
     279                });
     280                const base16 = new Nibbler({
     281                    dataBits: 8,
     282                    codeBits: 4,
     283                    keyString: '0123456789ABCDEF'
     284                });
     285
     286                hash = base16.encode(base32.decode(hash));
     287                hashValid = true;
     288            }
     289            else if (hash.length === 40 && (/\b[A-F0-9]{40}\b/.test(hash))) {
     290                hashValid = true;
     291            }
     292
     293            if (hashValid)
     294                url = 'https://torcache.net/torrent/' + hash + '.torrent';
     295        }
    244296        var o = {
    245297            method: 'torrent-add',
    246298            arguments: {
  • J:/T1/trunk-web-031216/web/javascript/transmission.js

    old new  
    973973            if (url != '') {
    974974                if (url.match(/^[0-9a-f]{40}$/i)) {
    975975                    url = 'magnet:?xt=urn:btih:' + url;
     976                }
     977                else {
     978                    var hash = ' ';
     979                    var hashValid = false;
     980                    if (/^t magnet:\?/i.test(url)) {
     981                        const magnetData = /xt=urn:btih:([a-z0-9]+)/i;
     982                        const magnetHash = magnetData.exec(url);
     983                        if (magnetHash) {
     984                           hash = magnetHash[1];
     985                           hash = hash.toUpperCase();
     986                        }
     987                    }
     988                    else if (/^t /i.test(url)) {
     989                        const hashData = /t ([a-z0-9]+)/i;
     990                        const hashHash = hashData.exec(url);
     991                        if (hashHash) {
     992                           hash = hashHash[1];
     993                           hash = hash.toUpperCase();
     994                        }
     995                    }
     996                    if (hash.length === 32 && /\b[A-Z2-7]{32}\b/.test(hash)) {
     997
     998                         /*
     999                         Nibbler - Multi-Base Encoder
     1000                         version 2010-04-07 mini
     1001                         Copyright (c) 2010 Thomas Peri
     1002                         http://www.tumuski.com/
     1003                         MIT License
     1004                         */
     1005                        var Nibbler=function(A){var B,C,D,E,F,G,H,I,J,K,L,M,N;B=function(){var x,y,z;C=A.pad||'';D=A.dataBits;E=A.codeBits;F=A.keyString;G=A.arrayData;y=Math.max(D,E);z=0;H=[];for(x=0;x<y;x+=1){H.push(z);z+=z+1;}J=z;I=D/K(D,E);};K=function(u,v){var w;while(v!==0){w=v;v=u%v;u=w;}return u;};L=function(f,g,h,j){var k,l,m,o,p,q,r,s;s=function(e){if(!j){r.push(F.charAt(e));}else if(G){r.push(e);}else{r.push(String.fromCharCode(e));}};p=0;q=0;r=[];l=f.length;for(k=0;k<l;k+=1){q+=g;if(j){m=f.charAt(k);o=F.indexOf(m);if(m===C){break;}else if(o<0){throw'the character "'+m+'" is not a member of '+F;}}else{if(G){o=f[k];}else{o=f.charCodeAt(k);}if((o|J)!==J){throw o+" is outside the range 0-"+J;}}p=(p<<g)|o;while(q>=h){q-=h;s(p>>q);p&=H[q];}}if(!j&&q>0){s(p<<(h-q));l=r.length%I;for(k=0;k<l;k+=1){r.push(C);}}return(G&&j)?r:r.join('');};M=function(d){return L(d,D,E,false);};N=function(c){return L(c,E,D,true);};this.encode=M;this.decode=N;B();};
     1006
     1007                        const base32 = new Nibbler({
     1008                            dataBits: 8,
     1009                            codeBits: 5,
     1010                            keyString: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',
     1011                            pad: '='
     1012                        });
     1013                        const base16 = new Nibbler({
     1014                            dataBits: 8,
     1015                            codeBits: 4,
     1016                            keyString: '0123456789ABCDEF'
     1017                        });
     1018
     1019                        hash = base16.encode(base32.decode(hash));
     1020                        hashValid = true;
     1021                    }
     1022                    else if (hash.length === 40 && (/\b[A-F0-9]{40}\b/.test(hash))) {
     1023                        hashValid = true;
     1024                    }
     1025
     1026                    if (hashValid)
     1027                        url = 'https://torcache.net/torrent/' + hash + '.torrent';
    9761028                };
    9771029                var o = {
    9781030                    'method': 'torrent-add',