From 0d55cf4be5fa85665511529ee7ffeb60d124735c Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 30 Apr 2014 22:02:34 +0200 Subject: [PATCH] Don't use absolute URL for rest calls (fixes #166) --- auto/gui.files.go | 2 +- gui/app.js | 31 ++++++++++++++++--------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/auto/gui.files.go b/auto/gui.files.go index 553b0201..3a4fb547 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("1f8b080000096e8800ffd43b6d73db36d2dff32b50352da958a69cce33cfdc44713aad9b767c699b4c5cf78b471f2812925853000f84626b5cfdf75bbc90040890a2eda4c96926b1042cf61dbb8b25387df657996784a305a33725662f10675b3c4109253c235b5cfd2ef26d29fea9dfe8d9f4c9f4d92aa78b38474f5fa0659c97001493d5368f99fe2d809e045bf8527296253c983d79f22166a8dc9184af33b242a7d58a6843d36d8ec3a09e0b26e86a3e8615f54824586234cf310b838b6af48cb31c60975bf89d5182c2a765420be0e5e99af3628cee9e20f808b205c31f7e8a3906aa27b37a7485f9db373024a46a46192e79ccb8e2510a039c8849855db042b0245802c0dd7ed69a5c662b777cb33bff094683c01a2534c502c9d5dc83e49c08412df6f43c668c32cfba1263f25accb99440c73877d962b8a01522393e9da20b301859956881979461b4a0342f514ee9358c708e994d9173090c28e4f85d96be40c1af59c9310144601d903001af905643ef18e534a1395210e88734057597b80440be2bc0e3028e6f39fcd256502eb79f18c87f8b6f2f3049df2c8ad240ff76cb5754d8ecbd30f3afd926e3287cf363518e1bd464bb5960d68bfc3da08bc93901393fc4f9854140cda06a0a85f7c6ac1dc78f5c4f3e1cffbb98c5b03ff2f7f83f5b003275031a43a01f584952a9a20664387e4072b6862d8b5b8a17c87fce728cd4acd2ff60cd1b047e9111e507425e937891e3d4a0a1a610cc51d8ebb8c12b9cb397eb5f69d28153ce3c04e58518ff51454cd3bfc5306ac64d74d6facb77e49dcb8e1a4162d2bf786e47a1d536bbf06f3ebda74cf55d9e3f66c35dda820a6c3f6cf91a4392486219782f2d910f227c1797e50d65693f52034a232e9a111ff24a43753e80f87eb14d128c539c86553a109f6c89c2af64f43747a576c3e06b823950b9969134188bd019e761b0ce521c8c6716b49b40c4676fd169d2898f5633db4fc997946c7a7b57f89f63d897aee4dd1c31ccb78c7449723f85dd2de2e43a65b400c3013d302b98ed1aef163466a9ae12f61dfa1c24a0489e677453c40c87f1042dda620aa7a14b1447bfc71b8cbe3a859cb825295e6604361efaf65ba401165e80b69c02a346f5522f195b008dfed0f1f3b6f1e4b05efe4a2fef5233808164502e483af2abdf4e169d0647434da17955a399997aac2b8025f8c35a28bd2ea34c72b2948ac0306130158e332d7710483660e6526cadb20c9b7569cce336abf61eb4f552151112237020d61b128d55a113fa19d3c82b1f37d735dfcd32278272e6759cac0d7c62dc71e8b6c0b274fa5e809e06e8086192c0c0e5fb73e17b9440c0926822b0d2509d189c49e4571ac1dcd1415b1e4bb636a346613ad83ca2e025f406088bf2180ad29b703cb120780a93a18039aecbe8319aa2e7272727366496ea005c7d8caa1bd67b6d9f11a8269aaabc354bb7bc9eb6e6c19428cc529411d4a56019e3c564b48ecbb737044acf0233be8365631fbcf854079f9933bb774638db75601144afb2745e0bf75bccd7d126be0d4f26e85fe899b2848438273fee382effa01c6a9163cf09c38112aae7e9d8e5d0a25c2bae9b34148443685b609dc4f7089276b24621ee52ada39493a12278005d6b58ee7474da22e762b01dcc5ca0865a5bd0e79cf639b01dbb7af6a93abe0ddea2ed439f9fd27ef6a47db0838a946f4b2bb2b7039e91279d8004d1a83f25ea44135c926bd8de2430939145c1450d6681330e6c6099753b315f705a1440d98b59b613b80a2f8188cc1e3272be595d81cbbf5727f388d34b20c0cee2124372395213609745c959f87c3cb3e5d0cb4fd1481c66a17e1aa1bfff46cde8799ae3515b16350d1e3642e1a8e152b436de619640fe8857581be6088dbe198fbcd26a951802b5f37841cf7228903fbdbd457d7f9c9125fd041697b86f62464445fcb1cc6ed92ec8c04afdf4f5be0cba2ab40657a9fca01f5dc1b24dcc765e745d3ab58d6b3bcb27b730a4f62ed13dca569d40992424fe9361582d83160907a900025294d777c4865324a63e008387595bb732052638cb43a0e28f96e228e18996f284b1b44e49825911f801ce9330f5025d6ecf6d0f1480be5385188f443199634956e81034e14ba495b79c13241412b4b214c2a2f3dabd4c472d148a6dd3267b84826fc66d8c3d9128f8292bb5ec7584f6a8f53c1122fd2f28955edf579ffaec741fa56da0bc2cbbb5e546f02f565d6e901ca43337181ed49919165d95898ed63fac31cd98549a6ea8f5c5f6ef7bec6da8fcb389d00a02bd79aa5b943ff1413308666c4ea5a3198f483ad8d4101f302b01b78fbf4fa99e3c83bcfb6737ed0176968d9ffb6847b497fc3c99203ddcd82257252d9c02ffdf9f02719a71a3a1dcd10c0a83afab473e431b7db2413bf65635f1077c98a4f79158ab416801456f0b69f548b5bcf506b51cc385bae02c2a8b3c8343da44481617c6a9ec1618aaf47a1b718860e178e639e315b4349b31400534f1ef8bb7bf47a57ca6962d77a1c5c47882eed6384ec1b75ea0bbe08c1260851fff01f55b00da8c0be04875c3a77f9594047b8ba6cf1823d13c1e759d0965dfb753d5568fd96e6977b5aacb35bd097af5a057056e53aef329a7c73385171fda3f15da2d63a044bde269048535266978b79f547bc265459000b95edf822f78c5b7c02e70be543db15628b322992b6fc358543f8601bf93dd3185a91e8efea21901574441cbe095321eb4fb6cbdc669eaa8f5a03eef4cce8164ba23f10668ee07e8d4bf696da5b6613eaec87060c01cf74beda3e83c9291cd45bfa0879fa9b43550dd02307f46cb2ce7d8ec7d77e52852f9df578d039aae66b6fe25fdae9d2821db7c181d10d973157936934d39f8f3d2eeafe798acf81a268e8e3a7a5812ee2a9bb749d9e303647f84fc6d1db8f638906bfee150df726191347b1d5875f4653c99a094123c41d9ecbe320eda049a0af2a9dd816a629b2fde3d30fdd644849cae18ea2981e3ad6a83f578abd1e890b09567ea7ad58efb3d0f77aac58dc46e235a736ee79beab36038be1e705252cf3a0053c7be531217db721dba39b023204525653c341eb23e346e7ce60d43f91ab38ac5aec2c73c6574c6dfc1e157e4ff831d7abececa831b3983a2a51d821fe0d0a4651df0c999e3f164e099cc10fe8accbbbdd323b37c86210aee81a650cf3c5c5b749d8d70f447269fb0b72fc41db44692e398bdae1eb1f41644e62d3b8bcf2b9b6b650f748c9ecf255b7d29442e994a26023f834b06a7d034dfb99e0cfbc7e4b2274d1ff413798a3623badf5b4a59b4c2ff2271e77182c3a40e8793f6b157cc8dc73d2755c0d359f7bf87c2e07e75bf5ed1d4fd25d47ca2452915079164df7710309054b5887369c029463c6b2da257d5ce9abb57851e7016d1b959d0f938a70047c907b5eb51ea03eaff8f2b88288c7a2551777b0bfa310a238b67a730d2549cc248ac72a0eaf4793577e76c3f3282b2eb4af5be272a8a67c48fc557ecf8c991ca694f152d7f2230845015c69d72f6179a91f61daf768a101f752ef3f3fbd02aefe099c4a8f2eaf387ce7e1523bdd55db508d5f09fa9ba53924add6b46061c6f22e18c65c629e495f649eccb29de9463f407a8415bf2a31ed8ab5bf3f6edb27691c23a8a1416790fabefd51d303b373cce765ff471b67d2b4637f7075d8bb19f075877626aad3de6e262fdd8dd7b31d108c37acea8f8bbe96bbdde837efd3289977e571ffb40a75b9fb9ad0ea3d33c70dbe53a165780438f881532e750e8dd491ef7f6ad914f5dab2b9f87143e159727eeaff57abf48fb9a632db225aedfe8086d0e27f28ee409004ae09a708a936c03bb10b2750eb5e87663bea99466ab8c97e2627c52c92e62977823c4b95ca103ca89f5704521a8aefe2d734a5928bfe674a5bec40b497a2c6ef3d533cf4faa225d506edd1c041ee11ca3306b284d5bb1b9375fd5d28130203140c4f60b5a15f77a7533919162cb27485e11f28828a7234e7fce6e711ad60ab4563501666fbf3b5631b4c88878f23c9c9ff6d3393928cd505fa1e9baf873823a6f0f292cafc039befb3ff4ccfce3542812727aea019df9a8f66be9bbb1b86016a05fb2fbb03684a74730f3db30667ab97804f9377ef2e6cd2146c1d8953f8835c1213fdb60f1cae317e467f25a95f1a7479b6dd0c7f8d97d381bc2d263dc6c102fbd4c3c82faf52770b2720db9f7813e6631efbd19d04134ce6fe25df97bf532dfa7f76fef3d4493fd2e8ed38c89cb1f1f70185059febc4e4541d1c7b4a91ff5d23214b267c1c43c948b66977e2bba1ee62c2665926f53674656032fdaf781d5237bc07daabf1a24f6065abc01725cbcf7f652294c5ceb3c1d899ba2234456c7f2fee3e9c82ef2ae34ce284be7a3572fa772e52b4d41abe9bf000000ffff010000ffffc5983f82f73d0000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffd41bdb72db36f63d5f81aa69492532e574767676a2389dd64d3bdeb44d26aefbe2d1034542126b0ae082506c8dab7fdf830b49800029da8e3759cdb4b1808373c7b900d0f4d95f659e118e168c5e9798bd449c6df1042594f08c6c71f5bdc8b7a5f84f7d47cfa64fa6cf56395dc4397afa122de3bc04a098acb679ccf47701f424d8c21f256759c283d993271f6386ca1d49f83a232b7452ad883634dde6380ceab960822ee7e3995cb065f9220634272860b894786ab84830ca689e631606e7d5e829673960586ee17b46090a9f96092d80c3a76bce8b31ba7d82e02370170c7ffc29e602f9f1ac1e5d61feee2d0c09599b51413c665c712e45044ec4a4c22e582158122c01e0763f6b4d2eb3953bbed99dfd24240bac5142532c905cce3d48ce8810d4624fcf63c628f3ac2b31266fc49c4b09348f73972d860b5a2192e3d3293a073392558916784919460b4af312e5945ec108e798d9143997c080428edf66e94b14fc9a951c134004d6010913f0156935f49e514e139a2305817e48535077894b00e4bb02fc30e0f886c3376d05e588fb8981fcb7f8e61c93f4eda2280df4efb67c4585cd3e0833ff9a6d328ec2b73f16e5b8414db69b0566bdc83f00ba989c1190f3639c9f1b04d40caaa6507867ccda71fcc8f5e4fdf1bf8f590cfb23ff80ffb305205337a03104fa819524952a6a4086e30724a76bd8c8b8a57881fce72cc748cd2afd0fd6bc41e01719677e20e40d8917394e0d1a6a0ac11c85bd8e1bbcc2397bb9fe95261d38e5cc7d509e8bf11f551c35fd5b0ca366dc4467adbf784fdebbeca8112426fd8be776145a6db373ffe6d37bca54dfc5d94336dc852da8c0f6c396af31a48e249681f7c212f920c2f771595e5396f62335a034e2a219f121af3454e70388efe7db24c138c56958a503f1c99628fc4a467f73546a370cbe269803952b194983b1089d711e06eb2cc5c1786641bb09447cf6169d269df86835b3fd947c49c9a6b77785ff39867de94adecd11c37ccb4897247753d8ed224eae52460b301cd003b382d9aef06e416396eada61dfa1cf41028ae4794a3745cc70184fd0a22da6701aba4471f47bbcc1e8ab13c8895b92e2654660e3a16fbf451a60e10568cb29306a54aff492b105d0e80f1dbd681b4f0eebe5aff5f22e3503184806e582a423fff4dbc9a2d3e068a82934af6b3433538f7505b0047f580ba5d76594494e9652111826aceab3e72898963b88261bb07529f6575986cde234e6719b5f7b23dacaa92a098911d810eb0db1c6aada09fddc69e495a39beb9abfcd5a27829ae64d9cac0d7c62dcf16aafd4b288fa5ec09f043080490203171fce84175202a14be28ac05e431563b027915f6a047347116da12c01bddc1a75ea604389fa97d06ba02eaa65a84fafc3f1c482e0294c8602e6a8aeaac7688a5e1c1f1fdb9059aae371f5318a7058eff5828c4071d114e9ad59bae5f5b4350f46456196a28ca02e2dcb902f26a3755cbebb2650891698f11d2c1bfbe0c5a7ea8e66ceecde19e16cd7814510bdccd2792ddc6f315f479bf8263c9ea07fa167ca1212e28cfcb8e3b8fc8372284d8e3c0d87032554cfd3b1cba145b9565c3769a80f87d0b6c03a89ef11e4f0648d42dca55a4729c74345f000bad6b0dce9f9498b9c8bc1763073811a6aed439f73da6d613b8a1ddaacaaa51bbc4fdb8da09fdc7ef6a4ddec4195cab7a515eddbf1cfc89d4e6882b8d49f2675f2092ec815ec71129809caa2e0a206db40df03bb5866e24ecce79c160550f66296070f5cc59840c4680f1939dfacaec0e5bf97c7f388d30b20c04ec134906b9eab09b0cba2e42c7c319ed972e8e52768241a5ca8a946e8efbf51337a96e678d496454d839b8d50386ab814c71def314b2093c42bac0df31c8dbe198fbcd26a951802b5737b414f73289a1fdfdea2e63fcac8923e82c525eeeb981151257f2ab35bb60b32b0523f7dbd2f83aeaaadc1552a3fe84757b06c13b39d175d974e6de3dacef2e81686fcde25ba47d9eacc50660a89ff781856cba045c2412a80803ce5f51db1e11489a90fc0e061d6d6adcc8309cef210a8f8a3a5682f3cd152761d4bab7312cc8ae80f709eaca917e8127c6e7ba000f4751a623c1265658e2559a143d0842f9b56de7246905048d04a55088b33daee653a6aa1506c9b3659c84cdf8cdb187b2251f053566ad9eb08ed51eb592244fa7f502abdbaab3e753f7517a56da0c62cbbb5e546f02f565d6e901ca43337181ed49919165d958953aeffb1c634635269fa90ad2fb67fdf636f43e59f4d845610e8cd53dda2fc890f9a413063732a1dcdb836e96053437cc4ac04dc3efe1e533d790679f7cf6eda03ec2c0f83eea21d71e4e4e7c904e9e1c616b92a69a115fca73f05e234e3c62173c70151187c5d5d030d3dfc9387b6636f55137fc487497aafc95a87861650f4ae90568fd431b8dea09663b850e79c456591673c0c2642b2b830bab21b60a8d2eb4dc4218285e399a7d12b68e91ccb002950c7bfcfdffd1e95f2b22d5bee428b93f104ddae719c8283bd44b7c12925c00f3ffa038ab800541a17c0963a269ffe555212ec2dc23e8b8cc4a9f2a8ab319407c29dfab60e9fedb3eeae33ec724daf83c3cad04b03f7b4aef30ed4e3a3c29f0feda40aed9631d0a45ef13482121b9334bcdd4faadde1b2224880706f6ec02bbc3ab0c0ce71be544764ada066c53457de86b1a8bea4010f9487650a533d1cfd4533024e898296d52b65dc6b1fda7a8dd3d451eb417dde9a9c03c97447e20dd0dc0fd0a97ffbda4a6dc37c5a91a175c01cf74beda3e85cd8c8b346bfa0876f5cda1aa8de08985fa36596736c1e8a77652b52f9df578d039aae665e0c48fa5d3b5142b6f930ce42e411acc8b8993ca3837f5ed907ef39262bbe8689e7cf3b4eb324dc65366f93b2c707c8fe00f9db3a70ed7120eb7c8ea0dff26391437bbd589df2cba0324129257882b2d95d051db4133415e4d3bd03d504385fd0bb6736ae8908395d31d4cd81e3b26a97f5b8ac71ee21612bf7d4e5ab1dfc7b6e7daac58dc4eee1b4e6dc4e3ad567c1707c35a07152f71f80a963f329898b6db90edd44d81195a292321e1af7b0f70d1e5fc2aea17c8d59c567571d64761e9d917870201695c0c1537bbececa83bb3983f2a51d8cefe1d5a4652270cc99e3f664609f66087f49e6dd2eea9159de6b88227ca029d43d886b8bae7e09477f64f226befd70eea035921cc7ec4d75edd25b1a99aff12c3e2f6dae953dd0117a31976c1d4c2672dd547212f8b95c32684fd37ce7ba336c2293d59eac7dd059647b6dc676bfcb94b28685ff8b3c9ec7090e933a304edafdb0981b8f7b5a58c0d3d9067c803ae16e6d805ed1b401259480e2ec522a0ec2c9beaf2f309054a589f3b8c0a94d3c6b2da297d5f69abbef8aeed19ae82c2de87c9aa6c051f241ed7a947a8f76e0d30a224aa45e49d443e0827e8a12c9e2d929913415a74412ab1ca83a915ecedd39db8f8cc8ecba52bdef890ae519f163f1953d7e72a472da1345cb9f0d0c2154ad71ab9cfda566a4fd20ac9d27c447b5697e7eef5bef1d6c518c7aaf6e47740aac18e9adf3aa45a886ff4c759e9254ea5e3332a0db8984339619a79057da8dd91756c629efe88f5283f6e5276de2ab77f6f653b476b9c23aca1516791bd80feaad989d201e66c02fbfc5f5be9ed19700839ecfd8f706d6db995a7f0f7ef458dfd17b1f351aa159cf19adc00126b49aefc044fd93142f135d27df07cec6755b6e9d443ae70bee01bb0ed215e0d02eb242e6f48ddedde57179df1a794f5bbd191da4f5a978737177d5d71b495ada1c6bd12e71fde390d0667322df571e03a004ae09a738c936b03d2197e750a96e37e68f9ed26c95f152bcb14f2a0588a0267e5ce2bcc9d091e6d8ba935108aa6783cb9c5216ca3f73ba527fc40b497a2c5e02d6332f8eab125e506ebd3a041ea1d551983594a6add8dc9bbffad21132203140c4f66fbd2aeef5ea662223c5964f907c59e411514e479cfe9cdde034ac1568ad6a828e54b7cbd02223e2c27a383fed4b3d3928cd50bfbce97a2f748c3a1f1d292cafc139befb077a66fee3d42f12727ae2019df9a8f66be9bbb1789716a05fb2bbb03684a70730f3db30667ab97800f9b77ef2e6832346c1d8953f8835c1213fdb60f19bca2fc8cfe46b2ce39f1e6db6411fe26777e16c084b0f71b341bcf432f100ea578fe064e51a12f03d7dcc62defba0a083689c5fc7bbf2f7ea77818fefdfdee78b26fb5d1ca719136f463ee230a0b2067a938aaaa28f69533fea57d150dc9e0613b365174761fa67d7f530673129937c9b3a33b21a78d97e46ac2ef901f789fed320b137d0e20d90e3e22774af94c2c46bd0939178603a426475249f4d9e8cec4aef52e38cb2743e7afd6a2a57bed614b49afe0b0000ffff010000ffffed81752e583e0000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["app.js"] = bs diff --git a/gui/app.js b/gui/app.js index b7baee06..cbef4afa 100644 --- a/gui/app.js +++ b/gui/app.js @@ -4,6 +4,7 @@ 'use strict'; var syncthing = angular.module('syncthing', []); +var urlbase = 'rest'; syncthing.controller('SyncthingCtrl', function ($scope, $http) { var prevDate = 0; @@ -75,18 +76,18 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { } $scope.refresh = function () { - $http.get('/rest/system').success(function (data) { + $http.get(urlbase + '/system').success(function (data) { getSucceeded(); $scope.system = data; }).error(function () { getFailed(); }); $scope.repos.forEach(function (repo) { - $http.get('/rest/model?repo=' + encodeURIComponent(repo.ID)).success(function (data) { + $http.get(urlbase + '/model?repo=' + encodeURIComponent(repo.ID)).success(function (data) { $scope.model[repo.ID] = data; }); }); - $http.get('/rest/connections').success(function (data) { + $http.get(urlbase + '/connections').success(function (data) { var now = Date.now(), td = (now - prevDate) / 1000, id; @@ -111,7 +112,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { } $scope.connections = data; }); - $http.get('/rest/errors').success(function (data) { + $http.get(urlbase + '/errors').success(function (data) { $scope.errors = data; }); }; @@ -246,14 +247,14 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { $scope.saveSettings = function () { $scope.configInSync = false; $scope.config.Options.ListenAddress = $scope.config.Options.ListenStr.split(',').map(function (x) { return x.trim(); }); - $http.post('/rest/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); + $http.post(urlbase + '/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); $('#settings').modal("hide"); }; $scope.restart = function () { restarting = true; $('#restarting').modal('show'); - $http.post('/rest/restart'); + $http.post(urlbase + '/restart'); $scope.configInSync = true; }; @@ -290,7 +291,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { } $scope.configInSync = false; - $http.post('/rest/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); + $http.post(urlbase + '/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); }; $scope.saveNode = function () { @@ -317,7 +318,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { $scope.nodes.sort(nodeCompare); $scope.config.Nodes = $scope.nodes; - $http.post('/rest/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); + $http.post(urlbase + '/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); }; $scope.otherNodes = function () { @@ -345,7 +346,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { $scope.clearErrors = function () { $scope.seenError = $scope.errors[$scope.errors.length - 1].Time; - $http.post('/rest/error/clear'); + $http.post(urlbase + '/error/clear'); }; $scope.friendlyNodes = function (str) { @@ -401,7 +402,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { $scope.config.Repositories = $scope.repos; - $http.post('/rest/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); + $http.post(urlbase + '/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); }; $scope.deleteRepo = function () { @@ -417,19 +418,19 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { $scope.config.Repositories = $scope.repos; $scope.configInSync = false; - $http.post('/rest/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); + $http.post(urlbase + '/config', JSON.stringify($scope.config), {headers: {'Content-Type': 'application/json'}}); }; - $http.get('/rest/version').success(function (data) { + $http.get(urlbase + '/version').success(function (data) { $scope.version = data; }); - $http.get('/rest/system').success(function (data) { + $http.get(urlbase + '/system').success(function (data) { $scope.system = data; $scope.myID = data.myID; }); - $http.get('/rest/config').success(function (data) { + $http.get(urlbase + '/config').success(function (data) { $scope.config = data; $scope.config.Options.ListenStr = $scope.config.Options.ListenAddress.join(', '); @@ -442,7 +443,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { $scope.refresh(); }); - $http.get('/rest/config/sync').success(function (data) { + $http.get(urlbase + '/config/sync').success(function (data) { $scope.configInSync = data.configInSync; });