Author: pebender
Date: Mon Nov 10 21:43:49 2008
New Revision: 3943

Modified:
    trunk/gar-minimyth/html/minimyth/conf/minimyth.conf
    trunk/gar-minimyth/html/minimyth/document-changelog.txt
    trunk/gar-minimyth/html/minimyth/document-minimyth_conf.html
     
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_MEDIA.pm
     
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/media.pm

Log:
- Added MM_MEDIA_GENERIC_LIST for adding media mounts that are not handled
   by the MM_MEDIA_*_MOUNTPOINT + MM_MEDIA_*_URL variables.



Modified: trunk/gar-minimyth/html/minimyth/conf/minimyth.conf
==============================================================================
--- trunk/gar-minimyth/html/minimyth/conf/minimyth.conf (original)
+++ trunk/gar-minimyth/html/minimyth/conf/minimyth.conf Mon Nov 10 21:43:49  
2008
@@ -211,6 +211,7 @@
  # MM_MEDIA_VIDEO_URL
  # MM_MEDIA_DVD_RIP_MOUNTPOINT
  # MM_MEDIA_DVD_RIP_URL
+# MM_MEDIA_GENERIC_LIST
   
################################################################################
   
#MM_MEDIA_GALLERY_URL="cifs://${MM_TFTP_SERVER}/pictures?credentials=/etc/cifs/credentials_cifs"
   
#MM_MEDIA_GAME_URL="cifs://${MM_TFTP_SERVER}/games?credentials=/etc/cifs/credentials_cifs"

Modified: trunk/gar-minimyth/html/minimyth/document-changelog.txt
==============================================================================
--- trunk/gar-minimyth/html/minimyth/document-changelog.txt     (original)
+++ trunk/gar-minimyth/html/minimyth/document-changelog.txt     Mon Nov 10  
21:43:49 2008
@@ -22,6 +22,8 @@
        scripts are used.
      - Added ability to disable the power button by setting
        MM_ACPI_EVENT_BUTTON_POWER='none'.
+    - Added MM_MEDIA_GENERIC_LIST for adding media mounts that are not  
handled
+      by the MM_MEDIA_*_MOUNTPOINT + MM_MEDIA_*_URL variables.
      - Moved sh based init from '/etc/rc.d' to '/etc/rc.d.sh'.
          - As a result, '/etc/rc.d/functions' has been moved to
            '/etc/rc.d.sh/functions'.

Modified: trunk/gar-minimyth/html/minimyth/document-minimyth_conf.html
==============================================================================
--- trunk/gar-minimyth/html/minimyth/document-minimyth_conf.html        
(original)
+++ trunk/gar-minimyth/html/minimyth/document-minimyth_conf.html        Mon Nov 
10  
21:43:49 2008
@@ -1872,6 +1872,7 @@
              <li><a href="#MM_MEDIA_VIDEO_URL">MM_MEDIA_VIDEO_URL</a></li>
              <li><a  
href="#MM_MEDIA_DVD_RIP_MOUNTPOINT">MM_MEDIA_DVD_RIP_MOUNTPOINT</a></li>
              <li><a  
href="#MM_MEDIA_DVD_RIP_URL">MM_MEDIA_DVD_RIP_URL</a></li>
+            <li><a  
href="#MM_MEDIA_GENERIC_LIST">MM_MEDIA_GENERIC_LIST</a></li>
            </ul>
            <dl>
              <dt id="MM_MEDIA-overview"><strong>Overview</strong></dt>
@@ -2023,6 +2024,16 @@
                  to be read-only, which is more secure.
                </p>
              </dd>
+            <dt  
id="MM_MEDIA_GENERIC_LIST"><strong>MM_MEDIA_GENERIC_LIST</strong></dt>
+            <dd>
+              <p>
+                A space separated list of {mountpoint}={url} values.
+                If you have media shares that cannot be mounted using the  
MM_MEDIA_*_MOUNTPOINT + MM_MEDIA_*_URL pairs,
+                then include them in this list and MiniMyth will mount  
them after mounting all shares specified by the
+                MM_MEDIA_*_MOUNTPOINT + MM_MEDIA_*_URL pairs.
+                The user 'minimyth' must have read access to the directory  
specified by {url}.
+              </p>
+            </dd>
            </dl>
            <p>
              Alternatively, you can mount remote directories by adding the  
appropriate commands to the 'minimyth.pm' package.
@@ -2866,7 +2877,7 @@
                alt="Valid CSS!"      height="31" width="88" /></a>
          </div>
          <div class="version">
-          Last Updated on 2008-11-07
+          Last Updated on 2008-11-10
            <br />
             
