cdnV2

git clone https://github.com/notamitgamer/cdnV2.git
· rebuilt hourlyOpen on GitHub
root / app / templates / url_shortener.html

url_shortener.html (2063B)


      1 {% extends "base.html" %}
      2 {% from "_icons.html" import icon %}
      3 {% set page_title = 'URL Shortener' %}
      4 {% set page_description = 'Shorten and mask any public URL.' %}
      5 {% block page_class %}shorten{% endblock %}
      6 
      7 {% block content %}
      8 <section class="page-head">
      9     <h1>URL Shortener</h1>
     10     <p class="lede">Paste any public <code>https://</code> URL and get back a masked, shareable link. The destination is never exposed until someone visits the masked URL.</p>
     11 </section>
     12 
     13 <p class="callout callout-warning" role="note">
     14     {{ icon('clock', 18) }}
     15     <span><strong>Rate limit:</strong> each IP can create <strong>10 links per minute</strong> and <strong>50 per hour</strong>. Failed attempts count too. Only <code>https://</code> URLs up to 2048 characters are accepted. <a href="/documentation#rate-limits">How rate limits work</a></span>
     16 </p>
     17 
     18 <div class="input-group" id="shorten-group">
     19     <input type="url" id="url-input" class="url-input" placeholder="Paste a URL to shorten (e.g. https://example.com)" aria-label="URL to shorten" autocomplete="off" spellcheck="false" required>
     20     <button type="button" class="input-clear-btn" id="url-clear" aria-label="Clear URL">{{ icon('close', 16, 2.5) }}</button>
     21 </div>
     22 
     23 <div class="actions">
     24     <button type="button" class="btn btn-primary" id="shorten-btn">
     25         <span class="btn-icon btn-icon-default">{{ icon('link') }}</span>
     26         <span class="btn-icon btn-icon-spinner spin-anim">{{ icon('loader') }}</span>
     27         <span id="shorten-btn-label">Shorten URL</span>
     28     </button>
     29 </div>
     30 
     31 <div id="error-box" class="error-box" role="alert" aria-live="polite"></div>
     32 
     33 <div id="result" class="result-box" hidden>
     34     <h2>Your masked URL</h2>
     35     <div class="result-url">
     36         <a href="#" id="masked-link" target="_blank" rel="noopener noreferrer"></a>
     37         <button type="button" class="btn btn-sm" id="copy-btn" data-copy="">{{ icon('copy', 14) }}<span>Copy</span></button>
     38     </div>
     39     <p class="info-text">This link will redirect to the destination URL when visited.</p>
     40 </div>
     41 {% endblock %}