#889 implement renumber in the web interface
This commit is contained in:
6
Changes
6
Changes
@@ -1,3 +1,9 @@
|
|||||||
|
2.052009 - 2022-06-xx
|
||||||
|
|
||||||
|
[NEW FEATURES]
|
||||||
|
|
||||||
|
* #889 implement renumber in the web interface
|
||||||
|
|
||||||
2.052008 - 2022-06-12
|
2.052008 - 2022-06-12
|
||||||
|
|
||||||
[NEW FEATURES]
|
[NEW FEATURES]
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use Dancer::Plugin::Auth::Extensible;
|
|||||||
|
|
||||||
use NetAddr::IP qw/:rfc3021 :lower/;
|
use NetAddr::IP qw/:rfc3021 :lower/;
|
||||||
use App::Netdisco::JobQueue 'jq_insert';
|
use App::Netdisco::JobQueue 'jq_insert';
|
||||||
use App::Netdisco::Util::Device 'delete_device';
|
use App::Netdisco::Util::Device qw/delete_device renumber_device/;
|
||||||
|
|
||||||
sub add_job {
|
sub add_job {
|
||||||
my ($action, $device, $subaction) = @_;
|
my ($action, $device, $subaction) = @_;
|
||||||
@@ -46,6 +46,21 @@ foreach my $action (@{ setting('job_prio')->{high} },
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ajax qr{/ajax/control/admin/(?:\w+/)?renumber} => require_role setting('defanged_admin') => sub {
|
||||||
|
send_error('Missing device', 400) unless param('device');
|
||||||
|
send_error('Missing new IP', 400) unless param('newip');
|
||||||
|
|
||||||
|
my $device = NetAddr::IP->new(param('device'));
|
||||||
|
send_error('Bad device', 400)
|
||||||
|
if ! $device or $device->addr eq '0.0.0.0';
|
||||||
|
|
||||||
|
my $newip = NetAddr::IP->new(param('newip'));
|
||||||
|
send_error('Bad new IP', 400)
|
||||||
|
if ! $newip or $newip->addr eq '0.0.0.0';
|
||||||
|
|
||||||
|
return renumber_device( $device->addr, $newip->addr );
|
||||||
|
};
|
||||||
|
|
||||||
ajax qr{/ajax/control/admin/(?:\w+/)?delete} => require_role setting('defanged_admin') => sub {
|
ajax qr{/ajax/control/admin/(?:\w+/)?delete} => require_role setting('defanged_admin') => sub {
|
||||||
send_error('Missing device', 400) unless param('device');
|
send_error('Missing device', 400) unless param('device');
|
||||||
|
|
||||||
|
|||||||
@@ -219,6 +219,11 @@ td > form.nd_inline-form {
|
|||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* pull right admin buttons in the device details view */
|
||||||
|
.nd_pull-right-admin-button {
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
/* fix layout of form fields inside the (pseudo devices) table */
|
/* fix layout of form fields inside the (pseudo devices) table */
|
||||||
.nd_center-cell input {
|
.nd_center-cell input {
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
|
|||||||
@@ -201,6 +201,10 @@
|
|||||||
<button class="btn btn-danger btn-small pull-right"
|
<button class="btn btn-danger btn-small pull-right"
|
||||||
data-toggle="modal" data-target="#nd_devdel" type="button">Delete</button>
|
data-toggle="modal" data-target="#nd_devdel" type="button">Delete</button>
|
||||||
|
|
||||||
|
<button class="btn btn-danger btn-small pull-right nd_pull-right-admin-button"
|
||||||
|
data-toggle="modal" data-target="#nd_devrenumber" type="button">Renumber</button>
|
||||||
|
|
||||||
|
|
||||||
<div id="nd_devdel" class="nd_modal nd_deep-horizon modal hide fade" tabindex="-1"
|
<div id="nd_devdel" class="nd_modal nd_deep-horizon modal hide fade" tabindex="-1"
|
||||||
role="dialog" aria-labelledby="nd_devdel-label" aria-hidden="true">
|
role="dialog" aria-labelledby="nd_devdel-label" aria-hidden="true">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
@@ -227,6 +231,29 @@
|
|||||||
<button class="btn btn-danger nd_adminbutton" name="delete" data-dismiss="modal">Confirm</button>
|
<button class="btn btn-danger nd_adminbutton" name="delete" data-dismiss="modal">Confirm</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="nd_devrenumber" class="nd_modal nd_deep-horizon modal hide fade" tabindex="-1"
|
||||||
|
role="dialog" aria-labelledby="nd_devrenumber-label" aria-hidden="true">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
|
||||||
|
<h3 id="nd_devrenumber-label">Confirm Renumber: [% d.dns || d.ip | html_entity %]</h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<blockquote>
|
||||||
|
<ul>
|
||||||
|
<li><p>This action is run immediately</p></li>
|
||||||
|
<li><p>No check is made as to whether the new IP is reachable</p></li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<textarea id="nd_devrenumber-newip" class="input-block-level" rows="1" data-form="renumber"
|
||||||
|
placeholder="Enter new IP address" name="newip"></textarea>
|
||||||
|
<input type="hidden" data-form="renumber" value="[% d.ip | html_entity %]" name="device"/>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="btn btn-success" data-dismiss="modal" aria-hidden="true">Cancel</button>
|
||||||
|
<button class="btn btn-danger nd_adminbutton" name="renumber" data-dismiss="modal">Confirm</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|||||||
Reference in New Issue
Block a user