&lt;&nbsp;mailto&nbsp;:&nbsp;webmaster&nbsp;at&nbsp;minimyth&nbsp;dot&nbsp;org&nbsp;&gt;
          </div>

Modified:  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_MEDIA.pm
==============================================================================
---  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_MEDIA.pm
       
(original)
+++  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_MEDIA.pm
       
Mon Nov 10 21:43:49 2008
@@ -7,6 +7,24 @@
  use strict;
  use warnings;

+my $dir = '/|(/[[:alnum:]._-]+)+';
+my $url = '(cifs|nfs):(//(([^ :@]*)?(:([^ @]*))?\@)?([^  
/]+))?[^ ?#]*(\?([^ #]*))?(\#([^ ]*))?';
+
+my $value_valid_mountpoint = qq/$dir/;
+my $value_valid_url        = qq/none|$url/;
+my $value_valid_list       = qq/none|((($dir)=($url))( ($dir)=($url))*)/;
+my $value_clean_list       = sub
+{
+    my $minimyth = shift;
+    my $name     = shift;
+
+    my $value_clean = $minimyth->var_get($name);
+    $value_clean =~ s/[ [:cntrl:]]+/ /g;
+    $value_clean =~ s/^ //g;
+    $value_clean =~ s/ $//g;
+    $minimyth->var_set($name, $value_clean);
+};
+
  my %var_list;

  sub var_list
@@ -16,62 +34,75 @@

  $var_list{'MM_MEDIA_TV_MOUNTPOINT'} =
  {
-    value_default  => '/mnt/tv'
+    value_default  => '/mnt/tv',
+    value_valid    => $value_valid_mountpoint
  };
  $var_list{'MM_MEDIA_TV_URL'} =
  {
      value_default  => 'none',
-    value_valid    => 'none|((cifs| 
nfs):(//(([^:@]*)?(:([EMAIL 
PROTECTED]))?\@)?([^/]+))?[^?#]*(\?([^#]*))?(\#(.*))?)',
+    value_valid    => $value_valid_url,
      value_none     => ''
  };
  $var_list{'MM_MEDIA_GALLERY_MOUNTPOINT'} =
  {
-    value_default  => '/mnt/gallery'
+    value_default  => '/mnt/gallery',
+    value_valid    => $value_valid_mountpoint
  };
  $var_list{'MM_MEDIA_GALLERY_URL'} =
  {
      value_default  => 'none',
-    value_valid    => 'none|((cifs| 
nfs):(//(([^:@]*)?(:([EMAIL 
PROTECTED]))?\@)?([^/]+))?[^?#]*(\?([^#]*))?(\#(.*))?)',
+    value_valid    => $value_valid_url,
      value_none     => ''
  };
  $var_list{'MM_MEDIA_GAME_MOUNTPOINT'} =
  {
-    value_default  => '/mnt/game'
+    value_default  => '/mnt/game',
+    value_valid    => $value_valid_mountpoint
  };
  $var_list{'MM_MEDIA_GAME_URL'} =
  {
      value_default  => 'none',
-    value_valid    => 'none|((cifs| 
nfs):(//(([^:@]*)?(:([EMAIL 
PROTECTED]))?\@)?([^/]+))?[^?#]*(\?([^#]*))?(\#(.*))?)',
+    value_valid    => $value_valid_url,
      value_none     => ''
  };
  $var_list{'MM_MEDIA_MUSIC_MOUNTPOINT'} =
  {
-    value_default  => '/mnt/music'
+    value_default  => '/mnt/music',
+    value_valid    => $value_valid_mountpoint
  };
  $var_list{'MM_MEDIA_MUSIC_URL'} =
  {
      value_default  => 'none',
-    value_valid    => 'none|((cifs| 
nfs):(//(([^:@]*)?(:([EMAIL 
PROTECTED]))?\@)?([^/]+))?[^?#]*(\?([^#]*))?(\#(.*))?)',
+    value_valid    => $value_valid_url,
      value_none     => ''
  };
  $var_list{'MM_MEDIA_VIDEO_MOUNTPOINT'} =
  {
-    value_default  => '/mnt/video'
+    value_default  => '/mnt/video',
+    value_valid    => $value_valid_mountpoint
  };
  $var_list{'MM_MEDIA_VIDEO_URL'} =
  {
      value_default  => 'none',
-    value_valid    => 'none|((cifs| 
nfs):(//(([^:@]*)?(:([EMAIL 
PROTECTED]))?\@)?([^/]+))?[^?#]*(\?([^#]*))?(\#(.*))?)',
+    value_valid    => $value_valid_url,
      value_none     => ''
  };
  $var_list{'MM_MEDIA_DVD_RIP_MOUNTPOINT'} =
  {
-    value_default  => '/mnt/dvd'
+    value_default  => '/mnt/dvd',
+    value_valid    => $value_valid_mountpoint
  };
  $var_list{'MM_MEDIA_DVD_RIP_URL'} =
  {
      value_default  => 'none',
-    value_valid    => 'none|((cifs| 
nfs):(//(([^:@]*)?(:([EMAIL 
PROTECTED]))?\@)?([^/]+))?[^?#]*(\?([^#]*))?(\#(.*))?)',
+    value_valid    => $value_valid_url,
+    value_none     => ''
+};
+$var_list{'MM_MEDIA_GENERIC_LIST'} =
+{
+    value_clean    => $value_clean_list,
+    value_default  => 'none',
+    value_valid    => $value_valid_list,
      value_none     => ''
  };


