<?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}&amp;code=0x0000&amp;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='deviceManager.lookupGroupsAttribute'>true</entry>

    <entry key='decoder.ignoreSessionCache'>false</entry>

    <entry key='processing.copyAttributes.enable'>false</entry>
    <entry key='processing.copyAttributes'>power ignition battery</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.forward.enable'>true</entry>
    <entry key='event.forward.url'>http://localhost/</entry>
    <entry key='event.forward.header'>
        Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l
    </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>
    for self-signed server sertificates
    <entry key='mail.smtp.ssl.trust'>smtp.example.com</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.ignoreUnknown'>true</entry>
    
    <!-- Automatically registers unknown devices. -->
    <entry key='database.registerUnknown'>false</entry>

    <entry key='database.xml'>false</entry>
    <entry key='database.saveOriginal'>true</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,
        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, 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, 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.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, 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 &lt; :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>

</properties>