diff --git a/auto/gui.files.go b/auto/gui.files.go index 91b2ed2c..31e58315 100644 --- a/auto/gui.files.go +++ b/auto/gui.files.go @@ -18,7 +18,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["angular.min.js"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffd41b6b73db36f27b7e05aaa62515cb94d3b9b9b989e2dcb46edaf1a56d3271d32f1e7da04448424d813a008aad71f5df6ff120091020453fd2e43493580216fbc2625f04c7cffee439a102cd5871cd317b8104dbe2119a175410bac5e5ef4dbee5f29ffe8d9e8d9f8c9f2df36296e6e8e90bb448730e40295d6ef39499df12e849b4852f5c303217d1e4c9938f29437c47e76245e8129d962b9275916d731c47d55c344297d321aca84612c9122bf21cb338ba2847cf04cb0176b185dfa4a0287ecae7c5067879ba12623344b74f107c24d90dc31f7f4c0506aa27936a7489c5db373024a5aa4719e6226542f3a884014ee4a4c62e59a15811e40070bb9f34261764e98faf77e73fc2681439a3b4c8b04472390d2039a75250873d338f192b58601dc798be96733e25d031ce7db618de142522353e1ea30bd830bae468861705c3685614394779515cc1881098b9148550c080428ddf92ec058a7e215c600a88607740c2395885da35f48e15a2981739d210e8fb2c037573cc0150ec36607191c037027e995dd026b71f59c87f4d6f2e30cddecc36dc42ff762b9685dcb3f7729b7f216b2250fce6870d1fd6a8e9763dc3ac13f97b4097d2730a727e4cf30b8b809e41e5148aef8cd9184e18b999bc3ffe77294be17ce4eff17fb70064eb063486403fb092664a4535487ffc80e46c05471637142f91ff44728cf4acd67f6fcd5b047e561ee57b4a5fd37496e3cca2a1a710cc1570d6718d571a6727d7bf14f3169c6ae63e282fe4f80fda63daf62d87513d6ea373d67f7847dff9ece8112427c38ba7ae175a6ec945f8f0993365abefc3f9430edc07575089edfbad58610812f35439de0f8ec80711be4b39bf2e58d68dd482328837f5480879a9a12a1e807fbfd8cee71867388bcb70203f6481e2af94f7b7479576e3e86b8a0550b9529e341a4ad799e671b422198e861307da0f20f2b377e8d4e12444ab9eeda6140a4a2ebdbd2ffc4f299c4b5ff2768e18165b46db24b99bc26e67e9fc2a63c506360ee8c1b6c2b65de1ddac485966b2847d8b3e7b092883e759b1dea40cc7e908cd9a624aa32916284d7e4bd7187d750a31714b33bc20140e1efaf65b6400664180a69c12a341f5d22c193a00b5fed0f1f3e6e6a961b3fc9559dea6660003c9205d5074d4d7f03e39746a1c35358de655856662ebb1ca0016600f2ba9f42a8db2c9a9542a818d89a3b1349c31df812359c3367379b4388feb75592ad226abee1974f55226110a237020d75b120d75a213871933c84b1bb7d7d5dfed34278174e6753a5f59f8e4b867d04d8155ea348ed01192e009ec464fd12d06148e4bb37eea89da64db11a1c98f957ff6de0599d7d2e21a08cb2c18f2ceeb78387220440693b18439aeb2e5211aa3e72727272e24c98c9f2d3f56720deb835b4c28240d75f2dd982db6a29a76e661c7504c3244286a53b072e5723259a5fced35850c738399d8c1b261085e7ecafa66e2cdeebd11c1762d5824d14b924d2be17e4dc52a59a737f1c908fd0b3dd33ba120cee90f3b81f9ef858094e3385048785052f5221bfa1c3a942bc5b59386bcaf0f6d07ac95f81e416c9eaf508cdb54eb29e5a4af0801407f371c733a3a6d90f331b806662fd0438d2318324eb7dc6bbaa88e73aaabb4de47b459db8529ed274f9af51b249e62cb1d07def46b5638f41c1278a3eec867e249f4815ec1f1a6911d73aaafaab617da0944d257fa7412355faf2ec1d5dfcb9369228a0f1b38bb6729c7e0e98ff404686fc6058b9f0f2ddf20e531cb4fd140569690cc0cd05f7fa17af43ccbf1a0298b9e063b18a078507329fb0cef309b43f6992eb151df111a7c331c04a5352ab1046a06d54d719643b6fae9774526dbc7842e8a47db1747b9110135761337e61db5e533352eae37aa1bdd869175ca7641746d42bbda7777f3936f0144c836d103cad67d33e56b15fe937e589d0dddcc05480510e0e90324886a1c6912e31080c5c3a4a95b1549e698e43150093b1d9978079c8ecac7174e4d219995fe13e00271c72c30c9e9d4b5400918cac1e57822d3fe1c2bb25287a089503c2aade59c22a990a8e1ec11967dcaf665c6ada0581e9b26d923147d336c62ec7015d18f841bd9c1925ad57a3e9722fd3f28b5b8baab3e4da57117a5ad214be3eddaf25dec17ab2edf49f6d299ef0c0feacc768bbeca64ffe76fd698614c29cdb49fba7cfbbf3bf6db52f96713a1e1043ae354bb287fe083db209971395586663d506861d3407cc48c03ee107f9f523d3981b8fb473bed1efbacda2477d18e6cc68479b2413ab871452e734e28a6fe190e813823c26abfb6b44ee2e8ebf20149dfb6986a670e83594dfa111f26197c80d468a73940c9db8ddaf5443788cd01750cc387ba102ce19b9c40ad339292a51babb8b901864abdde24023c583c9c044aa54dc1ed9e0650014dfce7e2ed6f09574fa0c862173b4c0c47e87685d30c6ceb05ba8dcea08a07533bfe1df2b708b4996e8023dd3b1effc90b1aed1d9aa1cd18c856eba0adb4525dd256553b1d59b701dcd6d8e5abe23aead4835915f92dacd6678201cb94567ce8fc9468b78c8112cd8aa70924d69866f1ed7e549e099f154902e47a7d03b61014df01bbc0f942b7961aaeccf164bebc356349f5d002ec4e359934a66a38f9b320144c11458d0d2f9571afd3e7ea35cd324fad07f5796b730e24b31d4dd74073df43a7e143eb2ab509f3b82243c18005ee963a44d17b80a17a7461410f3f81686aa07c666eff4c162417d8ee14b7c5285adadf57b501daa66637ca15fdb693a8209b7c582d0ad5ba947196a8de16fc79e976a3734c9762051347472dad20057749a64d52ee780fd91f207f5307fe7e1c88357fb3ab6f98b00c9a9d06ac1be3ca9f8c5056503c42647257197b1d02430585d4ee41d5be2de4efee197e2b22524e5f0cdd6cf7ac551fb00e6bb51a1d0ab6b44c93afba7ebfe31949b9b896d8efe71acedd78537e660ca7573d2a25fdc80030b59c3b2df166cb57b11f035b1c52c20b2662eb91e47dfdc6673e3085586156b2d896f8d85546abffeded7e65fc3fd8e8162bc20f1e6402494bd305dfc3a0696377c026279ec5d39e359925fc259db65b674066f5284026dc3db7423f3af0f7a2ad36c2c9ef443d8f6e5e1f3bb81bf31ca7ec75f9a4a23321b2efa4397c5eba5cebfd40c7e8f954b1d51542d492b162220a33b860508566f9ceb764383f36971d61faa09da82adaf6e8616be12a6985ff65e0ced3398ee7953b1c35cb5e39371c7654aa80a735ef7f0f89c1ddf27eb3a2cefb39e47cb245a914079e64df55085848ca5cc47bc4ee252381b50ed1cbf2644dfd8b35f7a8454c6c96741ea70af0947c50bb01a5de23ff7f5c416462d42989be09bb291e23317278f6122343c54b8ce42a0faa0a9f97537fceb523cb29fba6549d7baabd38a1612ca164274c8e96467baa698503812584ce306eb5b1bf308c346f44354384fce8ba2cccef7db3bc83358995e555f587897e25239dd95db90855f09f29bbd3922add1b467a94378934464e440171a559897d39c99b368c6e07d5eb483e6ac15ede3177ef62359314d692a4b02458acbed757a9dcd8f0b0bdfba2cbd9e6e512d3dcef75bbc47d1ee05c2da9b4f6906b7eddd7f82c376ce6ac8cbf9dbed1eb1de857af5e04e9b7f5b10f74ba4dcded7418bde681df2e37beb804ec5b2296c8bca230789202e61d5aa39eba9617240f297c2c2f4fdc5debd57951fb6b8f35c8725cbdff10bb1c8ed455c3130054c015e10ccfc91a4e2144eb1c72d1edda7eaf27234b22b8bc463e2f6597be4bbe3fe15dae300ee5c479b8a2119437e8167951b0587dcd8ba5fe92ce14e9a1bc1457cd3c3f29937449b971010f78843a4663365086b666736fbfd8641c6144538048ddd7994aeecdea7a82d0cd568c400339c90222aae944143f911b9cc595029d55b583d9bb6f5a950ccd08954f9efbf3d37c3aa706d536545768da2efe9ca0d6db431acb2b308eeffe819ed97fbc0c45418e4f03a09310d56e2d7d379437c022f433b90b6b7d787a0033bff663a6938b07907f13266fdf1c62056c76690f724d74c8ced658be20f805d999ba5665fde9d06613f421767617cefab0f41033ebc54b27130fa07ef5098c8caf20f6ded3c61ce68337035a88a6f975bae3bf95afbe7d7afb0ede43b4d96fe338234c5efef888e3a850e9cfeb4c26145d4cdbfad1aff842227b168deca25c36bbcc3bc4d5b06029e5f37c9b79332a1b78d1bcb0ab1fd903ee53f3d522b1b7d0e2359013f22db1975a61f25ae7e940de141d20ba3c56f71f4f076e9277697026249b0e5ebd1cab95af0c05a3a6ff010000ffff010000ffff4191ac90253d0000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffd43b6d6fdbb6d6dffb2b38af9be4c691d3e1c1838bbae9b065dd90db6d2d9a655f027f902ddae62293be22ddc4c8fcdfefe18b2452a4642569d75e036d6cf2f0bcf1f0bc891a3ffb8be7840a342bd80dc7c50b248a2d1ea139a382d02d2e7f6ff22d97fff46ff46cfc64fc6c99b3599aa3a72fd022cd3900a574b9cdd3c2fc96404fa22d7ce1a22073114d9e3cf9901688efe85cac085da2d37245b266d936c77154cd452374351dc28a6a24912c152ccf71114717e5e8992872805d6ce1376114c54ff99c6d8097a72b21364374f704c14792dd14f8c34fa9c040f564528d2eb178fb0686a454f56881b9480ba17954c2002772526397ac50ac087200b8db4f1a930bb2f4c7d7bbf39f60348a9c51ca322c915c4d0348cea914d461cfcce3a26045601dc798be96733e25d031ce7db60abc612522353e1ea30bd830bae4688617acc068c658ce51ced8358c08810b97a2100a1850a8f13b92bd40d1af840b4c0111ec0e483807ab50bb86de154cb039cb9186403f6419a89b630e8062b7018b8b04be15f0cbec8236b9fdc842fe5b7a7b8169f666b6e116fab75bb16472cfdecb6dfe95ac8940f19b1f377c58a3a6dbf50c179dc8df03ba949e5390f3439a5f5804f40c2aa7507c6fccc670c2c8cde4c3f1bf4b8b14ce47fe1eff670b40b66e406308f4032b69a6545483f4c70f48ce5670647143f112f9cf24c748cf6afdf7d6bc45e017e5517ea0f4354d6739ce2c1a7a0ac11c83b38e6bbcd2383bb9fe95cd5b70aa9987a0bc90e33f6a8f69dbb71c46f5b88dce597ff98ebef3d9d123484e86174f5d2fb4dc928bf0e13367ca56dfe5f9630edca52ba8c4f6c356ac30048979aa1cefa523f24184ef52ce6f58917523b5a00ce24d3d12425e6aa88a07e0df2fb6f339c619cee2321cc80f59a0f82be5fded51a5dd38fa9a620154ae95278d86d275a6791cad4886a3e1c481f60388fcec1d3a753809d1aa67bb298582924b6fef0bff730ae7d297bc9da3028b6d41db24b99fc2ee66e9fc3a2bd806360ee8c1b6c2b65de3dd8ca54566b2847d8b3e7b092883e7195b6fd202c7e908cd9a624aa3610b9426bfa76b8cbe3a8598b8a5195e100a070f7dfb2d3200b32040534e89d1a07a69960c1d805a7fe8f87973f3d4b059feca2c6f5333808164902e283aea6b789f1c3a358e9a9a46f3aa4233b1f55865000bb08795547a9546d9e4542a95c0c6c4d1581ace98efc091ac619bb93c5a9cc7f5ba2c15699355f70cba7a29930885113890eb2d89863ad189c38c19e4a58ddbebeaef769a93403af33a9daf2c7c72dc33e8a6c02a75fa5e829e46e808613a8781cbf7e7d2f6180587a5d024b04b7d756271a6905f1904534f074d791cd99a8c5a8969efed91092f65374058a6c79090dec4c391032132988c25cc7195460fd1183d3f3939712149661c70f9b1b26e581fdc7b42219ba8b3f2c62cdb8a6ada9987ad4431c910a1a84dc1cac7cbc96495f2b7371452cf0d2ec40e960d43f0f253163e136f76ef8d8862d7824512bd22d9b412eeb754ac92757a1b9f8cd0bfd033bd130ae29cfeb81398ffc104e422c7810ac38392aa17d9d0e7d0a15c29ae9d3424847d683b60adc4f70882f67c8562dca65a4f29277d450800fabbe198d3d169839c8fc135307b811e6a1cc19071ba7560d377759c535dbef53ea2cda22f4c693f79d22cec2023155bee78f6a6c3b3e2a4e790c01b7587441368a24b7a0dc79b467630aabeaaa25f68271049ffe9d349d47cbdba04577faf4ea68960971b38bb6729c710028ef404686fc645113f1f5abe41ca63969fa2812c3921cb19a0bfff46f5e87996e34153163d0d763040f1a0e6523620dee1620e5e3e5d62a3be2334f86638084a6b546209d48cb61b7696431afbe9774566e1c7842ed847db1747b9110135761337e61db5253a352eae37aa1bdda620ebb4d805d1b509ed6adfddcd4fbe051021db440f285b37d494af55f84ffa61753674331720154080a70f9020aaa3a4498c4300160f93a66e5524996392c74025ec7464461e703a2a515f38c5866456fa4f800bc41db3c064ad53d7022560283997e389ccc972acc84a1d822642f1a8b496738aa442a286b347583630db9719b78262796c9a648f50f4cdb089b1c355443f116e64074b6a55ebf95c8af4bfa054767d5f7d9a12e43e4a5b4396c6dbb5e5bbd82f565dbe93eca533df191ed499ed167d95c9c6d03fac31c398529ae94b75f9f6ef3bf6db52f96713a1e1043ae354bb287fe283db209971395586663d696861d3407cc00507dc21fe3ea57a720271f7cf76da3df659f54feea31dd9a509f364837470e38a5ce69c504cfd7f3804e28c08ab2fdbd25389a3afcb27277dfb65aacf390c6635e9077c9864f0c952a3cfe600256f376ad713dd393607d4310c1fea421409dfe4046a9d91942cdd58c5cd2d3054eaf53611e0c1e2e124502a6d18b77b1a400534f1ef8bb7bf275c3d9a228b5dec30311ca1bb154e33b0ad17e82e3a832a1e4cedf80fc8df22d066ba018e745379fc176734da3b34439b31903dd8415b69a5daa7adaa765ab56e67b8ade3cb57ec26ead4835915f9bdadd6878501cb94567ce8fc9468b745014a342b9e269058639ac577fb5179267c56240990ebf52dd842507c07ec02e70bdd5a6ab832c793f9f2d68c25d5d30cb03bd564d298aae1e42f462898228a1a1b5e2ae341a7cfd56b9a659e5a0feaf3cee61c48663b9aae81e6be874ec387d6556a13e6e38a0c050316b85bea1045efc986ead185053dfc68a2a981f261bafd3359905c60bb85dc16a368697f5fd506689b9add4157f4db4ea2826cf261b52854eb52c659a27a5bf0e7a5dba6ce315d8a154c1c1db5b48214dc15993649b9e33d647f84fc4d1df8fb7120d6fcc3aebe61c23268761ab06e8c2b7f324219a37884c8e4be32f63a04860a0aa9dd83aa7d5bc8df3d30fc5644a49cbe18bad9ee59ab3e601dd66a353a146c6999265f75fd7ec7339272712db1dfcf359cbbf1a6fccc0a9c5ef7a894f42303c0d472eeb4c49b2d5fc57e0c6c714809678588ad67950ff51b9ff9c030b1c245c9625be2635719adfeb7b7fb95f1ff60a35bac083f789009242d4d17fc0083a68ddd019b9c78164f7bd66496f05774da6e9d0199d5a3009970f7dc0afde8c0df8bb6da08277f10f5a0ba79afece06ecc739c16afcb27159d09917d59cde1f3cae55aef073a46cfa78aadae10a2968c15135198c14501556896ef7c4b86f36373d911a60fda89aaa26d8f1eb616ae9256f85f06ee3c9de3785eb9c351b3ec9573c36147a50a785af3fef79018dc2fef372beabc9f43ce275b944a71e049f65d858085a4cc45bc67ef5e321258eb10bd2a4fd6d4bf71f3805ac4c46649e7e354019e920f6a37a0d407e4ff1f57109918754aa2afc86ed8c7488c1c9ebdc4c850f11223b9ca83aac2e7d5d49f73edc872cabe2955e79e6a2f4e68184b28d90993a3a5d19e6a5ae1406009a1338c3b6dec2f0c23cdab52cd10213fba2e0bf3fbd02cef604d62657955fd61a25fc9486776572e4215fc67caeeb4a44af786911ee54d228d9113c120ae342bb12f2779d386d1eda07a1dc98f5ab09797cfdd4b5acd24a56849528a2458acbed757a9dcd8f0b8bdfba2cbd9e6e512d3dcef75bbc47d1ee05c2da9b4f698fb7fddf7fb2c376ce6ac8cbf9dbed1eb3de857ef6404e9b7f5b10f74ba4dcded7418bde681df2e37beb804ec5b2296c8bca230789202e61d5aa39eba9637270f297c2c2f4fdc5febd57951fb6b8f35c8725cbd1811bb1c8ed455c3130054c015e10ccfc91a4e2144eb1c72d1edda7ee127234b22b8bc5f3e2f6597be4bbe58e15dae300ee5c479b8a2119437e816396345acbee66ca9bfa433457a282fc55533cf4fca245d526e5cc0031ea18ed1980d94a1add9dcdb6f3c194718d1142052f73da7927bb3ba9e2074b31523d0404eb280886a3a11ec67728bb3b852a0b3aa76307bf715ac92a119a1f2c9737f7e9a4fe7d4a0da86ea0a4ddbc59f13d47a7b48637905c6f1ddffa167f61f2f435190e3d300e82444b55b4bdf0de50db008fd42eec35a1f9e1ec1cc6ffd98e9e4e211e4df84c9db37870a069b5dda835c131db2b335966f0e7e4176a6ae55597f3ab4d9047d8c9ddd87b33e2c3dc6cc7af1d2c9c423a85f7f0223e32b88bd0fb43187f9e0cd8016a2697e93eef8efe53b719fdebe83f7106df6db38ce48212f7f7cc071c454faf33a93094517d3b67ef4bbbf90c89e4523bb2897cd2ef37271352c8a94f279becdbc19950dbc685ed8d58fec01f7a9f96a91d85b68f11ac809f9fad84bad3079adf374206f8a0e105d1eabfb8fa70337c9bb323813924d07af5e8ed5ca57868251d37f010000ffff010000ffff7fb8afda3e3d0000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["app.js"] = bs diff --git a/cmd/syncthing/gui.go b/cmd/syncthing/gui.go index 2951244f..0119e46b 100644 --- a/cmd/syncthing/gui.go +++ b/cmd/syncthing/gui.go @@ -35,11 +35,10 @@ func startGUI(cfg GUIConfiguration, m *Model) { router := martini.NewRouter() router.Get("/", getRoot) router.Get("/rest/version", restGetVersion) - router.Get("/rest/model/:repo", restGetModel) + router.Get("/rest/model", restGetModel) router.Get("/rest/connections", restGetConnections) router.Get("/rest/config", restGetConfig) router.Get("/rest/config/sync", restGetConfigInSync) - router.Get("/rest/need/:repo", restGetNeed) router.Get("/rest/system", restGetSystem) router.Get("/rest/errors", restGetErrors) @@ -80,8 +79,9 @@ func restGetVersion() string { return Version } -func restGetModel(m *Model, w http.ResponseWriter, params martini.Params) { - var repo = params["repo"] +func restGetModel(m *Model, w http.ResponseWriter, r *http.Request) { + var qs = r.URL.Query() + var repo = qs.Get("repo") var res = make(map[string]interface{}) globalFiles, globalDeleted, globalBytes := m.GlobalSize(repo) @@ -168,17 +168,6 @@ func (f guiFile) MarshalJSON() ([]byte, error) { }) } -func restGetNeed(m *Model, w http.ResponseWriter, params martini.Params) { - repo := params["repo"] - files := m.NeedFilesRepo(repo) - gfs := make([]guiFile, len(files)) - for i, f := range files { - gfs[i] = guiFile(f) - } - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(gfs) -} - var cpuUsagePercent [10]float64 // The last ten seconds var cpuUsageLock sync.RWMutex diff --git a/gui/app.js b/gui/app.js index 854a1226..1e487f93 100644 --- a/gui/app.js +++ b/gui/app.js @@ -82,7 +82,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { getFailed(); }); $scope.repos.forEach(function (repo) { - $http.get('/rest/model/' + repo.ID).success(function (data) { + $http.get('/rest/model?repo=' + encodeURIComponent(repo.ID)).success(function (data) { $scope.model[repo.ID] = data; }); });