2019-11-07 15:26:18 +01:00
<!-- Modal sysinfo -->
< div class = "modal fade" id = "sysinfoModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
2019-11-07 10:20:34 -08:00
< h4 class = "modal-title" > Configure IP Provider< / h4 >
2019-11-07 15:26:18 +01:00
< / div >
< div class = "modal-body" >
< form name = "sysinfoForm" role = "form" novalidate ng-submit = "sysinfo.submit()" autocomplete = "off" >
< fieldset >
< div class = "form-group" >
2019-12-18 14:29:42 -08:00
< label class = "control-label" > Provider < sup > < a ng-href = "{{ config.webServerOrigin }}/documentation/networking/#ip-configuration" class = "help" target = "_blank" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup > < / label >
2019-11-07 15:26:18 +01:00
< 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'" >
The Public IP address of the server will be < a href = "https://api.cloudron.io/api/v1/helper/public_ip" target = "_blank" > automatically detected< / a > .
< / div >
2019-11-07 15:26:18 +01:00
<!-- Fixed -->
< div class = "form-group" ng-show = "sysinfo.newProvider === 'fixed'" ng-class = "{ 'has-error': (!sysinfoForm.ip.$dirty && sysinfo.error.ip) }" >
< label class = "control-label" > IP Address< / 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) }" >
< label class = "control-label" > Interface Name< / label >
< p > List available devices on the server with < 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" >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > Cancel< / 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 > Save< / 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" >
< h4 class = "modal-title" > Firewall Configuration< / h4 >
< / div >
< div class = "modal-body" >
< form name = "blocklistChangeForm" role = "form" novalidate ng-submit = "blocklist.submit()" autocomplete = "off" >
< div class = "form-group" >
< label class = "control-label" > Blocked IPs and Ranges< / label >
2020-08-31 22:12:33 -07:00
< p class = "small" > Matched addresses will be unable to connect to the server including the mail server, the dashboard and all apps. Be careful not to lock yourself out.< / p >
2020-08-31 21:45:56 -07:00
< div class = "has-error" ng-show = "blocklist.error.blocklist" > {{ blocklist.error.blocklist }}< / div >
< textarea ng-model = "blocklist.blocklist" placeholder = "Line separated email address patterns" name = "blocklist" class = "form-control" ng-class = "{ 'has-error': !blocklistChangeForm.blocklist.$dirty && blocklist.error.blocklist }" rows = "4" > < / textarea >
< / div >
< input class = "ng-hide" type = "submit" / >
< / form >
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > Cancel< / 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 > Save< / button >
< / div >
< / div >
< / div >
< / div >
2019-11-07 15:26:18 +01:00
< div class = "content" >
< div class = "text-left" >
< h1 > Network< / h1 >
< / div >
< div class = "text-left" >
2019-11-07 10:20:34 -08:00
< h3 > IP Address< / h3 >
2019-11-07 15:26:18 +01:00
< / div >
< div class = "card" >
< div class = "row" >
2019-11-07 10:20:34 -08:00
< div class = "col-xs-12" >
Cloudron uses this IP address when setting up DNS records.
< / div >
< / div >
< br / >
< div class = "row" >
< div class = "col-xs-6" >
< span class = "text-muted" > Provider< / span >
< / div >
< div class = "col-xs-6 text-right" >
< span > {{ prettySysinfoProviderName(sysinfo.provider) }}< / span >
2019-11-07 15:26:18 +01:00
< / 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" >
< span class = "text-muted" > IP Address< / span >
< / 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" >
< span class = "text-muted" > Network Interface Name< / span >
< / div >
< div class = "col-xs-6 text-right" >
< span > {{ sysinfo.ifname }}< / span >
< / div >
< / div >
< br / >
2019-11-07 15:26:18 +01:00
< div class = "row" >
< div class = "col-md-6 col-md-offset-6 text-right" >
2019-11-07 10:20:34 -08:00
< button class = "btn btn-outline btn-primary pull-right" ng-click = "sysinfo.show()" > Configure< / button >
2019-11-07 15:26:18 +01:00
< / div >
< / div >
< / div >
2020-08-31 22:55:30 -07:00
< div class = "text-left" ng-show = "user.role === 'owner'" >
2020-08-31 21:45:56 -07:00
< h3 > Firewall< / h3 >
< / 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" >
< span class = "text-muted" > Blocked IPs & Ranges< / span >
< / div >
< div class = "col-xs-6 text-right" >
< span > {{ blocklist.currentBlocklist.length }} IP(s) blocked < a href = "" ng-click = "blocklist.show()" > < i class = "fa fa-edit text-small" > < / i > < / a > < / span >
< / div >
< / div >
< / div >
2020-02-04 12:55:51 -08:00
< div class = "text-left" >
2019-11-07 15:26:18 +01:00
< h3 > Dynamic DNS< / h3 >
< / div >
2020-02-04 12:55:51 -08:00
< div class = "card" >
2019-11-07 15:26:18 +01:00
< div class = "row" >
< div class = "col-md-12" >
< p >
Enable this option to keep all your DNS records in sync with a changing IP address.
This is useful when Cloudron runs in a network with a frequently changing public IP address like a home connection.
< / p >
< p class = "text-danger" ng-show = "dyndnsConfigure.error" > < br / > {{ dyndnsConfigure.error }}< / p >
< div class = "checkbox" >
< label >
< input type = "checkbox" ng-model = "dyndnsConfigure.enabled" name = "dynamicDns" ng-disabled = "dyndnsConfigure.busy" / > Use Dynamic DNS
< / label >
< / div >
< / div >
< / div >
< div class = "row" >
< div class = "col-md-6" >
< span class = "text-success text-bold" ng-show = "dyndnsConfigure.success" > Saved< / span >
< / div >
< div class = "col-md-6 text-right" >
< 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 > Save< / button >
< / div >
< / div >
< / div >
< / div >