+#
+## Function to set correct ownership for single files and directories.
+#
+
+sub set_ownership($) {
+ my ($target) = @_;
+
+ # User and group of the WUI.
+ my $uname = "nobody";
+ my $grname = "nobody";
+
+ # The chown function implemented in perl requies the user and group as nummeric id's.
+ my $uid = getpwnam($uname);
+ my $gid = getgrnam($grname);
+
+ # Check if the given target exists.
+ unless ($target) {
+ # Stop the script and print error message.
+ die "The $target does not exist. Cannot change the ownership!\n";
+ }
+
+ # Check weather the target is a file or directory.
+ if (-f $target) {
+ # Change ownership ot the single file.
+ chown($uid, $gid, "$target");
+ } elsif (-d $target) {
+ # Do a directory listing.
+ opendir(DIR, $target) or die $!;
+ # Loop through the direcory.
+ while (my $file = readdir(DIR)) {
+
+ # We only want files.
+ next unless (-f "$target/$file");
+
+ # Set correct ownership for the files.
+ chown($uid, $gid, "$target/$file");
+ }
+
+ closedir(DIR);
+
+ # Change ownership of the directory.
+ chown($uid, $gid, "$target");
+ }
+}
+
+#
+## Function to read-in the aliases file and returns all configured and enabled aliases.
+#
+sub get_aliases() {
+ # Location of the aliases file.
+ my $aliases_file = "${General::swroot}/ethernet/aliases";
+
+ # Array to store the aliases.
+ my @aliases;
+
+ # Check if the file is empty.
+ if (-z $aliases_file) {
+ # Abort nothing to do.
+ return;
+ }
+
+ # Open the aliases file.
+ open(ALIASES, $aliases_file) or die "Could not open $aliases_file. $!\n";
+
+ # Loop through the file content.
+ while (my $line = <ALIASES>) {
+ # Remove newlines.
+ chomp($line);
+
+ # Splitt line content into single chunks.
+ my ($address, $state, $remark) = split(/\,/, $line);
+
+ # Check if the state of the current processed alias is "on".
+ if ($state eq "on") {
+ # Check if the address is valid.
+ if(&Network::check_ip_address($address)) {
+ # Add the alias to the array of aliases.
+ push(@aliases, $address);
+ }
+ }
+ }
+
+ # Close file handle.
+ close(ALIASES);
+
+ # Return the array.
+ return @aliases;
+}
+
+#
+## Function to grab the current assigned IP-address on red.
+#
+sub get_red_address() {
+ # File, which contains the current IP-address of the red interface.
+ my $file = "${General::swroot}/red/local-ipaddress";
+
+ # Check if the file exists.
+ if (-e $file) {
+ # Open the given file.
+ open(FILE, "$file") or die "Could not open $file.";
+
+ # Obtain the address from the first line of the file.
+ my $address = <FILE>;
+
+ # Close filehandle
+ close(FILE);
+
+ # Remove newlines.
+ chomp $address;
+
+ # Check if the grabbed address is valid.
+ if (&General::validip($address)) {
+ # Return the address.
+ return $address;
+ }
+ }
+
+ # Return nothing.
+ return;
+}
+