#------------------------------------------------------------
# Information bay directories
#------------------------------------------------------------
{
    my %accounts;
    tie %accounts, 'esmith::config', '/home/e-smith/accounts';
    my $key;
    my $value;
    my $result = "";
    while (($key,$value) = each %accounts)
    {
   my ($type, %properties) = split (/\|/, $value, -1);
   if ($type eq 'ibay')
   {
       #------------------------------------------------------------
       # Figure out which combination of parameters to use. If
       # PublicAccess parameter is present, this is e-smith 4.0.
       # Otherwise, it's e-smith 3.0.
       #------------------------------------------------------------
            my $allow;
       my $pass;
       my $satisfy;
       
            if ($properties{'PublicAccess'})
       {
      if ($properties{'PublicAccess'} eq 'none')
      {
          next;
      }
      elsif ($properties{'PublicAccess'} eq 'local')
      {
          $allow   = $localAccess;
          $pass    = 0;
          $satisfy = 'all';
      }
      elsif ($properties{'PublicAccess'} eq 'local-pw')
      {
          $allow   = $localAccess;
          $pass    = 1;
          $satisfy = 'all';
      }
      elsif ($properties{'PublicAccess'} eq 'global')
      {
          $allow   = 'all';
          $pass    = 0;
          $satisfy = 'all';
      }
      elsif ($properties{'PublicAccess'} eq 'global-pw')
      {
          $allow   = 'all';
          $pass    = 1;
          $satisfy = 'all';
      }
      elsif ($properties{'PublicAccess'} eq 'global-pw-remote')
      {
          $allow   = $localAccess;
          $pass    = 1;
          $satisfy = 'any';
      }
       }
       elsif ($properties {'ReadAccess'} eq 'global')
       {
      if ($properties {'UsePassword'} eq 'yes')
      {
          $allow   = 'all';
          $pass    = 1;
          $satisfy = 'all';
      }
      else
      {
          $allow   = 'all';
          $pass    = 0;
          $satisfy = 'all';
      }
       }
       else
       {
      if ($properties {'UsePassword'} eq 'yes')
      {
          $allow   = $localAccess;
          $pass    = 1;
          $satisfy = 'all';
      }
      else
      {
          $allow   = $localAccess;
          $pass    = 0;
          $satisfy = 'all';
      }
       }
       my $dynamicContent = $properties{'CgiBin'} || "disabled";
            $result .= "\n";
            $result .= "#------------------------------------------------------------\n";
       $result .= "# $key ibay directories ($properties{'Name'})\n";
            $result .= "#------------------------------------------------------------\n";
            $result .= "\n";
            $result .= "\n";
            $result .= "    Options Indexes\n";
       if ($dynamicContent eq 'enabled')
       {
      $result .= "    Options +Includes\n";
       }
       else
       {
      $result .= "    \n";
      $result .= "        order deny,allow\n";
      $result .= "        Deny from all\n";
      $result .= "    \n";
      $result .= "    Options +IncludesNOEXEC\n";
       }
            $result .= "    AllowOverride None\n";
            $result .= "    order deny,allow\n";
            $result .= "    deny from all\n";
            $result .= "    allow from $allow\n";
       if ($pass)
       {
                $result .= "    AuthName \"$properties{'Name'}\"\n";
                $result .= "    AuthType Basic\n";
                $result .= "    AuthExternal pwauth\n";
                $result .= "    require user $key\n";
      $result .= "    Satisfy $satisfy\n";
       }
            $result .= "\n";
            $result .= "\n";
            $result .= "\n";
       if ($dynamicContent eq 'enabled')
       {
      $result .= "    Options ExecCGI\n";
       }
            $result .= "    AllowOverride None\n";
            $result .= "    order deny,allow\n";
            $result .= "    deny from all\n";
            $result .= "    allow from $allow\n";
       if ($pass)
       {
                $result .= "    AuthName \"$properties{'Name'}\"\n";
                $result .= "    AuthType Basic\n";
                $result .= "    AuthExternal pwauth\n";
                $result .= "    require user $key\n";
                $result .= "    Satisfy $satisfy\n";
       }
            $result .= "\n";
            #this is just for webcal to allow admin access
            if ($key eq 'webcal')
            {
                $result .= "\n";
                $result .= "\n";
                $result .= "    Options ExecCGI\n";
                $result .= "    AllowOverride AuthConfig\n";
                $result .= "    order deny,allow\n";
                $result .= "    deny from all\n";
                $result .= "    allow from all\n";
                $result .= "\n";
            }
            $result .= "\n";
            $result .= "\n";
            #this is for webcal only
            if ($key eq 'webcal')
            {
               $result .= "    AllowOverride AuthConfig\n";
            }
            else
            {
               $result .= "    AllowOverride None\n";     
            }
            $result .= "    ForceType application/octet-stream\n";
            $result .= "    order deny,allow\n";
            $result .= "    deny from all\n";
            $result .= "    allow from $allow\n";
       if ($pass)
       {
                $result .= "    AuthName \"$properties{'Name'}\"\n";
                $result .= "    AuthType Basic\n";
                $result .= "    AuthExternal pwauth\n";
                $result .= "    require user $key\n";
                $result .= "    Satisfy $satisfy\n";
       }
            $result .= "\n";
   }
    }
    $result;
}