Simplify usage reporting config options (fixes #370)

This commit is contained in:
Jakob Borg committed 2014-06-18 12:54:30 +02:00
1 parent d09c71b688
commit b05fcbc9d7
8 files changed
+49 -46

No files matched your search

+2 -2
View File
@@ -18,7 +18,7 @@ func init() {
bs, _ = ioutil.ReadAll(gr)
Assets["angular.min.js"] = bs
bs, _ = hex.DecodeString("1f8b080000096e8800ffec3cfd73dbb692bffbaf40756945393265277dbd77519c4eeaa4eff9a5493c71d2bb39d79da14448624d912a3fe2686cffefb70b80243e49da4ef2de9b394d1b4bc062b1582c16fb0160322147e9669b45cb5541bca31179b47ff03df9477091cec84f69b624411292b458d18cccd3a4c8a25959a459ee93e7714c58ab9c6434a7d9471afa3b80ed434e49ba20c52aca499e96d99c42c39012f8b94c3fd22ca121996d012d797dfc7e2f2fb631257134a709b42b564141e65035a3886a9196d07994403925bf1c1fbd7c73fa922ca298fa3b3b93dd3ff2384a0a32cbd24be8fe0929b2928e19915152d2eaf7262e73fc9fff26bb1368b98cd3591093074fc8228873000a9265190799f88d403bc312bee430de79319ceeec7c0c32926f93390c2b5992c3aa85bf4ec332a6deb0ae1b8ec9d9f968ca1a94593c0b00cd2119028b189e1ace074217d1d25b945010a509f11eac8a627392a51fa390662372b543e0a314fa215d04655ce4fea73c5bfc9d0650f62658b30efe67efe8f4ddcf7befd30b9a40471d6d8fd2f422a2555ba5e5cd4827b3c8d238a699373cad4a8f8a2c86814ab4e7f374038c645d56b4230b3619fdf82228b09bfd695dbaa4c5db57508453d294228f82ace00c66330194b08130ec484a42598739005cdd4cb54a60a759bede1ebfc0310e95d2042412919c9d5b901c273850853c51bfc9d2229da7f1d10ae61fe4b8265382a15906ebc3c49d539abcc43a931a10221a9ba46774935a468ac559014c0d5c7527c0f4885edab998501a3e6fb8c8aaf033ccd6c32764f882c2ccca8561948972e2c1f7915c8b628295c82fb9bc48cbf90a2b3e6c42987c5175a393713c771091d135a80a2b1d66554544985e26711a84564282bca059945fd4a4b03fa0634e618927cb1c34ce22cd2899a5699c931896079414d0469dc2a260c030b9acfc2a0a01f72f11204f00112c0910ab792638424e84b8100e419e8721c8784e73002cb61bd051c3827e2a86376309dbebe0d3294dc257b34d2ee17b5b16cb1457c63b5c4cbf44eb08b4f5abe8a7493e6a9025e57a463315dd3b401024c7090ce563109f4a28790da9aa88d78d4aac403b3651790b84274116806689dfd13f4b58fbf278810b04c60c0a2109d9b01b901684d08a2f4d8d7b88ed67d83708afe54c6c619f3cb9e93c889f27c909ac2b09232b262f22100cd8d3b64454b7d056217a9904b398866e5c0d1a144615c9dfd8ce65c5c2abfaa139453dfb13df3865a1c562d2943bdb7f38494e4c0a7809c1cad6c6efcca6cf9334d9aed33207f321c009627a8c6fa71644e7aa4a5b96d1a97d698a1527b3e9c371d7721c573b11b71954e2558e21b6e72598276074cc03b6177e5078d789f024c8f3cb340bdb914a5002f1a62969a5f6fd2ff22a45e3ecefefdf9f9c826d9511e848e36f1bb2e727c7afe8569eb49363c24b048a60135dc06f6d926a2b0176fdd3723e07c54f436f2469fd6841bc6f984d20974a131c2551e18da66a9537fc8f8416c0830bb6ad0e47b88f06b1375c81bd33d4a04d8ba3d9912a121afbe39664340ddb8940d87c5516b853b543da4c2195e81b93b93f07a0e24cceba8795d1a2cc12173bec13e2e2fad52c985f8459ba013980fe4072412e401a66699085c2b0be714c4adb006bc36601e35821706d74cab431c3d307845e65743f24c349be8585be061a7394bb3c97ac6db04b027d70aa804e6d22c0310219d85e2279c4ed3ecf4e9d405e4d90dcaef9fe76f6076c9f3ef02cf7640b70e4c35a7d19cc5712f2283426c6ca006659fe88680e8750401374c53ebc3b3e4ad79b3401058398fab2476203c37b1685e70627f451c9dfed344a667def9942772149d1c245e702ccf94b6f3456200ab4ce3d84d9ab9d9011999083fdfd7d15320a85a2aa3e92cf02edd5a1a1da049ea153ea6211d36658e9af82fced650256e08666c596b1da028f9fca6b9d1ab537464901e6861d0b768a93028a0aec1f20ff7550acfc75f0c9db1f93bf925dce4b06719cfcb42d68fe3e2dc066d8b37858061432af084726854acf695974750d665d9fbe153067e7370476c8f98a78d4c55a8329fb7d8760015467e3c6a621542f5557135d8b817b8fbdd781ee73dabbbb99eee84e22987a45992bea148bf5bd0337f674a1ae7a8483757f086e6c998474112560cad9b7163038928b04773b59bb2b3d98a861a2c07b8035f60d76e1c47c5aa49b0df46cc5ccc235055fc343d47c966e587dd3ba02677fcff6cffd22fd001d64473035a0cc1ff20a9897595e64dec168aa8e43343f240374fd60b31d90eb6bd2941e87311de863e1d50fa19a7883864af4684f683607fd0cc6b098988764f0ed68601dad60893420cb8c1fc560317ef9098f9245fa05663b44bf2dfb6c93adccd83082b971f62c16e2d065263568723ef14e4c9b2c5a07e098d93059d8a7cda12a145f7c22619f748dd8c25e1e5165fa9ae1dfef875599c2cdbc80510104ec165639c185c5bb98d800241aa63a5fd96eb48853b0d0a01bbb5ac498a0452d62f1d142b19d915a54f30067d9bc4403ff0dfc3d7e71ae0a1d02eabca9ca7db4ca62caba4526022b6c9b5aad5a37a44899fd33d4cc2f42318aed6e293414f170b1e83dc32ef4ed48c7d8a275862ce2c0865f6b630b6731d6f7efc1d7f4e2b6fc14cec96d98b6066b2f7773cb54d6ffb2ec32f5632f9e99cab093676edd8863c568ce57e698208c314d0493da74fb8f2df32db1fc9f36044d09b4ee53eea1fc4a3ba701895129658226656c1c640a888f34cb01b78dbe2fc99e3882bdf75777df1df30cdb6d881d1bdc51878b2358a34fc3125472be0a30c40595630c486fd56dd2b09270ac53c5dfc0210abc7e4c9365b102938b1c38465cdb072d0315d8c056760a83c830764a83b056446d4f136530705928f53c43f78ec63248cb185589a9ac7ff0697fb01b1198f67e631bb83ec5099704ad99a74d98c497be4cf14aee72b146a3561675f1a70f737a738686512145e9ed9c994cc054bba024201861441b05da6eeb6a254deb0b90b79bcad9ae92f2d8c653610590ec7fdb7061e8bd150f00c83830a02bc6d43712cae2ea7616e5c147d809441ebb62902139735c20e41fa76fdff8394b5e460b8d4a89426c906e0a96655db10303f9137235845e0a50667bef41be587a74b38945ae61f2479e26c39b1b3d52b14973236e077dc1d880a031ebc416b5e817a7e4b8262c957b8770a496b767c137b9ac3b3c699989dec29a9719fc93ae293f1c32e78703d439ab0f0c7c534b17fdb30ce2dc2ea7e356511f91eb6b8315fcd3811ec4d7815a15ec68e10992472ad361cc39a5a841aab310e4328a6382e97c744766b41e2bb04ba41e3433d3a4c9e7892a160370512760464e21300f67a8c91e36cd3bfa689e83e46f81fc4b5267f763ccc7c6db1da7a0f9bd548e3667d3167c9d6ac73a494eba7c9ee0142629d179aa429d1699Line truncated
bs, _ = hex.DecodeString("1f8b080000096e8800ffec3c6b73db3892dffd2b30bacc88b265ca4e66e7f6a238531e27b3ebcdcb1527b9ab733c559408491c53a4c2876d95edff7edd0048e2c587ec24bb5b75aa9958021a8d46a3d1e86e34301a91a378b54e82f92223ced1803cdedbff99fcc3bb8827e4b73899132ff2499c2d6842a6719425c124cfe22475c9611812d62a25094d6972497d770bb07d4c298967245b042949e33c995268e853023fe7f1254d22ea93c91ad09237c71f76d36c1d521206531a41bb6ce165640a55138aa866710e9d07119453f2faf8e8e5dbd397641684d4ddda1a6dff998641949149125f41f74f4996e474c8880ca29c16bf57619ee2fffc37d91e41cb79184fbc903c7a4a665e98029017cdf3d04bc46f04daeae7f02585f14eb3fe786bebd24b48ba8ea630ac684e0e8a16ee32f6f3903afdb2ae3f2467e783316b9027e1c4033407a40f2c62784a3817089d0573679643411047c479b4c8b2d549125f063e4d06e4668bc04729747d3af3f2304bddeb3499fd9d7a50f6d65bb20efe67f7e8f4fdefbb1fe20b1a41472d6d8fe2f822a0455ba5e5dd4027334be230a489d33f2d4a8fb22484814ab4a7d378058c645d16b4230b5609bd7ce165d8cddeb82c9dd3ecdd2b28c229a94a91475e927106b399004ad84018762425a2acc314006eeec65a25b0d32c5fae8f5fe018fb4a6904128948cece2d488e231ca8429ea85f2571164fe3f06801f30f725c9229c1d02481f561e24e298d5e629d490d08110d4dd213ba8a2d23c5e22403a67a757527c0f4805ed9b91851ea1f565c6455f8e927cbfe53d27f416166e5423f48443971e0fb40ae4531c14ae4975c9ec5f97481151f573e4cbea8bad3c9389ed61091d025a80a2b1d665541841f5f4561ecf95642bc34a349905e94a4b03fa0634e618947f31434ce2c4e2899c47198921096079464d0469dc22c63c030b9acfc26f001f7eb0090478008960488d534111c2127425c08872087be0f329ed21400b3f50a74543fa3d759ff6e28617be35d9fd2c87f3559a512be7779368f7165bcc7c5f43a5806a0ad5f05bf8dd241852cca97139aa8e8de03022f3a8e6028975e782aa1e435a4a8224e3b2ab102edd844e506084fbcc403cd12bea75f7258fbf278810b04c60c0a21f2d9b02b900684d08a2f4d8d7b88ed77d83708afe54c6c609f3cb9f1d40b0fa3e804d6958491159317010806ec696b22aa1b682b10bd8cbc4948fd7a5c151a144615c9dfd8ce65c5c2abbaa139453dfb1bdf3865a1c5625295d7b6ff78129d9814f01282958d8ddf9b4d0fa3385a2fe33c05f3c1c309627a8c6fa71644e7aa4a9be7c1a97d698a1527b3e9e371db721c163b11b71954e2558e21b6c31ccc13303aa61edb0b3f2abc6b4578e2a5e9559cf8cd482528817855953452fbe1b5bc4ad138fbfb870f27a7605b25043ad2f8db84ecf0e4f8155dcb9376724c788940e1ad820bf8ad4d526925c0ae7f9a4fa7a0f8a9ef0c24ad1fcc88f303b309e45269828328c89cc158ad72faff11d10c7870c1b6d5fe00f7512f74fa0bb077fa1ab46971543b524142657f6c4846d5b09908844d1779863b5533a4cd145289be3399fbbb072acee46cfdb0129ae54954c70efb84d471fd66e24d2ffc245e811c407f20b92017200d93d84b7c6158dfd54c4ad3004bc36606e35820706974cab431c3d305844e6174ef90fe285dc3425f028d29ca5d9a4ad636d8259e3e385540c73611e018810c6c2f913ce0769f63a74e202f26486e577d7f37f913b64f1778963ab205387061adbef4a60b0979e01b13636500b32c7f4534077d28a011ba621fdf1f1fc5cb551c8182414c5dd923b181e13d0bfc738313faa8e4ef761a25b3bef34ca1bb10c568e1a27301e6fc9533182a10195ae70ec2ec964ec8808cc8fedede9e0a19f84251151fc96781f6ead0506d02cfd029ad6311d36658e92ebcf4dd550456e08a26d99ab1da028f9fc26b1d1bb577464906e6861d0b768a93028a0aec1f20ff8d972ddca577edec0dc95fc936e72583388e7e5b6734fd10676033ec5a3c2c030a9997f9039342a5e738cfdaba06b3ae4bdf0a586de7770476c8e98238b48eb50653f6ba0ec102a8cec69d4d43a85eaaae26da1603f71e3baf03dde7b4777737ded29d4430f5b23c55d42916eb7b076eecf14c5df50807ebfe00dcd83cf2e92c88c094b36f2d6070441711ee76b276577a3051c34481f7006bec07eca216f36916af56d0b315330bd7647c0df751f359ba61f555eb029cfd3ddb3b77b3f82374901cc1d48032dfe115302f93344b9cfdc1581d87687e407ae8fac166db23b7b7a42a3df643dad3c7c2ab77a09a38bd8a4af4684f683205fd0cc6b098981dd2fb71d0b38e56b0441a9065c68f42b018bffd8407d12cfe06b3eda3df967cb5c95666ac1fc0dcd4f62c1662bfce4caad0a47ce26b31ad9260e9816366c364619f3687aa507cf389847db26ec416f6f2882ad3d70cff5e37acca14aea6198c0a2060b7b0ca092e2cdec5c80620d130d6f9ca76a35918838506ddd8d522c6042d6a118b8f668aed8cd4a29a0738cbe6251ab86fe1eff18b7355e81050e74d51eea2551652d62d32115861dbd44ad5ba2259ccec9fbe667e118a51ecfa9642431107178bde33ec423f0e748c0d5aa7cf220e6cf8a536b67016637dff1e7c8d2f36e5a7704e3661da12acbdb49e5ba6b2fe976597a91f3bf1cc5486ad3cabd78d38568ce67c678e09c218d34430a949b7ffda30df12cbff6943d09440e33e553f944fb4751a901895522668d2894d0d9902e2922629e0b6d1f72dd91306b0f77eaaefbb659e61bbf5b163833bea7071044bf469d801957c5e0518c28cca3106a4b7e836aa584938d6b1e26fe010055e37a4d13c5b80c945f66b465cda070d0315d8c056ae150671c2d82a0dc25a11b51d4d945eafce4229e719baaf692c83348c519598c2fa079ff617bb1181c7de6f6d03d7a738e292a03573b40993f8d295294ece5d2ed668d0c8a236fe74614e67ce503fc8a428bd9d33a311986a17947804238c68a340db75595d706bb97ab72a3cece2241e011de51cd71540b2d3ad2370cbd3080c17d9aa0f617b5b8169439e83556bc384e1fa463200406e884160c187aed153168bb7b335f52e61f71067df05530d699be2a222ff387df7d64dd9816730d3a89428c406f12a6327b30b9664903e25377de8250305b8fb0164921da9ae56a1389f18fd99c651ffee4e8f6eace2d488f5415f30362068c83ab1453abac53639ae113bfebd4708533beb67013bb9ac3da4699989ce029ee609fc132f294f2899f2840275ceca24831f0ae1a25f722f4ced523e34857b406e6f8de1f34f334a90d8a12ae19a5e12b4e9ecc564a2059d5e204cce0ef292e2208f2c3c3c64a711a162bdc509f183947d37ecd0a675fad34fd6655caed36716f7539a267b2366e6ee596d5816cf7d0841a838362667775fb78c6b395d64a590ab200c092656Line truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
Assets["app.js"] = bs
@@ -63,7 +63,7 @@ func init() {
bs, _ = ioutil.ReadAll(gr)
Assets["favicon.png"] = bs
bs, _ = hex.DecodeString("1f8b080000096e8800ffec3dfb7bdc386ebfe7af60e6b61be76a699cc7e6ae8e3dad6367efdcdd3cbe38e9f5badfb61f47e2cc702d898a48d999737c7f7b0150efc78c3cb613dfedfe90782492200802200012d4defda33787effffaf6255b983098dcdbbbef38f70e55bc4ce47c61d8d6e143f678e7d153f69ffc544dd90b95cc198f7ca6cc4224cc539149e434352ad12e3b080246ad344b8416c999f0dd7b1fb4606ac6cc426aa6559a78025af982c1e35c9d8924123e9b2e01267b75fcded166190816484f44d0ce2cb8611e144dc5bd994aa15b19c14bc17e3c3e7cf9fae4259bc940b8f71c07d046ec59c0a3f9fe48442316cd1d1ec7fb23bd8c3ce83b9ad32bc257058148f6472779c9a1498211f302aef5fe082b058a9f8e10a4e0fee41e637ba1309c790b9e6861f647a999397f1c95050b6362477c4ce5d9fee8bf9d0f07cea10a636ee4341023a29088a0d5f1cb7de1cf45a55dc443b13f3a93e23c5689a9543d97be59ecfbe20cc8e0d0c3360c5c1ac903477b3c10fb8fdc9d16205f682f91b1912aaac06a55e3a959a8a4552390d129cc5a00148362e3a586490f212d1231db1fcdf8193eba311072720f1b186902312988c83eb38b0b9ce4d730b9afa1a7ad8797977b635babe8c0029b2a65b449783cf6b41e174f6e282317de8c323c9015f442086331b4ac6196310cc2884f061b53096353e52fd905fd642ce6be0f083953658c0a77d91f76e24fcfb3b2190cda99f15006cb5d36fab308ce84911e67af452a46dbac78b1cd0e12a0f636d33cd20eb0b29c591097f7e84f1afcebe2bba2c7902773193946c5bbec91fb9d086b755d44d60955a474cc81fb2fba707925a2406db3572ae21efc3d549156c090db6c7408322341d45e8b73c0b000d3e88203b32177fb2837fec410eb9a6482acd32e457af597ce6042fa4b0bc8fe4ac89da50564bfa0c25425be482ced221535c615a8b96a907997ed3cafcf74e50d8171be2b273c565aa244ec224f814c9e353b90da389172a6292805537445af89e11c64388b5aa3210c2c48c3a868e34b1d071ce65246c0ebc29906ca3bcdf100d6b6920cfc98f347c138a4338175ca8229f74ee7096a3cec452580fe7cbaf5f8c9b36df6f8e90efef7e8e1f33a0513eecb54efb22795c1e7f479147f624fcbf739211fc3ebc7f9ebcbe6b880cd22d7e7a0381a7c1e881960bb53327a6d788f76cad7c4f93c9073a43f0ef2f97a5ae504ce15719bbe3817ecbe0c516bf2c8744802ac1145b3f38534c22199c1a6e7a0686adae05c58ea3fddd9e984e4b7148b1dff63502bebb0f05d1df220706a54ec45286bfc1fa1f025675b21ff94d1f40fcffe107f7a5800c8e40a96d818d404b0f4c4bea94a5f5199b1f1ef81f761a1358cb342d73258c90caa6de1cedddda22efb3d1025012d33858595c50ba0b406a162300875ce70aaa689e0a71ad7e14041f344c489823601b0e058c30a09abf9b9348b2a44cb4f601ffc7e5cbc6e10210132e5b37259b0e3de98441056e2b15d8aefedd10869fd013385bd5731884ac2d000c077113f2bd6717e8625f60faa97fca72f663c0d60b9053b40503d39e7b468dab564cf9705105c23390c3ac9ca701502a9a8f7e14c13308846933d19cef312d45b23a6130f9731079f9c478fff48ab27b3abfbe8c963585b89f7eceff184158be91eb14d0e6c217d50a0ce2758edeafddb852535027aff0cc482a249e72a4ce026598d7c24695019474e9dca4f12d862e0b482e70dfc44c5be3a8f2aa550ceb3e5fd77a3663da0ff7c8ed6100a42f65085f2d297e6db68aae3e77bd382f6c04bd0fdde780aff78ada312f3a2835044690d1bc27752e064ad3fb02b4fc102f2fd7722565b0f017a959cf360192fd0ca61c52f67e1e3cc5ac27d2b42c0f0c0f71936877545254b446d6f0c3d0dee1a676650d730fc736149d0e81e41f4765c90469e491f39f70ae881e231275631e841387a6adec02f6f7e45c2c8e174f998a0ffd0ec7601fae9f8e856a8a217a941261b849d9acd5aa8d9e657a408a877c31333905566507dd1e8f89d85d0d5efde380d2a925d292d4bf6c6402cb2bcc7a011ac82edd18db63e6ae4ef65a20da8d6f36da6a260c9c099388f989cb14878426b9e2c9fb30c2f76ce930897a04c7b67e081021248711fe0cfe4fc3842a5582814005caae21a328113faa063abfaaa520e441101a3ff9dacdbbaee6ad67570c1a15a7b8b27f512726946937c14af85f0850f2bd4934941b17eb0b87e35f5543c79bf40a718c79b26b416b105d7e0f40ab0c2f8193ac8e08e450a56700f4c580e0adf2d170b16a648f20c1d5cacb34ae42947e2bc0edadd1bc77556588b349aed953530ab063819c0d43a64f6a198a7a9019fdd448e0ee94fb6e6b218acec6c5db91d4eb7683410adf249207832939f461d73557f517bac3c643f5b1c2fe66900f6063068839f6b9c9bc3c386e52242ee06db4223056dcb8725844e2e7fb68ac91d741be211933e1236eb410abd9add33d1b8b8c0268758b085bfdce323b01f68aee051706361a2f5877f7f04b471d67ac9dd10a55a3da8d923598d6a6459d40c07a043c0639ddb1331580a18c8f85d6dbcb931822f6160df48f0423fc160dae01b56dd3a3380592ab94732111e4ddf67463193b7dc2c2e2fd7812f6580550c3b0bf3c4709356495f37d9aaccca5bd4440d549f89268b679393b346952af589c809cc0a4ab77a1ba2d99a159b7e4bf75c58dfa9da84350209d93338323246dbb7030ac2b1be42571996267d4558b858af890c6f9a3e1581464b0480ace8c1af19f199ad9d71d6f11185cefc5ee4c7fdd85f7f60d69973542ca2c600bfa792eb8cac90996b0d30b71142b003839f3292fdeccae88c07b28f1f068f3fb30f1c2de74d02bc4c12b5e9f8bb91fd9a13eda910dca6a6838176c5225191fc1b990bd798ed0e6df6b5863a0fd4b4e932fc09def1a0e6cbddc4c4ce09ecf732101a16061e9cf3a57e9d8653915c5e3269a0eb6dd6d3e8c5d250a3a98c388ac88baf47b0850a9bf4fa5179b740ae00a15e915ad4e60e11cb0b54ea3be8e3058a37e3056fc074573332d737a2587f7ddea30723f0482c45276ca7eec8aa7374570a91cc8da48e7929810c9e166cd2312b2d4ba53204a2ecba51ecefc330263b79bf3bec459f5954c0fd6aac8071ec0603bce21abca7eb0a4e6ffd0615897eefc0e27e03eef768f257a1d711ab01e07e03c26b7577a99dc25225bc53d194b9e379a412c1de8a24945ac32aa66f9fe6b64fec526f4ef61a90bb4c790af53b3c68590f760be02fd22c365c1f08b2a6002d926463b3014afa1c0028a2fd920eb7aae531d1eb6effaddb7de13d3190389121a8c4514fd8b51cf080280898e69e0c9ac62940e9d1b6bd48f93c9a8b64d4a93cd8b7dfb2a12b0b1ee448a42f3a5696f5421c77ad9a194076b8401475e7c0bac5a3cbeddd20d8530dd5606cba12a4a1d9bfb1284d04c08785678aadLine truncated
bs, _ = hex.DecodeString("1f8b080000096e8800ffec3d6977dc3872dffd2be0dec958de886cf918ef46963a9125cfae32e3e35976369b79933c3489eec68824680294dc2b6b7f7baa0abc8f6eaa25d9da9df960ab490085425da82a1cdcbb7ff4e6f0fd5fdfbe640b1306937b7bf71de7dea18a97899c2f0cdb3a7cc81eef3c7acafe939faa297ba19239e391cf94598884792a32899ca64625da650741c0a8956689d0223913be7bef83164ccd985948cdb44a134f402b5f30789cab339144c267d325c064af8edf3bda2c03c102e98908da990537cc83a2a9b8375329742b237829d88fc7872f5f9fbc64331908f79ee300da883d0b7834df1f8968c4a2b9c3e3787fa49791077d47737a45f8aa2010c9fee8242f39344930625ec0b5de1f61a540f1d3118214dc9fdc636c2f1486336fc1132dccfe283533e78fa3b260614cec888fa93cdb1ffdb7f3e1c0395461cc8d9c066244141211b43a7eb92ffcb9a8b48b7828f64767529cc72a3195aae7d2378b7d5f9c01191c7ad886814b2379e0688f0762ff91bbd302e40bed25323652451558ad6a3c350b95b46a04323a05ae05403128365e6a98f410d22211b3fdd18c9fe1a31b032127f7b081912610938288ec33bbb84026bf06e6be869eb61e5e5eee8d6dada2030b6caa94d126e1f1d8d37a5c3cb9a18c5c7833caf04051d00b218cc5d08a8659c63008233e196c4c258c4d95bf6417f493b198fb3e20e44c95312adc657fd8893f3dcfca66306867c643192c77d9e8cf223813467a9cbd16a9186db3e2c5363b4880dadb4cf3483b20ca7266415cdea33f69f0af8bef8a1e439ecc65e41815efb247ee7722acd5751159275491d23107e9bfe8c2e5958802b5cd5ea9887bf0f750455a81406eb3d121e88c04557b2dce01c3024ca30b0ec286d2eda3def81343a26b92098a4ebb14e9d55f3a0386f4971690fd95903b4b0bc87e4185a94a7c9158da452a6a8c2b5073d520f32edb795ee774e50d8171be2b191e2b2d51237651a64027cf9a1d486d9c4839d3148c8229baa2d724700e0a9c45add1100616a46154b4f1a58e030ebc9411c8ba70a681f24e733c40b4ad26833ce6f251080ed94c109db260cabdd37982160f7b5109a03f9f6e3d7ef26c9b3d7eba83ff3d7af8bc4ec184fb32d5bbec4965f0397d1ec59fd8d3f27d4ec8c7f0fa71fefab2392e10b3c8f539188e869c076206d8ee94825e1bdea39df235493e0fe41ce98f837cbe9e5639817343dca62ff282dd97215a4d1e990e4d8039a26876be904638a433d8f41c0c4dcd1a9c0b4bfda73b3b9d90fc9661b1e37f0c66651d16beab431e044e8d8abd08658dff2314bee46c2be49f329afee1d91fe24f0f0b00995ec1141b839900919ed83755ed2b2a3336fe3dc83e4cb4867156d85a06339941b32ddcb9bb5bd465bf07a2246065a630b1b2780194d6a0540c06a1ce19b26a9a087eaa711e0e14344f449c28681380088e35cc90309b9f4bb3a842b4f204fec1efc7c5eb0611122053ce95cb421cf7c6a48230138fed547c6f8f4648f30fb829ecbd8a415512860e00be8bf859318ff3332cb17fd0bce43f7d31e36900d32df80182eac939a749d3ce257bbe2c80e01cc961d0495686b3106845bd0f679a8043349aecc9709e97a0dd1a319d78388d39f8e43c7afc479a3d999ddd474f1ec3dc4ab2677f8f27ac984cf7486c72600be98301753ec16c57efdf4e2ca911d0fb672016144d3a67610237c96ae4234983ca3872ea547e92c21603a7193c6fe0272af6d579542985729e4defbf1b35eb01fde773f4865011b2872a9497be34df46531d3fdf9b16b4075982eef7c653f8c76b1d9598171d84224a6bd810be930227ebfd815f790a1e90efbf13b1da7a08d0abe49c07cb78815e0e2b7e390b1f396b09f7ad0801c303df67d81ce615952c11b5bd31f434b86be4cca0ae61f8e7c292a0d13d82e8edb8208d3c933e4aee15d003c3634eac61d08370f4d4bc815fdefc8a8491c3e9f231c1f8a1d9ed02ecd3f1d1ad50452f52834236083b359bb550b3cdaf481130ef862766a0a8cca0faa2d1f13b0ba1abdfbd711a5434bb525a96ec8d8158e4798fc1225803db631b6d7db4c8dfcb441b30ade7db4c45c1924130711e31396391f084d63c593e67195eec9c27114e4199f5cec003052490e23ec09fc9f9718446b1302800b834c535640227f4c1c656ed55a51c88220246ff3b59b775dbd5acebe08443b5f6164fea2514d28c26f9285e0be10b1f66a827938262fd6071fe6adaa978f27e8141318e374d682e620bae21e815e085f1330c90211c8b14cce01eb8b01c0cbe5b4e162c4c91e4193a3859679528528ec4791db4bb378eeba2b0166974db2b7360560d703280a90dc8ec43c1a7a98198dd448e0ee94f36e7b218bcec6c5eb91d49b7683410adca49207832939f461dbcaabfa83d561eb29f2d8917f334007f0304b421cf35c9cde161c37212a170836da19382bee5c31242a7943f5b25e40e860df188491f099bf520855e2dee996a5c5c6093432cd8c25feef111f80fc42b7814dc5898e8fde1df1f016de45a2fb91baa54ab07357b34ab518d3c8b9ae300740878ac737f22064f011319bfab8d377746f0250cec1b0951e827184c1b7cc3ab5be706304b25f74826c223f67d66943379cbcde2f2721df8520758c5b1b3304f0c376995f47597ad2aacbc454db440754e34453c634e2e1a55aad41991139815946ef536c4b2352b36e3966e5ed8d8a9da84351209d93304323246dfb7030ac2b1b142571996267d4558b8586f890c6fba3e1585464f0480ace8c1af39f199af9d49d6f111a5cefc5ee4c7fdd85f7f60369873542ca2c600bfa792eb8cacd0996b0d30f71142f003839f3292fdeccae88c07b24f1e068f3ff30f1c2de74d02bc4c12b5e9f8bb91fd9a8cf65408615333c040bf6291a848fe8ddc856b70bbc39a7dada1ce03356d860c7f82773ca8c57237c1d83981fd5e0642c3c4c08373bed4afd3702a92cb4b260d74bdcd7a1abd581a6a349511471579f1f508b65061935e3f2aef16c81520d42b528bdadc216279814a7d0763bc40f166bee00db8ee6a46eefa4614ebafcf7bec60041189a5e884edd40359758ee14aa192b993d4c19712c860b660930eaeb43c95ca1088b2eb46b1bf0fc398ece4fdeeb0177d6e5101f7ab8902e6b11b02f08a6b889eaeab38bdf51b5424fabd038ffb0d84dfa3c95f855e47ac0680fb0d08afd5dda5760a5395f04e4553e78ee7914a047b2b92506a0db398be7d9adb3eb14bbd39d96b40ee32e529d5eff0a0e53dd82580bf48b3d8707e20c89a12b448928ddd0628e90b00a088d64b3ac2aa56c444afbbe3b7eef085f7e440e244866012473d69d772c003b220e09a7b32683aa700a5c7daf622e5f3682e9251a7f160df7ecb86ce2cb8912391bee89859d62b71dc356b6600d9e10251d49d03eb568faeb07783644f355583b9e94a9286b87f63599a08800f4bcf144b57957c0cb6Line truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
Assets["index.html"] = bs
+3 -15
View File
@@ -250,30 +250,18 @@ func restPostConfig(req *http.Request, m *model.Model) {
}
}
if newCfg.Options.UREnabled && !cfg.Options.UREnabled {
if newCfg.Options.URAccepted > cfg.Options.URAccepted {
// UR was enabled
cfg.Options.UREnabled = true
cfg.Options.URDeclined = false
cfg.Options.URAccepted = usageReportVersion
// Set the corresponding options in newCfg so we don't trigger the restart check if this was the only option change
newCfg.Options.URDeclined = false
newCfg.Options.URAccepted = usageReportVersion
err := sendUsageReport(m)
if err != nil {
l.Infoln("Usage report:", err)
}
go usageReportingLoop(m)
} else if !newCfg.Options.UREnabled && cfg.Options.UREnabled {
} else if newCfg.Options.URAccepted < cfg.Options.URAccepted {
// UR was disabled
cfg.Options.UREnabled = false
cfg.Options.URDeclined = true
cfg.Options.URAccepted = 0
// Set the corresponding options in newCfg so we don't trigger the restart check if this was the only option change
newCfg.Options.URDeclined = true
newCfg.Options.URAccepted = 0
newCfg.Options.URAccepted = -1
stopUsageReporting()
} else {
cfg.Options.URDeclined = newCfg.Options.URDeclined
}
if !reflect.DeepEqual(cfg.Options, newCfg.Options) || !reflect.DeepEqual(cfg.GUI, newCfg.GUI) {
+3 -3
View File
@@ -415,11 +415,11 @@ nextRepo:
}
}
if cfg.Options.UREnabled && cfg.Options.URAccepted < usageReportVersion {
if cfg.Options.URAccepted > 0 && cfg.Options.URAccepted < usageReportVersion {
l.Infoln("Anonymous usage report has changed; revoking acceptance")
cfg.Options.UREnabled = false
cfg.Options.URAccepted = 0
}
if cfg.Options.UREnabled {
if cfg.Options.URAccepted >= usageReportVersion {
go usageReportingLoop(m)
go func() {
time.Sleep(10 * time.Minute)
+4 -1
View File
@@ -107,7 +107,10 @@ loop:
}
func stopUsageReporting() {
stopUsageReportingCh <- struct{}{}
select {
case stopUsageReportingCh <- struct{}{}:
default:
}
}
// Returns CPU performance as a measure of single threaded SHA-256 MiB/s
+10 -5
View File
@@ -16,9 +16,9 @@ import (
"strconv"
"strings"
"github.com/calmh/syncthing/scanner"
"code.google.com/p/go.crypto/bcrypt"
"github.com/calmh/syncthing/logger"
"github.com/calmh/syncthing/scanner"
)
var l = logger.DefaultLogger
@@ -156,11 +156,10 @@ type OptionsConfiguration struct {
MaxChangeKbps int `xml:"maxChangeKbps" default:"10000"`
StartBrowser bool `xml:"startBrowser" default:"true"`
UPnPEnabled bool `xml:"upnpEnabled" default:"true"`
URAccepted int `xml:"urAccepted"` // Accepted usage reporting version; 0 for off (undecided), -1 for off (permanently)
UREnabled bool `xml:"urEnabled"` // If true, send usage reporting data
URDeclined bool `xml:"urDeclined"` // If true, don't ask again
URAccepted int `xml:"urAccepted"` // Accepted usage reporting version
Deprecated_UREnabled bool `xml:"urEnabled,omitempty" json:"-"`
Deprecated_URDeclined bool `xml:"urDeclined,omitempty" json:"-"`
Deprecated_ReadOnly bool `xml:"readOnly,omitempty" json:"-"`
Deprecated_GUIEnabled bool `xml:"guiEnabled,omitempty" json:"-"`
Deprecated_GUIAddress string `xml:"guiAddress,omitempty" json:"-"`
@@ -345,6 +344,12 @@ func Load(rd io.Reader, myID string) (Configuration, error) {
}
}
if cfg.Options.Deprecated_URDeclined {
cfg.Options.URAccepted = -1
}
cfg.Options.Deprecated_URDeclined = false
cfg.Options.Deprecated_UREnabled = false
// Upgrade to v2 configuration if appropriate
if cfg.Version == 1 {
convertV1V2(&cfg)
+20 -14
View File
@@ -279,8 +279,9 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) {
$scope.editSettings = function () {
// Make a working copy
$scope.config.workingOptions = angular.copy($scope.config.Options);
$scope.config.workingGUI = angular.copy($scope.config.GUI);
$scope.tmpOptions = angular.copy($scope.config.Options);
$scope.tmpOptions.UREnabled = ($scope.tmpOptions.URAccepted > 0);
$scope.tmpGUI = angular.copy($scope.config.GUI);
$('#settings').modal({backdrop: 'static', keyboard: true});
};
@@ -296,17 +297,24 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) {
$scope.saveSettings = function () {
// Make sure something changed
var changed = ! angular.equals($scope.config.Options, $scope.config.workingOptions) ||
! angular.equals($scope.config.GUI, $scope.config.workingGUI);
if(changed){
// see if protocol will need to be changed on restart
if($scope.config.GUI.UseTLS !== $scope.config.workingGUI.UseTLS){
var changed = !angular.equals($scope.config.Options, $scope.tmpOptions) ||
!angular.equals($scope.config.GUI, $scope.tmpGUI);
if (changed) {
// Check if usage reporting has been enabled or disabled
if ($scope.tmpOptions.UREnabled && $scope.tmpOptions.URAccepted <= 0) {
$scope.tmpOptions.URAccepted = 1000;
} else if (!$scope.tmpOptions.UREnabled && $scope.tmpOptions.URAccepted > 0){
$scope.tmpOptions.URAccepted = -1;
}
// Check if protocol will need to be changed on restart
if($scope.config.GUI.UseTLS !== $scope.tmpGUI.UseTLS){
$scope.protocolChanged = true;
}
// Apply new settings locally
$scope.config.Options = angular.copy($scope.config.workingOptions);
$scope.config.GUI = angular.copy($scope.config.workingGUI);
$scope.config.Options = angular.copy($scope.tmpOptions);
$scope.config.GUI = angular.copy($scope.tmpGUI);
$scope.config.Options.ListenAddress = $scope.config.Options.ListenStr.split(',').map(function (x) { return x.trim(); });
$scope.saveConfig();
@@ -561,7 +569,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) {
$scope.refresh();
if (!$scope.config.Options.UREnabled && !$scope.config.Options.URDeclined) {
if ($scope.config.Options.URAccepted == 0) {
// If usage reporting has been neither accepted nor declined,
// we want to ask the user to make a choice. But we don't want
// to bug them during initial setup, so we set a cookie with
@@ -590,15 +598,13 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) {
};
$scope.acceptUR = function () {
$scope.config.Options.UREnabled = true;
$scope.config.Options.URDeclined = false;
$scope.config.Options.URAccepted = 1000; // Larger than the largest existing report version
$scope.saveConfig();
$('#ur').modal('hide');
};
$scope.declineUR = function () {
$scope.config.Options.UREnabled = false;
$scope.config.Options.URDeclined = true;
$scope.config.Options.URAccepted = -1;
$scope.saveConfig();
$('#ur').modal('hide');
};
+6 -6
View File
@@ -583,11 +583,11 @@ found in the LICENSE file.
<div class="form-group" ng-repeat="setting in settings">
<div ng-if="setting.type == 'text' || setting.type == 'number'">
<label for="{{setting.id}}">{{setting.descr}}</label>
<input id="{{setting.id}}" class="form-control" type="{{setting.type}}" ng-model="config.workingOptions[setting.id]"></input>
<input id="{{setting.id}}" class="form-control" type="{{setting.type}}" ng-model="tmpOptions[setting.id]"></input>
</div>
<div class="checkbox" ng-if="setting.type == 'bool'">
<label>
{{setting.descr}} <input id="{{setting.id}}" type="checkbox" ng-model="config.workingOptions[setting.id]"></input>
{{setting.descr}} <input id="{{setting.id}}" type="checkbox" ng-model="tmpOptions[setting.id]"></input>
</label>
</div>
</div>
@@ -596,17 +596,17 @@ found in the LICENSE file.
<div class="form-group" ng-repeat="setting in guiSettings">
<div ng-if="setting.type == 'text' || setting.type == 'number' || setting.type == 'password'">
<label for="{{setting.id}}">{{setting.descr}}</label>
<input id="{{setting.id}}" class="form-control" type="{{setting.type}}" ng-model="config.workingGUI[setting.id]"></input>
<input id="{{setting.id}}" class="form-control" type="{{setting.type}}" ng-model="tmpGUI[setting.id]"></input>
</div>
<div class="checkbox" ng-if="setting.type == 'bool'">
<label>
{{setting.descr}} <input id="{{setting.id}}" type="checkbox" ng-model="config.workingGUI[setting.id]"></input>
{{setting.descr}} <input id="{{setting.id}}" type="checkbox" ng-model="tmpGUI[setting.id]"></input>
</label>
</div>
<div ng-if="setting.type == 'apikey'">
<label>{{setting.descr}} (<a href="http://discourse.syncthing.net/t/v0-8-14-api-keys/335">Usage</a>)</label>
<div class="well well-sm text-monospace">{{config.workingGUI[setting.id] || "-"}}</div>
<button type="button" class="btn btn-sm btn-default" ng-click="setAPIKey(config.workingGUI)">Generate</button>
<div class="well well-sm text-monospace">{{tmpGUI[setting.id] || "-"}}</div>
<button type="button" class="btn btn-sm btn-default" ng-click="setAPIKey(tmpGUI)">Generate</button>
</div>
</div>
</div>
+1
View File
@@ -97,6 +97,7 @@ func TestIgnore(t *testing.T) {
r bool
}{
{"foo/bar", true},
{"foofoo", false},
{"foo/quux", false},
{"foo/zuux", true},
{"foo/qzuux", false},