1
0
mirror of https://github.com/ArcticFoxes-net/ONC-Converter synced 2024-11-09 13:51:33 -05:00

Improve documentation

This commit is contained in:
thomkeh 2018-07-02 15:05:12 +01:00 committed by GitHub
parent 9cfbed769c
commit 1b76ad8fac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -14,11 +14,19 @@
</style> </style>
<script> <script>
/**
* Register the function `handler` to be called when the `Convert` button is
* pressed.
*/
function setHandler () { function setHandler () {
let clickButton = document.getElementById('clickbutton') let clickButton = document.getElementById('clickbutton')
clickButton.addEventListener('click', handler, false) clickButton.addEventListener('click', handler, false)
} }
/**
* Read parameters and pass them to the `main` function. This function is
* called when the `Convert` button is clicked.
*/
function handler () { function handler () {
let selectedFile = document.getElementById('inputopenvpn').files[0] let selectedFile = document.getElementById('inputopenvpn').files[0]
let certificates = document.getElementById('inputcertificates').files let certificates = document.getElementById('inputcertificates').files
@ -27,6 +35,17 @@
main(connName, selectedFile, certificates, output) main(connName, selectedFile, certificates, output)
} }
/**
* Read, convert and print result. This function calls other functions
* to first read everything, then convert it and finally print the result.
*
* The function is `async` because it uses `await` when reading files.
*
* @param {String} connName Name of the connection
* @param {File} selectedFile File object for the ovpn file
* @param {Array} certificateFiles List of file objects for the certificates
* @param {Object} output HTML element where the output should go
*/
async function main (connName, selectedFile, certificateFiles, output) { async function main (connName, selectedFile, certificateFiles, output) {
if (connName === '') { if (connName === '') {
alert('Please specify a name for the connection.') alert('Please specify a name for the connection.')
@ -43,6 +62,13 @@
output.value = JSON.stringify(onc, null, 2) output.value = JSON.stringify(onc, null, 2)
} }
/**
* Return a promise to read a file as text.
*
* @param {File} file A file object
*
* @return {Promise} A promise with the contents of the file
*/
function readFile (file) { function readFile (file) {
return new Promise(resolve => { return new Promise(resolve => {
let reader = new FileReader() let reader = new FileReader()
@ -55,6 +81,18 @@
}) })
} }
/**
* Decode an OVPN file. Extract all the key-value pairs and keys
* that are written inside XML tags.
*
* The key-value pairs are written into an object. The keys are also
* written into an object with the the XML tag name as the key.
*
* @param {String} str The contents of the ovpn file as a string.
*
* @return {Array} An array that contains the key-value pairs and
* the keys.
*/
function decode (str) { function decode (str) {
let ovpn = {} let ovpn = {}
let keys = {} let keys = {}
@ -298,8 +336,8 @@
<div> <div>
<h1>ovpn2onc</h1> <h1>ovpn2onc</h1>
<ul> <ul>
<li>Name for connection (can be chosen freely): <input type="text" id="connname"></li> <li><label for="connname">Name for connection (can be chosen freely):</label> <input type="text" id="connname"></li>
<li>OpenVPN config file (*.ovpn): <input type="file" id="inputopenvpn"></li> <li><label for="inputopenvpn">OpenVPN config file (*.ovpn):</label> <input type="file" id="inputopenvpn"></li>
<li><label for="inputcertificates">Certificates and keys (can be multiple files):</label> <input type="file" id="inputcertificates" multiple></li> <li><label for="inputcertificates">Certificates and keys (can be multiple files):</label> <input type="file" id="inputcertificates" multiple></li>
</ul> </ul>
<button id="clickbutton" type="button">Convert</button> <button id="clickbutton" type="button">Convert</button>