@ -30,7 +30,7 @@ $IS_DEV = ( -e $config->{DEV_FEATURES_SCRIPT});
#################### subs ######################
sub load_hdf ()
sub load_hdf
{
my $ hdf = ClearSilver::HDF - > new ( ) ;
@ -55,7 +55,7 @@ sub load_hdf()
}
sub load_language_data ()
sub load_language_data
# import the specified language data
# every call overrides previously loaded values
# it is sufficient to call it somewhere before "render"
@ -68,7 +68,7 @@ sub load_language_data()
}
sub get_available_languages ()
sub get_available_languages
# import the names of all available languages
{
my $ data = shift ;
@ -88,7 +88,7 @@ sub get_available_languages()
}
sub log_msg ()
sub log_msg
{
my $ text = shift ;
open ( LOGFILE , ">> $LOG_FILE" ) ;
@ -137,7 +137,14 @@ sub get_current_ip
}
sub render ()
sub get_admin_pw
# returns the current administration password - empty, if it is not used
{
return `$CB_SCRIPT get_config admin_pw` ;
}
sub render
{
$ pagedata - > setValue ( "PageName" , "$pagename" ) ;
my $ pagefile = "$TEMPLATE_DIR/main.cs" ;
@ -181,30 +188,32 @@ sub box_init
# partitioning, config and initial cryptsetup
open ( PW_INPUT , "|$CB_SCRIPT box-init-fg" ) ;
print PW_INPUT "$admin_pw" ;
print PW_INPUT "$crypto_pw" ;
print PW_INPUT $ crypto_pw ;
close ( PW_INPUT ) ;
# set administration password
system ( "$CB_SCRIPT" , "set_config" , "admin_pw" , "$admin_pw" ) ;
# wipe and mkfs takes some time - it will be done in the background
system ( "$CB_SCRIPT" , "box-init-bg" ) ;
}
sub system_poweroff ()
sub system_poweroff
{
& umount_vol ( ) if ( & check_mounted ( ) ) ;
system ( "$CB_SCRIPT" , "poweroff" ) ;
}
sub system_reboot ()
sub system_reboot
{
& umount_vol ( ) if ( & check_mounted ( ) ) ;
system ( "$CB_SCRIPT" , "reboot" ) ;
}
sub validate_ip ()
sub validate_ip
{
my $ ip = shift ;
my @ octets = split /\./ , $ ip ;
@ -218,7 +227,7 @@ sub validate_ip()
}
sub validate_timeout ()
sub validate_timeout
{
my $ timeout = shift ;
return 0 if ( $ timeout =~ /\D/ ) ;
@ -227,7 +236,7 @@ sub validate_timeout()
# check for a valid interface language
sub validate_language ()
sub validate_language
{
my $ language = shift ;
# check for non-alphanumeric character
@ -239,7 +248,7 @@ sub validate_language()
# check for a valid documentation language
sub validate_doc_language ()
sub validate_doc_language
{
my $ language = shift ;
# check for non-alphanumeric character
@ -298,7 +307,7 @@ if ( ! &check_ssl()) {
################ umount_do #######################
if ( $ action eq 'umount_do' ) {
if ( ! & check_config ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'Not Configur ed') ;
$ pagedata - > setValue ( 'Data.Warning' , 'Not Initializ ed') ;
$ pagedata - > setValue ( 'Data.Action' , 'init_form' ) ;
} elsif ( & check_init_running ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'InitNotFinished' ) ;
@ -321,7 +330,7 @@ if ( ! &check_ssl()) {
} elsif ( $ action eq 'mount_do' ) {
# mount requested
if ( ! & check_config ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'Not Configur ed') ;
$ pagedata - > setValue ( 'Data.Warning' , 'Not Initializ ed') ;
$ pagedata - > setValue ( 'Data.Action' , 'init_form' ) ;
} elsif ( & check_init_running ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'InitNotFinished' ) ;
@ -347,7 +356,7 @@ if ( ! &check_ssl()) {
################## mount_ask #######################
} elsif ( $ action eq 'mount_ask' ) {
if ( ! & check_config ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'Not Configur ed') ;
$ pagedata - > setValue ( 'Data.Warning' , 'Not Initializ ed') ;
$ pagedata - > setValue ( 'Data.Action' , 'init_form' ) ;
} elsif ( & check_init_running ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'InitNotFinished' ) ;
@ -361,7 +370,7 @@ if ( ! &check_ssl()) {
################# umount_ask ########################
} elsif ( $ action eq 'umount_ask' ) {
if ( ! & check_config ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'Not Configur ed') ;
$ pagedata - > setValue ( 'Data.Warning' , 'Not Initializ ed') ;
$ pagedata - > setValue ( 'Data.Action' , 'init_form' ) ;
} elsif ( ! & check_mounted ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'NotMounted' ) ;
@ -382,7 +391,11 @@ if ( ! &check_ssl()) {
}
#################### init_do ########################
} elsif ( $ action eq 'init_do' ) {
if ( $ query - > param ( 'admin_password' ) ne $ query - > param ( 'admin_password2' ) ) {
my $ admin_pw = & get_admin_pw ;
if ( $ admin_pw ne '' && $ admin_pw ne $ query - > param ( 'admin_password' ) )
$ pagedata - > setValue ( 'Data.Warning' , 'WrongAdminPassword' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'init_form' ) ;
} elsif ( $ query - > param ( 'admin_password' ) ne $ query - > param ( 'admin_password2' ) ) {
# different admin-passwords
$ pagedata - > setValue ( 'Data.Warning' , 'DifferentAdminPasswords' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'init_form' ) ;
@ -411,7 +424,7 @@ if ( ! &check_ssl()) {
#################### config_ask ######################
} elsif ( $ action eq 'config_ask' ) {
if ( ! & check_config ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'Not Configur ed') ;
$ pagedata - > setValue ( 'Data.Warning' , 'Not Initializ ed') ;
$ pagedata - > setValue ( 'Data.Action' , 'init_form' ) ;
} else {
$ pagedata - > setValue ( 'Data.Action' , 'config_form' ) ;
@ -419,46 +432,49 @@ if ( ! &check_ssl()) {
#################### config_do #######################
} elsif ( $ action eq 'config_do' ) {
if ( ! & check_config ( ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'Not Configur ed') ;
$ pagedata - > setValue ( 'Data.Warning' , 'Not Initializ ed') ;
$ pagedata - > setValue ( 'Data.Action' , 'init_form' ) ;
} else {
if ( ! & validate_language ( $ query - > param ( 'language' ) ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'InvalidLanguage' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'config_form' ) ;
my $ admin_pw = & get_admin_pw ;
if ( $ admin_pw ne '' && $ admin_pw ne $ query - > param ( 'admin_password' ) )
$ pagedata - > setValue ( 'Data.Warning' , 'WrongAdminPassword' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'config_form' ) ;
} elsif ( ! & validate_language ( $ query - > param ( 'language' ) ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'InvalidLanguage' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'config_form' ) ;
} elsif ( ! & validate_ip ( $ query - > param ( 'ip' ) ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'InvalidIP' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'config_form' ) ;
$ pagedata - > setValue ( 'Data.Warning' , 'InvalidIP' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'config_form' ) ;
} elsif ( ! & validate_timeout ( $ query - > param ( 'timeout' ) ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'InvalidTimeOut' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'config_form' ) ;
} else {
system ( "$CB_SCRIPT" , "set_config" , "language" , $ query - > param ( 'language' ) ) ;
system ( "$CB_SCRIPT" , "set_config" , "timeout" , $ query - > param ( 'timeout' ) ) ;
# check, if the ip was reconfigured
if ( $ query - > param ( 'ip' ) ne `$CB_SCRIPT get_config ip` )
{
# set the new value
system ( "$CB_SCRIPT" , "set_config" , "ip" , $ query - > param ( 'ip' ) ) ;
# reconfigure the network interface
system ( "$CB_SCRIPT" , "update_ip_address" ) ;
# redirect to the new address
$ pagedata - > setValue ( 'Data.Redirect.URL' , "https://" . $ query - > param ( 'ip' ) . $ ENV { 'SCRIPT_NAME' } ) ;
$ pagedata - > setValue ( 'Data.Redirect.Delay' , "5" ) ;
# display a warning for the redirection
$ pagedata - > setValue ( 'Data.Warning' , 'IPAddressChanged' ) ;
}
# check for success
if ( `$CB_SCRIPT get_config timeout` ne $ query - > param ( 'timeout' ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'ConfigTimeOutFailed' ) ;
} elsif ( `$CB_SCRIPT get_config ip` ne $ query - > param ( 'ip' ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'ConfigIPFailed' ) ;
} elsif ( `$CB_SCRIPT get_config language` ne $ query - > param ( 'language' ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'ConfigLanguageFailed' ) ;
$ pagedata - > setValue ( 'Data.Warning' , 'InvalidTimeOut' ) ;
$ pagedata - > setValue ( 'Data.Action' , 'config_form' ) ;
} else {
$ pagedata - > setValue ( 'Data.Success' , 'ConfigSaved' ) ;
}
$ pagedata - > setValue ( 'Data.Action' , 'intro' ) ;
system ( "$CB_SCRIPT" , "set_config" , "language" , $ query - > param ( 'language' ) ) ;
system ( "$CB_SCRIPT" , "set_config" , "timeout" , $ query - > param ( 'timeout' ) ) ;
# check, if the ip was reconfigured
if ( $ query - > param ( 'ip' ) ne `$CB_SCRIPT get_config ip` )
{
# set the new value
system ( "$CB_SCRIPT" , "set_config" , "ip" , $ query - > param ( 'ip' ) ) ;
# reconfigure the network interface
system ( "$CB_SCRIPT" , "update_ip_address" ) ;
# redirect to the new address
$ pagedata - > setValue ( 'Data.Redirect.URL' , "https://" . $ query - > param ( 'ip' ) . $ ENV { 'SCRIPT_NAME' } ) ;
$ pagedata - > setValue ( 'Data.Redirect.Delay' , "5" ) ;
# display a warning for the redirection
$ pagedata - > setValue ( 'Data.Warning' , 'IPAddressChanged' ) ;
}
# check for success
if ( `$CB_SCRIPT get_config timeout` ne $ query - > param ( 'timeout' ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'ConfigTimeOutFailed' ) ;
} elsif ( `$CB_SCRIPT get_config ip` ne $ query - > param ( 'ip' ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'ConfigIPFailed' ) ;
} elsif ( `$CB_SCRIPT get_config language` ne $ query - > param ( 'language' ) ) {
$ pagedata - > setValue ( 'Data.Warning' , 'ConfigLanguageFailed' ) ;
} else {
$ pagedata - > setValue ( 'Data.Success' , 'ConfigSaved' ) ;
}
$ pagedata - > setValue ( 'Data.Action' , 'intro' ) ;
}
}
#################### show_log #######################
@ -502,6 +518,9 @@ $pagedata->setValue('Data.Status.Mounted', &check_mounted() ? 1 : 0);
my $ output = & get_current_ip ( ) ;
$ pagedata - > setValue ( 'Data.Status.IP' , "$output" ) ;
$ output = & get_admin_pw ( ) ;
$ pagedata - > setValue ( 'Data.Config.AdminPasswordIsSet' , 1 ) if ( $ output ne '' ) ;
$ output = `$CB_SCRIPT diskinfo 2>&1 | sed 's#\$#<br/>#'` ;
$ pagedata - > setValue ( 'Data.PartitionInfo' , "$output" ) ;