You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

209 lines
11 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>Dispatcher Configuration</title>
<script src="jquery.min.js"></script>
<style>
input[type=text], input[type=number], input[type=password], select {
width: 20rem;
padding: 0.8rem 1rem;
margin: 0.4rem 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
</style>
</head>
<body>
<h3>Dispatcher Configuration</h3>
<hr>
<fieldset>
<legend>General</legend>
<label>AMQP URL:</label>
<input type="text" id="amqpURL"/>
</fieldset>
<fieldset>
<legend>Connectors</legend>
<fieldset>
<legend>DAPNET Connector</legend>
<label for="dapnet_enabled">Enabled:</label>
<input type="checkbox" id="dapnet_enabled"/>
</br>
<label for="dapnet_endpoint">Endpoint:</label>
<input type="text" id="dapnet_endpoint"/>
</br>
<label for="dapnet_duplex_timeout">Duplex Timeout(in seconds) : recommended 90s</label>
<input type="number" min="10" max="1200" id="dapnet_duplex_timeout"/>
</br>
<label for="dapnet_username">Username:</label>
<input type="text" id="dapnet_username"/>
</br>
<label for="dapnet_password">Password:</label>
<input type="password" id="dapnet_password"/>
</fieldset>
<fieldset>
<legend>LoRaWAN Connector</legend>
<label for="lorawan_enabled">Enabled:</label>
<input type="checkbox" id="lorawan_enabled"/>
</br>
<label for="lorawan_duplex_timeout">Duplex Timeout(in seconds) : recommended value equals LPWAN-FetchTime</label>
<input type="number" min="10" max="9000" id="lorawan_duplex_timeout"/>
</br>
<label for="lorawan_mqttserver">MQTT Endpoint:</label>
<input type="text" id="lorawan_mqttserver"/>
<button onClick="setLoRaWANMQTT('mqtt://eu.thethings.network:1883')">Preset TTNv2</button>
<button onClick="setLoRaWANMQTT('mqtt://eu1.cloud.thethings.network:1883')">Preset TTNv3</button>
</br>
<label for="lorawan_username">Username:</label>
<input type="text" id="lorawan_username"/>
</br>
<label for="lorawan_password">Password:</label>
<input type="password" id="lorawan_password"/>
</fieldset>
<fieldset>
<legend>POCSAG Connector</legend>
<label for="pocsag_enabled">Enabled:</label>
<input type="checkbox" id="pocsag_enabled"/>
</br>
<label for="pocsag_duplex_timeout">Duplex Timeout(in seconds): [recommended 90s]</label>
<input type="number" min="10" max="1200" id="pocsag_duplex_timeout"/>
</fieldset>
<fieldset>
<legend>eCityruf Connector</legend>
<label for="ecityruf_enabled">Enabled:</label>
<input type="checkbox" id="ecityruf_enabled"/>
</br>
<label for="ecityruf_duplex_timeout">Duplex Timeout(in seconds): [recommended 180s]</label>
<input type="number" min="10" max="1200" id="ecityruf_duplex_timeout"/>
</fieldset>
<fieldset>
<legend>eMessage Puppeteering Connector</legend>
<label for="emp_enabled">Enabled:</label>
<input type="checkbox" id="emp_enabled"/>
</br>
<label for="emp_duplex_timeout">Duplex Timeout(in seconds): [recommended 180s]</label>
<input type="number" min="10" max="1200" id="emp_duplex_timeout"/>
</fieldset>
<fieldset>
<legend>eMessage Connector</legend>
<label for="emessage_enabled">Enabled:</label>
<input type="checkbox" id="emessage_enabled"/>
</br>
<label for="emessage_username">Username:</label>
<input type="text" id="emessage_username"/>
</br>
<label for="emessage_password">Password:</label>
<input type="password" id="emessage_password"/>
</br>
<label for="emessage_start_interval">Start Interval(in seconds): [recommended 5s]</label>
<input type="number" min="1" max="60" id="emessage_start_interval"/>
</br>
<label for="emessage_duplex_timeout">Duplex Timeout(in seconds): [recommended 60s]</label>
<input type="number" min="10" max="1200" id="emessage_duplex_timeout"/>
</br>
<label for="emessage_response_timeout">Response Timeout(in seconds): [recommended 320s]</label>
<input type="number" min="10" max="1200" id="emessage_response_timeout"/>
</fieldset>
<hr>
<!--
<button>Check Settings</button>
<button>Save & Restart Dispatcher</button>
-->
<button onClick="saveConfigFromForm()">Save & Restart Dispatcher</button>
</br>
<b>Config Diff:</b>
<pre id="diffView"></pre>
</fieldset>
<hr>
<b>config.json</b>
<pre id="jsonView"></pre>
</body>
<script>
let config
async function loadConfigToForm() {
config = await $.getJSON('/config')
$('#jsonView').text(JSON.stringify(config, null, '\t'))
$('#amqpURL').val(config.general.amqp[0])
// connectors.dapnet
$('#dapnet_enabled').attr('checked', config.connectors.dapnet.enabled)
$('#dapnet_duplex_timeout').val(config.connectors.dapnet.duplexTimeout)
$('#dapnet_endpoint').val(config.connectors.dapnet.endpoint)
$('#dapnet_username').val(config.connectors.dapnet.username)
$('#dapnet_password').val(config.connectors.dapnet.password)
// connectors.dapnet
$('#lorawan_enabled').attr('checked', config.connectors.lorawan.enabled)
$('#lorawan_duplex_timeout').val(config.connectors.lorawan.duplexTimeout)
$('#lorawan_mqttserver').val(config.connectors.lorawan.mqttserver)
$('#lorawan_username').val(config.connectors.lorawan.username)
$('#lorawan_password').val(config.connectors.lorawan.password)
$('#pocsag_enabled').attr('checked', config.connectors.pocsag.enabled)
$('#pocsag_duplex_timeout').val(config.connectors.pocsag.duplexTimeout)
$('#ecityruf_enabled').attr('checked', config.connectors.ecityruf.enabled)
$('#ecityruf_duplex_timeout').val(config.connectors.ecityruf.duplexTimeout)
$('#emp_enabled').attr('checked', config.connectors.emPuppettering.enabled)
$('#emp_duplex_timeout').val(config.connectors.emPuppettering.duplexTimeout)
$('#emessage_enabled').attr('checked', config.connectors.emessage.enabled)
$('#emessage_username').val(config.connectors.emessage.username)
$('#emessage_password').val(config.connectors.emessage.password)
$('#emessage_response_timeout').val(config.connectors.emessage.responseTimeout)
$('#emessage_duplex_timeout').val(config.connectors.emessage.duplexTimeout)
$('#emessage_start_interval').val(config.connectors.emessage.startInterval)
}
async function saveConfigFromForm() {
let newConfig = await $.getJSON('/config') // make a copy from the current dispatcher config
newConfig.general.amqp = [ $('#amqpURL').val() ]
// connectors.dapnet
newConfig.connectors.dapnet.enabled = $('#dapnet_enabled').prop('checked')
newConfig.connectors.dapnet.duplexTimeout = parseInt($('#dapnet_duplex_timeout').val())
newConfig.connectors.dapnet.endpoint = $('#dapnet_endpoint').val()
newConfig.connectors.dapnet.username = $('#dapnet_username').val()
newConfig.connectors.dapnet.password = $('#dapnet_password').val()
// connectors.lorawan
newConfig.connectors.lorawan.enabled = $('#lorawan_enabled').prop('checked')
newConfig.connectors.lorawan.duplexTimeout = parseInt($('#lorawan_duplex_timeout').val())
newConfig.connectors.lorawan.mqttserver = $('#lorawan_mqttserver').val()
newConfig.connectors.lorawan.username = $('#lorawan_username').val()
newConfig.connectors.lorawan.password = $('#lorawan_password').val()
// connectors.pocsag
newConfig.connectors.pocsag.enabled = $('#pocsag_enabled').prop('checked')
newConfig.connectors.pocsag.duplexTimeout = parseInt($('#pocsag_duplex_timeout').val())
// connectors.ecityruf
newConfig.connectors.ecityruf.enabled = $('#ecityruf_enabled').prop('checked')
newConfig.connectors.ecityruf.duplexTimeout = parseInt($('#ecityruf_duplex_timeout').val())
// connectors.emPuppettering
newConfig.connectors.emPuppettering.enabled = $('#emp_enabled').prop('checked')
newConfig.connectors.emPuppettering.duplexTimeout = parseInt($('#emp_duplex_timeout').val())
// connectors.emessage
newConfig.connectors.emessage.enabled = $('#emessage_enabled').prop('checked')
newConfig.connectors.emessage.username = $('#emessage_username').val()
newConfig.connectors.emessage.password = $('#emessage_password').val()
newConfig.connectors.emessage.responseTimeout = parseInt($('#emessage_response_timeout').val())
newConfig.connectors.emessage.duplexTimeout = parseInt($('#ecityruf_duplex_timeout').val())
newConfig.connectors.emessage.startInterval = parseInt($('#emessage_start_interval').val())
console.log(newConfig)
await $.ajax({
type: 'POST',
url: '/config',
data: JSON.stringify(newConfig),
contentType: 'application/json',
dataType: 'json'
})
$.post('/restart')
document.body.style = 'display:none'
setTimeout(() => window.location.reload(), 1e3)
}
function setLoRaWANMQTT(newMQTT) {
$('#lorawan_mqttserver').val(newMQTT)
}
$(document).ready(loadConfigToForm)
</script>
</html>