Files
zoraxy/src/web/snippet/aliasEditor.html
Toby Chui e4facbc7b6 Added more dark themes
- Added wrappers for snippet dark theme
- Optimized color pallets
2024-11-17 17:41:22 +08:00

183 lines
7.5 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<!-- Notes: This should be open in its original path-->
<meta charset="utf-8">
<meta name="zoraxy.csrf.Token" content="{{.csrfToken}}">
<link rel="stylesheet" href="../script/semantic/semantic.min.css">
<script src="../script/jquery-3.6.0.min.js"></script>
<script src="../script/semantic/semantic.min.js"></script>
<script src="../script/utils.js"></script>
</head>
<body>
<link rel="stylesheet" href="../darktheme.css">
<script src="../script/darktheme.js"></script>
<br>
<div class="ui container">
<div class="ui header">
<div class="content">
Alias Hostname
<div class="sub header epname"></div>
</div>
</div>
<div class="ui divider"></div>
<div class="scrolling content ui form">
<div id="inlineEditBasicAuthCredentials" class="field">
<p>Enter alias hostname or wildcard matching keywords for <code class="epname"></code></p>
<table class="ui very basic compacted unstackable celled table">
<thead>
<tr>
<th>Alias Hostname</th>
<th>Remove</th>
</tr></thead>
<tbody id="inlineEditTable">
<tr>
<td colspan="2"><i class="ui green circle check icon"></i> No Alias Hostname</td>
</tr>
</tbody>
</table>
<div class="ui divider"></div>
<div class="three small fields">
<div class="field">
<label>Alias Hostname</label>
<input id="aliasHostname" type="text" placeholder="alias.mydomain.com" autocomplete="off">
<small>Support wildcards e.g. alias.mydomain.com or *.alias.mydomain.com</small>
</div>
<div class="field" >
<button class="ui basic button" onclick="addAliasToRoutingRule();"><i class="green add icon"></i> Add Alias</button>
</div>
<div class="ui divider"></div>
</div>
</div>
</div>
<div class="ui divider"></div>
<div class="field" >
<button class="ui basic button" style="float: right;" onclick="closeThisWrapper();">Close</button>
</div>
</div>
<br><br><br><br>
</div>
<script>
let aliasList = [];
let editingEndpoint = {};
if (window.location.hash.length > 1){
let payloadHash = window.location.hash.substr(1);
try{
payloadHash = JSON.parse(decodeURIComponent(payloadHash));
$(".epname").text(payloadHash.ep);
editingEndpoint = payloadHash;
}catch(ex){
console.log("Unable to load endpoint data from hash")
}
}
function initAliasNames(){
$.cjax({
url: "/api/proxy/detail",
method: "POST",
data: {
"type":"host",
"epname": editingEndpoint.ep
},
success: function(data){
if (data.error != undefined){
//This endpoint not exists?
alert(data.error);
return;
}else{
$("#inlineEditTable").html("");
if (data.MatchingDomainAlias != undefined){
aliasList = data.MatchingDomainAlias;
renderAliasList();
}else{
//Assume no alias
$("#inlineEditTable").html(`<tr>
<td colspan="2"><i class="ui green circle check icon"></i> No Alias Hostname</td>
</tr>`);
}
}
}
})
}
initAliasNames();
function removeAliasDomain(targetDomain){
aliasList.splice(aliasList.indexOf(targetDomain), 1);
saveCurrentAliasList(function(data){
if (data.error != undefined){
parent.msgbox(data.error);
}else{
initAliasNames();
parent.msgbox("Alias hostname removed")
}
});
}
function addAliasToRoutingRule(){
let newAliasHostname = $("#aliasHostname").val().trim();
aliasList.push(newAliasHostname);
$("#aliasHostname").val("");
saveCurrentAliasList(function(data){
if (data.error != undefined){
parent.msgbox(data.error);
}else{
parent.msgbox("New alias hostname added")
initAliasNames();
}
});
}
function saveCurrentAliasList(callback=undefined){
$.cjax({
url: "/api/proxy/setAlias",
method: "POST",
data:{
"ep":editingEndpoint.ep,
"alias": JSON.stringify(aliasList)
},
success: function(data){
if (callback != undefined){
callback(data);
}
if (data.error == undefined && parent != undefined && parent.document != undefined){
//Try to update the parent object's rules if exists
parent.updateAliasListForEndpoint(editingEndpoint.ep, aliasList);
}
}
})
}
function renderAliasList(){
$("#inlineEditTable").html("");
aliasList.forEach(aliasDomain => {
let domainLink = `<a href="//${aliasDomain}" target="_blank">${aliasDomain}</a>`
if (aliasDomain.includes("*")){
//This is a wildcard hostname
domainLink = aliasDomain;
}
$("#inlineEditTable").append(`<tr>
<td>${domainLink}</td>
<td><button class="ui basic button" onclick="removeAliasDomain('${aliasDomain}');"><i class="red remove icon"></i> Remove</button></td>
</tr>`);
});
if (aliasList.length == 0){
$("#inlineEditTable").html(`<tr>
<td colspan="2"><i class="ui green circle check icon"></i> No Alias Hostname</td>
</tr>`);
}
}
function closeThisWrapper(){
parent.hideSideWrapper(true);
}
</script>
</body>
</html>