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 />
< mailto : webmaster at minimyth dot org >
</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
-~----------~----~----~----~------~----~------~--~---