diff --git a/Anvil/Tools.pm b/Anvil/Tools.pm index cf2eb583..a393afa2 100755 --- a/Anvil/Tools.pm +++ b/Anvil/Tools.pm @@ -933,11 +933,15 @@ sub _set_paths }, exe => { 'anvil-change-password' => "/usr/sbin/anvil-change-password", + 'anvil-configure-striker' => "/usr/sbin/anvil-configure-striker", + 'anvil-daemon' => "/usr/sbin/anvil-daemon", + 'anvil-maintenance-mode' => "/usr/sbin/anvil-maintenance-mode", + 'anvil-manage-power' => "/usr/sbin/anvil-manage-power", 'anvil-manage-striker-peers' => "/usr/sbin/anvil-manage-striker-peers", + 'anvil-manage-install-target' => "/usr/sbin/anvil-manage-install-target", 'anvil-prep-database' => "/usr/sbin/anvil-prep-database", - 'anvil-update-states' => "/usr/sbin/anvil-update-states", - 'anvil-manage-power' => "/usr/sbin/anvil-manage-power", 'anvil-report-memory' => "/usr/sbin/anvil-report-memory", + 'anvil-update-states' => "/usr/sbin/anvil-update-states", 'chmod' => "/usr/bin/chmod", 'chown' => "/usr/bin/chown", cp => "/usr/bin/cp", diff --git a/Anvil/Tools/Database.pm b/Anvil/Tools/Database.pm index a57209cc..0d2054b0 100755 --- a/Anvil/Tools/Database.pm +++ b/Anvil/Tools/Database.pm @@ -9,6 +9,7 @@ use DBI; use Scalar::Util qw(weaken isweak); use Data::Dumper; use Time::HiRes qw(gettimeofday tv_interval); +use Text::Diff; our $VERSION = "3.0.0"; my $THIS_FILE = "Database.pm"; @@ -840,17 +841,17 @@ sub connect # sure it matches ours. If it doesn't, skip this database. if (not $is_local) { + my $local_version = $anvil->_anvil_version({debug => $debug}); my $remote_version = $anvil->Get->anvil_version({ debug => $debug, target => $host, password => $password, }); $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { - remote_version => $remote_version, - "anvil->_anvil_version" => $anvil->_anvil_version, + remote_version => $remote_version, + local_version => $local_version, }}); - - if ($remote_version ne $anvil->_anvil_version({debug => $debug})) + if ($remote_version ne $local_version) { # Version doesn't match, $anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => 0, priority => "err", key => "log_0145", variables => { @@ -2183,7 +2184,7 @@ This default value is the local hostname. =head3 host_type (required) -This default value is the value returned by C<< System->determine_host_type >>. +This default value is the value returned by C<< System->get_host_type >>. =head3 host_uuid (required) @@ -2202,7 +2203,7 @@ sub insert_or_update_hosts my $file = defined $parameter->{file} ? $parameter->{file} : ""; my $line = defined $parameter->{line} ? $parameter->{line} : ""; my $host_name = defined $parameter->{host_name} ? $parameter->{host_name} : $anvil->_hostname; - my $host_type = defined $parameter->{host_type} ? $parameter->{host_type} : $anvil->System->determine_host_type; + my $host_type = defined $parameter->{host_type} ? $parameter->{host_type} : $anvil->System->get_host_type; my $host_uuid = defined $parameter->{host_uuid} ? $parameter->{host_uuid} : $anvil->Get->host_uuid; $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { uuid => $uuid, @@ -4162,7 +4163,7 @@ This is an optional field to mark a source UUID that this variable belongs to. B This is an optional database table name that the variables relates to. Generally it is used along side C<< variable_source_uuid >>, but that isn't required. -=head3 update_value_only (optional) +=head3 update_value_only (optional, default '0') When set to C<< 1 >>, this method will only update the variable's C<< variable_value >> column. Any other parameters are used to help locate the variable to update only. @@ -4186,9 +4187,8 @@ sub insert_or_update_variables my $variable_section = defined $parameter->{variable_section} ? $parameter->{variable_section} : ""; my $variable_source_uuid = defined $parameter->{variable_source_uuid} ? $parameter->{variable_source_uuid} : ""; my $variable_source_table = defined $parameter->{variable_source_table} ? $parameter->{variable_source_table} : ""; - my $update_value_only = defined $parameter->{update_value_only} ? $parameter->{update_value_only} : 1; - my $log_level = defined $parameter->{log_level} ? $parameter->{log_level} : 3; # Undocumented for now. - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { + my $update_value_only = defined $parameter->{update_value_only} ? $parameter->{update_value_only} : 0; + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { uuid => $uuid, file => $file, line => $line, @@ -4201,7 +4201,7 @@ sub insert_or_update_variables variable_source_uuid => $variable_source_uuid, variable_source_table => $variable_source_table, update_value_only => $update_value_only, - log_level => $log_level, + log_level => $debug, }}); # We'll need either the name or UUID. @@ -4223,11 +4223,11 @@ FROM variables WHERE variable_uuid = ".$anvil->data->{sys}{database}{use_handle}->quote($variable_uuid); - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }}); $variable_name = $anvil->Database->query({query => $query, source => $file ? $file." -> ".$THIS_FILE : $THIS_FILE, line => $line ? $line." -> ".__LINE__ : __LINE__})->[0]->[0]; $variable_name = "" if not defined $variable_name; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { variable_name => $variable_name }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { variable_name => $variable_name }}); } if (($variable_name) && (not $variable_uuid)) @@ -4249,23 +4249,23 @@ AND "; } $query .= ";"; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }}); my $results = $anvil->Database->query({query => $query, source => $file ? $file." -> ".$THIS_FILE : $THIS_FILE, line => $line ? $line." -> ".__LINE__ : __LINE__}); my $count = @{$results}; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { results => $results, count => $count, }}); foreach my $row (@{$results}) { $variable_uuid = $row->[0]; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { variable_uuid => $variable_uuid }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { variable_uuid => $variable_uuid }}); } } # If I still don't have an variable_uuid, we're INSERT'ing . - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { variable_uuid => $variable_uuid }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { variable_uuid => $variable_uuid }}); if (not $variable_uuid) { # INSERT @@ -4295,7 +4295,7 @@ INSERT INTO ".$anvil->data->{sys}{database}{use_handle}->quote($anvil->data->{sys}{database}{timestamp})." ); "; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }}); $anvil->Database->write({query => $query, source => $file ? $file." -> ".$THIS_FILE : $THIS_FILE, line => $line ? $line." -> ".__LINE__ : __LINE__}); } @@ -4321,11 +4321,11 @@ AND "; } $query .= ";"; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }}); my $results = $anvil->Database->query({query => $query, source => $file ? $file." -> ".$THIS_FILE : $THIS_FILE, line => $line ? $line." -> ".__LINE__ : __LINE__}); my $count = @{$results}; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { results => $results, count => $count, }}); @@ -4342,7 +4342,7 @@ AND foreach my $row (@{$results}) { my $old_variable_value = $row->[0]; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { old_variable_value => $old_variable_value }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { old_variable_value => $old_variable_value }}); # Anything change? if ($old_variable_value ne $variable_value) @@ -4366,7 +4366,7 @@ AND "; } $query .= ";"; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }}); $anvil->Database->write({query => $query, source => $file ? $file." -> ".$THIS_FILE : $THIS_FILE, line => $line ? $line." -> ".__LINE__ : __LINE__}); } @@ -4387,11 +4387,11 @@ FROM WHERE variable_uuid = ".$anvil->data->{sys}{database}{use_handle}->quote($variable_uuid)." ;"; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }}); my $results = $anvil->Database->query({query => $query, source => $file ? $file." -> ".$THIS_FILE : $THIS_FILE, line => $line ? $line." -> ".__LINE__ : __LINE__}); my $count = @{$results}; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { results => $results, count => $count, }}); @@ -4408,7 +4408,7 @@ WHERE my $old_variable_default = $row->[2]; my $old_variable_description = $row->[3]; my $old_variable_section = $row->[4]; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { old_variable_name => $old_variable_name, old_variable_value => $old_variable_value, old_variable_default => $old_variable_default, @@ -4437,7 +4437,7 @@ SET WHERE variable_uuid = ".$anvil->data->{sys}{database}{use_handle}->quote($variable_uuid)." "; - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { query => $query }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { query => $query }}); $anvil->Database->write({query => $query, source => $file ? $file." -> ".$THIS_FILE : $THIS_FILE, line => $line ? $line." -> ".__LINE__ : __LINE__}); } @@ -4445,7 +4445,7 @@ WHERE } } - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $log_level, list => { variable_uuid => $variable_uuid }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { variable_uuid => $variable_uuid }}); return($variable_uuid); } diff --git a/Anvil/Tools/Get.pm b/Anvil/Tools/Get.pm index 7f8e3fb8..61e7ad0f 100755 --- a/Anvil/Tools/Get.pm +++ b/Anvil/Tools/Get.pm @@ -115,6 +115,7 @@ If C<< target >> is set, this will be the user we connect to the remote machine This is the IP or host name of the machine to read the version of. If this is not set, the local system's version is checked. =cut +# NOTE: the version is set in anvil.spec by sed'ing the release and arch onto anvil.version in anvil-core's %post sub anvil_version { my $self = shift; @@ -174,6 +175,9 @@ fi; } } + # Clear off any newline. + $version =~ s/\n//gs; + return($version); } @@ -332,7 +336,7 @@ sub cgi # This is a password and we're not logging sensitive data, obfuscate it. $censored_value = $anvil->Words->string({key => "log_0186"}); } - $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 1, list => { + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { "cgi::${variable}::$say_value" => $censored_value, }}); } diff --git a/Anvil/Tools/System.pm b/Anvil/Tools/System.pm index fbb52364..bd89e478 100755 --- a/Anvil/Tools/System.pm +++ b/Anvil/Tools/System.pm @@ -21,7 +21,7 @@ my $THIS_FILE = "System.pm"; # check_daemon # check_if_configured # check_memory -# determine_host_type +# get_host_type # enable_daemon # find_matching_ip # get_ips @@ -536,7 +536,7 @@ sub check_memory return($used_ram); } -=head2 determine_host_type +=head2 get_host_type This method tries to determine the host type and returns a value suitable for use is the C<< hosts >> table. @@ -549,13 +549,13 @@ If that isn't set, it then looks at the short host name. The following rules are 3. If the host name ends in C<< dr >>, C<< dr >> is returned. =cut -sub determine_host_type +sub get_host_type { my $self = shift; my $parameter = shift; my $anvil = $self->parent; my $debug = defined $parameter->{debug} ? $parameter->{debug} : 3; - $anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => $debug, key => "log_0125", variables => { method => "System->determine_host_type()" }}); + $anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => $debug, key => "log_0125", variables => { method => "System->get_host_type()" }}); my $host_type = ""; my $host_name = $anvil->_short_hostname; @@ -916,6 +916,7 @@ sub get_uptime # Clean it up. We'll have gotten two numbers, the uptime in seconds (to two decimal places) and the # total idle time. We only care about the int number. $uptime =~ s/^(\d+)\..*$/$1/; + $uptime =~ s/\n//gs; $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => { uptime => $uptime }}); return($uptime); diff --git a/cgi-bin/striker b/cgi-bin/striker index ee5ca2be..355b7850 100755 --- a/cgi-bin/striker +++ b/cgi-bin/striker @@ -37,6 +37,7 @@ $anvil->Storage->read_config(); $anvil->data->{skin}{url} = $anvil->data->{path}{urls}{skins}."/".$anvil->Template->skin; $anvil->data->{form}{body} = ""; $anvil->data->{form}{error_massage} = ""; +$anvil->data->{form}{ok_message} = ""; $anvil->data->{form}{back_link} = ""; $anvil->data->{form}{refresh_link} = ""; @@ -141,10 +142,19 @@ sub print_and_exit }}); # Display the page. + my $say_center_top_bar = " "; + if ($anvil->data->{form}{error_massage}) + { + $say_center_top_bar = $anvil->data->{form}{error_massage}; + } + elsif ($anvil->data->{form}{ok_message}) + { + $say_center_top_bar = $anvil->data->{form}{ok_message}; + } my $body = $anvil->Template->get({file => "main.html", name => "master", variables => { header => $header, skin_url => $anvil->data->{path}{urls}{skins}."/".$anvil->Template->skin, - center_top_bar => $anvil->data->{form}{error_massage} ? $anvil->data->{form}{error_massage} : " ", + center_top_bar => $say_center_top_bar, right_top_bar => $right_buttons, left_top_bar => $left_buttons, center_body => $anvil->data->{form}{body}, @@ -243,6 +253,10 @@ sub process_task { process_update($anvil); } + elsif ($anvil->data->{cgi}{task}{value} eq "install-target") + { + process_install_target($anvil); + } elsif ($anvil->data->{cgi}{task}{value} eq "reboot") { process_power($anvil, "reboot"); @@ -254,15 +268,56 @@ sub process_task else { # What we show for the reboot icon and text depends on if a reboot is pending. - my $reboot_needed = $anvil->System->reboot_needed(); - my $reboot_icon = $reboot_needed ? "reboot_needed_icon.png" : "reboot_icon.png"; - my $reboot_message = $reboot_needed ? "#!string!striker_0093!#" : "#!string!striker_0092!#"; + my $reboot_needed = $anvil->System->reboot_needed(); + my $reboot_icon = $reboot_needed ? "reboot_needed_icon.png" : "reboot_icon.png"; + my $reboot_message = $reboot_needed ? "#!string!striker_0093!#" : "#!string!striker_0092!#"; + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { + reboot_needed => $reboot_needed, + reboot_icon => $reboot_icon, + reboot_message => $reboot_message, + }}); + + # What we show for the install target icon and text depends on if it is enabled or not. + my $install_target_title = "#!string!striker_0109!#"; + my $install_target_icon = "install_target_disabled.png"; + my $install_target_subtask = "unavailable"; + my ($install_manifest_status, $variable_uuid, $modified_date) = $anvil->Database->read_variable({ + variable_name => "install-target::enabled", + variable_source_uuid => $anvil->Get->host_uuid, + variable_source_table => "hosts", + }); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { + install_manifest_status => $install_manifest_status, + variable_uuid => $variable_uuid, + modified_date => $modified_date, + }}); + if ($install_manifest_status eq "enabled") + { + # Offer the button to disable it. + $install_target_title = "#!string!striker_0108!#"; + $install_target_icon = "install_target_enabled.png"; + $install_target_subtask = "disable"; + } + elsif ($install_manifest_status eq "disabled") + { + # Offer the button to enable it. + $install_target_title = "#!string!striker_0107!#"; + $install_target_subtask = "enable"; + } + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { + install_target_title => $install_target_title, + install_target_icon => $install_target_icon, + install_target_subtask => $install_target_subtask, + }}); # The 'back' goes home $anvil->data->{form}{back_link} = "?"; $anvil->data->{form}{body} = $anvil->Template->get({file => "striker.html", name => "striker-setup", variables => { - reboot_icon => $reboot_icon, - reboot_message => $reboot_message, + reboot_icon => $reboot_icon, + reboot_message => $reboot_message, + install_target_icon => $install_target_icon, + install_target_title => $install_target_title, + install_target_subtask => $install_target_subtask, }}); } } @@ -289,6 +344,52 @@ sub process_task return(0); } +# This enables or disables the Install Target feature +sub process_install_target +{ + my ($anvil) = @_; + + # NOTE: We don't ask for confirmation, it's a low risk task. + # What are we doing? + $anvil->data->{cgi}{subtask}{value} = "" if not defined $anvil->data->{cgi}{subtask}{value}; + if (($anvil->data->{cgi}{subtask}{value} eq "enable") or ($anvil->data->{cgi}{subtask}{value} eq "disable")) + { + my ($job_uuid) = $anvil->Database->insert_or_update_jobs({ + file => $THIS_FILE, + line => __LINE__, + job_command => $anvil->data->{path}{exe}{'anvil-manage-install-target'}." --".$anvil->data->{cgi}{subtask}{value}, + job_data => "", + job_name => "install-target::".$anvil->data->{cgi}{task}{value}, + job_title => "job_0015", + job_description => "job_0016", + job_progress => 0, + }); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { job_uuid => $job_uuid }}); + + # Show the use that the job has been saved. + my $message = "striker_0111"; + if ($anvil->data->{cgi}{subtask}{value} eq "enable") + { + $message = "striker_0112"; + } + $anvil->data->{form}{body} = $anvil->Template->get({file => "striker.html", name => "job recorded", variables => { + title_id => "", + message_id => "", + reload_url => "/cgi-bin/".$THIS_FILE."?striker=true", + title => "#!string!striker_0044!#", + description => "#!string!".$message."!#", + }}); + $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { "form::body" => $anvil->data->{form}{body} }}); + } + else + { + # Just ignore it, someone's mucking with the subask value. + $anvil->data->{form}{error_massage} = $anvil->Template->get({file => "main.html", name => "error_message", variables => { error_message => $anvil->Words->string({key => "striker_warning_0009"}) }}); + } + + return(0); +} + # This handles powering off or rebooting this machine sub process_power { @@ -304,7 +405,7 @@ sub process_power debug => 3, file => $THIS_FILE, line => __LINE__, - job_command => $task eq "poweroff" ? "anvil-manage-power --poweroff -y" : "anvil-manage-power --reboot -y", + job_command => $task eq "poweroff" ? $anvil->data->{path}{exe}{'anvil-manage-power'}." --poweroff -y" : $anvil->data->{path}{exe}{'anvil-manage-power'}." --reboot -y", job_data => "", job_name => "reboot::system", job_title => $task eq "poweroff" ? "job_0010" : "job_0009", @@ -355,7 +456,7 @@ sub process_update debug => 3, file => $THIS_FILE, line => __LINE__, - job_command => "anvil-update-system", + job_command => $anvil->data->{path}{exe}{'anvil-update-system'}, job_data => "", job_name => "update::system", job_title => "job_0003", @@ -615,7 +716,7 @@ sub delete_sync_peer debug => 3, file => $THIS_FILE, line => __LINE__, - job_command => "anvil-manage-striker-peers --remove --host-uuid ".$uuid, + job_command => $anvil->data->{path}{exe}{'anvil-manage-striker-peers'}." --remove --host-uuid ".$uuid, job_data => "", job_name => "striker-peer::remove", job_title => "job_0013", @@ -818,7 +919,7 @@ sub add_sync_peer if ($anvil->data->{cgi}{confirm}{value}) { # OK, save the job! - my $job_command = "anvil-manage-striker-peers --add --host-uuid ".$peer_uuid." --host ".$host." --port ".$port." --ping ".$ping; + my $job_command = $anvil->data->{path}{exe}{'anvil-manage-striker-peers'}." --add --host-uuid ".$peer_uuid." --host ".$host." --port ".$port." --ping ".$ping; $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { job_command => $job_command, password => $anvil->Log->secure ? $password : $anvil->Words->string({key => "log_0186"}), @@ -838,7 +939,7 @@ sub add_sync_peer # See which of our IPs match theirs. If the peer is a hostname, first my $host_uuid = $anvil->Get->host_uuid; my $sql_port = $anvil->data->{database}{$host_uuid}{port}; - my $job_command = "anvil-manage-striker-peers --add --host-uuid ".$host_uuid." --host ".$use_ip." --port ".$sql_port." --ping ".$ping; + my $job_command = $anvil->data->{path}{exe}{'anvil-manage-striker-peers'}." --add --host-uuid ".$host_uuid." --host ".$use_ip." --port ".$sql_port." --ping ".$ping; $job_data .= "\npeer_job_command=".$job_command; $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, secure => 0, list => { job_command => $job_command }}); $anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, secure => 1, list => { job_data => $job_data }}); @@ -932,7 +1033,7 @@ sub configure_striker debug => 3, file => $THIS_FILE, line => __LINE__, - job_command => "anvil-configure-striker", + job_command => $anvil->data->{path}{exe}{'anvil-configure-striker'}, job_data => "form::config_step2", job_name => "configure::network", job_title => "job_0001", diff --git a/html/skins/alteeve/images/install_target_disabled.png b/html/skins/alteeve/images/install_target_disabled.png new file mode 100644 index 00000000..e2ca4e07 Binary files /dev/null and b/html/skins/alteeve/images/install_target_disabled.png differ diff --git a/html/skins/alteeve/images/install_target_enabled.png b/html/skins/alteeve/images/install_target_enabled.png new file mode 100644 index 00000000..8c3a8238 Binary files /dev/null and b/html/skins/alteeve/images/install_target_enabled.png differ diff --git a/html/skins/alteeve/images/install_target_original.png b/html/skins/alteeve/images/install_target_original.png new file mode 100644 index 00000000..f45c2b8a Binary files /dev/null and b/html/skins/alteeve/images/install_target_original.png differ diff --git a/html/skins/alteeve/images/install_target_original.xcf b/html/skins/alteeve/images/install_target_original.xcf new file mode 100644 index 00000000..dd095ed1 Binary files /dev/null and b/html/skins/alteeve/images/install_target_original.xcf differ diff --git a/html/skins/alteeve/images/sources.txt b/html/skins/alteeve/images/sources.txt index 28698529..00a5e7fd 100644 --- a/html/skins/alteeve/images/sources.txt +++ b/html/skins/alteeve/images/sources.txt @@ -44,3 +44,5 @@ power by Blair Adams from the Noun Project (https://thenounproject.com/search/?q reset by Mooms from the Noun Project (https://thenounproject.com/search/?q=reset&i=1033425) - reboot_icon.png +Target by bezier master from the Noun Project (https://thenounproject.com/term/target/898037/) +- install_target.png diff --git a/html/skins/alteeve/main.css b/html/skins/alteeve/main.css index d7e5da2d..c851e4fb 100644 --- a/html/skins/alteeve/main.css +++ b/html/skins/alteeve/main.css @@ -73,6 +73,10 @@ body { font-size: 1em; } +.disabled { + color: #9D9D9D; +} + .error_message { border-left: 3px solid #d02724; border-right: 3px solid #d02724; @@ -321,7 +325,7 @@ td.top_padded_cell { } .title { - font-size: 1.2em; + font-size: 1.8em; text-align: center; } diff --git a/html/skins/alteeve/main.html b/html/skins/alteeve/main.html index a452938d..73ec92d6 100644 --- a/html/skins/alteeve/main.html +++ b/html/skins/alteeve/main.html @@ -64,6 +64,10 @@
* #!variable!error_message!#
+ +
* #!variable!ok_message!#
+ +