Merge pull request #46 from greyhatsec-au/list-accounts

Add feature to list current accounts with mail and load inbox
This commit is contained in:
Christian Haschek 2022-12-27 21:22:19 +01:00 committed by GitHub
commit 9b039af758
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 45 additions and 1 deletions

View file

@ -28,6 +28,11 @@ else
echo "DOMAINS=localhost" >> /var/www/opentrashmail/config.ini
fi
if [ "$SHOW_ACCOUNT_LIST" != "" ]; then
echo "SHOW_ACCOUNT_LIST=$SHOW_ACCOUNT_LIST" >> /var/www/opentrashmail/config.ini
echo " [i] Set show account list to: $SHOW_ACCOUNT_LIST"
fi
if [ "$ADMIN" != "" ]; then
echo "ADMIN=$ADMIN" >> /var/www/opentrashmail/config.ini
echo " [i] Set admin to: $ADMIN"

View file

@ -5,6 +5,9 @@
; pro tip: Use a wildcard domain like *.yourdomain.com to auto-generate the subdomains (you'll need to add a wildcard dns record too)
DOMAINS=yourdomain,sub.yourdomain,*.mydom.com
; Enable to show a list of all existing accounts with mail
;SHOW_ACCOUNT_LIST=true
; Enter the admin email address. If you choose this email on the website you will see all emails from all users
; The email doesn't really have to exist or have mail but must look like an email address
;ADMIN=some@random.email

View file

@ -141,6 +141,17 @@ switch($action)
$o = array('status'=>'ok','emails'=>$data);
}
break;
case 'show-list':
$settings = loadSettings();
$o = $settings['SHOW_ACCOUNT_LIST'];
break;
case 'list-addresses':
$settings = loadSettings();
$o = array('status'=>'ok','addresses'=>[]);
if ($settings['SHOW_ACCOUNT_LIST'])
$o['addresses'] = listEmailAdresses();
break;
}
echo json_encode($o);

View file

@ -25,7 +25,8 @@
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" id="email" type="email" placeholder="email address" aria-label="email address">
<button onClick="accessAccount()" class="btn btn-secondary my-2 my-sm-0"><i class="fas fa-arrow-left"></i><i class="fas fa-envelope"></i> Access account</button> &nbsp;
<button onClick="generateAccount()" id="btn-gen-random" class="btn btn-secondary my-2 my-sm-0"><i class="fas fa-random"></i> Generate random</button>
<button onClick="generateAccount()" id="btn-gen-random" class="btn btn-secondary my-2 my-sm-0"><i class="fas fa-random"></i> Generate random</button> &nbsp;
<button onClick="listAddresses(event)" id="btn-list-addresses" class="btn btn-secondary my-2 my-sm-0" style="display:none;"><i class="fas fa-list"></i> List accounts</button>
</form>
</div>
</nav>

View file

@ -16,6 +16,11 @@ $( document ).ready(function() {
domains = data;
else $("#btn-gen-random").hide();
},"json")
$.get("api.php?a=show-list",function(data){
if (data)
$("#btn-list-addresses").show();
},"json")
});
function loadMail(email,id)
@ -49,6 +54,25 @@ function renderEmail(email,id,data)
')
}
function listAddresses(e)
{
clearInterval(timer);
e = e || window.event;
e.preventDefault();
$.get("api.php?a=list-addresses", function(data) {
if (data.status == "ok") {
accounts = data.addresses;
$("#main").html(`<h2 class="text-center">Accounts</h2>
<button onClick="loadAccount('${activeemail}')" class="btn btn-primary my-2 my-sm-0"><i class="fas fa-backward"></i> Back</button><br/>
<ul>` +
accounts.map(a => `<li><a href="#" onClick="loadAccount('${a}')">${a}</a></li>`).join('') +
`</ul>`)
} else
alert("Unable to fetch list of accounts")
},"json")
}
function loadAccount(email)
{
clearInterval(timer);