diff options
Diffstat (limited to 'setup')
-rw-r--r-- | setup/default.xml | 452 | ||||
-rw-r--r-- | setup/docker/Dockerfile | 6 | ||||
-rwxr-xr-x[-rw-r--r--] | setup/docker/build.sh | 12 | ||||
-rw-r--r-- | setup/other/traccar.sh | 48 | ||||
-rwxr-xr-x | setup/package.sh | 23 | ||||
-rw-r--r-- | setup/traccar.iss | 7 | ||||
-rw-r--r-- | setup/traccar.xml | 393 |
7 files changed, 539 insertions, 402 deletions
diff --git a/setup/default.xml b/setup/default.xml new file mode 100644 index 000000000..ad23d7bd3 --- /dev/null +++ b/setup/default.xml @@ -0,0 +1,452 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'> + +<properties> + + <!-- SERVER CONFIG --> + + <entry key='web.enable'>true</entry> + <entry key='web.port'>8082</entry> + <entry key='web.path'>./web</entry> + + <entry key='geocoder.enable'>true</entry> + <entry key='geocoder.type'>google</entry> + + <entry key='logger.enable'>true</entry> + <entry key='logger.level'>all</entry> + <entry key='logger.file'>./logs/tracker-server.log</entry> + + <entry key='event.enable'>true</entry> + <entry key='event.overspeedHandler'>true</entry> + <entry key='event.overspeed.notRepeat'>true</entry> + <entry key='event.motionHandler'>true</entry> + <entry key='event.geofenceHandler'>true</entry> + <entry key='event.alertHandler'>true</entry> + <entry key='event.ignitionHandler'>true</entry> + <entry key='event.statusHandler'>true</entry> + <entry key='event.maintenanceHandler'>true</entry> + + <!-- DATABASE CONFIG --> + + <entry key='database.ignoreUnknown'>true</entry> + + <entry key='database.changelog'>./schema/changelog-master.xml</entry> + + <entry key='database.selectServers'> + SELECT * FROM server + </entry> + + <entry key='database.updateServer'> + UPDATE server SET + registration = :registration, + readonly = :readonly, + map = :map, + bingKey = :bingKey, + mapUrl = :mapUrl, + distanceUnit = :distanceUnit, + speedUnit = :speedUnit, + latitude = :latitude, + longitude = :longitude, + zoom = :zoom, + twelveHourFormat = :twelveHourFormat, + attributes = :attributes + WHERE id = :id + </entry> + + <entry key='database.loginUser'> + SELECT * FROM users + WHERE email = :email + </entry> + + <entry key='database.selectUsersAll'> + SELECT * FROM users + </entry> + + <entry key='database.insertUser'> + INSERT INTO users (name, email, hashedPassword, salt, admin, map, distanceUnit, speedUnit, latitude, longitude, zoom, twelveHourFormat, coordinateFormat, disabled, expirationTime, deviceLimit, token, attributes) + VALUES (:name, :email, :hashedPassword, :salt, :admin, :map, :distanceUnit, :speedUnit, :latitude, :longitude, :zoom, :twelveHourFormat, :coordinateFormat, :disabled, :expirationTime, :deviceLimit, :token, :attributes) + </entry> + + <entry key='database.updateUser'> + UPDATE users SET + name = :name, + email = :email, + admin = :admin, + map = :map, + distanceUnit = :distanceUnit, + speedUnit = :speedUnit, + latitude = :latitude, + longitude = :longitude, + zoom = :zoom, + twelveHourFormat = :twelveHourFormat, + coordinateFormat = :coordinateFormat, + disabled = :disabled, + expirationTime = :expirationTime, + deviceLimit = :deviceLimit, + token = :token, + attributes = :attributes + WHERE id = :id + </entry> + + <entry key='database.updateUserPassword'> + UPDATE users SET hashedPassword = :hashedPassword, salt = :salt WHERE id = :id + </entry> + + <entry key='database.deleteUser'> + DELETE FROM users WHERE id = :id + </entry> + + <entry key='database.selectDevicePermissions'> + SELECT userId, deviceId FROM user_device + </entry> + + <entry key='database.selectGroupPermissions'> + SELECT userId, groupId FROM user_group + </entry> + + <entry key='database.selectDevicesAll'> + SELECT * FROM devices + </entry> + + <entry key='database.insertDevice'> + INSERT INTO devices (name, uniqueId, groupId, attributes, phone, model, contact, category) + VALUES (:name, :uniqueId, :groupId, :attributes, :phone, :model, :contact, :category) + </entry> + + <entry key='database.updateDevice'> + UPDATE devices SET + name = :name, + uniqueId = :uniqueId, + groupId = :groupId, + attributes = :attributes, + phone = :phone, + model = :model, + contact = :contact, + category = :category + WHERE id = :id + </entry> + + <entry key='database.updateDeviceStatus'> + UPDATE devices SET lastUpdate = :lastUpdate WHERE id = :id + </entry> + + <entry key='database.deleteDevice'> + DELETE FROM devices WHERE id = :id + </entry> + + <entry key='database.linkDevice'> + INSERT INTO user_device (userId, deviceId) VALUES (:userId, :deviceId) + </entry> + + <entry key='database.unlinkDevice'> + DELETE FROM user_device WHERE userId = :userId AND deviceId = :deviceId + </entry> + + <entry key='database.selectGroupsAll'> + SELECT * FROM groups + </entry> + + <entry key='database.insertGroup'> + INSERT INTO groups (name, groupId, attributes) VALUES (:name, :groupId, :attributes) + </entry> + + <entry key='database.updateGroup'> + UPDATE groups SET name = :name, groupId = :groupId, attributes = :attributes WHERE id = :id + </entry> + + <entry key='database.deleteGroup'> + DELETE FROM groups WHERE id = :id + </entry> + + <entry key='database.linkGroup'> + INSERT INTO user_group (userId, groupId) VALUES (:userId, :groupId) + </entry> + + <entry key='database.unlinkGroup'> + DELETE FROM user_group WHERE userId = :userId AND groupId = :groupId + </entry> + + <entry key='database.selectPositions'> + SELECT * FROM positions WHERE deviceId = :deviceId AND fixTime BETWEEN :from AND :to ORDER BY fixTime + </entry> + + <entry key='database.selectPosition'> + SELECT * FROM positions WHERE id = :id + </entry> + + <entry key='database.insertPosition'> + INSERT INTO positions (deviceId, protocol, serverTime, deviceTime, fixTime, valid, latitude, longitude, altitude, speed, course, address, attributes) + VALUES (:deviceId, :protocol, :now, :deviceTime, :fixTime, :valid, :latitude, :longitude, :altitude, :speed, :course, :address, :attributes) + </entry> + + <entry key='database.selectLatestPositions'> + SELECT * FROM positions WHERE id IN (SELECT positionId FROM devices) + </entry> + + <entry key='database.updateLatestPosition'> + UPDATE devices SET positionId = :id WHERE id = :deviceId + </entry> + + <entry key='database.selectEvent'> + SELECT * FROM events WHERE id = :id + </entry> + + <entry key='database.insertEvent'> + INSERT INTO events (type, serverTime, deviceId, positionId, geofenceId, attributes) + VALUES (:type, :serverTime, :deviceId, :positionId, :geofenceId, :attributes) + </entry> + + <entry key='database.selectEvents'> + SELECT * FROM events WHERE deviceId = :deviceId AND serverTime BETWEEN :from AND :to ORDER BY serverTime + </entry> + + <entry key='database.selectGeofencesAll'> + SELECT * FROM geofences + </entry> + + <entry key='database.insertGeofence'> + INSERT INTO geofences (name, description, area, attributes) + VALUES (:name, :description, :area, :attributes) + </entry> + + <entry key='database.updateGeofence'> + UPDATE geofences SET + name = :name, + description = :description, + area = :area, + attributes = :attributes + WHERE id = :id + </entry> + + <entry key='database.deleteGeofence'> + DELETE FROM geofences WHERE id = :id + </entry> + + <entry key='database.selectGeofencePermissions'> + SELECT userId, geofenceId FROM user_geofence + </entry> + + <entry key='database.linkGeofence'> + INSERT INTO user_geofence (userId, geofenceId) VALUES (:userId, :geofenceId) + </entry> + + <entry key='database.unlinkGeofence'> + DELETE FROM user_geofence WHERE userId = :userId AND geofenceId = :geofenceId + </entry> + + <entry key='database.selectGroupGeofences'> + SELECT groupId, geofenceId FROM group_geofence + </entry> + + <entry key='database.linkGroupGeofence'> + INSERT INTO group_geofence (groupId, geofenceId) VALUES (:groupId, :geofenceId) + </entry> + + <entry key='database.unlinkGroupGeofence'> + DELETE FROM group_geofence WHERE groupId = :groupId AND geofenceId = :geofenceId + </entry> + + <entry key='database.selectDeviceGeofences'> + SELECT deviceId, geofenceId FROM device_geofence + </entry> + + <entry key='database.linkDeviceGeofence'> + INSERT INTO device_geofence (deviceId, geofenceId) VALUES (:deviceId, :geofenceId) + </entry> + + <entry key='database.unlinkDeviceGeofence'> + DELETE FROM device_geofence WHERE deviceId = :deviceId AND geofenceId = :geofenceId + </entry> + + <entry key='database.selectNotifications'> + SELECT * FROM notifications + </entry> + + <entry key='database.insertNotification'> + INSERT INTO notifications (userId, type, web, mail, attributes) + VALUES (:userId, :type, :web, :mail, :attributes) + </entry> + + <entry key='database.updateNotification'> + UPDATE notifications SET + userId = :userId, + type = :type, + web = :web, + mail = :mail, + attributes = :attributes + WHERE id = :id + </entry> + + <entry key='database.deleteNotification'> + DELETE FROM notifications WHERE id = :id + </entry> + + <entry key='database.deletePositions'> + DELETE FROM positions WHERE serverTime < :serverTime AND id NOT IN (SELECT positionId FROM devices) + </entry> + + <entry key='database.selectAttributeAliases'> + SELECT * FROM attribute_aliases + </entry> + + <entry key='database.insertAttributeAlias'> + INSERT INTO attribute_aliases (deviceId, attribute, alias) + VALUES (:deviceId, :attribute, :alias) + </entry> + + <entry key='database.updateAttributeAlias'> + UPDATE attribute_aliases SET + deviceId = :deviceId, + attribute = :attribute, + alias = :alias + WHERE id = :id + </entry> + + <entry key='database.deleteAttributeAlias'> + DELETE FROM attribute_aliases WHERE id = :id + </entry> + + <entry key='database.selectStatistics'> + SELECT * FROM statistics WHERE captureTime BETWEEN :from AND :to ORDER BY captureTime + </entry> + + <entry key='database.insertStatistics'> + INSERT INTO statistics (captureTime, activeUsers, activeDevices, requests, messagesReceived, messagesStored, attributes) + VALUES (:captureTime, :activeUsers, :activeDevices, :requests, :messagesReceived, :messagesStored, :attributes) + </entry> + + <!-- PROTOCOL CONFIG --> + + <entry key='gps103.port'>5001</entry> + <entry key='tk103.port'>5002</entry> + <entry key='gl100.port'>5003</entry> + <entry key='gl200.port'>5004</entry> + <entry key='t55.port'>5005</entry> + <entry key='xexun.port'>5006</entry> + <entry key='xexun.extended'>false</entry> + <entry key='totem.port'>5007</entry> + <entry key='enfora.port'>5008</entry> + <entry key='meiligao.port'>5009</entry> + <entry key='trv.port'>5010</entry> + <entry key='suntech.port'>5011</entry> + <entry key='progress.port'>5012</entry> + <entry key='h02.port'>5013</entry> + <entry key='jt600.port'>5014</entry> + <entry key='huabao.port'>5015</entry> + <entry key='v680.port'>5016</entry> + <entry key='pt502.port'>5017</entry> + <entry key='tr20.port'>5018</entry> + <entry key='navis.port'>5019</entry> + <entry key='meitrack.port'>5020</entry> + <entry key='skypatrol.port'>5021</entry> + <entry key='gt02.port'>5022</entry> + <entry key='gt06.port'>5023</entry> + <entry key='megastek.port'>5024</entry> + <entry key='navigil.port'>5025</entry> + <entry key='gpsgate.port'>5026</entry> + <entry key='teltonika.port'>5027</entry> + <entry key='mta6.port'>5028</entry> + <entry key='tzone.port'>5029</entry> + <entry key='tlt2h.port'>5030</entry> + <entry key='taip.port'>5031</entry> + <entry key='wondex.port'>5032</entry> + <entry key='cellocator.port'>5033</entry> + <entry key='galileo.port'>5034</entry> + <entry key='ywt.port'>5035</entry> + <entry key='tk102.port'>5036</entry> + <entry key='intellitrac.port'>5037</entry> + <entry key='gpsmta.port'>5038</entry> + <entry key='wialon.port'>5039</entry> + <entry key='carscop.port'>5040</entry> + <entry key='apel.port'>5041</entry> + <entry key='manpower.port'>5042</entry> + <entry key='globalsat.port'>5043</entry> + <entry key='atrack.port'>5044</entry> + <entry key='pt3000.port'>5045</entry> + <entry key='ruptela.port'>5046</entry> + <entry key='topflytech.port'>5047</entry> + <entry key='laipac.port'>5048</entry> + <entry key='aplicom.port'>5049</entry> + <entry key='gotop.port'>5050</entry> + <entry key='sanav.port'>5051</entry> + <entry key='gator.port'>5052</entry> + <entry key='noran.port'>5053</entry> + <entry key='m2m.port'>5054</entry> + <entry key='osmand.port'>5055</entry> + <entry key='easytrack.port'>5056</entry> + <entry key='gpsmarker.port'>5057</entry> + <entry key='khd.port'>5058</entry> + <entry key='piligrim.port'>5059</entry> + <entry key='stl060.port'>5060</entry> + <entry key='cartrack.port'>5061</entry> + <entry key='minifinder.port'>5062</entry> + <entry key='haicom.port'>5063</entry> + <entry key='eelink.port'>5064</entry> + <entry key='box.port'>5065</entry> + <entry key='freedom.port'>5066</entry> + <entry key='telic.port'>5067</entry> + <entry key='trackbox.port'>5068</entry> + <entry key='visiontek.port'>5069</entry> + <entry key='orion.port'>5070</entry> + <entry key='riti.port'>5071</entry> + <entry key='ulbotech.port'>5072</entry> + <entry key='tramigo.port'>5073</entry> + <entry key='tr900.port'>5074</entry> + <entry key='ardi01.port'>5075</entry> + <entry key='xt013.port'>5076</entry> + <entry key='autofon.port'>5077</entry> + <entry key='gosafe.port'>5078</entry> + <entry key='tt8850.port'>5079</entry> + <entry key='bce.port'>5080</entry> + <entry key='xirgo.port'>5081</entry> + <entry key='calamp.port'>5082</entry> + <entry key='mtx.port'>5083</entry> + <entry key='tytan.port'>5084</entry> + <entry key='avl301.port'>5085</entry> + <entry key='castel.port'>5086</entry> + <entry key='mxt.port'>5087</entry> + <entry key='cityeasy.port'>5088</entry> + <entry key='aquila.port'>5089</entry> + <entry key='flextrack.port'>5090</entry> + <entry key='blackkite.port'>5091</entry> + <entry key='adm.port'>5092</entry> + <entry key='watch.port'>5093</entry> + <entry key='t800x.port'>5094</entry> + <entry key='upro.port'>5095</entry> + <entry key='auro.port'>5096</entry> + <entry key='disha.port'>5097</entry> + <entry key='thinkrace.port'>5098</entry> + <entry key='pathaway.port'>5099</entry> + <entry key='arnavi.port'>5100</entry> + <entry key='nvs.port'>5101</entry> + <entry key='kenji.port'>5102</entry> + <entry key='astra.port'>5103</entry> + <entry key='homtecs.port'>5104</entry> + <entry key='fox.port'>5105</entry> + <entry key='gnx.port'>5106</entry> + <entry key='arknav.port'>5107</entry> + <entry key='supermate.port'>5108</entry> + <entry key='appello.port'>5109</entry> + <entry key='idpl.port'>5110</entry> + <entry key='huasheng.port'>5111</entry> + <entry key='l100.port'>5112</entry> + <entry key='granit.port'>5113</entry> + <entry key='carcell.port'>5114</entry> + <entry key='obddongle.port'>5115</entry> + <entry key='hunterpro.port'>5116</entry> + <entry key='raveon.port'>5117</entry> + <entry key='cradlepoint.port'>5118</entry> + <entry key='arknavx8.port'>5119</entry> + <entry key='autograde.port'>5120</entry> + <entry key='oigo.port'>5121</entry> + <entry key='jpkorjar.port'>5122</entry> + <entry key='cguard.port'>5123</entry> + <entry key='fifotrack.port'>5124</entry> + <entry key='smokey.port'>5125</entry> + <entry key='extremtrac.port'>5126</entry> + <entry key='trakmate.port'>5127</entry> + <entry key='at2000.port'>5128</entry> + <entry key='maestro.port'>5129</entry> + +</properties> diff --git a/setup/docker/Dockerfile b/setup/docker/Dockerfile index a39cad79c..d86b078c1 100644 --- a/setup/docker/Dockerfile +++ b/setup/docker/Dockerfile @@ -2,6 +2,8 @@ FROM java:8-alpine MAINTAINER Danilo Recchia <danilo.recchia@vortus.solutions> +USER root + RUN apk upgrade --update && \ apk add --update curl bash && \ rm -rf /var/cache/apk/* && \ @@ -11,7 +13,9 @@ RUN apk upgrade --update && \ ENV JAVA_OPTS -Xms256m -Xmx1024m COPY ./tmp/traccar.xml /opt/traccar/traccar.xml +COPY ./tmp/default.xml /opt/traccar/conf/default.xml COPY ./tmp/schema /opt/traccar/schema +COPY ./tmp/templates /opt/traccar/templates COPY ./tmp/web /opt/traccar/web COPY ./tmp/lib /opt/traccar/lib COPY ./tmp/traccar-server.jar /opt/traccar/traccar-server.jar @@ -21,4 +25,4 @@ EXPOSE 5000-5150 WORKDIR /opt/traccar -ENTRYPOINT ["java","-jar","traccar-server.jar","traccar.xml"]
\ No newline at end of file +ENTRYPOINT ["java","-jar","traccar-server.jar","traccar.xml"] diff --git a/setup/docker/build.sh b/setup/docker/build.sh index 31ee60a03..eedc633bc 100644..100755 --- a/setup/docker/build.sh +++ b/setup/docker/build.sh @@ -13,12 +13,18 @@ tmp="./setup/docker/tmp" mkdir -p ${tmp} -cat ./setup/unix/traccar.xml | awk '/web.path/ && !modif { printf(" <entry key=\"web.debug\">true</entry>\n"); modif=1 } {print}' > ${tmp}/traccar.xml +cat ./setup/traccar.xml | awk '/config.default/ && !modif { print;printf(" <entry key=\"web.debug\">true</entry>\n");next; modif=1 } {print}' > ${tmp}/traccar.xml +cp -rf ./setup/default.xml ${tmp} cp -rf ./schema ${tmp}/schema +cp -rf ./templates ${tmp}/templates cp -rf ./target/tracker-server.jar ${tmp}/traccar-server.jar cp -rf ./target/lib ${tmp}/lib -cp -rf ./web ${tmp}/web +if [ -d ./traccar-web/web ]; then + cp -rf ./traccar-web/web ${tmp}/web +else + mkdir ${tmp}/web +fi docker build -t ${company}/${software}:${version} ./setup/docker/ -rm -rf ${tmp}
\ No newline at end of file +rm -rf ${tmp} diff --git a/setup/other/traccar.sh b/setup/other/traccar.sh new file mode 100644 index 000000000..fdf1b78e4 --- /dev/null +++ b/setup/other/traccar.sh @@ -0,0 +1,48 @@ +#!/bin/sh +#service traccar server for universal version +#e.g. ./traccar.sh start +#e.g. ./traccar.sh stop +#e.g. ./traccar.sh restart + +SERVICE_NAME=traccar +PATH_TO_JAR=tracker-server.jar +PATH_TO_CONF=conf/traccar.xml +PID_PATH_NAME=/tmp/traccar-pid +case $1 in + start) + echo "Starting $SERVICE_NAME ..." + if [ ! -f $PID_PATH_NAME ]; then + nohup java -jar $PATH_TO_JAR $PATH_TO_CONF /tmp 2>> /dev/null >> /dev/null & + echo $! > $PID_PATH_NAME + echo "$SERVICE_NAME started ..." + else + echo "$SERVICE_NAME is already running ..." + fi + ;; + stop) + if [ -f $PID_PATH_NAME ]; then + PID=$(cat $PID_PATH_NAME); + echo "$SERVICE_NAME stoping ..." + kill $PID; + echo "$SERVICE_NAME stopped ..." + rm $PID_PATH_NAME + else + echo "$SERVICE_NAME is not running ..." + fi + ;; + restart) + if [ -f $PID_PATH_NAME ]; then + PID=$(cat $PID_PATH_NAME); + echo "$SERVICE_NAME stopping ..."; + kill $PID; + echo "$SERVICE_NAME stopped ..."; + rm $PID_PATH_NAME + echo "$SERVICE_NAME starting ..." + nohup java -jar $PATH_TO_JAR $PATH_TO_CONF /tmp 2>> /dev/null >> /dev/null & + echo $! > $PID_PATH_NAME + echo "$SERVICE_NAME started ..." + else + echo "$SERVICE_NAME is not running ..." + fi + ;; +esac diff --git a/setup/package.sh b/setup/package.sh index acbac434b..a6b54717d 100755 --- a/setup/package.sh +++ b/setup/package.sh @@ -23,18 +23,19 @@ check_requirement () { } check_requirement "ls ../../ext-6.0.1" "Missing ../../ext-6.0.1 (https://www.sencha.com/legal/GPL/)" -check_requirement "ls yajsw-*.zip" "Missing yajsw-*.zip (http://yajsw.sourceforge.net/)" +check_requirement "ls yajsw-*.zip" "Missing yajsw-*.zip (https://sourceforge.net/projects/yajsw/files/)" check_requirement "ls innosetup-*.exe" "Missing isetup-*.exe (http://www.jrsoftware.org/isdl.php)" check_requirement "which sencha" "Missing sencha cmd package (https://www.sencha.com/products/extjs/cmd-download/)" check_requirement "which wine" "Missing wine package" check_requirement "which innoextract" "Missing innoextract package" check_requirement "which makeself" "Missing makeself package" +check_requirement "which dos2unix" "Missing dos2unix package" prepare () { unzip yajsw-*.zip mv yajsw-*/ yajsw/ - ../web/../tools/minify.sh + ../traccar-web/tools/minify.sh innoextract innosetup-*.exe echo "If you got any errors here try isetup version 5.5.5 (or check supported versions using 'innoextract -v')" @@ -43,7 +44,7 @@ prepare () { cleanup () { rm -r yajsw/ - rm ../web/app.min.js + rm ../traccar-web/web/app.min.js rm -r app/ } @@ -70,12 +71,10 @@ copy_wrapper () { echo "wrapper.ntservice.name=traccar" >> out/conf/wrapper.conf echo "wrapper.ntservice.displayname=Traccar" >> out/conf/wrapper.conf echo "wrapper.ntservice.description=Traccar" >> out/conf/wrapper.conf + echo "wrapper.daemon.run_level_dir=\${if (new File('/etc/rc0.d').exists()) return '/etc/rcX.d' else return '/etc/init.d/rcX.d'}" >> out/conf/wrapper.conf - cp -r yajsw/lib/core out/lib - rm out/lib/core/ReadMe.txt - - cp -r yajsw/lib/extended out/lib - rm out/lib/extended/ReadMe.txt + cp -r yajsw/lib/* out/lib + find out/lib -type f -name ReadMe.txt -exec rm -f {} \; cp yajsw/templates/* out/templates @@ -91,7 +90,9 @@ copy_files () { cp ../target/tracker-server.jar out cp ../target/lib/* out/lib cp ../schema/* out/schema - cp -r ../web/* out/web + cp -r ../templates/* out/templates + cp -r ../traccar-web/web/* out/web + cp default.xml out/conf cp traccar.xml out/conf } @@ -114,6 +115,7 @@ package_unix () { mkdir -p out/{bin,conf,data,lib,logs,web,schema,templates} copy_wrapper "bin" + find out -type f \( -name \*.sh -o -name \*.vm \) -print0 | xargs -0 dos2unix copy_files makeself out traccar.run "traccar" "\ @@ -145,7 +147,8 @@ package_universal () { copy_files cp README.txt out - + cp other/traccar.sh out + cd out zip -r ../traccar-other-$VERSION.zip * cd .. diff --git a/setup/traccar.iss b/setup/traccar.iss index 6858a1152..87c2e2fba 100644 --- a/setup/traccar.iss +++ b/setup/traccar.iss @@ -1,9 +1,10 @@ [Setup] AppName=Traccar -AppVersion=3.7 +AppVersion=3.8 DefaultDirName={pf}\Traccar AlwaysRestart=yes OutputBaseFilename=traccar-setup +ArchitecturesInstallIn64BitMode=x64 [Dirs] Name: "{app}\bat" @@ -19,10 +20,10 @@ Name: "{app}\templates" Source: "out\*"; DestDir: "{app}"; Flags: recursesubdirs [Run] -Filename: "{app}\bat\installService.bat" +Filename: "{app}\bat\installService.bat"; Parameters: ">%TEMP%\installService.log 2>&1"; Flags: runhidden [UninstallRun] -Filename: "{app}\bat\uninstallService.bat" +Filename: "{app}\bat\uninstallService.bat"; Parameters: ">%TEMP%\uninstallService.log 2>&1"; Flags: runhidden [Code] function GetLocalMachine(): Integer; diff --git a/setup/traccar.xml b/setup/traccar.xml index ccdc5b745..61e23a066 100644 --- a/setup/traccar.xml +++ b/setup/traccar.xml @@ -4,400 +4,23 @@ <properties> - <!-- SERVER CONFIG --> + <!-- - <entry key='web.enable'>true</entry> - <entry key='web.port'>8082</entry> - <entry key='web.path'>./web</entry> + This is the main configuration file. All your configuration parameters should be placed in this file. - <entry key='geocoder.enable'>true</entry> - <entry key='geocoder.type'>google</entry> + Default configuration parameters are located in the "default.xml" file. You should not modify it to avoid issues + with upgrading to a new version. Parameters in the main config file override values in the default file. Do not + remove "config.default" parameter from this file unless you know what you are doing. - <entry key='logger.enable'>true</entry> - <entry key='logger.level'>all</entry> - <entry key='logger.file'>./logs/tracker-server.log</entry> + For list of available parameters see following page: https://www.traccar.org/configuration-file/ - <entry key='event.enable'>true</entry> - <entry key='event.overspeedHandler'>true</entry> - <entry key='event.overspeed.notRepeat'>true</entry> - <entry key='event.motionHandler'>true</entry> - <entry key='event.geofenceHandler'>true</entry> - <entry key='event.alertHandler'>true</entry> - <entry key='event.ignitionHandler'>true</entry> + --> - <!-- DATABASE CONFIG --> + <entry key="config.default">./conf/default.xml</entry> <entry key='database.driver'>org.h2.Driver</entry> <entry key='database.url'>jdbc:h2:./data/database</entry> <entry key='database.user'>sa</entry> <entry key='database.password'></entry> - <entry key='database.ignoreUnknown'>true</entry> - - <entry key='database.changelog'>./schema/changelog-master.xml</entry> - - <entry key='database.selectServers'> - SELECT * FROM server; - </entry> - - <entry key='database.updateServer'> - UPDATE server SET - registration = :registration, - readonly = :readonly, - map = :map, - bingKey = :bingKey, - mapUrl = :mapUrl, - distanceUnit = :distanceUnit, - speedUnit = :speedUnit, - latitude = :latitude, - longitude = :longitude, - zoom = :zoom, - twelveHourFormat = :twelveHourFormat, - attributes = :attributes - WHERE id = :id; - </entry> - - <entry key='database.loginUser'> - SELECT * FROM users - WHERE email = :email; - </entry> - - <entry key='database.selectUser'> - SELECT * FROM users - WHERE id = :id; - </entry> - - <entry key='database.selectUsersAll'> - SELECT * FROM users; - </entry> - - <entry key='database.insertUser'> - INSERT INTO users (name, email, hashedPassword, salt, admin, map, distanceUnit, speedUnit, latitude, longitude, zoom, twelveHourFormat, attributes) - VALUES (:name, :email, :hashedPassword, :salt, :admin, :map, :distanceUnit, :speedUnit, :latitude, :longitude, :zoom, :twelveHourFormat, :attributes); - </entry> - - <entry key='database.updateUser'> - UPDATE users SET - name = :name, - email = :email, - admin = :admin, - map = :map, - distanceUnit = :distanceUnit, - speedUnit = :speedUnit, - latitude = :latitude, - longitude = :longitude, - zoom = :zoom, - twelveHourFormat = :twelveHourFormat, - attributes = :attributes - WHERE id = :id; - </entry> - - <entry key='database.updateUserPassword'> - UPDATE users SET hashedPassword = :hashedPassword, salt = :salt WHERE id = :id; - </entry> - - <entry key='database.deleteUser'> - DELETE FROM users WHERE id = :id; - </entry> - - <entry key='database.selectDevicePermissions'> - SELECT userId, deviceId FROM user_device; - </entry> - - <entry key='database.selectGroupPermissions'> - SELECT userId, groupId FROM user_group; - </entry> - - <entry key='database.selectDevicesAll'> - SELECT * FROM devices; - </entry> - - <entry key='database.insertDevice'> - INSERT INTO devices (name, uniqueId, groupId, attributes) VALUES (:name, :uniqueId, :groupId, :attributes); - </entry> - - <entry key='database.updateDevice'> - UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId, attributes = :attributes WHERE id = :id; - </entry> - - <entry key='database.updateDeviceStatus'> - UPDATE devices SET lastUpdate = :lastUpdate WHERE id = :id; - </entry> - - <entry key='database.deleteDevice'> - DELETE FROM devices WHERE id = :id; - </entry> - - <entry key='database.linkDevice'> - INSERT INTO user_device (userId, deviceId) VALUES (:userId, :deviceId); - </entry> - - <entry key='database.unlinkDevice'> - DELETE FROM user_device WHERE userId = :userId AND deviceId = :deviceId; - </entry> - - <entry key='database.selectGroupsAll'> - SELECT * FROM groups; - </entry> - - <entry key='database.insertGroup'> - INSERT INTO groups (name, groupId, attributes) VALUES (:name, :groupId, :attributes); - </entry> - - <entry key='database.updateGroup'> - UPDATE groups SET name = :name, groupId = :groupId, attributes = :attributes WHERE id = :id; - </entry> - - <entry key='database.deleteGroup'> - DELETE FROM groups WHERE id = :id; - </entry> - - <entry key='database.linkGroup'> - INSERT INTO user_group (userId, groupId) VALUES (:userId, :groupId); - </entry> - - <entry key='database.unlinkGroup'> - DELETE FROM user_group WHERE userId = :userId AND groupId = :groupId; - </entry> - - <entry key='database.selectPositions'> - SELECT * FROM positions WHERE deviceId = :deviceId AND fixTime BETWEEN :from AND :to ORDER BY fixTime; - </entry> - - <entry key='database.insertPosition'> - INSERT INTO positions (deviceId, protocol, serverTime, deviceTime, fixTime, valid, latitude, longitude, altitude, speed, course, address, attributes) - VALUES (:deviceId, :protocol, :now, :deviceTime, :fixTime, :valid, :latitude, :longitude, :altitude, :speed, :course, :address, :attributes); - </entry> - - <entry key='database.selectLatestPositions'> - SELECT * FROM positions WHERE id IN (SELECT positionId FROM devices); - </entry> - - <entry key='database.updateLatestPosition'> - UPDATE devices SET positionId = :id WHERE id = :deviceId; - </entry> - - <entry key='database.selectEvent'> - SELECT * FROM events WHERE id = :id; - </entry> - - <entry key='database.insertEvent'> - INSERT INTO events (type, serverTime, deviceId, positionId, geofenceId, attributes) - VALUES (:type, :serverTime, :deviceId, :positionId, :geofenceId, :attributes); - </entry> - - <entry key='database.selectEvents'> - SELECT * FROM events WHERE deviceId = :deviceId AND type LIKE :type AND serverTime BETWEEN :from AND :to ORDER BY serverTime DESC; - </entry> - - <entry key='database.selectGeofence'> - SELECT * FROM geofences - WHERE id = :id; - </entry> - - <entry key='database.selectGeofencesAll'> - SELECT * FROM geofences; - </entry> - - <entry key='database.insertGeofence'> - INSERT INTO geofences (name, description, area, attributes) - VALUES (:name, :description, :area, :attributes); - </entry> - - <entry key='database.updateGeofence'> - UPDATE geofences SET - name = :name, - description = :description, - area = :area, - attributes = :attributes - WHERE id = :id; - </entry> - - <entry key='database.deleteGeofence'> - DELETE FROM geofences WHERE id = :id; - </entry> - - <entry key='database.selectGeofencePermissions'> - SELECT userId, geofenceId FROM user_geofence; - </entry> - - <entry key='database.linkGeofence'> - INSERT INTO user_geofence (userId, geofenceId) VALUES (:userId, :geofenceId); - </entry> - - <entry key='database.unlinkGeofence'> - DELETE FROM user_geofence WHERE userId = :userId AND geofenceId = :geofenceId; - </entry> - - <entry key='database.selectGroupGeofences'> - SELECT groupId, geofenceId FROM group_geofence; - </entry> - - <entry key='database.linkGroupGeofence'> - INSERT INTO group_geofence (groupId, geofenceId) VALUES (:groupId, :geofenceId); - </entry> - - <entry key='database.unlinkGroupGeofence'> - DELETE FROM group_geofence WHERE groupId = :groupId AND geofenceId = :geofenceId; - </entry> - - <entry key='database.selectDeviceGeofences'> - SELECT deviceId, geofenceId FROM device_geofence; - </entry> - - <entry key='database.linkDeviceGeofence'> - INSERT INTO device_geofence (deviceId, geofenceId) VALUES (:deviceId, :geofenceId); - </entry> - - <entry key='database.unlinkDeviceGeofence'> - DELETE FROM device_geofence WHERE deviceId = :deviceId AND geofenceId = :geofenceId; - </entry> - - <entry key='database.selectNotifications'> - SELECT * FROM notifications; - </entry> - - <entry key='database.insertNotification'> - INSERT INTO notifications (userId, type, attributes) - VALUES (:userId, :type, :attributes); - </entry> - - <entry key='database.updateNotification'> - UPDATE notifications SET - userId = :userId, - type = :type, - attributes = :attributes - WHERE id = :id; - </entry> - - <entry key='database.deleteNotification'> - DELETE FROM notifications WHERE id = :id; - </entry> - - <entry key='database.deletePositions'> - DELETE FROM positions WHERE serverTime < :serverTime AND id NOT IN (SELECT positionId FROM devices); - </entry> - - <!-- PROTOCOL CONFIG --> - - <entry key='gps103.port'>5001</entry> - <entry key='tk103.port'>5002</entry> - <entry key='gl100.port'>5003</entry> - <entry key='gl200.port'>5004</entry> - <entry key='t55.port'>5005</entry> - <entry key='xexun.port'>5006</entry> - <entry key='xexun.extended'>false</entry> - <entry key='totem.port'>5007</entry> - <entry key='enfora.port'>5008</entry> - <entry key='meiligao.port'>5009</entry> - <entry key='trv.port'>5010</entry> - <entry key='suntech.port'>5011</entry> - <entry key='progress.port'>5012</entry> - <entry key='h02.port'>5013</entry> - <entry key='jt600.port'>5014</entry> - <entry key='huabao.port'>5015</entry> - <entry key='v680.port'>5016</entry> - <entry key='pt502.port'>5017</entry> - <entry key='tr20.port'>5018</entry> - <entry key='navis.port'>5019</entry> - <entry key='meitrack.port'>5020</entry> - <entry key='skypatrol.port'>5021</entry> - <entry key='gt02.port'>5022</entry> - <entry key='gt06.port'>5023</entry> - <entry key='megastek.port'>5024</entry> - <entry key='navigil.port'>5025</entry> - <entry key='gpsgate.port'>5026</entry> - <entry key='teltonika.port'>5027</entry> - <entry key='mta6.port'>5028</entry> - <entry key='tzone.port'>5029</entry> - <entry key='tlt2h.port'>5030</entry> - <entry key='taip.port'>5031</entry> - <entry key='wondex.port'>5032</entry> - <entry key='cellocator.port'>5033</entry> - <entry key='galileo.port'>5034</entry> - <entry key='ywt.port'>5035</entry> - <entry key='tk102.port'>5036</entry> - <entry key='intellitrac.port'>5037</entry> - <entry key='gpsmta.port'>5038</entry> - <entry key='wialon.port'>5039</entry> - <entry key='carscop.port'>5040</entry> - <entry key='apel.port'>5041</entry> - <entry key='manpower.port'>5042</entry> - <entry key='globalsat.port'>5043</entry> - <entry key='atrack.port'>5044</entry> - <entry key='pt3000.port'>5045</entry> - <entry key='ruptela.port'>5046</entry> - <entry key='topflytech.port'>5047</entry> - <entry key='laipac.port'>5048</entry> - <entry key='aplicom.port'>5049</entry> - <entry key='gotop.port'>5050</entry> - <entry key='sanav.port'>5051</entry> - <entry key='gator.port'>5052</entry> - <entry key='noran.port'>5053</entry> - <entry key='m2m.port'>5054</entry> - <entry key='osmand.port'>5055</entry> - <entry key='easytrack.port'>5056</entry> - <entry key='gpsmarker.port'>5057</entry> - <entry key='khd.port'>5058</entry> - <entry key='piligrim.port'>5059</entry> - <entry key='stl060.port'>5060</entry> - <entry key='cartrack.port'>5061</entry> - <entry key='minifinder.port'>5062</entry> - <entry key='haicom.port'>5063</entry> - <entry key='eelink.port'>5064</entry> - <entry key='box.port'>5065</entry> - <entry key='freedom.port'>5066</entry> - <entry key='telic.port'>5067</entry> - <entry key='trackbox.port'>5068</entry> - <entry key='visiontek.port'>5069</entry> - <entry key='orion.port'>5070</entry> - <entry key='riti.port'>5071</entry> - <entry key='ulbotech.port'>5072</entry> - <entry key='tramigo.port'>5073</entry> - <entry key='tr900.port'>5074</entry> - <entry key='ardi01.port'>5075</entry> - <entry key='xt013.port'>5076</entry> - <entry key='autofon.port'>5077</entry> - <entry key='gosafe.port'>5078</entry> - <entry key='tt8850.port'>5079</entry> - <entry key='bce.port'>5080</entry> - <entry key='xirgo.port'>5081</entry> - <entry key='calamp.port'>5082</entry> - <entry key='mtx.port'>5083</entry> - <entry key='tytan.port'>5084</entry> - <entry key='avl301.port'>5085</entry> - <entry key='castel.port'>5086</entry> - <entry key='mxt.port'>5087</entry> - <entry key='cityeasy.port'>5088</entry> - <entry key='aquila.port'>5089</entry> - <entry key='flextrack.port'>5090</entry> - <entry key='blackkite.port'>5091</entry> - <entry key='adm.port'>5092</entry> - <entry key='watch.port'>5093</entry> - <entry key='t800x.port'>5094</entry> - <entry key='upro.port'>5095</entry> - <entry key='auro.port'>5096</entry> - <entry key='disha.port'>5097</entry> - <entry key='thinkrace.port'>5098</entry> - <entry key='pathaway.port'>5099</entry> - <entry key='arnavi.port'>5100</entry> - <entry key='nvs.port'>5101</entry> - <entry key='kenji.port'>5102</entry> - <entry key='astra.port'>5103</entry> - <entry key='homtecs.port'>5104</entry> - <entry key='fox.port'>5105</entry> - <entry key='gnx.port'>5106</entry> - <entry key='arknav.port'>5107</entry> - <entry key='supermate.port'>5108</entry> - <entry key='appello.port'>5109</entry> - <entry key='idpl.port'>5110</entry> - <entry key='huasheng.port'>5111</entry> - <entry key='l100.port'>5112</entry> - <entry key='granit.port'>5113</entry> - <entry key='carcell.port'>5114</entry> - <entry key='obddongle.port'>5115</entry> - <entry key='hunterpro.port'>5116</entry> - <entry key='raveon.port'>5117</entry> - <entry key='cradlepoint.port'>5118</entry> - </properties> |