mirror of
https://github.com/traccar/traccar.git
synced 2026-02-01 19:23:51 -05:00
1. added support for Alarm and Alarm Type in popup and also in history records. can be muted with a toggle button in the UI 2. added a timer to clear positions history once a day. the default is to save positions history for 7 days if not defined in the configuration file. 3. prevent the lock of the UI files (js, html, css, etc..) for wondows developers in debug mode. It's easier to do changes to the UI without stopping the app each time. 4. tools: added support in test-generator.py to simulate Alert, also added minify.bat file to compile new js files for the UI using sencha SDK for windows developers
441 lines
15 KiB
XML
441 lines
15 KiB
XML
<?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.address'></entry>-->
|
|
<entry key='web.port'>8082</entry>
|
|
<!--<entry key='web.application'>../traccar-web/traccar-web.war</entry>
|
|
<entry key='web.old'>true</entry>-->
|
|
<entry key='web.path'>web</entry>
|
|
<entry key='web.debug'>true</entry>
|
|
<entry key='web.console'>true</entry>
|
|
<entry key='web.timeout'>30000</entry>
|
|
|
|
<entry key='geocoder.enable'>true</entry>
|
|
<entry key='geocoder.type'>nominatim</entry>
|
|
<entry key='geocoder.url'>http://nominatim.openstreetmap.org/reverse</entry>
|
|
|
|
<entry key='location.enable'>false</entry>
|
|
<entry key='location.key'>fake</entry>
|
|
<entry key='location.mcc'>260</entry>
|
|
<entry key='location.mnc'>2</entry>
|
|
|
|
<entry key='distance.enable'>true</entry>
|
|
|
|
<!--<entry key='filter.enable'>true</entry>
|
|
<entry key='filter.limit'>3600</entry>
|
|
<entry key='filter.invalid'>true</entry>
|
|
<entry key='filter.zero'>true</entry>
|
|
<entry key='filter.duplicate'>true</entry>
|
|
<entry key='filter.distance'>50</entry>-->
|
|
|
|
<!--<entry key='forward.enable'>true</entry>
|
|
<entry key='forward.url'>http://example.com:8080/gprmc/Data?id={uniqueId}&code=0x0000&gprmc={gprmc}</entry>-->
|
|
|
|
<entry key='logger.enable'>true</entry>
|
|
<entry key='logger.level'>all</entry>
|
|
<entry key='logger.file'>target/tracker-server.log</entry>
|
|
|
|
<entry key='event.enable'>true</entry>
|
|
<entry key='event.suppressRepeated'>60</entry>
|
|
<entry key='event.overspeedHandler'>true</entry>
|
|
<entry key='event.globalSpeedLimit'>90</entry>
|
|
<entry key='event.motionHandler'>true</entry>
|
|
<entry key='event.geofenceHandler'>true</entry>
|
|
|
|
<!--<entry key='mail.smtp.host'>smtp.example.com</entry>
|
|
for STARTTLS
|
|
<entry key='mail.smtp.port'>587</entry>
|
|
<entry key='mail.smtp.starttls.enable'>true</entry>
|
|
for SSL
|
|
<entry key='mail.smtp.port'>465</entry>
|
|
<entry key='mail.smtp.ssl.enable'>true</entry>
|
|
|
|
<entry key='mail.smtp.from'>traccar@example.com</entry>
|
|
|
|
<entry key='mail.smtp.auth'>true</entry>
|
|
<entry key='mail.smtp.username'>traccar@example.com</entry>
|
|
<entry key='mail.smtp.password'>password</entry>-->
|
|
|
|
<!-- DATABASE CONFIG -->
|
|
|
|
<!--<entry key='database.driverFile'>hsqldb.jar</entry>-->
|
|
<!--<entry key='database.driver'>org.h2.Driver</entry>
|
|
<entry key='database.url'>jdbc:h2:./target/database</entry>
|
|
<entry key='database.user'>sa</entry>
|
|
<entry key='database.password'></entry>-->
|
|
|
|
<entry key='database.driver'>com.mysql.jdbc.Driver</entry>
|
|
<entry key='database.url'>jdbc:mysql://127.0.0.1:3306/traccar?allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode=ANSI_QUOTES</entry>
|
|
<entry key='database.user'>traccar</entry>
|
|
<entry key='database.password'>###########</entry>
|
|
|
|
<entry key='database.ignoreUnknown'>true</entry>
|
|
|
|
<entry key='database.xml'>false</entry>
|
|
<entry key='database.saveOriginal'>false</entry>
|
|
|
|
<entry key='database.changelog'>./schema/changelog-master.xml</entry>
|
|
|
|
<entry key='database.positionsHistoryDays'>7</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
|
|
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)
|
|
VALUES (:name, :email, :hashedPassword, :salt, :admin, :map, :distanceUnit, :speedUnit, :latitude, :longitude, :zoom, :twelveHourFormat);
|
|
</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
|
|
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) VALUES (:name, :uniqueId, :groupId);
|
|
</entry>
|
|
|
|
<entry key='database.updateDevice'>
|
|
UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId WHERE id = :id;
|
|
</entry>
|
|
|
|
<entry key='database.updateDeviceStatus'>
|
|
UPDATE devices SET status = :status, lastUpdate = :lastUpdate, motion = :motion 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) VALUES (:name);
|
|
</entry>
|
|
|
|
<entry key='database.updateGroup'>
|
|
UPDATE groups SET name = :name, groupId = :groupId 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>
|
|
|
|
<!-- 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>
|
|
|
|
</properties>
|