haraka-wildduck

Este commit está contenido en:
Your Name
2020-05-27 17:51:39 +00:00
padre 31d55bf967
commit d44513dbd8
Se han modificado 163 ficheros con 8169 adiciones y 0 borrados

Ver fichero

@@ -0,0 +1,3 @@
<li role="presentation" class="{{#if accMenuOverview}}active{{/if}}"><a href="/account/">Overview</a></li>
<li role="presentation" class="{{#if accMenuProfile}}active{{/if}}"><a href="/account/profile">Profile</a></li>
<li role="presentation" class="{{#if accMenuIdentities}}active{{/if}}"><a href="/account/identities">Identities</a></li>

Ver fichero

@@ -0,0 +1,150 @@
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Search messages by:</div>
<div class="panel-body">
<div class="form-group{{#if errors.query_from}} has-error{{/if}}">
<label for="query_from">From</label>
<input type="text" class="form-control input-sm" name="query_from" id="query_from" value="{{values.query_from}}">
{{#if errors.query_from}}
<span class="help-block">{{errors.query_from}}</span>
{{/if}}
</div>
<div class="form-group{{#if errors.query_to}} has-error{{/if}}">
<label for="query_to">To</label>
<input type="text" class="form-control input-sm" name="query_to" id="query_to" value="{{values.query_to}}">
{{#if errors.query_to}}
<span class="help-block">{{errors.query_to}}</span>
{{/if}}
</div>
<div class="form-group{{#if errors.query_subject}} has-error{{/if}}">
<label for="query_subject">Subject</label>
<input type="text" class="form-control input-sm" name="query_subject" id="query_subject" value="{{values.query_subject}}">
{{#if errors.query_subject}}
<span class="help-block">{{errors.query_subject}}</span>
{{/if}}
</div>
<div class="form-group{{#if errors.query_text}} has-error{{/if}}">
<label for="query_text">Includes the following text</label>
<input type="text" class="form-control input-sm" name="query_text" id="query_text" value="{{values.query_text}}">
{{#if errors.query_text}}
<span class="help-block">{{errors.query_text}}</span>
{{/if}}
</div>
<div class="form-group{{#if errors.query_listId}} has-error{{/if}}">
<label for="query_listId">List-ID</label>
<input type="text" class="form-control input-sm" name="query_listId" id="query_listId" value="{{values.query_listId}}">
{{#if errors.query_listId}}
<span class="help-block">{{errors.query_listId}}</span>
{{/if}}
</div>
<div class="form-group{{#if errors.query_ha}} has-error{{/if}}">
<label>Attachments</label>
<div>
<label class="checkbox-inline">
<input type="checkbox" name="query_haYes" id="query_haYes" value="true" {{#if values.query_haYes}}checked{{/if}}> Has attachments
</label>
<label class="checkbox-inline">
<input type="checkbox" name="query_haNo" id="query_haNo" value="true" {{#if values.query_haNo}}checked{{/if}}> Doesn't have attachments
</label>
</div>
{{#if errors.query_ha}}
<span class="help-block">{{errors.query_ha}}</span>
{{/if}}
</div>
<div class="form-group{{#if errors.query_size}} has-error{{/if}}">
<label for="query_sizeValue">Size</label>
<div class="form-inline">
<div class="form-group">
<span>Message size is</span>
<select class="form-control input-sm" id="query_sizeType" name="query_sizeType">
<option value="1" {{#if values.query_sizeTypeGt}}selected{{/if}}>greater than</option>
<option value="-1" {{#if values.query_sizeTypeLt}}selected{{/if}}>smaller than</option>
</select>
</div>
<div class="form-group">
<input type="number" class="form-control input-sm" id="query_sizeValue" name="query_sizeValue" value="{{values.query_sizeValue}}">
</div>
<div class="form-group">
<select class="form-control input-sm" id="query_sizeUnit" name="query_sizeUnit">
<option value="MB" {{#if values.query_sizeUnitMB}}selected{{/if}}>MB</option>
<option value="kB" {{#if values.query_sizeUnitKB}}selected{{/if}}>kB</option>
<option value="B" {{#if values.query_sizeUnitB}}selected{{/if}}>baiti</option>
</select>
</div>
</div>
{{#if errors.query_size}}
<span class="help-block">{{errors.query_size}}</span>
{{/if}}
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">When a message arrives that matches this search:</div>
<div class="panel-body">
<div class="checkbox">
<label>
<input type="checkbox" name="action_seenYes" id="action_seenYes" value="true" {{#if values.action_seenYes}}checked{{/if}}> Mark as seen
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="action_flagYes" id="action_flagYes" value="true" {{#if values.action_flagYes}}checked{{/if}}> Flag it
</label>
</div>
<div class="form-group{{#if errors.action_mailbox}} has-error{{/if}}">
<label for="action_mailbox">Move to mailbox:</label>
<select class="form-control input-sm" id="action_mailbox" name="action_mailbox">
<option value=""></option>
{{#each mailboxes}}
<option value="{{id}}" {{#if selected}}selected{{/if}}>{{path}}</option>
{{/each}}
</select>
{{#if errors.action_mailbox}}
<span class="help-block">{{errors.action_mailbox}}</span>
{{/if}}
</div>
<div class="form-group{{#if errors.action_targets}} has-error{{/if}}">
<label for="action_targets">Forward it to address:</label>
<input type="text" class="form-control input-sm" name="action_targets" id="action_targets" value="{{values.action_targets}}" placeholder="user@example.com">
<span class="help-block">Somma separated list of email addresses or URLs</span>
{{#if errors.action_targets}}
<span class="help-block">{{errors.action_targets}}</span>
{{/if}}
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="action_spamYes" id="action_spamYes" value="true" {{#if values.action_spamYes}}checked{{/if}}> Mark as spam
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="action_spamNo" id="action_spamNo" value="true" {{#if values.action_spamNo}}checked{{/if}}> Don't mark as spam
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="action_deleteYes" id="action_deleteYes" value="true" {{#if values.action_deleteYes}}checked{{/if}}> Delete it
</label>
</div>
</div>
</div>
</div>
</div>

Ver fichero

@@ -0,0 +1,18 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{serviceName}} web client">
<meta name="author" content="Andris Reinman">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<title>{{serviceName}}
{{#if title}} | {{title}}{{/if}}
</title>
<!--<link rel="stylesheet" href="/bootstrap-3.3.7/css/bootstrap.min.css">-->
<link rel="stylesheet" href="/bootstrap-3.3.7/css/lumen.css">
<link rel="stylesheet" href="/css/wildduck.css">

Ver fichero

@@ -0,0 +1,68 @@
<div class="form-group{{#if errors.name}} has-error{{/if}}">
<label for="name">Name</label>
<input type="text" class="form-control" name="name" id="name" placeholder="eg &quot;John Smith&quot; or &quot;Accounting Department&quot;" value="{{#if values.name}}{{values.name}}{{/if}}" >
{{#if errors.name}}
<span class="help-block">{{errors.name}}</span>
{{else}}
<span class="help-block">This name is used as the sender name when using this identity. Keep blank to default to your account name</span>
{{/if}}
</div>
<div class="form-group{{#if errors.address}} has-error{{/if}}">
<label for="name">Alias address</label>
<div class="input-group">
<input type="text" class="form-control" name="address" id="address" placeholder="eg. &quot;username&quot; or &quot;user.name&quot; or &quot;андрис&quot;" value="{{values.address}}" required>
<span class="input-group-btn">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@<span class="selected-domain" style="text-transform: lowercase;">{{values.domain}}</span><span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right">
{{#each domains}}
<li><a href="#" class="change-domain-link" data-domain="{{this}}">{{this}}</a></li>
{{/each}}
</ul>
</span>
</div>
{{#if errors.address}}
<span class="help-block">{{errors.address}}</span>
{{else}}
<span class="help-block">Unicode characters are allowed in alias addresses.<span>
{{/if}}
</div>
{{#unless isMain}}
<div class="form-group">
<div class="checkbox">
<label>
<input type="checkbox" name="main" {{#if values.main}}checked{{/if}}> Set as default
</label>
</div>
</div>
{{/unless}}
<script>
document.addEventListener('DOMContentLoaded', function() {
var domainElement = document.getElementById('domain');
var updateDomain = function(e,elm){
e.preventDefault();
var domain = elm.dataset.domain;
if(domain){
domainElement.value = domain;
document.querySelector('.selected-domain').textContent = domain;
}
};
var setupDomainButton = function(elm){
elm.addEventListener('click', function(e){updateDomain(e,elm)}, false);
elm.addEventListener('touch', function(e){updateDomain(e,elm)}, false);
}
var domainLinks = document.querySelectorAll('.change-domain-link');
for(var i=0, len = domainLinks.length; i<len; i++){
setupDomainButton(domainLinks[i]);
}
}, false);
</script>

Ver fichero

@@ -0,0 +1,44 @@
<fieldset>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Mailbox settings</h3>
</div>
<div class="panel-body">
{{#if isInbox}}
<div class="form-group">
<label for="name">Mailbox name</label>
<input type="text" class="form-control" name="name" id="name" placeholder="eg. &quot;Important Stuff&quot;" value="{{values.name}}" disabled>
<span class="help-block">INBOX folder can not be modified</span>
</div>
{{else}}
<div class="form-group{{#if errors.parent}} has-error{{/if}}">
<label for="parent">Mailbox Parent</label>
<select class="form-control" name="parent" id="parent">
<option value="">[No parent]</option>
{{#each parents}}
<option value="{{path}}" {{#if isParent}} selected {{/if}} >
{{name}}
</option>
{{/each}}
</select>
{{#if errors.parent}}
<span class="help-block">{{errors.parent}}</span>
{{/if}}
</div>
<div class="form-group{{#if errors.name}} has-error{{/if}}">
<label for="name">Mailbox name</label>
<input type="text" class="form-control" name="name" id="name" placeholder="eg. &quot;Important Stuff&quot;" value="{{values.name}}" required>
{{#if errors.name}}
<span class="help-block">{{errors.name}}</span>
{{/if}}
</div>
{{/if}}
</div>
</div>
</fieldset>

Ver fichero

@@ -0,0 +1,51 @@
<tr id="msg_{{id}}" class="messagerow messagerow-{{mailbox}}-{{id}} {{#if seen}}message-seen{{else}}message-unseen{{/if}}">
<td class="messagerow-spacer"></td>
<td class="messagerow-checkbox">
<input type="checkbox" data-mailbox="{{mailbox}}" data-message="{{id}}" class="message-checkbox"/>
</td>
<td class="messagerow-star">
<a href="#" class="message-star {{#if flagged}}flagged{{else}}unflagged{{/if}}" data-mailbox="{{mailbox}}" data-message="{{id}}"><span class="glyphicon glyphicon-{{#if flagged}}star{{else}}star-empty{{/if}}" aria-hidden="true"></span></a>
</td>
<td class="messagerow-from">
<a href="/webmail/{{mailbox}}/message/{{id}}" class="messagerow-link">
{{{fromHtml}}}
</a>
</td>
<td class="messagerow-subject">
<a href="/webmail/{{mailbox}}/message/{{id}}" class="messagerow-link">
<span class="messagerow-subject-content">
{{#if mailboxName}}
<span class="label label-default">{{mailboxName}}</span>
{{/if}}
{{subject}}{{#if intro}} <span class="text-muted" style="font-weight: normal;"> {{intro}}</span>{{/if}}
</span>
</a>
</td>
<td class="messagerow-info">
<a href="/webmail/{{mailbox}}/message/{{id}}" class="messagerow-link">
{{#if encrypted}}
<span class="glyphicon glyphicon-lock" aria-hidden="true"></span>
{{else}}
{{#if attachments}}
<span class="glyphicon glyphicon-paperclip" aria-hidden="true"></span>
{{/if}}
{{/if}}
</a>
</td>
<td class="messagerow-date">
<a href="/webmail/{{mailbox}}/message/{{id}}" class="messagerow-link">
<span class="datestring-fixed" title="{{date}}">
{{date}}
</span>
</a>
</td>
<td class="messagerow-spacer"></td>
</tr>

Ver fichero

@@ -0,0 +1,85 @@
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{#if user}}/webmail{{else}}/{{/if}}">
<img alt="{{serviceName}}" src="/favicon-32x32.png" width="20" height="20">
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
{{#if user}}
<li {{#if activeWebmail}} class="active" {{/if}}>
<a href="/webmail/">
<span class="glyphicon glyphicon-inbox" aria-hidden="true"></span> Webmail
<span class="badge pull-right unseen-counter-{{inboxId}}" {{#if inboxUnseen}}style="display: block;"{{else}}style="display: none;"{{/if}}>{{inboxUnseen}}</span>
</a>
</li>
<li {{#if activeFilters}} class="active" {{/if}}>
<a href="/account/filters">
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span> Filters
</a>
</li>
<li {{#if activeAutoreply}} class="active" {{/if}}>
<a href="/account/autoreply">
<span class="glyphicon glyphicon-calendar" aria-hidden="true"></span> Autoreply
</a>
</li>
<li {{#if activeHelp}} class="active" {{/if}}>
<a href="/help">
<span class="glyphicon glyphicon glyphicon-question-sign" aria-hidden="true"></span> Help
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<img src="{{user.gravatar}}" class="profile-image img-circle" width="20" height="20">
{{#if user.name}}
{{user.name}}
{{else}}
{{user.username}}
{{/if}}
<span class="caret"></span></a>
<ul class="dropdown-menu">
<li {{#if activeHome}} class="active" {{/if}}>
<a href="/account/">
<span class="glyphicon glyphicon-user" aria-hidden="true"></span> Account
</a>
</li>
<li {{#if activeSecurity}} class="active" {{/if}}>
<a href="/account/security">
<span class="glyphicon glyphicon-lock" aria-hidden="true"></span> Security
</a>
</li>
<li role="separator" class="divider"></li>
<li><a href="/account/logout"><span class="glyphicon glyphicon-log-out" aria-hidden="true"></span> Log out</a></li>
</ul>
</li>
{{else}}
{{#if allowJoin}}
<li {{#if activeCreate}} class="active" {{/if}}>
<a href="/account/create">
<span class="glyphicon glyphicon-user" aria-hidden="true"></span> Create account
</a>
</li>
{{/if}}
<li {{#if activeLogin}} class="active" {{/if}}>
<a href="/account/login">
<span class="glyphicon glyphicon-log-in" aria-hidden="true"></span> Log in
</a>
</li>
{{/if}}
</ul>
</div>
</div>
</nav>

Ver fichero

@@ -0,0 +1,71 @@
<script src="/components/underscore/underscore-min.js"></script>
<script src="/components/jquery/dist/jquery.min.js"></script>
<script src="/components/promise-polyfill/dist/promise.min.js"></script>
<script src="/components/moment/min/moment-with-locales.min.js"></script>
<script src="/bootstrap-3.3.7/js/bootstrap.js"></script>
<link href="/components/bootstrap-daterangepicker/daterangepicker.css" rel="stylesheet">
<script src="/components/bootstrap-daterangepicker/daterangepicker.js"></script>
<link href="/components/summernote/dist/summernote.css" rel="stylesheet">
<script src="/components/summernote/dist/summernote.min.js"></script>
<script src="/components/fetch/fetch.js"></script>
<script src="/components/event-source-polyfill/src/eventsource.min.js"></script>
<script src="/components/handlebars/handlebars.min.js"></script>
<script src="/components/favico.js/favico.js"></script>
<script src="/wd.js"></script>
<script type="text/javascript">
$(function() {
$("[rel='tooltip']").tooltip();
});
</script>
{{#if inboxId}}
<script>
var INBOX_ID = '{{inboxId}}';
var INBOX_UNSEEN = {{inboxUnseen}};
var FAVICON = new Favico({
animation:'slide'
});
if(INBOX_UNSEEN){
FAVICON.badge(INBOX_UNSEEN);
}
</script>
{{else}}
<script>
var INBOX_ID = -1;
var INBOX_UNSEEN = 0;
var FAVICON = false;
</script>
{{/if}}
{{#if successlog}}
<script src="/login-key-handler.js"></script>
<script>
$(function() {
// store token about successful auth in this browser
var successlog = {{{successlog}}};
loginKeyHandler.set(successlog.username, successlog.value, 'recovery', successlog.days);
});
</script>
{{/if}}
<script>
window.setTimeout(function(){
var alerts = document.querySelectorAll('.flash-messages');
var elm;
for(var i=0, len = alerts.length; i<len; i++){
elm = alerts[i];
if(elm.parentNode){
elm.parentNode.removeChild(elm);
}
}
}, 10 * 1000);
</script>

Ver fichero

@@ -0,0 +1,8 @@
<form method="get" action="/webmail/search">
<div class="input-group">
<input type="text" class="form-control input" name="query" placeholder="from:val to:val subject:val &quot;phrase&quot; word" value="{{query}}" required>
<span class="input-group-btn">
<button class="btn btn-default btn" type="submit"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></button>
</span>
</div>
</form>

Ver fichero

@@ -0,0 +1,5 @@
<li role="presentation" class="{{#if secMenu2fa}}active{{/if}}"><a href="/account/security/2fa">Two factor authentication</a></li>
<li role="presentation" class="{{#if secMenuPassword}}active{{/if}}"><a href="/account/security/password">Account Password</a></li>
<li role="presentation" class="{{#if secMenuAsps}}active{{/if}}"><a href="/account/security/asps">Application specific passwords</a></li>
<li role="presentation" class="{{#if secMenuGpg}}active{{/if}}"><a href="/account/security/gpg">GPG Encryption</a></li>
<li role="presentation" class="{{#if secMenuEvents}}active{{/if}}"><a href="/account/security/events">Security events</a></li>

Ver fichero

@@ -0,0 +1,57 @@
<p>Last updated: January 24, 2018</p>
<p>Please read these Terms and Conditions ("Terms", "Terms and Conditions") carefully before using the http://{{serviceDomain}} website (the "Service") operated by {{serviceName}} ("us", "we", or "our").</p>
<p>Your access to and use of the Service is conditioned on your acceptance of and compliance with these Terms. These Terms apply to all visitors, users and others who access or use the Service.</p>
<p>By accessing or using the Service you agree to be bound by these Terms. If you disagree with any part of the terms then you may not access the Service. Terms and Conditions for {{serviceName}} based on the <a href="https://termsfeed.com/blog/sample-terms-and-conditions-template/">T&amp;C example from TermsFeed</a>.</p>
<h2>Accounts</h2>
<p>When you create an account with us, you must provide us information that is accurate, complete, and current at all times. Failure to do so constitutes a breach of the Terms, which may result in immediate termination of your account on our Service.</p>
<p>You are responsible for safeguarding the password that you use to access the Service and for any activities or actions under your password, whether your password is with our Service or a third-party service.</p>
<p>You agree not to disclose your password to any third party. You must notify us immediately upon becoming aware of any breach of security or unauthorized use of your account.</p>
<h2>Links To Other Web Sites</h2>
<p>Our Service may contain links to third-party web sites or services that are not owned or controlled by {{serviceName}}.</p>
<p>{{serviceName}} has no control over, and assumes no responsibility for, the content, privacy policies, or practices of any third party web sites or services. You further acknowledge and agree that {{serviceName}} shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such web sites or services.</p>
<p>We strongly advise you to read the terms and conditions and privacy policies of any third-party web sites or services that you visit.</p>
<h2>Termination</h2>
<p>We may terminate or suspend access to our Service immediately, without prior notice or liability, for any reason whatsoever, including without limitation if you breach the Terms.</p>
<p>All provisions of the Terms which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.</p>
<p>We may terminate or suspend your account immediately, without prior notice or liability, for any reason whatsoever, including without limitation if you breach the Terms.</p>
<p>Upon termination, your right to use the Service will immediately cease. If you wish to terminate your account, you may simply discontinue using the Service.</p>
<p>All provisions of the Terms which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability.</p>
<h2>Governing Law</h2>
<p>These Terms shall be governed and construed in accordance with the laws of Estonia, without regard to its conflict of law provisions.</p>
<p>Our failure to enforce any right or provision of these Terms will not be considered a waiver of those rights. If any provision of these Terms is held to be invalid or unenforceable by a court, the remaining provisions of these Terms will remain in effect. These Terms constitute the entire agreement between us regarding our Service, and supersede and replace any prior agreements we might have between us regarding the Service.</p>
<h2>Changes</h2>
<p>We reserve the right, at our sole discretion, to modify or replace these Terms at any time. If a revision is material we will try to provide at least 30 days notice prior to any new terms taking effect. What constitutes a material change will be determined at our sole discretion.</p>
<p>By continuing to access or use our Service after those revisions become effective, you agree to be bound by the revised terms. If you do not agree to the new terms, please stop using the Service.</p>
<h2>Contact Us</h2>
<p>If you have any questions about these Terms, please contact us.</p>