Mail routing parent/children, domain name validation, nodelist import changes and other fixes

This commit is contained in:
Deon George
2021-07-26 21:21:58 +10:00
parent 49bc946024
commit b179b1b3e9
15 changed files with 537 additions and 171 deletions

View File

@@ -39,6 +39,7 @@ If you have more than 1 BBS, then the Clearing House can receive all your mail f
<ul>
<li>Supports BINKP network transfers</li>
<li>Supports EMSI network transfers</li>
<li>Automatic route configuration</li>
<li>Manages ECHO areas and FILE areas <sup>To be implemented</sup></li>
<li>Supports PING and TRACE responses <sup>To be implemented</sup></li>
<li>Nodelist Management <sup>To be implemented</sup></li>

View File

@@ -68,26 +68,7 @@
<tbody>
@foreach ($o->zones->sortBy('zone_id') as $oz)
<!-- First System Zone -->
<tr>
<td>{{ sprintf('ZC-%s-%05d',$oz->domain->name,$oz->zone_id) }}</td>
<td>{{ $oz->system->sysop }}</td>
<td>{{ $oz->system->location }}</td>
<td>{{ $oz->zone_id }}:0/0</td>
<td>{{ $oz->system->last_session ? $oz->system->last_session->format('Y-m-d H:i') : '-' }}</td>
</tr>
@foreach ($oz->addresses()->active()->FTNorder()->where('point_id',0)->whereNull('hub_id')->with(['system.sessions','system.setup','zone.domain'])->get() as $ao)
@if ($ao->role == 'Host')
<tr>
<td>{{ sprintf('NC-%s-%05d',$oz->domain->name,$ao->host_id) }} @auth<span class="float-end"><small>[{{ $ao->system_id }}]</small></span>@endauth</td>
<td>{{ $ao->system->sysop }}</td>
<td>{{ $ao->system->location }}</td>
<td>{{ $oz->zone_id }}:{{ $ao->host_id }}/0</td>
<td>{{ $ao->system->last_session ? $ao->system->last_session->format('Y-m-d H:i') : '-' }}</td>
</tr>
@endif
@foreach ($oz->addresses as $ao)
<tr>
<td><a href="{{ url('ftn/system/addedit',[$ao->system_id]) }}">{{ $ao->system->full_name($ao) }}</a> @auth<span class="float-end"><small>@if($ao->session('sespass'))<sup>*</sup>@elseif($ao->system->setup)<sup class="success">+</sup>@endif[{{ $ao->system_id }}]</small></span>@endauth</td>
<td>{{ $ao->system->sysop }}</td>
@@ -95,19 +76,6 @@
<td>{{ $ao->ftn_3d }}</td>
<td>{{ $ao->system->last_session ? $ao->system->last_session->format('Y-m-d H:i') : '-' }}</td>
</tr>
<!-- If this node is a hub -->
@if ($ao->role == 'Hub')
@foreach ($oz->addresses()->active()->FTNorder()->where('point_id',0)->where('hub_id',$ao->id)->with(['system.sessions','zone.domain'])->get() as $aoo)
<tr>
<td><a href="{{ url('ftn/system/addedit',[$ao->system_id]) }}">{{ $aoo->system->full_name($aoo) }}</a> @auth<span class="float-end"><small>[{{ $aoo->system_id }}]</small></span>@endauth</td>
<td>{{ $aoo->system->sysop }}</td>
<td>{{ $aoo->system->location }}</td>
<td>{{ $aoo->ftn_3d }}</td>
<td>{{ $aoo->system->last_session ? $aoo->system->last_session->format('Y-m-d H:i') : '-' }}</td>
</tr>
@endforeach
@endif
@endforeach
@endforeach
</tbody>

View File

@@ -157,7 +157,7 @@
<tr>
<td>{{ $oo->ftn }}</td>
<td>{{ $oo->active ? 'YES' : 'NO' }}</td>
<td>{{ $oo->role }}</td>
<td>{{ $oo->role_name }}</td>
<td style="width: 70px;">
@if (! $oo->children)
@can('admin',$oo)
@@ -185,6 +185,83 @@
</div>
</div>
</div>
<!-- Routing -->
<div class="accordion-item">
<h3 class="accordion-header" id="routing" data-bs-toggle="collapse" data-bs-target="#collapse_routing" aria-expanded="false" aria-controls="collapse_routing">Mail Routing</h3>
<div id="collapse_routing" class="accordion-collapse collapse {{ (session()->has('add_address')) ? 'show' : '' }}" aria-labelledby="addresses" data-bs-parent="#accordion_homepage">
<div class="accordion-body">
<div class="row">
<!-- Zone mail sent to -->
<div class="col-6">
@if(! $o->setup && ($x=\App\Models\Zone::active()
->whereIn('id',$o->zones->pluck('id'))
->whereNotIn('id',$o->sessions->pluck('id'))
->get())->count())
<h4>This host's mail is sent to:</h4>
<table class="table monotable">
<thead>
<tr>
<th>Zone</th>
<th>System</th>
</tr>
</thead>
<tbody>
@foreach($x as $zo)
<!-- @todo Not showing when multiple addresses in the same domain -->
@foreach ($o->match($zo) as $oo)
<tr>
<td>{{ $oo->ftn }}</td>
<td>
@if ($x=$oo->parent())
{{ $x->ftn4d }}
@else
No destination for mail.
@endif
</td>
</tr>
@endforeach
@endforeach
</tbody>
</table>
@endif
</div>
<!-- Systems this host collects for -->
<div class="col-6">
<h4>This host collects mail for the following systems:</h4>
@if($o->sessions->count())
<table class="table monotable">
<thead>
<tr>
<th>Zone</th>
<th>System</th>
</tr>
</thead>
<tbody>
@foreach ($o->sessions->sortBy('zone_id') as $zo)
@foreach ($o->match($zo) as $oo)
<tr>
<td>{{ $oo->ftn }}</td>
<td>{!! (($x=$oo->children) && $x->count()) ? $x->pluck('ftn4d')->join('<br>') : 'None' !!}</td>
</tr>
@endforeach
@endforeach
</tbody>
</table>
@else
<p>This host doesnt collect mail.</p>
@endif
</div>
</div>
</div>
</div>
</div>
@else
@include('system.form-system')
@endif

View File

@@ -1,7 +1,6 @@
@if(($x=\App\Models\Zone::active()
->whereIn('id',$o->zones->pluck('id'))
->whereNotIn('id',$o->sessions->pluck('id'))
->with(['domain'])
->get())->count())
<hr>