Skip to content

Commit e9acd40

Browse files
author
Peter Koevesdi
committed
added PSK autogenerate function
added missing push of PSK to OPNsense marked client name also as relevant for client config (it is for the server fragment)
1 parent 055c082 commit e9acd40

3 files changed

Lines changed: 34 additions & 17 deletions

File tree

index.html

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,16 @@ <h2>Wireguard</h2>
8383
<label for="sp">Port</label>:<input type="number" name="sp" min="1" max="65635" value="51820"><br>
8484
<label for="sk">Server Pubkey</label>:<input type="text" name="sk" value="RANDOM-EXAMPLE"><br>
8585
<label for="pk">Preshared Key</label>:<input type="text" name="pk" value="">
86-
<button type="button" id="pskbtn" onclick="genPsk()">Generate PSK</button><br>
86+
<button type="button" id="pskbtn" onclick="genPsk()">Generate PSK</button>
87+
<label for="pka">Autogenerate</label>:<input type="checkbox" name="pka"
88+
onchange="pskbtn.disabled = this.checked"><br>
8789
<label for="ca">Client Address</label>:<input type="text" name="ca" value="10.0.0.2"><br>
8890
<label for="dn">DNS</label>:<input type="text" name="dn" value=""><br>
8991
<label for="mt">MTU</label>:<input type="number" name="mt" min="0" max="65635" value="1400"><br>
9092
<label for="aa">Allowed Subnets</label>:<input type="text" name="aa" value="10.0.0.0"><br>
9193
<label for="ka">Keepalive</label>:<input type="number" name="ka" min="0" max="1000" value="25"><br>
94+
<label for="cn">Client name</label>:<input type="text" name="cn">
9295
</span>
93-
<label for="cn">Client name</label>(optional):<input type="text" name="cn">
9496
<button type="button" id="gencnbtn" onclick="generateCN()">Generate</button><br>
9597
<input type="hidden" id="puk">
9698
<h2>OPNsense interface (optional)</h2>
@@ -159,8 +161,8 @@ <h3>Server Fragment</h3>
159161
<a href="https://github.com/jcarrano/wg-keygen-notrust">GitHub Repository</a>
160162
</p>
161163
</div>
162-
<script src="ui.js" integrity="sha256-U9/gaT9VCAlsWaIP5louwsKG1P1uq0J8Kj6dF3ATSII="
164+
<script src="ui.js" integrity="sha256-Kpd2eUaaYkyJTLg9uD/wnhZcalpPBObdvUH4hIi8gyE="
163165
crossorigin="anonymous"></script>
164166
</body>
165167

166-
</html>
168+
</html>

opnsensebridge.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def getip(opnsenseURL, APIkey, APIsecret, tunnelRealm):
5151

5252
print('{"ip":"'+usableHost.exploded+'/32"}')
5353

54-
def createclient(opnsenseURL, APIkey, APIsecret, PeerName, pubkey, tunnelAddress):
54+
def createclient(opnsenseURL, APIkey, APIsecret, PeerName, pubkey, pskey, tunnelAddress):
5555
wireguardsClients = getclients(opnsenseURL, APIkey, APIsecret)
5656

5757
if PeerName in [item["name"] for item in wireguardsClients]:
@@ -75,6 +75,7 @@ def createclient(opnsenseURL, APIkey, APIsecret, PeerName, pubkey, tunnelAddress
7575
"enabled": '1',
7676
"name": PeerName,
7777
"pubkey": pubkey,
78+
"psk": pskey,
7879
"tunneladdress": tunnelAddress,
7980
"keepalive ": '25'
8081
}
@@ -125,7 +126,7 @@ def reconfigure(opnsenseURL, APIkey, APIsecret):
125126
if r.json()["status"] != "ok":
126127
print('{"error":'+r.text+'}')
127128
sys.exit()
128-
print(r.text)
129+
print('{"res":"'+r.text+'/32"}')
129130

130131
print("Content-type: text/html\n\n")
131132
form = cgi.FieldStorage()
@@ -134,6 +135,6 @@ def reconfigure(opnsenseURL, APIkey, APIsecret):
134135
if form.getvalue('task') == "getip":
135136
getip(form.getvalue('opnsenseURL'),form.getvalue('key'),form.getvalue('secret'),form.getvalue('tunnelRealm'))
136137
if form.getvalue('task') == "createclient":
137-
uuid = createclient(form.getvalue('opnsenseURL'),form.getvalue('key'),form.getvalue('secret'),form.getvalue('PeerName'),form.getvalue('pubkey'),form.getvalue('tunnelAddress'))
138+
uuid = createclient(form.getvalue('opnsenseURL'),form.getvalue('key'),form.getvalue('secret'),form.getvalue('PeerName'),form.getvalue('pubkey'),form.getvalue('pskey'),form.getvalue('tunnelAddress'))
138139
enableclient(form.getvalue('opnsenseURL'),form.getvalue('key'),form.getvalue('secret'),form.getvalue('ServerUUID'),uuid)
139140
reconfigure(form.getvalue('opnsenseURL'),form.getvalue('key'),form.getvalue('secret'))

