It might be possible to simplify the script by using this repo:
https://github.com/tananaev/traccar-manager-assets
Traccar Manager (Android) uses local cache to reduce mobile data usage.
Oh, I didn't realize you distributed the cdnjs files separately. I kind of assumed it was against Cloudflare's TOS. That's why I wrote the shell script, to pull them directly out of their site.
Then yeah, it's just as simple to get them from your repo and modify load.js and simple/index.html by hand :)
Those are all free open source libraries, so obviously Cloudflare can't restrict anyone from distributing them.
Thanks. this script has been great. I used this script with minor updates to version numbers up until about v4.2. I would really appreciate if you had an update for the current servers web interface as I can’t quite figure it out.
I assume the ‘modern’ web interface with leaflet will still be some versions away from release, but that will also bring a whole different set of to online hosted libraries.
following works for me:
#!/bin/sh
TRACCAR_INSTALL_DIR=/opt/traccar
cd $TRACCAR_INSTALL_DIR/web
patch -p0 << EOF
diff -ruN load.js load.js
--- load.js 2017-12-21 11:08:44.851180390 +0100
+++ load.js 2019-07-16 11:32:56.848482664 +0200
@@ -152,26 +152,26 @@
proj4jsVersion = '2.5.0';
if (debugMode) {
- addScriptFile('https://cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/ext-all-debug.js');
- addScriptFile('https://cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/charts-debug.js');
+ addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/ext-all-debug.js');
+ addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/charts-debug.js');
} else {
- addScriptFile('https://cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/ext-all.js');
- addScriptFile('https://cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/charts.js');
+ addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/ext-all.js');
+ addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/charts.js');
}
- addScriptFile('https://cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/locale/locale-' + locale.languages[locale.language].code + '.js');
+ addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/locale/locale-' + locale.languages[locale.language].code + '.js');
- addStyleFile('https://cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/theme-triton/resources/theme-triton-all.css');
- addScriptFile('https://cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/theme-triton/theme-triton.js');
+ addStyleFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/theme-triton/resources/theme-triton-all.css');
+ addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/theme-triton/theme-triton.js');
- addStyleFile('https://cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/triton/resources/charts-all.css');
+ addStyleFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/triton/resources/charts-all.css');
- addStyleFile('https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v' + olVersion + '/css/ol.css');
- addScriptFile('https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v' + olVersion + '/build/ol.js');
+ addStyleFile('/cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v' + olVersion + '/css/ol.css');
+ addScriptFile('/cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v' + olVersion + '/build/ol.js');
if (debugMode) {
- addScriptFile('https://cdn.jsdelivr.net/npm/proj4@' + proj4jsVersion + '/dist/proj4-src.js');
+ addScriptFile('/cdn.jsdelivr.net/npm/proj4@' + proj4jsVersion + '/dist/proj4-src.js');
} else {
- addScriptFile('https://cdn.jsdelivr.net/npm/proj4@' + proj4jsVersion + '/dist/proj4.js');
+ addScriptFile('/cdn.jsdelivr.net/npm/proj4@' + proj4jsVersion + '/dist/proj4.js');
}
window.Images = ['arrow', 'default', 'animal', 'bicycle', 'boat', 'bus', 'car', 'crane', 'helicopter', 'motorcycle',
diff -ruN simple/index.html simple/index.html
--- simple/index.html 2017-12-21 11:08:44.859180391 +0100
+++ simple/index.html 2018-01-22 18:04:28.483443349 +0100
@@ -4,11 +4,11 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>Traccar</title>
-<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.20.1/ol.css" type="text/css">
+<link rel="stylesheet" href="/cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v5.3.0/css/ol.css" type="text/css">
</head>
<body style="margin: 0; padding: 0;">
<div id="map" style="width: 100%; height: 100%; position:fixed;"></div>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.20.1/ol.js" type="text/javascript"></script>
+<script src="/cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v5.3.0/build/ol.js" type="text/javascript"></script>
<script id="loadScript" src="app.js"></script>
</body>
</html>
EOF
BASE=cdnjs.cloudflare.com/ajax/libs
BASE2=cdn.jsdelivr.net
JSDELIVER_FILES="
gh/openlayers/openlayers.github.io@master/en/v5.3.0/build/ol.js
gh/openlayers/openlayers.github.io@master/en/v5.3.0/css/ol.css
npm/proj4@2.5.0/dist/proj4-src.js
npm/proj4@2.5.0/dist/proj4.js
"
CLOUDFLARE_FILES="
font-awesome/4.7.0/css/font-awesome.min.css
font-awesome/4.7.0/fonts/fontawesome-webfont.woff
font-awesome/4.7.0/fonts/fontawesome-webfont.eot
font-awesome/4.7.0/fonts/fontawesome-webfont.ttf
font-awesome/4.7.0/fonts/fontawesome-webfont.woff2
font-awesome/4.7.0/fonts/fontawesome-webfont.svg
extjs/6.2.0/packages/charts/classic/charts-debug.js
extjs/6.2.0/packages/charts/classic/charts.js
extjs/6.2.0/packages/charts/classic/triton/resources/charts-all.css
extjs/6.2.0/classic/locale/locale-no_NB.js
extjs/6.2.0/classic/locale/locale-fr.js
extjs/6.2.0/classic/locale/locale-tr.js
extjs/6.2.0/classic/locale/locale-ko.js
extjs/6.2.0/classic/locale/locale-pt_BR.js
extjs/6.2.0/classic/locale/locale-ro.js
extjs/6.2.0/classic/locale/locale-lt.js
extjs/6.2.0/classic/locale/locale-sk.js
extjs/6.2.0/classic/locale/locale-hr.js
extjs/6.2.0/classic/locale/locale-ru.js
extjs/6.2.0/classic/locale/locale-bg.js
extjs/6.2.0/classic/locale/locale-en.js
extjs/6.2.0/classic/locale/locale-ja.js
extjs/6.2.0/classic/locale/locale-es.js
extjs/6.2.0/classic/locale/locale-lv.js
extjs/6.2.0/classic/locale/locale-pl.js
extjs/6.2.0/classic/locale/locale-id.js
extjs/6.2.0/classic/locale/locale-it.js
extjs/6.2.0/classic/locale/locale-th.js
extjs/6.2.0/classic/locale/locale-he.js
extjs/6.2.0/classic/locale/locale-fa.js
extjs/6.2.0/classic/locale/locale-sl.js
extjs/6.2.0/classic/locale/locale-zh_CN.js
extjs/6.2.0/classic/locale/locale-pt.js
extjs/6.2.0/classic/locale/locale-ukr.js
extjs/6.2.0/classic/locale/locale-cs.js
extjs/6.2.0/classic/locale/locale-fi.js
extjs/6.2.0/classic/locale/locale-sr.js
extjs/6.2.0/classic/locale/locale-da.js
extjs/6.2.0/classic/locale/locale-no_NN.js
extjs/6.2.0/classic/locale/locale-hu.js
extjs/6.2.0/classic/locale/locale-zh_TW.js
extjs/6.2.0/classic/locale/locale-nl.js
extjs/6.2.0/classic/locale/locale-de.js
extjs/6.2.0/classic/theme-triton/resources/font-ext/fonts/ExtJS.eot
extjs/6.2.0/classic/theme-triton/resources/font-ext/fonts/ExtJS.svg
extjs/6.2.0/classic/theme-triton/resources/font-ext/fonts/ExtJS.woff
extjs/6.2.0/classic/theme-triton/resources/font-ext/fonts/ExtJS.ttf
extjs/6.2.0/classic/theme-triton/resources/images/tools/tool-sprites-dark.png
extjs/6.2.0/classic/theme-triton/resources/images/tools/tool-sprites.png
extjs/6.2.0/classic/theme-triton/resources/images/grid/col-move-bottom.png
extjs/6.2.0/classic/theme-triton/resources/images/grid/col-move-top.png
extjs/6.2.0/classic/theme-triton/resources/images/grid/dd-insert-arrow-right.png
extjs/6.2.0/classic/theme-triton/resources/images/grid/dd-insert-arrow-left.png
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-left-over-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-top-active-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-bottom-focus-over-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-bottom-focus-active-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-top-focus-over-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-left-active-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-top-over-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-bottom-active-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-right-focus-active-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-bottom-over-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-left-focus-over-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-right-active-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-top-focus-active-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-right-focus-over-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-left-focus-active-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-right-over-fbg.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-disabled-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-disabled-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-disabled-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-disabled-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-disabled-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-disabled-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-disabled-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-disabled-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-disabled-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-focus-pressed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-pressed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-focus-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-disabled-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-disabled-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-over-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-over-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-disabled-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/loadmask/loading.gif
extjs/6.2.0/classic/theme-triton/resources/images/form/exclamation.png
extjs/6.2.0/classic/theme-triton/resources/images/btn-group/btn-group-default-framed-notitle-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn-group/btn-group-default-framed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn-group/btn-group-default-framed-notitle-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/btn-group/btn-group-default-framed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel/panel-light-framed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel/panel-default-framed-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel/panel-default-framed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel/panel-light-framed-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/tip/tip-default-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/tip/tip-default-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/tip/tip-form-invalid-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/tip/tip-form-invalid-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/tree/loading.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-bottom-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-top-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-left-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-right-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-top-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-right-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-bottom-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-right-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-left-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-right-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-left-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-left-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-top-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-left-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-bottom-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-right-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-right-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-top-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-top-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-top-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-top-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-left-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-top-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-right-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-right-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-left-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-bottom-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-left-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/breadcrumb/default-scroll-right.png
extjs/6.2.0/classic/theme-triton/resources/images/breadcrumb/default-arrow.png
extjs/6.2.0/classic/theme-triton/resources/images/breadcrumb/default-arrow-open.png
extjs/6.2.0/classic/theme-triton/resources/images/breadcrumb/default-scroll-left.png
extjs/6.2.0/classic/theme-triton/resources/images/menu/default-group-checked.png
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-bottom-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-bottom-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-left-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-bottom-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-top-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-top-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-right-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-right-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-bottom-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-left-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-right-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-right-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-top-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-top-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-left-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-left-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window/window-default-sides.gif
extjs/6.2.0/classic/theme-triton/resources/images/window/window-default-corners.gif
extjs/6.2.0/classic/theme-triton/resources/images/window/toast/icon16_info.png
extjs/6.2.0/classic/theme-triton/resources/images/window/toast/icon16_error.png
extjs/6.2.0/classic/theme-triton/resources/images/window/toast/fader.png
extjs/6.2.0/classic/theme-triton/resources/theme-triton-all_1.css
extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.woff
extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.eot
extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.ttf
extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.woff2
extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.svg
extjs/6.2.0/classic/theme-triton/resources/theme-triton-all_2.css
extjs/6.2.0/classic/theme-triton/resources/theme-triton-all.css
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Light.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-LightItalic.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Regular.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Semibold.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Italic.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-SemiboldItalic.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-ExtraBoldItalic.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-BoldItalic.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Bold.ttf
extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-ExtraBold.ttf
extjs/6.2.0/classic/theme-triton/theme-triton.js
extjs/6.2.0/ext-all.js
extjs/6.2.0/ext-all-debug.js
"
mkdir -p $BASE
cd $BASE
for CFF in $CLOUDFLARE_FILES;do
D=`dirname $CFF`
F=`basename $CFF`
mkdir -p $D
(cd $D && wget -c https://$BASE/$D/$F)
done
cd $TRACCAR_INSTALL_DIR/web
mkdir -p $BASE2
cd $BASE2
for CFF in $JSDELIVER_FILES;do
D=`dirname $CFF`
F=`basename $CFF`
mkdir -p $D
(cd $D && wget -c https://$BASE2/$D/$F)
done
If, like me, you want your Traccar installation to be entirely self-contained, without the client's browsers hitting cdnjs, run this script as root:
#!/bin/sh TRACCAR_INSTALL_DIR=/opt/traccar cd $TRACCAR_INSTALL_DIR/web patch -p0 << EOF diff -ruN load.js load.js --- load.js 2017-12-21 11:08:44.851180390 +0100 +++ load.js 2018-01-22 18:04:40.471443409 +0100 @@ -149,32 +149,32 @@ proj4jsVersion = '2.4.4'; if (debugMode) { - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/ext-all-debug.js'); - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/charts-debug.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/ext-all-debug.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/charts-debug.js'); } else { - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/ext-all.js'); - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/charts.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/ext-all.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/charts.js'); } - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/locale/locale-' + locale.languages[locale.language].code + '.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/locale/locale-' + locale.languages[locale.language].code + '.js'); - addStyleFile('//cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/theme-triton/resources/theme-triton-all.css'); - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/theme-triton/theme-triton.js'); + addStyleFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/theme-triton/resources/theme-triton-all.css'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/classic/theme-triton/theme-triton.js'); - addStyleFile('//cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/triton/resources/charts-all.css'); + addStyleFile('/cdnjs.cloudflare.com/ajax/libs/extjs/' + extjsVersion + '/packages/charts/classic/triton/resources/charts-all.css'); - addStyleFile('//cdnjs.cloudflare.com/ajax/libs/font-awesome/' + fontAwesomeVersion + '/css/font-awesome.min.css'); + addStyleFile('/cdnjs.cloudflare.com/ajax/libs/font-awesome/' + fontAwesomeVersion + '/css/font-awesome.min.css'); - addStyleFile('//cdnjs.cloudflare.com/ajax/libs/ol3/' + olVersion + '/ol.css'); + addStyleFile('/cdnjs.cloudflare.com/ajax/libs/ol3/' + olVersion + '/ol.css'); if (debugMode) { - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/ol3/' + olVersion + '/ol-debug.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/ol3/' + olVersion + '/ol-debug.js'); } else { - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/ol3/' + olVersion + '/ol.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/ol3/' + olVersion + '/ol.js'); } if (debugMode) { - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/proj4js/' + proj4jsVersion + '/proj4-src.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/proj4js/' + proj4jsVersion + '/proj4-src.js'); } else { - addScriptFile('//cdnjs.cloudflare.com/ajax/libs/proj4js/' + proj4jsVersion + '/proj4.js'); + addScriptFile('/cdnjs.cloudflare.com/ajax/libs/proj4js/' + proj4jsVersion + '/proj4.js'); } window.Images = ['arrow', 'default', 'animal', 'bicycle', 'boat', 'bus', 'car', 'crane', 'helicopter', diff -ruN simple/index.html simple/index.html --- simple/index.html 2017-12-21 11:08:44.859180391 +0100 +++ simple/index.html 2018-01-22 18:04:28.483443349 +0100 @@ -4,11 +4,11 @@ <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <title>Traccar</title> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.20.1/ol.css" type="text/css"> +<link rel="stylesheet" href="/cdnjs.cloudflare.com/ajax/libs/ol3/3.20.1/ol.css" type="text/css"> </head> <body style="margin: 0; padding: 0;"> <div id="map" style="width: 100%; height: 100%; position:fixed;"></div> -<script src="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.20.1/ol.js" type="text/javascript"></script> +<script src="/cdnjs.cloudflare.com/ajax/libs/ol3/3.20.1/ol.js" type="text/javascript"></script> <script id="loadScript" src="app.js"></script> </body> </html> EOF BASE=cdnjs.cloudflare.com/ajax/libs CLOUDFLARE_FILES=" font-awesome/4.7.0/css/font-awesome.min.css font-awesome/4.7.0/fonts/fontawesome-webfont.woff font-awesome/4.7.0/fonts/fontawesome-webfont.eot font-awesome/4.7.0/fonts/fontawesome-webfont.ttf font-awesome/4.7.0/fonts/fontawesome-webfont.woff2 font-awesome/4.7.0/fonts/fontawesome-webfont.svg ol3/3.20.1/ol.js ol3/3.20.1/ol.css ol3/4.6.3/ol-debug.css ol3/4.6.3/ol.js ol3/4.6.3/ol-debug.js ol3/4.6.3/ol.css proj4js/2.4.4/proj4-src.js proj4js/2.4.4/proj4.js extjs/6.2.0/packages/charts/classic/charts-debug.js extjs/6.2.0/packages/charts/classic/charts.js extjs/6.2.0/packages/charts/classic/triton/resources/charts-all.css extjs/6.2.0/classic/locale/locale-no_NB.js extjs/6.2.0/classic/locale/locale-fr.js extjs/6.2.0/classic/locale/locale-tr.js extjs/6.2.0/classic/locale/locale-ko.js extjs/6.2.0/classic/locale/locale-pt_BR.js extjs/6.2.0/classic/locale/locale-ro.js extjs/6.2.0/classic/locale/locale-lt.js extjs/6.2.0/classic/locale/locale-sk.js extjs/6.2.0/classic/locale/locale-hr.js extjs/6.2.0/classic/locale/locale-ru.js extjs/6.2.0/classic/locale/locale-bg.js extjs/6.2.0/classic/locale/locale-en.js extjs/6.2.0/classic/locale/locale-ja.js extjs/6.2.0/classic/locale/locale-es.js extjs/6.2.0/classic/locale/locale-lv.js extjs/6.2.0/classic/locale/locale-pl.js extjs/6.2.0/classic/locale/locale-id.js extjs/6.2.0/classic/locale/locale-it.js extjs/6.2.0/classic/locale/locale-th.js extjs/6.2.0/classic/locale/locale-he.js extjs/6.2.0/classic/locale/locale-fa.js extjs/6.2.0/classic/locale/locale-sl.js extjs/6.2.0/classic/locale/locale-zh_CN.js extjs/6.2.0/classic/locale/locale-pt.js extjs/6.2.0/classic/locale/locale-ukr.js extjs/6.2.0/classic/locale/locale-cs.js extjs/6.2.0/classic/locale/locale-fi.js extjs/6.2.0/classic/locale/locale-sr.js extjs/6.2.0/classic/locale/locale-da.js extjs/6.2.0/classic/locale/locale-no_NN.js extjs/6.2.0/classic/locale/locale-hu.js extjs/6.2.0/classic/locale/locale-zh_TW.js extjs/6.2.0/classic/locale/locale-nl.js extjs/6.2.0/classic/locale/locale-de.js extjs/6.2.0/classic/theme-triton/resources/font-ext/fonts/ExtJS.eot extjs/6.2.0/classic/theme-triton/resources/font-ext/fonts/ExtJS.svg extjs/6.2.0/classic/theme-triton/resources/font-ext/fonts/ExtJS.woff extjs/6.2.0/classic/theme-triton/resources/font-ext/fonts/ExtJS.ttf extjs/6.2.0/classic/theme-triton/resources/images/tools/tool-sprites-dark.png extjs/6.2.0/classic/theme-triton/resources/images/tools/tool-sprites.png extjs/6.2.0/classic/theme-triton/resources/images/grid/col-move-bottom.png extjs/6.2.0/classic/theme-triton/resources/images/grid/col-move-top.png extjs/6.2.0/classic/theme-triton/resources/images/grid/dd-insert-arrow-right.png extjs/6.2.0/classic/theme-triton/resources/images/grid/dd-insert-arrow-left.png extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-left-over-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-top-active-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-bottom-focus-over-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-bottom-focus-active-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-top-focus-over-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-left-active-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-top-over-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-bottom-active-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-right-focus-active-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-bottom-over-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-left-focus-over-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-right-active-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-top-focus-active-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-right-focus-over-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-left-focus-active-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/tab/tab-default-right-over-fbg.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-disabled-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-disabled-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-disabled-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-disabled-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-disabled-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-disabled-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-disabled-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-disabled-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-disabled-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-focus-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-focus-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-medium-focus-pressed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-focus-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-large-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-small-focus-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-focus-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-large-pressed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-plain-toolbar-small-focus-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-medium-disabled-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-disabled-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-large-over-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-small-over-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn/btn-default-toolbar-medium-disabled-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/loadmask/loading.gif extjs/6.2.0/classic/theme-triton/resources/images/form/exclamation.png extjs/6.2.0/classic/theme-triton/resources/images/btn-group/btn-group-default-framed-notitle-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/btn-group/btn-group-default-framed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn-group/btn-group-default-framed-notitle-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/btn-group/btn-group-default-framed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel/panel-light-framed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel/panel-default-framed-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel/panel-default-framed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel/panel-light-framed-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/tip/tip-default-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/tip/tip-default-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/tip/tip-form-invalid-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/tip/tip-form-invalid-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/tree/loading.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-bottom-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-top-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-bottom-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-left-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-right-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-top-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-right-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-bottom-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-right-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-left-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-right-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-left-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-left-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-top-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-left-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-bottom-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-right-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-right-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-top-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-bottom-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-top-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-top-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-top-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-left-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-top-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-right-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-right-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-default-framed-collapsed-left-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-bottom-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/panel-header/panel-header-light-framed-collapsed-left-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/breadcrumb/default-scroll-right.png extjs/6.2.0/classic/theme-triton/resources/images/breadcrumb/default-arrow.png extjs/6.2.0/classic/theme-triton/resources/images/breadcrumb/default-arrow-open.png extjs/6.2.0/classic/theme-triton/resources/images/breadcrumb/default-scroll-left.png extjs/6.2.0/classic/theme-triton/resources/images/menu/default-group-checked.png extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-bottom-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-bottom-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-left-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-bottom-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-top-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-top-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-right-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-right-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-bottom-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-left-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-right-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-right-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-top-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-top-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-left-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window-header/window-header-default-collapsed-left-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window/window-default-sides.gif extjs/6.2.0/classic/theme-triton/resources/images/window/window-default-corners.gif extjs/6.2.0/classic/theme-triton/resources/images/window/toast/icon16_info.png extjs/6.2.0/classic/theme-triton/resources/images/window/toast/icon16_error.png extjs/6.2.0/classic/theme-triton/resources/images/window/toast/fader.png extjs/6.2.0/classic/theme-triton/resources/theme-triton-all_1.css extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.woff extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.eot extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.ttf extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.woff2 extjs/6.2.0/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.svg extjs/6.2.0/classic/theme-triton/resources/theme-triton-all_2.css extjs/6.2.0/classic/theme-triton/resources/theme-triton-all.css extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Light.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-LightItalic.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Regular.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Semibold.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Italic.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-SemiboldItalic.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-ExtraBoldItalic.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-BoldItalic.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-Bold.ttf extjs/6.2.0/classic/theme-triton/resources/fonts/OpenSans-ExtraBold.ttf extjs/6.2.0/classic/theme-triton/theme-triton.js extjs/6.2.0/ext-all.js extjs/6.2.0/ext-all-debug.js " mkdir -p $BASE cd $BASE for CFF in $CLOUDFLARE_FILES;do D=`dirname $CFF` F=`basename $CFF` mkdir -p $D (cd $D && wget https://$BASE/$D/$F) done
It works with a standard Unix install of Traccar. For a non-standard Unix install or a Windows install, you're on your own. But the script is trivial: basically, what it does is copy the required Cloudflare files to your local Traccar's web server tree, and modify a couple of existing files so the server serves up those files itself.