123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <!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>
|