ui.js

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
(new URL(window.location.href)).searchParams.forEach((x, y) => {
22
let el = document.getElementsByName(y)[0];
3-
if (el)
4-
el.value = x;
3+
if (el) {
4+
console.log(el.type);
5+
if (el.type == "checkbox") {
6+
el.checked = (x == "on");
7+
el.dispatchEvent(new InputEvent('change'));
8+
}
9+
else el.value = x;
10+
}
511
});
612

713
// Make the result section disappear when changing relevant input fields
@@ -10,9 +16,11 @@ for (var element of document.getElementById("relevant_for_clientconfig").getElem
1016
}
1117

1218
function genCfg() {
19+
if (document.getElementsByName("pka")[0].checked) genPsk();
1320
let results = document.getElementById('results');
1421
results.setAttribute("style", "");
1522
let kp = wireguard.generateKeypair();
23+
document.getElementById("puk").value = kp.publicKey;
1624
let fd = new FormData(document.getElementById('params'));
1725
let clientcfg = [
1826
"[Interface]",
@@ -79,6 +87,15 @@ function genPsk() {
7987
pkfield.dispatchEvent(new InputEvent('beforeinput'));
8088
}
8189

90+
function generateCN() {
91+
d = new Date();
92+
var datestring = d.getFullYear().toString().substring(2) + "-" + ("0" + (d.getMonth() + 1)).slice(-2) + "-" + ("0" + d.getDate()).slice(-2) +
93+
"_" + ("0" + d.getHours()).slice(-2) + "-" + ("0" + d.getMinutes()).slice(-2) + "-" + ("0" + d.getSeconds()).slice(-2);
94+
let cnfield = document.getElementsByName('cn')[0];
95+
cnfield.value = 'user_' + datestring;
96+
cnfield.dispatchEvent(new InputEvent('beforeinput'));
97+
}
98+
8299
function copycl(text) {
83100
navigator.clipboard.writeText(text).then(function () {
84101
console.log('Async: Copying to clipboard was successful!');
@@ -170,7 +187,9 @@ function getIP() {
170187
try {
171188
res = JSON.parse(xmlHttp.responseText);
172189
if (res.error || !res.ip) throw ""
173-
document.getElementsByName('ca')[0].value = res.ip;
190+
let cafield = document.getElementsByName('ca')[0];
191+
cafield.value = res.ip;
192+
cafield.dispatchEvent(new InputEvent('beforeinput'));
174193
document.getElementById('err').innerHTML = "Get unused IP: success";
175194
document.getElementById('err').setAttribute("style", "background-color: rgb(100, 255, 100)");
176195
}
@@ -200,7 +219,8 @@ function pushconfig() {
200219
"&key=" + encodeURIComponent(document.getElementsByName('osk')[0].value) +
201220
"&secret=" + encodeURIComponent(document.getElementsByName('oss')[0].value) +
202221
"&PeerName=" + encodeURIComponent(document.getElementsByName('cn')[0].value) +
203-
"&pubkey=" + encodeURIComponent(document.getElementsByName('puk')[0].value) +
222+
"&pubkey=" + encodeURIComponent(document.getElementById('puk').value) +
223+
"&pskey=" + encodeURIComponent(document.getElementsByName('pk')[0].value) +
204224
"&ServerUUID=" + encodeURIComponent(document.getElementsByName('owg')[0].value) +
205225
"&tunnelAddress=" + encodeURIComponent(document.getElementsByName('ca')[0].value), true);
206226
xmlHttp.responseType = "JSON";
@@ -225,9 +245,3 @@ function pushconfig() {
225245

226246
}
227247

228-
function generateCN() {
229-
d = new Date();
230-
var datestring = d.getFullYear().toString().substring(2) + "-" + ("0" + (d.getMonth() + 1)).slice(-2) + "-" + ("0" + d.getDate()).slice(-2) +
231-
"_" + ("0" + d.getHours()).slice(-2) + "-" + ("0" + d.getMinutes()).slice(-2) + "-" + ("0" + d.getSeconds()).slice(-2);
232-
document.getElementsByName('cn')[0].value = 'user_' + datestring;
233-
}

0 commit comments

Comments
 (0)