From 49dedf3a2f562b4582dcc41d9c82d3f63379d37d Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Tue, 30 Apr 2019 15:08:37 -0400 Subject: [PATCH] Start a webextension --- .gitignore | 1 + proxy/Cakefile | 12 ++++++++---- proxy/package.json | 1 + proxy/webext/README.md | 9 +++++++++ proxy/webext/icons/16-on.png | Bin 0 -> 1386 bytes proxy/webext/icons/16.png | Bin 0 -> 1119 bytes proxy/webext/icons/32-on.png | Bin 0 -> 3035 bytes proxy/webext/icons/32.png | Bin 0 -> 1512 bytes proxy/webext/manifest.json | 16 ++++++++++++++++ proxy/webext/snowflake.html | 16 ++++++++++++++++ proxy/webext/tmp.js | 2 ++ 11 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 proxy/webext/README.md create mode 100644 proxy/webext/icons/16-on.png create mode 100644 proxy/webext/icons/16.png create mode 100644 proxy/webext/icons/32-on.png create mode 100644 proxy/webext/icons/32.png create mode 100644 proxy/webext/manifest.json create mode 100644 proxy/webext/snowflake.html create mode 100644 proxy/webext/tmp.js diff --git a/.gitignore b/.gitignore index 165c512..a187011 100644 --- a/.gitignore +++ b/.gitignore @@ -14,5 +14,6 @@ proxy/test proxy/build proxy/node_modules proxy/spec/support +proxy/webext/snowflake.js ignore/ npm-debug.log diff --git a/proxy/Cakefile b/proxy/Cakefile index 7da528e..8013dac 100644 --- a/proxy/Cakefile +++ b/proxy/Cakefile @@ -21,14 +21,14 @@ FILES_SPEC = [ 'spec/websocket.spec.coffee' ] FILES_ALL = FILES.concat FILES_SPEC -OUTFILE = 'build/snowflake.js' +OUTFILE = 'snowflake.js' STATIC = 'static' copyStaticFiles = -> exec 'cp ' + STATIC + '/* build/' -compileCoffee = -> - exec 'cat ' + FILES.join(' ') + ' | coffee -cs > ' + OUTFILE, (err, stdout, stderr) -> +compileCoffee = (outDir) -> + exec 'cat ' + FILES.join(' ') + ' | coffee -cs > ' + outDir + '/' + OUTFILE, (err, stdout, stderr) -> throw err if err task 'test', 'snowflake unit tests', -> @@ -48,9 +48,13 @@ task 'test', 'snowflake unit tests', -> task 'build', 'build the snowflake proxy', -> exec 'mkdir -p build' copyStaticFiles() - compileCoffee() + compileCoffee('build') console.log 'Snowflake prepared.' +task 'webext', 'build the webextension', -> + compileCoffee('webext') + console.log 'Webextension prepared.' + task 'lint', 'ensure idiomatic coffeescript', -> proc = spawn 'coffeelint', FILES_ALL, { file: 'coffeelint.json' diff --git a/proxy/package.json b/proxy/package.json index cc4cc78..8bc5fb5 100644 --- a/proxy/package.json +++ b/proxy/package.json @@ -10,6 +10,7 @@ "test": "cake test", "lint": "cake lint", "build": "cake build", + "webext": "cake webext", "clean": "cake clean", "prepublish": "npm run build", "start": "node build/snowflake.js" diff --git a/proxy/webext/README.md b/proxy/webext/README.md new file mode 100644 index 0000000..bacaa94 --- /dev/null +++ b/proxy/webext/README.md @@ -0,0 +1,9 @@ +Build it, + +``` +cd .. +npm install +npm run webext +``` + +and then load this directory as an unpacked extension. diff --git a/proxy/webext/icons/16-on.png b/proxy/webext/icons/16-on.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb253d589ccf9e440df8c5cbd7a93992088a6d3 GIT binary patch literal 1386 zcmV-w1(o`VP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3yua>FPLhX3mndjtds!EvyGnZ3ate_t?h)71HJ z5;HYK7DDKeuuJv7e;fUS%UWZ|i^h;bFt~j3$z}|q*{-c;LR^KU6rCR=y= z+be=m1ooUITOB)td+e(?c;J%D=soVvbtRtTfIB-mjvej8o8axEo7kB=!z{Z$`LCUhNfj0W6b!|=t%fZ+YPnWQK^b9=*kCrxW?~Wk$t^cHJLrk=WVX^^Ezz+SOey7z zMKeri%+Aord9jOI{31(Obcst^@{06X{VHo%b&YFUbFsx0lz$0Dsl<{>u3V8y)mN#Z zYK=A3+>mR{HQ%I#rY*MA@=k41{Y{N;$UUaUlUgU{ho1gWgIM)qg8OkIof(K(&mgXy z0211EW~gWHZ70{6nPgEEVnL0i!ztW}fuOH!rSZ=0hulMMB>ogPdygD-bl)IH9o;1N zm)ilglE)jx4M4pLdrXaMIM|?2W41B(chb4O&Y7(^GA(D5#}k7$$rvpSAgcH?cIiV$ zc0UM?TpaqyG5XMveSP}t(0h*2-34#$-0|n4Mo;vfxw%iHWBYf^-`g$J=#d*Q?(Q!B zckFa(&*;1sJu)Zh+*6|uljxS(sc;OXfX&{KzA z1WKR!bFoWL>iXsQ(OY$TphoYUW=C$)myV+|hyUaBBJ<$*Jd*|V*765l(c7K00003^ zNklQ`iWCMLtA885FGi0AgXKrJbZo zY$P^fPzY?5LbMTV)z;$X%q1RwEgTq_oqe92*?FNsLY)Y8q6zb^f&3neSWLU8v>M1? zagwe{Y=&~*GlNcqP{%@@N#H(iQujl-4|Oiov2IQ)4{P{6?ybNU({a6Wg1jjf|djLJe1qUHomsq-4_d?e8&}jWW?>%qx4-RW}(*u!=Y~A4!fcJ z#x$nW-o;&FhX0>~H4J8iL;MPLsjEIqZC^Re3 zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=J?k|QY$MfaRyj({YD#Bs<3BKih%{P~bLtL&=o zi0SFYES!Xal*I@11g;AG?;j)lg@=m7kkmYvoFkr8QsIh@$LqOTifPsRB|bV&_Hci} zFbP_@UUT366?Xj?U}@WrXM3=7>-ZLWC~rZTGc!8d&$p29WvBff${ttKr|s;|(Y8&m z=Jh=pg3%Ou!hySxMASZK5v)LpRI~}T$aJFBziO5AeeA;BeF@&(dx>4F+b++c2r+Mm z{1T&WC;dKlD?%^S9y33EVRBFLC3a&pAERHpt0^N=IqXe6wz7I~JP=A*!!nBDqv+cz z1;w$&6T}*59w=v^LX2n+O4O**puXCZPAoBTXG6<;vMig6ap6-g1SmAvfTsm$iy;Alm`Ri}MPoK1 z#L>a0V&yD}4-g<#ZWIRCh-AQVo^xZ2(eh>G%Z#f9AXKs#(BJ?8R!WNevE<01s-h{V zYF1O%qBToSS#!>o=N(l|ESXw1Gq+;Z#gnUNH+L^y3m3r^rX?2(#Y-u*V$urfiqRDw zwH|!Pkq$lbVTT{(s3+3rOsAgtwA0UW*2Ya5j(^L|Li1Ky?bMMYjypi z$O1G^;f!gNfr||e-79;Yze&H{hW{$?7J3W4h2BDMp|{Xm=>H=$@W%uG)eQdt);p1h zMxnel00002VoOIv0RM-N%)bBt010qNS#tmY4#WTe4#WYKD-Ig~000McNliru;{+ZO z4mrnWmv{gG0SHM%K~yNuWzoAYg8>u;@LyHFNK-^ur3>N_kK~h(c>Du3G+hkL_Wlv9 zoh)X%4pON#FD687B zEM-@>id8)h>V%w>a|OMoB{1ODzJ8+y6=Mjz8IyEkNGG1$m{xNs@D}@H^(jL6)-97Mvn8@V`=~Z002ovPDHLkV1kC;`)U9H literal 0 HcmV?d00001 diff --git a/proxy/webext/icons/32-on.png b/proxy/webext/icons/32-on.png new file mode 100644 index 0000000000000000000000000000000000000000..fed8ea0c8597064a5b02e9fa91864b0d240ba13e GIT binary patch literal 3035 zcmV<13ncW3P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1hxvg)`J{I6B?60BKTj>d@I!CQW(O0u!B-~jR9 z9t=i9DKjfe;!^$Jzm5LEL-|dUHqP5%?S_XAI>?AOejAT*6`ST)e#rS1K40$B@rA@K zg{vALZJq5S?wdykr|122y-zOBar_);ez6az`pkW{+0M^_lpOcP{7hl?i~6*j`IpMP zXU66EvvvTZ7>uVR$*P3f@ap?43K6KFBCZ;*O7%u!zBhO^O02P?MT!mhRATdQMrQClEoX)bDC3co|c1Sl1E zvv@lE8N7G=40w7hF@v!JHWQwiL=X~aH=#ulQ8ZEcnngy4T2|?Bl`>1k_q=j4$gBnh zc#0++=qaQ;xXNHn;kG#t}9LPVRG8pfBObkfasB36Mx!!Ua+Fm7oKk&Jj~OEJ$1?F_Pi8>t~&nF9bK z%xw^iP+(xQLK$Jj=A?8&07nmgA|jVc%LE35F|r71;6^D6a=h$wqmL8ZRvI~O!&*Ru zQC2xng9HLuS{vxcX%7uWql_kFj5W@96HK(qYHO^u&UTNAPC4z2v(7p1f{R{x?TxqI zdGCXdK?Vg2Gr%RYx3i!7=j z{fjM*iZ7wWDk`K@bv4yiSA7jNHfXJ>rkiQDx#nAF@nCJTdSy*KG54M|FR8p ztl_qE`w*hriRqkyF{uR@cbx$UT6WGhFSM4Oxz5=ZWVb2_)`aQg6ww(2gSrZ7nmD+7 zF!z=>GWsjtNIZq(DPZf~f+!0@EedcvAg$J+3wlJuJ!(S_i_!#NBJL#6rMZq7 zdgTm-eT@`-PVjqvY4kuFK+sn)>CPETPy&NA-~?%#6ie$BY%4x=g+kJn*MMn!&g6RQ z;ABfkgVJJ2cFP)d5tt%9z{-?s)48T?k8VQtkQOzqay+!vg*K4-R$R2}7BX2f0-3;A zI_HTwAJM6;nn@?-45<}DT!tBcn1>e`rj)Jli(0CBrO zI2v~NDFo0zgoPy(HS?8qSXhS!I*bWAw5-ED0iUu74#^Ymai*|VG@$7lgzgnE@u{z= zQC2tgVRK&S8`%J80%x?uPy>~LQ#XO^hHcc+Z6gtUqq_iifpZ{%)UYLVsJcP5pCuqY zWuOF1D&~tlcHJvAf?(a((!ow$_j=Dux+msIW{64v`#D145iE~@(lbDVUGfNYMw&f# zg|zttX#hb~ zvnQ+p2Z*LQDs)oK%OZ5hW59Xj+U(Z9rqlO7!`%m_-QhR`o-D3H#;O*VQ#0rK;j5IR zox=vIY>2B-QvCkFY2PY5;}rkEiMG{(-{A2IM%vwII=<<~97?OI$IfoA8{~kUUprA= zgKuNdJ*DY=PCrt5%mpxtm7{>UIe6g7=sMeuJ6rA|ec5uC#zWsb&pJw4h51XA^uiy< zWFg$(2Yu(Mj&etT>^UA4{8B-0)qBsiN$0V>97x^wmy8s2iRawG?sJivrS!Zb3Cq30 zSowOx8xxHRibM8eH+rojA4W;5Fn@`XR$;!1@-!Fod4|8Umfr4QKJ+?zpZgE5+w0e> z@+W-(xm=)=$xV;DY;)M>?xl!*?oxYcQ4oIeIeL%buNWN;xGKMga7O8U@^$K4 z6t2A|++2PaaO*4Fw5-4H>&9NWc;mWfFrCk=?RD+?v-VQ> z?Ff51!46nxbO~wc_{htf@OzvKQ=+~F`eW1b(WZj#o4B)xm^W|N=Zd<^rXMV5;Id0C zq~#U@OML01Gso#Wqdzu&hgSBJ1+i6*^x<_UUiT<`=Yz%hJha+)(A%BI&2{dkGs6tj zk84L|o+sw#{YF197u9N=b6$U-P`-ONnL0f0^G)89|M4O7c@weSW}bnMW9G?+5jh7k z<4`#FpFrW96`=tHN^7?Kq z*QJaf>v${j{ZZnppT<_%z&pecF3M_9_FY`ZPXTY&eZA7(4UhBfv590KO6)^r-*r&n zl-^6x3EK5xk8R-RpT>r|`kL42onzKixum4i>G>v+kFNA>hgZ^~o3_5Njx)RTX)H*& zRsxPw{{dGlVFvjiL|Xs=00v@9M??Vs0RI60puMM)00009a7bBm000ie000ie0hKEb z8vp=6bJBM56C2lQn(=bz)5aM z2P!2=H_8l*Lo78xe!&WSjMqc?ZJ;)99wgx5xCN6!+4L{4vI&#$ z=MZdOb=O^2Sc_2O3hQGA9Dz_Lv?-4ZbtiVW&9CauaHwNKeYI_RXQ-csI<8H2LVsDX zG1S}f3ZBF>cpF<%X&yep85{_;yKScjusYOXm>bFtJcz~U3v~xR#~NI~%(e)Wnb?Y5 zSb|xh^oDXVMHXOsDBG|)9gfbC&dWATPg$W{4CNg>ilu3LYx=tUCrs4G@fr4o+LJqy zPP$XB1!7^2mUAg{AR{v@E9KW|^LYBWY8JeOskjd{)H&FT#~Wa`VKX*2oJ*O#sq62UiJ0EjW=o*op`6ExyE8cnVKrE$&XWU-2?N#3y(dGcYAV%*Q#54W$mK z6o)!IogWV6LO)!v4o~FNZmekMf=ugaI1BX|sxaU@f<-y`TR0y|Jb zIT^|);vu|{9MIe5d}KR_P!D4zy6{1$2eXG5R6npB-()2#q3mi^xCX#Q zNi>V|z4h$FjMOP<<7gu~{|z7+Z#-tFk@XESYS#Egxy$!+tZabT-)hy8jMgU^&Bplj z(QiNS1)jqkY{H&UUu=-k_E7dUoOk0?j_wACK5TE0(M#BajcI#n`nv2NSQ^Ur`F=3e zEqE96FuB2EUFg1)CAD?-C$m3zHY3)O?Ze5W@gH;U{`ThQYAxC54qCFVj_(DboN8mc z9;|Kee3Oh`yF^yyr_?=jt-IpCa2t+=x}@QJ36ACZ`Ty0$q|=tYH`Lx6c{eP)kdg0008sdQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=K7lH({0hTl2G9sx-RiQ`}cRda(q{{CRv>7;w6 zYG>zRA7UziW$_F2fs=&(_m2_&!bL@5NNS!-&JkBCsc=Qd<8@sv#kA^m@qUE+CwsUb zFie70uG`$Ve}!Ei11xR(@oW!vZXMr3`@x5x%*Zp^_VXh>4C`|;!EzvXg)^2R##I-rgGSe`dG^9!SO&UWev+HhL56e zs}vN+5>F6opn0I2feJCQJt$G5N`v}pPdYKh#GMT-^U1PoF2;pVxe%bxU;~~O#6jW& zHG!G$xzLJRR=krOksHC231Wm1UrPAS_&enm8e?uE6t7t)_7bJhtgwj$>J>V)0jfMjs{uV0!R^JD<(q%0x^>)Ws1gZ zM98CqPsPkx5+5Kys@y0Huo20C<2++yjM4IC<;#p$3qYu3F`&T#0<4r2`^S=F4^|->wmjca)x?siWixXtR$V-~dUkX7;HHVI%u^JEsC zQsPN&GK+JHC7bdztK`u;mo7`7!-%x9H zeWS<%G*98oX_SE%8yvb<_By|le!C6-Rp2f37J3W4h2BDMp|{ZgM`+;31OD)Ze*h3k zk&6!@zYYKZ00Lr5M??VshmXv^00009a7bBm000ie000ie0hKEb8vpAcO0007yNklrWgkkZ74MkLV|t1Hosp$0VtqZ^CuYBE9T|G)R0b03wXTX*Gz$Epx)sd8SGV5>)n7GGMiVp2=_q`ESAy|;Ye zg6}2GxZr6i*;0wMWeM)v>of4VR)1D4HWyD7?0WSU?6;NvgMVv`8uv|D_lxGTqWZ(? zTjM#rWrN^-32ok#lJY!`V9``ajheEAm+_pGltFD0&gcKhi{>oY9d=iAATDjhh_o(r zxDrlxn>XihaWM&FGLEZ5zcU~%E2|5f(T`evGR7n}H!mTk(U=)8*yFo^j(R7olJ+klK` zjV3{O=_nI2dxK&J*6azI5xMtl)8qli;4L-K+ zngePe{~9-!(CVyNYX+?5uvG)r{O+9A$`h&4S^J$ZC*mI189H%S%4s`I_}NhDZX|so z}3{virl@$lWLCVKUOZjjKGj&NDHDX2_`(4hNX`$FmUk5v9yiPD~Tv}A09!+L+ z2DHW-G6uDo@>Tx$d=O2>{a7$i`t+d5$$(xh9w?imaA-XsC^zs*UgIKo(y&Mli+J01 zu>7!7`EQS#)(JXIs|(lqA0L)UE0!xiEY)H-DB^#=jZ5x78o^pMQ~v{vWU8 literal 0 HcmV?d00001 diff --git a/proxy/webext/manifest.json b/proxy/webext/manifest.json new file mode 100644 index 0000000..8d1649e --- /dev/null +++ b/proxy/webext/manifest.json @@ -0,0 +1,16 @@ +{ + "manifest_version": 2, + "name": "Snowflake", + "version": "0.0.0", + "description": "Snowflake ...", + "background": { + "page": "snowflake.html", + "persistent": true + }, + "browser_action": { + "default_icon": { + "16": "icons/16.png", + "32": "icons/32.png" + } + } +} diff --git a/proxy/webext/snowflake.html b/proxy/webext/snowflake.html new file mode 100644 index 0000000..6a5eca0 --- /dev/null +++ b/proxy/webext/snowflake.html @@ -0,0 +1,16 @@ + + + + + + + + + + +
+
+ +
+ + diff --git a/proxy/webext/tmp.js b/proxy/webext/tmp.js new file mode 100644 index 0000000..4bd0a10 --- /dev/null +++ b/proxy/webext/tmp.js @@ -0,0 +1,2 @@ +// FIXME: Refactor snowflake.js to eliminate the need for this +document.cookie = "snowflake-allow=1";