Cutting Cloudflare out of your Traccar install

Rosco Cooper7 years ago

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.

Anton Tananaev7 years ago

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.

Rosco Cooper7 years ago

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 :)

Anton Tananaev7 years ago

Those are all free open source libraries, so obviously Cloudflare can't restrict anyone from distributing them.

Damo6 years ago

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.

Dariuz Worom5 years ago

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