Dre4m Shell
Server IP : 127.0.0.2  /  Your IP : 18.119.99.38
Web Server : Apache/2.4.18 (Ubuntu)
System :
User : www-data ( )
PHP Version : 7.0.33-0ubuntu0.16.04.16
Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/mc/extfs.d/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /usr/lib/mc/extfs.d/iso9660
#! /bin/sh
# Midnight Commander - ISO9660 VFS for MC
# based on lslR by Tomas Novak <tnovak@ipex.cz>   April 2000
#
# Copyright (C) 2000, 2003
# The Free Software Foundation, Inc.
#
# Written by:
#  Michael Shigorin <mike@altlinux.org>,
#  Grigory Milev <week@altlinux.org>,
#  Kachalov Anton <mouse@linux.ru.net>, 2003
#  Victor Ananjevsky <ananasik@gmail.com>, 2013
#  slava zanko <slavazanko@gmail.com>, 2013
#
# This file is part of the Midnight Commander.
#
# The Midnight Commander is free software: you can redistribute it
# and/or modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the License,
# or (at your option) any later version.
#
# The Midnight Commander is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

#*** include section (source functions, for example) *******************

#*** file scope functions **********************************************

XORRISO=$(which xorriso 2>/dev/null)

xorriso_list() {
    if test -z "$XORRISO"; then
        return 1
    fi
    local dir attr ln usr gr sz dt1 dt2 dt3 nm len name lsl r
    dir="${2:-/}"
    lsl=$( $XORRISO -abort_on FATAL -dev stdio:"$1" -cd "$dir" -lsl 2> /dev/null )
    r=$?
    test $r -gt 0 && return $r

    echo "$lsl" | /bin/grep "^[-d]" | \
    while read attr ln usr gr sz dt1 dt2 dt3 nm ; do
        len=$((${#nm} - 1))
        name=$(printf -- "$nm" | cut -c2-$len)  # remove quotes

        if test $(printf -- "$attr" | cut -c1-1) != "d"; then
            printf -- "%s %s %s %s %s %s %s %s %s/%s\n" "$attr" "$ln" "$usr" "$gr" "$sz" "$dt1" "$dt2" "$dt3" "$dir" "$name"
        else
            xorriso_list "$1" "$dir/$name"
        fi
    done
}

xorriso_copyout() {
    if test -z "$XORRISO"; then
        return 1
    fi
    $XORRISO -dev stdio:"$1" -osirrox on -extract "$2" "$3" >/dev/null 2>&1
}

xorriso_copyin() {
    if test -z "$XORRISO"; then
        return 1
    fi
    $XORRISO -dev stdio:"$1" -cpr "$3" "$2" >/dev/null 2>&1
}

xorriso_mkdir() {
    if test -z "$XORRISO"; then
        return 1
    fi
    $XORRISO -dev stdio:"$1" -mkdir "$2" >/dev/null 2>&1
}

xorriso_rmdir() {
    if test -z "$XORRISO"; then
        return 1
    fi
    $XORRISO -dev stdio:"$1" -rmdir "$2" >/dev/null 2>&1
}

xorriso_rm() {
    if test -z "$XORRISO"; then
        return 1
    fi
    $XORRISO -dev stdio:"$1" -rm "$2" >/dev/null 2>&1
}

# tested to comply with isoinfo 2.0's output
test_iso () {
    CHARSET=$(locale charmap 2>/dev/null)
    if test -z "$CHARSET"; then
        CHARSET=$(locale 2>/dev/null | /bin/grep LC_CTYPE | sed -n -e 's/.*\.\(.*\)"$/\1/p')
    fi
    if test -n "$CHARSET"; then
        CHARSET=$(echo "$CHARSET" | tr '[A-Z]' '[a-z]' | sed -e 's/^iso-/iso/')
        isoinfo -j $CHARSET -i /dev/null 2>&1 | /bin/grep "Iconv not yet supported\|Unknown charset" >/dev/null && CHARSET=
    fi
    if test -n "$CHARSET"; then
        JOLIET_OPT="-j $CHARSET -J"
    else
        JOLIET_OPT="-J"
    fi
    ISOINFO="isoinfo -R"

    ISOINFO_D_I="$(isoinfo -d -i "$1" 2>/dev/null)"

    echo "$ISOINFO_D_I" | /bin/grep "UCS level 1\|NO Joliet" > /dev/null || ISOINFO="$ISOINFO $JOLIET_OPT"

    if [ $(echo "$ISOINFO_D_I" | /bin/grep "Joliet with UCS level 3 found" | wc -l) = 1 \
        -a $(echo "$ISOINFO_D_I" | /bin/grep "NO Rock Ridge" | wc -l) = 1 ] ; then
        SEMICOLON="YES"
    fi
}

mcisofs_list () {
    # left as a reminder to implement compressed image support =)
    case "$1" in
      *.lzma) MYCAT="lzma -dc";;
      *.xz)  MYCAT="xz -dc";;
      *.bz2) MYCAT="bzip2 -dc";;
      *.gz)  MYCAT="gzip -dc";;
      *.z)   MYCAT="gzip -dc";;
      *.Z)   MYCAT="gzip -dc";;
      *)     MYCAT="cat";;
    esac

    $ISOINFO -l -i "$1" 2>/dev/null | awk -v SEMICOLON=$SEMICOLON '
BEGIN {
  dir="";
  # Pattern to match 8 first fields.
  rx = "[^ 	]+[ 	]+";
  rx = "^" rx rx rx rx rx rx rx rx;
  irx = "^\\[ *-?[0-9]* *[0-9]+\\] +";
}
/^$/ { next }
/^d---------/ { next }
/^Directory listing of [^ 	].*$/ {
  dir=substr($0, 23);
  next;
}
{ $11 != "" } {
  name=$0
  sub(rx, "", name)
  attr=substr($0, 1, length($0)-length(name))
  # strip inodes and extra dir entries; fix perms
  sub(irx, "", name)
  sub("^----------   0    0    0", "-r--r--r--   1 root root", attr)
  sub(" $", "", name)
  # for Joliet UCS level 3
  if (SEMICOLON = "YES") sub(";1$", "", name);
  ## sub(";[0-9]+$", "", name) ## would break copyout
  # skip . and ..
  if (name ~ /^\.\.?/) next;
  printf "%s%s%s\n", attr, dir, name
}'
}

mcisofs_copyout () {
    if [ "x$SEMICOLON" = "xYES" ]; then
        $ISOINFO -i "$1" -x "/$2;1" 2>/dev/null > "$3"
    else
        $ISOINFO -i "$1" -x "/$2" 2>/dev/null > "$3"
    fi
}

#*** main code *********************************************************

LC_ALL=C

cmd="$1"
shift

case "$cmd" in
  list)
    xorriso_list "$@" || {
        test_iso "$@";
        mcisofs_list "$@";
    }
    exit 0
    ;;
  rm)
    xorriso_rm "$@" || {
        exit 1
    }
    exit 0
    ;;
  rmdir)
    xorriso_rmdir "$@" || {
        exit 1
    }
    exit 0
    ;;
  mkdir)
    xorriso_mkdir "$@" || {
        exit 1
    }
    exit 0
    ;;
  copyin)
    xorriso_copyin "$@" || {
        exit 1
    }
    exit 0
    ;;
  copyout)
    xorriso_copyout "$@" || {
        test_iso "$@";
        mcisofs_copyout "$@";
    }
    exit 0
    ;;
esac
exit 1

Anon7 - 2022
AnonSec Team