dcf5bb72b0
Optimized network processes. Removed some unnecessary logging. Fixed status bar info inconsistency.
352 lines
15 KiB
HTML
352 lines
15 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>ALFIS</title>
|
|
{styles}
|
|
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
|
|
{scripts}
|
|
</head>
|
|
<body onload="onLoad();">
|
|
|
|
<div id="modal_dialog" class="modal">
|
|
<div class="modal-background"></div>
|
|
<div class="modal-content">
|
|
<div class="box">
|
|
<p id="modal_text" class="is-centered">Do you really want to cancel mining?</p>
|
|
<br/>
|
|
<div class="buttons is-grouped is-centered">
|
|
<button class="button is-link" id="modal_positive_button" onclick="positiveButton();">Ok</button>
|
|
<button class="button is-link is-light" id="modal_negative_button" onclick="cancelButton();">Cancel</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="new_record_dialog" class="modal">
|
|
<div class="modal-background"></div>
|
|
<div class="modal-content">
|
|
<div class="box">
|
|
<div class="columns">
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">Name</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="www" id="record_name">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="column is-narrow">
|
|
<div class="field">
|
|
<label class="label">Type</label>
|
|
<div class="select">
|
|
<select id="record_type">
|
|
<option>A</option>
|
|
<option>AAAA</option>
|
|
<option>CNAME</option>
|
|
<option>NS</option>
|
|
<option>MX</option>
|
|
<option>SRV</option>
|
|
<option>TXT</option>
|
|
<!--<option>SOA</option>
|
|
<option>OPT</option>-->
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="columns">
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">TTL</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="3600" id="record_ttl" value="3600">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">Priority</label>
|
|
<div class="control">
|
|
<input class="input" type="number" placeholder="10" id="record_priority">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">Weight</label>
|
|
<div class="control">
|
|
<input class="input" type="number" placeholder="10" id="record_weight">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">Port</label>
|
|
<div class="control">
|
|
<input class="input" type="number" placeholder="5222" id="record_port">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<label class="label">Data/host</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="1.2.3.4" id="record_data">
|
|
</div>
|
|
</div>
|
|
<br/>
|
|
<div class="buttons is-grouped is-centered">
|
|
<button class="button is-primary" id="new_record_positive_button">Ok</button>
|
|
<button class="button is-link is-light" id="new_record_negative_button">Cancel</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="notification is-warning is-hidden" id="notification_warning">
|
|
<button class="delete" id="close"></button>
|
|
<p id="warning_text"></p>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<div class="columns is-mobile">
|
|
<div class="column is-one-fifth">
|
|
<div class="menu">
|
|
<ul class="menu-list">
|
|
<li><a class="is-active" onclick="openTab(this, 'main')">Main</a></li>
|
|
</ul>
|
|
<p class="menu-label">Key management</p>
|
|
<ul class="menu-list">
|
|
<li><a onclick="openTab(this, 'key_load')">Manage keys</a></li>
|
|
</ul>
|
|
<p class="menu-label">Domain management</p>
|
|
<ul class="menu-list">
|
|
<li><a onclick="openTab(this, 'dom_new')">Mine domain</a></li>
|
|
<li><a onclick="openTab(this, 'zone_new')">Mine zone</a></li>
|
|
<!--<li><a onclick="openTab(this, 'dom_edit')">Manage domain</a></li>
|
|
<li><a onclick="openTab(this, 'dom_renew')">Renew domain</a></li>
|
|
<li><a onclick="openTab(this, 'dom_transfer')">Transfer domain</a></li>-->
|
|
</ul>
|
|
</div>
|
|
</div><!--column-->
|
|
|
|
<div class="column auto">
|
|
<div class="content center" id="main">
|
|
<h1>Welcome to ALFIS!</h1>
|
|
<p>ALFIS stands for Alternative Free Identity System.</p>
|
|
<p>It gives you an opportunity to create your own domains and use them in decentralized networks, store security certificates for browsers to trust without any centralized CA.</p>
|
|
<h2>How this system works?</h2>
|
|
<h3>If you just want to be able to resolve our domains</h3>
|
|
<p>Carefully configure DNS section in <strong>alfis.toml</strong> and start ALFIS with <code>-n</code> command line switch.
|
|
It will start without GUI, but will work as local DNS-resolver.</p>
|
|
<h3>If you want to get your own domain</h3>
|
|
<ul>
|
|
<li>Generate a keypair in "Manage keys" part (you need just one for any number of domains)</li>
|
|
<li>Check available zones (for now we have a test zone <code>.yy</code>). In future version a list of available zones will be somewhere here</li>
|
|
<li>Go to "Mine domain" part and enter desired domain in first field, if it is not red - you can create it</li>
|
|
<li>Carefully add needed DNS-records (you can add them later, but you will need to mine it again)</li>
|
|
<li>Just click on "Mine domain" and wait for it, your domain (when properly cooked) will propagate to all blockchain nodes automatically</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="content is-hidden" id="key_load">
|
|
<div class="field">
|
|
<label class="label">Key path</label>
|
|
<p id="key_file_name">Key not saved</p>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label class="label">Public key</label>
|
|
<p id="key_public_key">Not loaded</p>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label class="label">Public key hash</label>
|
|
<p id="key_public_hash">Not loaded</p>
|
|
</div>
|
|
|
|
<br>
|
|
<div class="field is-grouped">
|
|
<div class="control">
|
|
<button class="button is-success" onclick="loadKey();">Load key</button>
|
|
</div>
|
|
|
|
<div class="control">
|
|
<button class="button is-warning" onclick="createKey();">Mine new key</button>
|
|
</div>
|
|
|
|
<div class="control">
|
|
<button class="button is-primary" onclick="saveKey();">Save key</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="content is-hidden" id="dom_new">
|
|
<div class="columns">
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">Domain name</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="example.ygg" id="new_domain" oninput="onDomainChange(this)">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">Domain tags (will be used for search)</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="blog, community, friendship" id="new_domain_tags">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="block" id="domain_records">
|
|
<!-- Here will be our domain records, added by dialog -->
|
|
</div>
|
|
|
|
<div class="field is-grouped">
|
|
<div class="control">
|
|
<button class="button is-success" id="add_record_button" onclick="showNewRecordDialog();">Add record</button>
|
|
</div>
|
|
<div class="control">
|
|
<button class="button is-link" id="new_domain_button" onclick="createDomain();" disabled>Mine domain</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="content is-hidden" id="zone_new">
|
|
<div class="columns">
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">Zone name</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="ygg" id="new_zone" oninput="onZoneChange()">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="column">
|
|
<div class="field">
|
|
<label class="label">Difficulty (for all domains in zone)</label>
|
|
<div class="control">
|
|
<input class="input" type="number" placeholder="20" id="new_zone_difficulty" oninput="onZoneChange()">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field is-grouped">
|
|
<div class="control">
|
|
<button class="button is-link" id="new_zone_button" onclick="createZone();" disabled>Mine zone</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="content is-hidden" id="dom_edit">
|
|
<div class="field">
|
|
<label class="label">Your existing domain name</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="example.ygg" id="change_domain">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label class="label">All new domain records</label>
|
|
<div class="control">
|
|
<textarea class="textarea" placeholder="@ IN AAAA 200:1111:2222:3333:4444:5555:6666:7777" id="change_domain_records"></textarea>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label class="label">Domain tags (will be used for search)</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="blog, community, friendship" id="change_domain_tags">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field is-grouped">
|
|
<div class="control">
|
|
<button class="button is-link" onclick="changeDomain();">Replace records</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="content is-hidden" id="dom_renew">
|
|
<div class="field">
|
|
<label class="label">Your existing domain name</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="example.ygg" id="renew_domain">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label class="label">Days to add</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="365" value="365" id="renew_domain_extend_days" disabled>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field is-grouped">
|
|
<div class="control">
|
|
<button class="button is-link" onclick="renewDomain();">Renew domain</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="content is-hidden" id="dom_transfer">
|
|
<div class="field">
|
|
<label class="label">Your existing domain name</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="example.ygg" id="transfer_domain">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label class="label">Public key of new owner</label>
|
|
<div class="control">
|
|
<input class="input" type="text" placeholder="3764ef954577a1815db3cc65aa3e2b18a52f12a3f6fcbd6a10d9ce8d06741ddd" id="transfer_domain_transfer_owner">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field is-grouped">
|
|
<div class="control">
|
|
<button class="button is-link" onclick="transferDomain();">Transfer domain</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
</div> <!-- columns -->
|
|
</div>
|
|
|
|
<div class="footer is-family-code">
|
|
<div class="level">
|
|
<div class="level-left">
|
|
<div class="level-item" id="indicator_parent">
|
|
<div class="busy_indicator busy_blue" id="busy_indicator" onclick="miningIndicatorClick(this)">
|
|
<span></span>
|
|
<span></span>
|
|
</div>
|
|
</div>
|
|
<div class="level-item">
|
|
<div id="status_bar_left">Connecting...</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="level-right">
|
|
<div class="level-item" id="status_bar_right">No data</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
</html> |