Archived
Handle non-word characters in repo name (fixes #152)
This commit is contained in:
1 parent
71684bfa45
commit
3e4d628f54
3 files changed
+6
-17
No files matched your search
+1
-1
@@ -18,7 +18,7 @@ func init() {
|
||||
bs, _ = ioutil.ReadAll(gr)
|
||||
Assets["angular.min.js"] = bs
|
||||
|
||||
bs, _ = hex.DecodeString("1f8b080000096e8800ffd41b6b73db36f27b7e05aaa62515cb94d3b9b9b989e2dcb46edaf1a56d3271d32f1e7da04448424d813a008aad71f5df6ff120091020453fd2e43493580216fbc2625f04c7cffee439a102cd5871cd317b8104dbe2119a175410bac5e5ef4dbee5f29ffe8d9e8d9f8c9f2df36296e6e8e90bb448730e40295d6ef39499df12e849b4852f5c303217d1e4c9938f29437c47e76245e8129d962b9275916d731c47d55c344297d321aca84612c9122bf21cb338ba2847cf04cb0176b185dfa4a0287ecae7c5067879ba12623344b74f107c24d90dc31f7f4c0506aa27936a7489c5db373024a5aa4719e6226542f3a884014ee4a4c62e59a15811e40070bb9f34261764e98faf77e73fc2681439a3b4c8b04472390d2039a75250873d338f192b58601dc798be96733e25d031ce7db618de142522353e1ea30bd830bae468861705c3685614394779515cc1881098b9148550c080428ddf92ec058a7e215c600a88607740c2395885da35f48e15a2981739d210e8fb2c037573cc0150ec36607191c037027e995dd026b71f59c87f4d6f2e30cddecc36dc42ff762b9685dcb3f7729b7f216b2250fce6870d1fd6a8e9763dc3ac13f97b4097d2730a727e4cf30b8b809e41e5148aef8cd9184e18b999bc3ffe77294be17ce4eff17fb70064eb063486403fb092664a4535487ffc80e46c05471637142f91ff44728cf4acd67f6fcd5b047e561ee57b4a5fd37496e3cca2a1a710cc1570d6718d571a6727d7bf14f3169c6ae63e282fe4f80fda63daf62d87513d6ea373d67f7847dff9ece8112427c38ba7ae175a6ec945f8f0993365abefc3f9430edc07575089edfbad58610812f35439de0f8ec80711be4b39bf2e58d68dd482328837f5480879a9a12a1e807fbfd8cee71867388bcb70203f6481e2af94f7b7479576e3e86b8a0550b9529e341a4ad799e671b422198e861307da0f20f2b377e8d4e12444ab9eeda6140a4a2ebdbd2ffc4f299c4b5ff2768e18165b46db24b99bc26e67e9fc2a63c506360ee8c1b6c2b65de1ddac485966b2847d8b3e7b092883e759b1dea40cc7e908cd9a624aa32916284d7e4bd7187d750a31714b33bc20140e1efaf65b6400664180a69c12a341f5d22c193a00b5fed0f1f3e6e6a961b3fc9559dea6660003c9205d5074d4d7f03e39746a1c35358de655856662ebb1ca0016600f2ba9f42a8db2c9a9542a818d89a3b1349c31df812359c3367379b4388feb75592ad226abee1974f55226110a237020d75b120d75a213871933c84b1bb7d7d5dfed34278174e6753a5f59f8e4b867d04d8155ea348ed01192e009ec464fd12d06148e4bb37eea89da64db11a1c98f957ff6de0599d7d2e21a08cb2c18f2ceeb78387220440693b18439aeb2e5211aa3e72727272e24c98c9f2d3f56720deb835b4c28240d75f2dd982db6a29a76e661c7504c3244286a53b072e5723259a5fced35850c738399d8c1b261085e7ecafa66e2cdeebd11c1762d5824d14b924d2be17e4dc52a59a737f1c908fd0b3dd33ba120cee90f3b81f9ef858094e3385048785052f5221bfa1c3a942bc5b59386bcaf0f6d07ac95f81e416c9eaf508cdb54eb29e5a4af0801407f371c733a3a6d90f331b806662fd0438d2318324eb7dc6bbaa88e73aaabb4de47b459db8529ed274f9af51b249e62cb1d07def46b5638f41c1278a3eec867e249f4815ec1f1a6911d73aaafaab617da0944d257fa7412355faf2ec1d5dfcb9369228a0f1b38bb6729c7e0e98ff404686fc6058b9f0f2ddf20e531cb4fd140569690cc0cd05f7fa17af43ccbf1a0298b9e063b18a078507329fb0cef309b43f6992eb151df111a7c331c04a5352ab1046a06d54d719643b6fae9774526dbc7842e8a47db1747b9110135761337e61db5e533352eae37aa1bdd869175ca7641746d42bbda7777f3936f0144c836d103cad67d33e56b15fe937e589d0dddcc05480510e0e90324886a1c6912e31080c5c3a4a95b1549e698e43150093b1d9978079c8ecac7174e4d219995fe13e00271c72c30c9e9d4b5400918cac1e57822d3fe1c2bb25287a089503c2aade59c22a990a8e1ec11967dcaf665c6ada0581e9b26d923147d336c62ec7015d18f841bd9c1925ad57a3e9722fd3f28b5b8baab3e4da57117a5ad214be3eddaf25dec17ab2edf49f6d299ef0c0feacc768bbeca64ffe76fd698614c29cdb49fba7cfbbf3bf6db52f96713a1e1043ae354bb287fe083db209971395586663d506861d3407cc48c03ee107f9f523d3981b8fb473bed1efbacda2477d18e6cc68479b2413ab871452e734e28a6fe190e813823c26abfb6b44ee2e8ebf20149dfb6986a670e83594dfa111f26197c80d468a73940c9db8ddaf5443788cd01750cc387ba102ce19b9c40ad339292a51babb8b901864abdde24023c583c9c044aa54dc1ed9e0650014dfce7e2ed6f09574fa0c862173b4c0c47e87685d30c6ceb05ba8dcea08a07533bfe1df2b708b4996e8023dd3b1effc90b1aed1d9aa1cd18c856eba0adb4525dd256553b1d59b701dcd6d8e5abe23aead4835915f92dacd6678201cb94567ce8fc9468b78c8112cd8aa70924d69866f1ed7e549e099f154902e47a7d03b61014df01bbc0f942b7961aaeccf164bebc356349f5d002ec4e359934a66a38f9b320144c11458d0d2f9571afd3e7ea35cd324fad07f5796b730e24b31d4dd74073df43a7e143eb2ab509f3b82243c18005ee963a44d17b80a17a7461410f3f81686aa07c666eff4c162417d8ee14b7c5285adadf57b501daa66637ca15fdb693a8209b7c582d0ad5ba947196a8de16fc79e976a3734c9762051347472dad20057749a64d52ee780fd91f207f5307fe7e1c88357fb3ab6f98b00c9a9d06ac1be3ca9f8c5056503c42647257197b1d02430585d4ee41d5be2de4efee197e2b22524e5f0cdd6cf7ac551fb00e6bb51a1d0ab6b44c93afba7ebfe31949b9b896d8efe71acedd78537e660ca7573d2a25fdc80030b59c3b2df166cb57b11f035b1c52c20b2662eb91e47dfdc6673e3085586156b2d896f8d85546abffeded7e65fc3fd8e8162bc20f1e6402494bd305dfc3a0696377c026279ec5d39e359925fc259db65b674066f5284026dc3db7423f3af0f7a2ad36c2c9ef443d8f6e5e1f3bb81bf31ca7ec75f9a4a23321b2efa4397c5eba5cebfd40c7e8f954b1d51542d492b162220a33b860508566f9ceb764383f36971d61faa09da82adaf6e8616be12a6985ff65e0ced3398ee7953b1c35cb5e39371c7654aa80a735ef7f0f89c1ddf27eb3a2cefb39e47cb245a914079e64df55085848ca5cc47bc4ee252381b50ed1cbf2644dfd8b35f7a8454c6c96741ea70af0947c50bb01a5de23ff7f5c416462d42989be09bb291e23317278f6122343c54b8ce42a0faa0a9f97537fceb523cb29fba6549d7baabd38a1612ca164274c8e96467baa698503812584ce306eb5b1bfLine truncated
|
||||
bs, _ = hex.DecodeString("1f8b080000096e8800ffd43b6d6fdbb6d6dffb2b38af9be4c691d3e1c1838bbae9b065dd90db6d2d9a655f027f902ddae62293be22ddc4c8fcdfefe18b2452a4642569d75e036d6cf2f0bcf1f0bc891a3ffb8be7840a342bd80dc7c50b248a2d1ea139a382d02d2e7f6ff22d97fff46ff46cfc64fc6c99b3599aa3a72fd022cd3900a574b9cdd3c2fc96404fa22d7ce1a22073114d9e3cf9901688efe85cac085da2d37245b266d936c77154cd452374351dc28a6a24912c152ccf71114717e5e8992872805d6ce1376114c54ff99c6d8097a72b21364374f704c14792dd14f8c34fa9c040f564528d2eb178fb0686a454f56881b9480ba17954c2002772526397ac50ac087200b8db4f1a930bb2f4c7d7bbf39f60348a9c51ca322c915c4d0348cea914d461cfcce3a26045601dc798be96733e25d031ce7db60abc612522353e1ea30bd830bae4688617acc068c658ce51ced8358c08810b97a2100a1850a8f13b92bd40d1af840b4c0111ec0e483807ab50bb86de154cb039cb9186403f6419a89b630e8062b7018b8b04be15f0cbec8236b9fdc842fe5b7a7b8169f666b6e116fab75bb16472cfdecb6dfe95ac8940f19b1f377c58a3a6dbf50c179dc8df03ba949e5390f3439a5f5804f40c2aa7507c6fccc670c2c8cde4c3f1bf4b8b14ce47fe1eff670b40b66e406308f4032b69a6545483f4c70f48ce5670647143f112f9cf24c748cf6afdf7d6bc45e017e5517ea0f4354d6739ce2c1a7a0ac11c83b38e6bbcd2383bb9fe95cd5b70aa9987a0bc90e33f6a8f69dbb71c46f5b88dce597ff98ebef3d9d123484e86174f5d2fb4dc928bf0e13367ca56dfe5f9630edca52ba8c4f6c356ac30048979aa1cefa523f24184ef52ce6f58917523b5a00ce24d3d12425e6aa88a07e0df2fb6f339c619cee2321cc80f59a0f82be5fded51a5dd38fa9a620154ae95278d86d275a6791cad4886a3e1c481f60388fcec1d3a753809d1aa67bb298582924b6fef0bff730ae7d297bc9da3028b6d41db24b99fc2ee66e9fc3a2bd806360ee8c1b6c2b65de3dd8ca54566b2847d8b3e7b092883e7195b6fd202c7e908cd9a624aa3610b9426bfa76b8cbe3a8598b8a5195e100a070f7dfb2d3200b32040534e89d1a07a69960c1d805a7fe8f87973f3d4b059feca2c6f5333808164902e283aea6b789f1c3a358e9a9a46f3aa4233b1f55865000bb08795547a9546d9e4542a95c0c6c4d1581ace98efc091ac619bb93c5a9cc7f5ba2c15699355f70cba7a29930885113890eb2d89863ad189c38c19e4a58ddbebeaef769a93403af33a9daf2c7c72dc33e8a6c02a75fa5e829e46e808613a8781cbf7e7d2f6180587a5d024b04b7d756271a6905f1904534f074d791cd99a8c5a8969efed91092f65374058a6c79090dec4c391032132988c25cc7195460fd1183d3f3939712149661c70f9b1b26e581fdc7b42219ba8b3f2c62cdb8a6ada9987ad4431c910a1a84dc1cac7cbc96495f2b7371452cf0d2ec40e960d43f0f253163e136f76ef8d8862d7824512bd22d9b412eeb754ac92757a1b9f8cd0bfd033bd130ae29cfeb81398ffc104e422c7810ac38392aa17d9d0e7d0a15c29ae9d3424847d683b60adc4f70882f67c8562dca65a4f29277d450800fabbe198d3d169839c8fc135307b811e6a1cc19071ba7560d377759c535dbef53ea2cda22f4c693f79d22cec2023155bee78f6a6c3b3e2a4e790c01b7587441368a24b7a0dc79b467630aabeaaa25f68271049ffe9d349d47cbdba04577faf4ea68960971b38bb6729c710028ef404686fc645113f1f5abe41ca63969fa2812c3921cb19a0bfff46f5e87996e34153163d0d763040f1a0e6523620dee1620e5e3e5d62a3be2334f86638084a6b546209d48cb61b7696431afbe9774566e1c7842ed847db1747b9110135761337e61db5253a352eae37aa1bdda620ebb4d805d1b509ed6adfddcd4fbe051021db440f285b37d494af55f84ffa61753674331720154080a70f9020aaa3a4498c4300160f93a66e5524996392c74025ec7464461e703a2a515f38c5866456fa4f800bc41db3c064ad53d7022560283997e389ccc972acc84a1d822642f1a8b496738aa442a286b347583630db9719b78262796c9a648f50f4cdb089b1c355443f116e64074b6a55ebf95c8af4bfa054767d5f7d9a12e43e4a5b4396c6dbb5e5bbd82f565dbe93eca533df191ed499ed167d95c9c6d03fac31c398529ae94b75f9f6ef3bf6db52f96713a1e1043ae354bb287fe283db209971395586663d696861d3407cc00507dc21fe3ea57a720271f7cf76da3df659f54feea31dd9a509f364837470e38a5ce69c504cfd7f3804e28c08ab2fdbd25389a3afcb27277dfb65aacf390c6635e9077c9864f0c952a3cfe600256f376ad713dd393607d4310c1fea421409dfe4046a9d91942cdd58c5cd2d3054eaf53611e0c1e2e124502a6d18b77b1a400534f1ef8bb7bf275c3d9a228b5dec30311ca1bb154e33b0ad17e82e3a832a1e4cedf80fc8df22d066ba018e745379fc176734da3b34439b31903dd8415b69a5daa7adaa765ab56e67b8ade3cb57ec26ead4835915f9bdadd6878501cb94567ce8fc9468b745014a342b9e269058639ac577fb5179267c56240990ebf52dd842507c07ec02e70bdd5a6ab832c793f9f2d68c25d5d30cb03bd564d298aae1e42f462898228a1a1b5e2ae341a7cfd56b9a659e5a0feaf3cee61c48663b9aae81e6be874ec387d6556a13e6e38a0c050316b85bea1045efc986ead185053dfc68a2a981f261bafd3359905c60bb85dc16a368697f5fd506689b9add4157f4db4ea2826cf261b52854eb52c659a27a5bf0e7a5dba6ce315d8a154c1c1db5b48214dc15993649b9e33d647f84fc4d1df8fb7120d6fcc3aebe61c23268761ab06e8c2b7f324219a37884c8e4be32f63a04860a0aa9dd83aa7d5bc8df3d30fc5644a49cbe18bad9ee59ab3e601dd66a353a146c6999265f75fd7ec7339272712db1dfcf359cbbf1a6fccc0a9c5ef7a894f42303c0d472eeb4c49b2d5fc57e0c6c714809678588ad67950ff51b9ff9c030b1c245c9625be2635719adfeb7b7fb95f1ff60a35bac083f789009242d4d17fc0083a68ddd019b9c78164f7bd66496f05774da6e9d0199d5a3009970f7dc0afde8c0df8bb6da08277f10f5a0ba79afece06ecc739c16afcb27159d09917d59cde1f3cae55aef073a46cfa78aadae10a2968c15135198c14501556896ef7c4b86f36373d911a60fda89aaa26d8f1eb616ae9256f85f06ee3c9de3785eb9c351b3ec9573c36147a50a785af3fef79018dc2fef372beabc9f43ce275b944a71e049f65d858085a4cc45bc67ef5e321258eb10bd2a4fd6d4bf71f3805ac4c46649e7e354019e920f6a37a0d407e4ff1f57109918754aa2afc86ed8c7488c1c9ebdc4c850f11223b9ca83aac2e7d5d49f73edc872cabe2955e79e6a2f4e68184b28d90993Line truncated
|
||||
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
|
||||
bs, _ = ioutil.ReadAll(gr)
|
||||
Assets["app.js"] = bs
|
||||
|
||||
+4
-15
@@ -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
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
});
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user