-
Notifications
You must be signed in to change notification settings - Fork 407
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactor bsserv-demo, upgrade to riot.js 3.11, new bs server cfg UI #374
- Loading branch information
1 parent
cb4419c
commit 251c22b
Showing
11 changed files
with
6,408 additions
and
5,297 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
285 changes: 62 additions & 223 deletions
285
leshan-bsserver-demo/src/main/resources/webapp/tag/bootstrap-modal.tag
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
81 changes: 81 additions & 0 deletions
81
leshan-bsserver-demo/src/main/resources/webapp/tag/psk-input.tag
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
<psk-input> | ||
<!-- PSK inputs --> | ||
<div class={ form-group:true, has-error: pskId.error }> | ||
<label for="pskId" class="col-sm-4 control-label">Identity</label> | ||
<div class="col-sm-8"> | ||
<textarea class="form-control" style="resize:none" rows="3" id="pskId" ref="pskId" oninput={validate_pskId} onblur={validate_pskId}></textarea> | ||
<p class="help-block" if={pskId.required} >The PSK identity is required</p> | ||
<p class="help-block" if={pskId.toolong} >The PSK identity is too long</p> | ||
</div> | ||
</div> | ||
|
||
<div class={ form-group:true, has-error: pskVal.error }> | ||
<label for="pskVal" class="col-sm-4 control-label">Key</label> | ||
<div class="col-sm-8"> | ||
<textarea class="form-control" style="resize:none" rows="3" id="pskVal" ref="pskVal" oninput={validate_pskVal} onblur={validate_pskVal}></textarea> | ||
<p class="text-right text-muted small" style="margin:0">Hexadecimal format</p> | ||
<p class="help-block" if={pskVal.required}>The pre-shared key is required</p> | ||
<p class="help-block" if={pskVal.nothexa}>Hexadecimal format is expected</p> | ||
<p class="help-block" if={pskVal.toolong}>The pre-shared key is too long</p> | ||
</div> | ||
</div> | ||
|
||
<script> | ||
// Tag definition | ||
var tag = this; | ||
// Tag Params | ||
tag.onchange = opts.onchange; | ||
// Tag API | ||
tag.has_error = has_error; | ||
tag.get_value = get_value | ||
// Tag intenal state | ||
tag.pskId={}; | ||
tag.pskVal={}; | ||
tag.validate_pskId = validate_pskId; | ||
tag.validate_pskVal = validate_pskVal; | ||
|
||
// Tag functions | ||
function validate_pskId(e){ | ||
var str = tag.refs.pskId.value; | ||
tag.pskId.error = false; | ||
tag.pskId.required = false; | ||
tag.pskId.toolong = false; | ||
if (!str || 0 === str.length){ | ||
tag.pskId.error = true; | ||
tag.pskId.required = true; | ||
}else if (str.length > 128){ | ||
tag.pskId.error = true; | ||
tag.pskId.toolong = true; | ||
} | ||
tag.onchange(); | ||
} | ||
|
||
function validate_pskVal(e){ | ||
var str = tag.refs.pskVal.value; | ||
tag.pskVal.error = false; | ||
tag.pskVal.required = false; | ||
tag.pskVal.toolong = false; | ||
tag.pskVal.nothexa = false; | ||
if (!str || 0 === str.length){ | ||
tag.pskVal.error = true; | ||
tag.pskVal.required = true; | ||
}else if (str.length > 128){ | ||
tag.pskVal.error = true; | ||
tag.pskVal.toolong = true; | ||
}else if (! /^[0-9a-fA-F]+$/i.test(str)){ | ||
tag.pskVal.error = true; | ||
tag.pskVal.nothexa = true; | ||
} | ||
tag.onchange(); | ||
} | ||
|
||
function has_error(){ | ||
return typeof tag.pskId.error === "undefined" || tag.pskId.error || typeof tag.pskVal.error === "undefined" || tag.pskVal.error; | ||
} | ||
|
||
function get_value(){ | ||
return { id:tag.refs.pskId.value, key:tag.refs.pskVal.value }; | ||
} | ||
</script> | ||
</psk-input> | ||
|
109 changes: 109 additions & 0 deletions
109
leshan-bsserver-demo/src/main/resources/webapp/tag/securityconfig-input.tag
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
<securityconfig-input> | ||
<!-- Server URI --> | ||
<div class="form-group" > | ||
<label for="uri" class="col-sm-4 control-label">LWM2M Server URL</label> | ||
<div class="col-sm-8"> | ||
<input class="form-control" id="uri" ref="uri" placeholder={default_uri()} disabled={disable.uri}> | ||
</div> | ||
</div> | ||
|
||
<!-- Security Mode --> | ||
<div class="form-group"> | ||
<label for="secMode" class="col-sm-4 control-label">Security mode</label> | ||
<div class="col-sm-8"> | ||
<select class="form-control" id="secMode" ref="secMode"> | ||
<option value="no_sec" show={secmode.no_sec} >No Security</option> | ||
<option value="psk" show={secmode.psk} >Pre-Shared Key</option> | ||
<!-- option value="rpk" show= {secmode.rpk} >Raw Public Key</option--> | ||
<option value="x509" show={secmode.x509} >X.509 Certificate</option> | ||
</select> | ||
</div> | ||
</div> | ||
|
||
<!-- PSK --> | ||
<div if={ refs.secMode.value == "psk" }> | ||
<psk-input ref="psk" onchange={onchange}></psk-input> | ||
</div> | ||
|
||
<!-- X09 --> | ||
<div if={ refs.secMode.value == "x509" } > | ||
<x509-input ref="x509" onchange={onchange}></x509-input> | ||
</div> | ||
|
||
<script> | ||
// Tag definition | ||
var tag = this; | ||
// Tag Params | ||
tag.secmode = opts.secmode || {no_sec:true}; | ||
tag.disable = opts.disable || {}; | ||
tag.onchange = opts.onchange; | ||
tag.securi = opts.securi || ""; | ||
tag.unsecuri = opts.unsecuri || ""; | ||
// Tag API | ||
tag.has_error = has_error; | ||
tag.get_value = get_value; | ||
// Internal state | ||
tag.default_uri = default_uri; | ||
|
||
// Tag Functions | ||
function default_uri() { | ||
if (!tag.refs.secMode || tag.refs.secMode.value == "no_sec") | ||
return opts.unsecuri; | ||
else | ||
return opts.securi; | ||
} | ||
|
||
function has_error() { | ||
return tag.refs.secMode.value === "psk" && tag.refs.psk.has_error() | ||
|| tag.refs.secMode.value === "x509" && tag.refs.x509.has_error(); | ||
} | ||
|
||
function get_value() { | ||
var config = {}; | ||
|
||
// set URI | ||
if (!tag.refs.uri.value || tag.refs.uri.value.length == 0) { | ||
config.uri = tag.default_uri(); | ||
} else { | ||
config.uri = tag.refs.uri.value; | ||
} | ||
|
||
// set Secure mode | ||
config.secmode = tag.refs.secMode.value.toUpperCase(); | ||
|
||
// set Credentials | ||
config.id = []; | ||
config.key = []; | ||
config.serverKey = []; | ||
if (config.secmode === "PSK"){ | ||
var psk = tag.refs.psk.get_value() | ||
config.id = fromAscii(psk.id); | ||
config.key = fromHex(psk.key); | ||
}else if(config.secmode === "X509"){ | ||
var x509 = tag.refs.x509.get_value(); | ||
config.id = fromHex(x509.cert); | ||
config.key = fromHex(x509.key); | ||
config.serverKey = fromHex(x509.servCert); | ||
} | ||
|
||
return config; | ||
} | ||
|
||
// Utils | ||
function fromAscii(ascii){ | ||
var bytearray = []; | ||
for (var i in ascii){ | ||
bytearray[i] = ascii.charCodeAt(i); | ||
} | ||
return bytearray; | ||
}; | ||
|
||
function fromHex(hex){ | ||
var bytes = []; | ||
for(var i=0; i< hex.length-1; i+=2) { | ||
bytes.push(parseInt(hex.substr(i, 2), 16)); | ||
} | ||
return bytes; | ||
}; | ||
</script> | ||
</securityconfig-input> |
101 changes: 101 additions & 0 deletions
101
leshan-bsserver-demo/src/main/resources/webapp/tag/x509-input.tag
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
<x509-input> | ||
<!-- X.509 inputs --> | ||
<div class={ form-group:true, has-error: x509Cert.error }> | ||
<label for="x509Cert" class="col-sm-4 control-label">Client certificate</label> | ||
<div class="col-sm-8"> | ||
<textarea class="form-control" style="resize:none" rows="3" id="x509Cert" ref="x509Cert" oninput={validate_x509Cert} onblur={validate_x509Cert}></textarea> | ||
<p class="text-right text-muted small" style="margin:0">Hexadecimal format</p> | ||
<p class="help-block" if={x509Cert.required}>The client certificate is required</p> | ||
<p class="help-block" if={x509Cert.nothexa}>Hexadecimal format is expected</p> | ||
</div> | ||
</div> | ||
<div class={ form-group:true, has-error: x509PrivateKey.error }> | ||
<label for="x509PrivateKey" class="col-sm-4 control-label">Client private key</label> | ||
<div class="col-sm-8"> | ||
<textarea class="form-control" style="resize:none" rows="3" id="x509PrivateKey" ref="x509PrivateKey" oninput={validate_x509PrivateKey} onblur={validate_x509PrivateKey}></textarea> | ||
<p class="text-right text-muted small" style="margin:0">Hexadecimal format</p> | ||
<p class="help-block" if={x509PrivateKey.required}>The client private key is required</p> | ||
<p class="help-block" if={x509PrivateKey.nothexa}>Hexadecimal format is expected</p> | ||
</div> | ||
</div> | ||
<div class={ form-group:true, has-error: x509ServerCert.error }> | ||
<label for="x509ServerCert" class="col-sm-4 control-label">Server certificate</label> | ||
<div class="col-sm-8"> | ||
<textarea class="form-control" style="resize:none" rows="3" id="x509ServerCert" ref="x509ServerCert" oninput={validate_x509ServerCert} onblur={validate_x509ServerCert}></textarea> | ||
<p class="text-right text-muted small" style="margin:0">Hexadecimal format</p> | ||
<p class="help-block" if={x509ServerCert.required}>The server certificate is required</p> | ||
<p class="help-block" if={x509ServerCert.nothexa}>Hexadecimal format is expected</p> | ||
</div> | ||
</div> | ||
|
||
<script> | ||
// Tag definition | ||
var tag = this; | ||
// Tag Params | ||
tag.onchange = opts.onchange; | ||
// Tag API | ||
tag.has_error = has_error; | ||
tag.get_value = get_value | ||
// Tag intenal state | ||
tag.x509Cert = {}; | ||
tag.x509PrivateKey = {}; | ||
tag.x509ServerCert = {}; | ||
tag.validate_x509Cert = validate_x509Cert; | ||
tag.validate_x509PrivateKey = validate_x509PrivateKey; | ||
tag.validate_x509ServerCert = validate_x509ServerCert; | ||
|
||
// Tag functions | ||
function validate_x509Cert(){ | ||
var str = tag.refs.x509Cert.value; | ||
tag.x509Cert.error = false; | ||
tag.x509Cert.required = false; | ||
tag.x509Cert.nothexa = false; | ||
if (!str || 0 === str.length){ | ||
tag.x509Cert.error = true; | ||
tag.x509Cert.required = true; | ||
}else if (! /^[0-9a-fA-F]+$/i.test(str)){ | ||
tag.x509Cert.error = true; | ||
tag.x509Cert.nothexa = true; | ||
} | ||
opts.onchange(); | ||
} | ||
|
||
function validate_x509PrivateKey(){ | ||
var str = tag.refs.x509PrivateKey.value; | ||
tag.x509PrivateKey.error = false; | ||
tag.x509PrivateKey.required = false; | ||
tag.x509PrivateKey.nothexa = false; | ||
if (!str || 0 === str.length){ | ||
tag.x509PrivateKey.error = true; | ||
tag.x509PrivateKey.required = true; | ||
}else if (! /^[0-9a-fA-F]+$/i.test(str)){ | ||
tag.x509PrivateKey.error = true; | ||
tag.x509PrivateKey.nothexa = true; | ||
} | ||
opts.onchange(); | ||
} | ||
|
||
function validate_x509ServerCert(){ | ||
var str = tag.refs.x509ServerCert.value; | ||
tag.x509ServerCert.error = false; | ||
tag.x509ServerCert.required = false; | ||
tag.x509ServerCert.nothexa = false; | ||
if (!str || 0 === str.length){ | ||
tag.x509ServerCert.error = true; | ||
tag.x509ServerCert.required = true; | ||
}else if (! /^[0-9a-fA-F]+$/i.test(str)){ | ||
tag.x509ServerCert.error = true; | ||
tag.x509ServerCert.nothexa = true; | ||
} | ||
opts.onchange(); | ||
} | ||
|
||
function has_error(){ | ||
return typeof tag.x509Cert.error === "undefined" || x509Cert.error || typeof x509PrivateKey.error === "undefined" || x509PrivateKey.error || typeof x509ServerCert.error === "undefined" || x509ServerCert.error; | ||
} | ||
|
||
function get_value(){ | ||
return { cert:tag.refs.x509Cert.value, key:tag.refs.x509PrivateKey.value, servCert:tag.refs.x509ServerCert.value }; | ||
} | ||
</script> | ||
</x509-input> |
Oops, something went wrong.