Files
cloudron-box/src/views/network.html

170 lines
7.5 KiB
HTML
Raw Normal View History

<!-- Modal sysinfo -->
<div class="modal fade" id="sysinfoModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
2020-11-05 14:27:07 +01:00
<h4 class="modal-title">{{ 'network.configureIp.title' | tr }}</h4>
</div>
<div class="modal-body">
<form name="sysinfoForm" role="form" novalidate ng-submit="sysinfo.submit()" autocomplete="off">
<fieldset>
<div class="form-group">
2020-11-05 14:27:07 +01:00
<label class="control-label">{{ 'network.ip.provider' | tr }} <sup><a ng-href="https://docs.cloudron.io/networking/#ip-configuration" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
<select class="form-control" ng-model="sysinfo.newProvider" ng-options="a.value as a.name for a in sysinfoProvider"></select>
</div>
2019-11-07 10:20:34 -08:00
<div ng-show="sysinfo.newProvider === 'generic'">
2020-11-05 14:27:07 +01:00
{{ 'network.configureIp.providerGenericDescription' | tr }} <sup><a ng-href="https://api.cloudron.io/api/v1/helper/public_ip" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup>
2019-11-07 10:20:34 -08:00
</div>
<!-- Fixed -->
<div class="form-group" ng-show="sysinfo.newProvider === 'fixed'" ng-class="{ 'has-error': (!sysinfoForm.ip.$dirty && sysinfo.error.ip) }">
2020-11-05 14:27:07 +01:00
<label class="control-label">{{ 'network.ip.address' | tr }}</label>
<input type="text" class="form-control" ng-model="sysinfo.newIp" name="ip" ng-disabled="sysinfo.busy" ng-required="sysinfo.newProvider === 'fixed'">
<p class="has-error" ng-show="sysinfo.error.ip">{{ sysinfo.error.ip }}</p>
</div>
<!-- Network Interface -->
<div class="form-group" ng-show="sysinfo.newProvider === 'network-interface'" ng-class="{ 'has-error': (!sysinfoForm.ifname.$dirty && sysinfo.error.ifname) }">
2020-11-05 14:27:07 +01:00
<label class="control-label">{{ 'network.ip.interface' | tr }}</label>
<p>{{ 'network.op.interfaceDescription' | tr }} <code>ip -f inet -br addr</code></p>
<input type="text" class="form-control" ng-model="sysinfo.newIfname" name="ifname" ng-disabled="sysinfo.busy" ng-required="sysinfo.newProvider === 'network-interface'">
<p class="has-error" ng-show="sysinfo.error.ifname">{{ sysinfo.error.ifname }}</p>
</div>
<input class="ng-hide" type="submit" ng-disabled="sysinfoForm.$invalid || sysinfo.busy"/>
</fieldset>
</form>
</div>
<div class="modal-footer">
2020-11-05 14:27:07 +01:00
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.cancel' | tr }}</button>
<button type="button" class="btn btn-success" ng-click="sysinfo.submit()" ng-disabled="sysinfoForm.$invalid || sysinfo.busy"><i class="fa fa-circle-notch fa-spin" ng-show="sysinfo.busy"></i> {{ 'main.dialog.save' | tr }}</button>
</div>
</div>
</div>
</div>
2020-08-31 21:45:56 -07:00
<!-- Modal block list -->
<div class="modal fade" id="blocklistModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
2020-11-05 14:27:07 +01:00
<h4 class="modal-title">{{ 'network.firewall.configure.title' | tr }}</h4>
2020-08-31 21:45:56 -07:00
</div>
<div class="modal-body">
<form name="blocklistChangeForm" role="form" novalidate ng-submit="blocklist.submit()" autocomplete="off">
<div class="form-group">
2020-11-05 14:27:07 +01:00
<label class="control-label">{{ 'network.firewall.blockedIpRanges' | tr }}</label>
<p class="small">{{ 'network.firewall.configure.description' | tr }}</p>
2020-08-31 21:45:56 -07:00
<div class="has-error" ng-show="blocklist.error.blocklist">{{ blocklist.error.blocklist }}</div>
2020-11-05 14:27:07 +01:00
<textarea ng-model="blocklist.blocklist" placeholder="{{ 'network.firewall.configure.blocklistPlaceholder' | tr }}" name="blocklist" class="form-control" ng-class="{ 'has-error': !blocklistChangeForm.blocklist.$dirty && blocklist.error.blocklist }" rows="4"></textarea>
2020-08-31 21:45:56 -07:00
</div>
<input class="ng-hide" type="submit"/>
</form>
</div>
<div class="modal-footer">
2020-11-05 14:27:07 +01:00
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.cancel' | tr }}</button>
<button type="button" class="btn btn-success" ng-click="blocklist.submit()"><i class="fa fa-circle-notch fa-spin" ng-show="blocklist.busy"></i> {{ 'main.dialog.save' | tr }}</button>
2020-08-31 21:45:56 -07:00
</div>
</div>
</div>
</div>
<div class="content">
<div class="text-left">
<h1>{{ 'network.title' | tr }}</h1>
</div>
<div class="text-left">
2020-11-05 14:27:07 +01:00
<h3>{{ 'network.ip.title' | tr }}</h3>
</div>
<div class="card">
<div class="row">
2019-11-07 10:20:34 -08:00
<div class="col-xs-12">
2020-11-05 14:27:07 +01:00
{{ 'network.ip.description' | tr }}
2019-11-07 10:20:34 -08:00
</div>
</div>
<br/>
<div class="row">
<div class="col-xs-6">
2020-11-05 14:27:07 +01:00
<span class="text-muted">{{ 'network.ip.provider' | tr }}</span>
2019-11-07 10:20:34 -08:00
</div>
<div class="col-xs-6 text-right">
<span>{{ prettySysinfoProviderName(sysinfo.provider) }}</span>
</div>
</div>
2019-11-07 10:41:24 -08:00
<div class="row">
2019-11-07 10:20:34 -08:00
<div class="col-xs-6">
2020-11-05 14:27:07 +01:00
<span class="text-muted">{{ 'network.ip.address' | tr }}</span>
2019-11-07 10:20:34 -08:00
</div>
<div class="col-xs-6 text-right">
2019-11-07 10:41:24 -08:00
<span ng-show="sysinfo.ip">{{ sysinfo.ip }}</span>
<span ng-show="!sysinfo.ip">{{ sysinfo.serverIp }} (detected)</span>
2019-11-07 10:20:34 -08:00
</div>
</div>
<div class="row" ng-show="sysinfo.ifname">
<div class="col-xs-6">
2020-11-05 14:27:07 +01:00
<span class="text-muted">{{ 'network.ip.interface' | tr }}</span>
2019-11-07 10:20:34 -08:00
</div>
<div class="col-xs-6 text-right">
<span>{{ sysinfo.ifname }}</span>
</div>
</div>
<br/>
<div class="row">
<div class="col-md-6 col-md-offset-6 text-right">
2020-11-05 14:27:07 +01:00
<button class="btn btn-outline btn-primary pull-right" ng-click="sysinfo.show()">{{ 'network.ip.configure' | tr }}</button>
</div>
</div>
</div>
2020-08-31 22:55:30 -07:00
<div class="text-left" ng-show="user.role === 'owner'">
2020-11-05 14:27:07 +01:00
<h3>{{ 'network.firewall.title' | tr }}</h3>
2020-08-31 21:45:56 -07:00
</div>
2020-08-31 22:55:30 -07:00
<div class="card" ng-show="user.role === 'owner'">
2020-08-31 21:45:56 -07:00
<div class="row">
<div class="col-xs-6">
2020-11-05 14:27:07 +01:00
<span class="text-muted">{{ 'network.firewall.blockedIpRanges' | tr }}</span>
2020-08-31 21:45:56 -07:00
</div>
<div class="col-xs-6 text-right">
2020-11-05 14:27:07 +01:00
<span>{{ 'network.firewall.blocklist' | tr:blocklist }} <a href="" ng-click="blocklist.show()"><i class="fa fa-edit text-small"></i></a></span>
2020-08-31 21:45:56 -07:00
</div>
</div>
</div>
2020-02-04 12:55:51 -08:00
<div class="text-left">
2020-11-05 14:27:07 +01:00
<h3>{{ 'network.dyndns.title' | tr }}</h3>
</div>
2020-02-04 12:55:51 -08:00
<div class="card">
<div class="row">
<div class="col-md-12">
2020-11-05 14:27:07 +01:00
<p>{{ 'network.dyndns.description' | tr }}</p>
<p class="text-danger" ng-show="dyndnsConfigure.error"><br/>{{ dyndnsConfigure.error }}</p>
<div class="checkbox">
<label>
2020-11-05 14:27:07 +01:00
<input type="checkbox" ng-model="dyndnsConfigure.enabled" name="dynamicDns" ng-disabled="dyndnsConfigure.busy"/>&nbsp; {{ 'network.dyndns.useLabel' | tr }}
</label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
2020-11-05 14:27:07 +01:00
<span class="text-success text-bold" ng-show="dyndnsConfigure.success">{{ 'network.dyndns.saved' | tr }}</span>
</div>
<div class="col-md-6 text-right">
2020-11-05 14:27:07 +01:00
<button class="btn btn-outline btn-primary pull-right" ng-click="dyndnsConfigure.submit()" ng-disabled="dyndnsConfigure.currentState === dyndnsConfigure.enabled"><i class="fa fa-circle-notch fa-spin" ng-show="dyndnsConfigure.busy"></i> {{ 'main.dialog.save' | tr }}</button>
</div>
</div>
</div>
</div>