Modified:  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/media.pm
==============================================================================
---  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/media.pm
       
(original)
+++  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/media.pm
       
Mon Nov 10 21:43:49 2008
@@ -18,11 +18,11 @@

      foreach my $media  
(('TV', 'GALLERY', 'GAME', 'MUSIC', 'VIDEO', 'DVD_RIP'))
      {
-        my $url_name        = 'MM_MEDIA_' . $media . '_URL';
          my $mountpoint_name = 'MM_MEDIA_' . $media . '_MOUNTPOINT';
-        my $url             = $minimyth->var_get($url_name);
+        my $url_name        = 'MM_MEDIA_' . $media . '_URL';
          my $mountpoint      = $minimyth->var_get($mountpoint_name);
-        if (($url) && ($mountpoint))
+        my $url             = $minimyth->var_get($url_name);
+        if (($mountpoint) && ($url))
          {
              $minimyth->url_mount($url, $mountpoint);
              if (open(FILE, '<', '/proc/mounts'))
@@ -66,6 +66,37 @@
          }
      }

+    my @media_list = split(/ /,  
$minimyth->var_get('MM_MEDIA_GENERIC_LIST'));
+    foreach my $media (@media_list)
+    {
+        if ($media =~ /^([^=]+)=(.*)$/)
+        {
+            my $mountpoint = $1;
+            my $url        = $2;
+
+            $minimyth->url_mount($url, $mountpoint);
+            if (open(FILE, '<', '/proc/mounts'))
+            {
+                my $mounted = 0;
+                foreach (grep(/^[^ ]* $mountpoint/, (<FILE>)))
+                {
+                    $mounted = 1;
+                }
+                close(FILE);
+                if ($mounted == 0)
+                {
+                    $minimyth->message_output('err', "error: '$mountpoint'  
failed to mount.");
+                    return 0;
+                }
+            }
+            if (system(qq(/bin/su -c '/usr/bin/test ! -r $mountpoint' -  
minimyth)) == 0)
+            {
+                $minimyth->message_output('err', "error: '$mountpoint' is  
not readable by user 'minimyth'.");
+                return 0;
+            }
+        }
+    }
+
      $minimyth->file_replace_variable(
          '/home/minimyth/.xine/config',
          { '@MEDIA_FILES_ORIGIN_PATH@' =>  
$minimyth->var_get('MM_MEDIA_VIDEO_MOUNTPOINT') });
@@ -80,14 +111,38 @@

      $minimyth->message_output('info', "unmounting media shares ...");

+    my @media_list = reverse(split(/ /,  
$minimyth->var_get('MM_MEDIA_GENERIC_LIST')));
+    foreach my $media (@media_list)
+    {
+        if ($media =~ /^([^=]+)=(.*)$/)
+        {
+            my $mountpoint = $1;
+            my $url        = $2;
+
+            if (open(FILE, '<', '/proc/mounts'))
+            {
+                my $mounted = 0;
+                foreach (grep(/^[^ ]* $mountpoint/, (<FILE>)))
+                {
+                    $mounted = 1;
+                }
+                close(FILE);
+                if ($mounted != 0)
+                {
+                    system(qq(/bin/umount "$mountpoint"));
+                }
+            }
+        }
+    }
+
      foreach my $media  
(('DVD_RIP', 'VIDEO', 'MUSIC', 'GAME', 'GALLERY', 'TV'))
      {
-        my $url_name        = 'MM_MEDIA_' . $media . '_URL';
          my $mountpoint_name = 'MM_MEDIA_' . $media . '_MOUNTPOINT';
-        my $url             = $minimyth->var_get($url_name);
+        my $url_name        = 'MM_MEDIA_' . $media . '_URL';
          my $mountpoint      = $minimyth->var_get($mountpoint_name);
+        my $url             = $minimyth->var_get($url_name);

-        if (($url) && ($mountpoint))
+        if (($mountpoint) && ($url))
          {
              if (open(FILE, '<', '/proc/mounts'))
              {

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"minimyth-commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/minimyth-commits?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to