Linux ns8.secondary29.go.th 2.6.32-754.28.1.el6.x86_64 #1 SMP Wed Mar 11 18:38:45 UTC 2020 x86_64
Apache/2.2.15 (CentOS)
: 122.154.134.11 | : 122.154.134.9
Cant Read [ /etc/named.conf ]
5.6.40
apache
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
.ipsec.hmac
65
B
-rw-r--r--
.sshd.hmac
65
B
-rw-r--r--
abrt-auto-reporting
24.84
KB
-rwxr-xr-x
abrt-dbus
32.25
KB
-rwxr-xr-x
abrt-install-ccpp-hook
2.77
KB
-rwxr-xr-x
abrt-server
28.77
KB
-rwxr-xr-x
abrtd
26.02
KB
-rwxr-xr-x
accept
10.24
KB
-rwxr-xr-x
accton
10.45
KB
-rwxr-xr-x
adcli
140.36
KB
-rwxr-xr-x
addgnupghome
3.05
KB
-rwxr-xr-x
adduser
108.71
KB
-rwxr-x---
alsa-delay
19.12
KB
-rwxr-xr-x
alsactl
101.37
KB
-rwxr-xr-x
alternatives
27.9
KB
-rwxr-xr-x
anacron
38.05
KB
-rwxr-xr-x
applygnupgdefaults
2.21
KB
-rwxr-xr-x
arpaname
15.68
KB
-rwxr-xr-x
arpd
41.7
KB
-rwxr-xr-x
arping
17.48
KB
-rwxr-xr-x
atrun
67
B
-rwxr-xr-x
authconfig
37.79
KB
-rwxr-xr-x
authconfig-tui
37.79
KB
-rwxr-xr-x
avcstat
13.66
KB
-rwxr-xr-x
biosdecode
17.77
KB
-rwxr-xr-x
brctl
36.81
KB
-rwxr-xr-x
build-locale-archive
741.4
KB
-rwx------
cacertdir_rehash
644
B
-rwxr-xr-x
cache_check
1.54
MB
-rwxr-xr-x
cache_dump
1.54
MB
-rwxr-xr-x
cache_metadata_size
1.54
MB
-rwxr-xr-x
cache_repair
1.54
MB
-rwxr-xr-x
cache_restore
1.54
MB
-rwxr-xr-x
capsh
16.23
KB
-rwxr-xr-x
chpasswd
49.65
KB
-rwxr-xr-x
chroot
31.03
KB
-rwxr-xr-x
cifs.idmap
10.27
KB
-rwxr-xr-x
cifs.upcall
38.75
KB
-rwxr-xr-x
ck-log-system-restart
18.7
KB
-rwxr-xr-x
ck-log-system-start
18.99
KB
-rwxr-xr-x
ck-log-system-stop
18.7
KB
-rwxr-xr-x
clockdiff
15.16
KB
-rwxr-xr-x
console-kit-daemon
155.27
KB
-rwxr-xr-x
convertquota
68.76
KB
-rwxr-xr-x
cpuspeed
22.05
KB
-rwxr-xr-x
cracklib-check
8.8
KB
-rwxr-xr-x
cracklib-format
218
B
-rwxr-xr-x
cracklib-packer
9.31
KB
-rwxr-xr-x
cracklib-unpacker
8.45
KB
-rwxr-xr-x
crda
13.67
KB
-rwxr-xr-x
create-cracklib-dict
990
B
-rwxr-xr-x
cupsaccept
10.24
KB
-rwxr-xr-x
cupsaddsmb
10.3
KB
-rwxr-xr-x
cupsctl
10.28
KB
-rwxr-xr-x
cupsdisable
10.24
KB
-rwxr-xr-x
cupsenable
10.24
KB
-rwxr-xr-x
cupsfilter
28.05
KB
-rwxr-xr-x
cupsreject
10.24
KB
-rwxr-xr-x
ddns-confgen
26.23
KB
-rwxr-xr-x
dmidecode
80.12
KB
-rwxr-xr-x
dnssec-dsfromkey
40.04
KB
-rwxr-xr-x
dnssec-keyfromlabel
39.27
KB
-rwxr-xr-x
dnssec-keygen
47.87
KB
-rwxr-xr-x
dnssec-revoke
32.86
KB
-rwxr-xr-x
dnssec-settime
38.97
KB
-rwxr-xr-x
dnssec-signzone
94.63
KB
-rwxr-xr-x
dump-acct
14.29
KB
-rwxr-xr-x
dump-utmp
14.37
KB
-rwxr-xr-x
e2freefrag
14.12
KB
-rwxr-xr-x
edquota
80.72
KB
-rwxr-xr-x
efibootmgr
49.73
KB
-rwxr-xr-x
eject
31.36
KB
-rwxr-xr-x
era_check
1.54
MB
-rwxr-xr-x
era_dump
1.54
MB
-rwxr-xr-x
era_invalidate
1.54
MB
-rwxr-xr-x
era_restore
1.54
MB
-rwxr-xr-x
ethtool
233.75
KB
-rwxr-xr-x
exportfs
59.65
KB
-rwxr-xr-x
fdformat
11.15
KB
-rwxr-xr-x
filefrag
13.55
KB
-rwxr-xr-x
foomatic-addpjloptions
29.16
KB
-rwxr-xr-x
foomatic-cleanupdrivers
1.34
KB
-rwxr-xr-x
foomatic-extract-text
4.46
KB
-rwxr-xr-x
foomatic-fix-xml
1.5
KB
-rwxr-xr-x
foomatic-getpjloptions
2.09
KB
-rwxr-xr-x
foomatic-kitload
3.17
KB
-rwxr-xr-x
foomatic-nonumericalids
4.39
KB
-rwxr-xr-x
foomatic-preferred-driver
9.1
KB
-rwxr-xr-x
foomatic-printermap-to-gutenpr...
4.99
KB
-rwxr-xr-x
foomatic-replaceoldprinterids
2.54
KB
-rwxr-xr-x
genhomedircon
33
B
-rwxr-xr-x
genrandom
17.37
KB
-rwxr-xr-x
getcap
10.02
KB
-rwxr-xr-x
getenforce
8.55
KB
-rwxr-xr-x
getpcaps
9.05
KB
-rwxr-xr-x
getsebool
10.42
KB
-rwxr-xr-x
glibc_post_upgrade.x86_64
676.62
KB
-rwx------
groupadd
57.71
KB
-rwxr-x---
groupdel
53.52
KB
-rwxr-x---
groupmems
53.67
KB
-rwxr-x---
groupmod
71.95
KB
-rwxr-x---
grpck
53.63
KB
-rwxr-xr-x
grpconv
49.52
KB
-rwxr-xr-x
grpunconv
49.52
KB
-rwxr-xr-x
htcacheclean
19.52
KB
-rwxr-xr-x
httpd
358.53
KB
-rwxr-xr-x
httpd.event
370.79
KB
-rwxr-xr-x
httpd.worker
370.79
KB
-rwxr-xr-x
httxt2dbm
10.93
KB
-rwxr-xr-x
hwclock
47.52
KB
-rwxr-xr-x
iconvconfig
25.89
KB
-rwxr-xr-x
iconvconfig.x86_64
25.89
KB
-rwxr-xr-x
iotop
452
B
-rwxr-xr-x
ipa-client-automount
17.82
KB
-rwxr-xr-x
ipa-client-install
100.75
KB
-rwxr-xr-x
ipa-getkeytab
37.9
KB
-rwxr-xr-x
ipa-join
40.68
KB
-rwxr-xr-x
ipa-rmkeytab
17.28
KB
-rwxr-xr-x
ipsec
11.82
KB
-rwxr-xr-x
isc-hmac-fixup
18.7
KB
-rwxr-xr-x
krb5-send-pr
14.16
KB
-rwxr-xr-x
latencytop
44.71
KB
-rwxr-xr-x
latencytop-tui
25.03
KB
-rwxr-xr-x
lchage
33.5
KB
-rwxr-xr-x
ldattach
13.23
KB
-rwxr-xr-x
ledctl
51.58
KB
-rwxr-xr-x
ledmon
55.14
KB
-rwxr-xr-x
lgroupadd
29.77
KB
-rwxr-xr-x
lgroupdel
28.7
KB
-rwxr-xr-x
lgroupmod
34.48
KB
-rwxr-xr-x
lid
18.53
KB
-rwxr-xr-x
lnewusers
34.29
KB
-rwxr-xr-x
lnstat
17.64
KB
-rwxr-xr-x
load_policy
10.21
KB
-rwxr-xr-x
lokkit
2.15
KB
-rwxr-xr-x
lpadmin
26.57
KB
-rwxr-xr-x
lpasswd
32.46
KB
-rwxr-xr-x
lpc
14.34
KB
-rwxr-xr-x
lpc.cups
14.34
KB
-rwxr-xr-x
lpinfo
14.23
KB
-rwxr-xr-x
lpmove
10.31
KB
-rwxr-xr-x
lsof
154.44
KB
-rwxr-xr-x
lsusb
105.49
KB
-rwxr-xr-x
luseradd
34.71
KB
-rwxr-xr-x
luserdel
30.52
KB
-rwxr-xr-x
lusermod
36.7
KB
-rwxr-xr-x
makedumpfile
309.8
KB
-rwxr-xr-x
makewhatis
13.79
KB
-rwxr-xr-x
matchpathcon
12.01
KB
-rwxr-xr-x
mcelog
117.1
KB
-rwxr-xr-x
mkdict
218
B
-rwxr-xr-x
mklost+found
9.4
KB
-rwxr-xr-x
mksock
10.41
KB
-rwxr-xr-x
mountstats
34.53
KB
-rwxr-xr-x
mtr
63
KB
-rwxr-xr-x
named-checkconf
40.13
KB
-rwxr-xr-x
named-checkzone
35.8
KB
-rwxr-xr-x
named-compilezone
35.8
KB
-rwxr-xr-x
named-journalprint
17.26
KB
-rwxr-xr-x
newusers
71.93
KB
-rwxr-xr-x
nfsidmap
16.46
KB
-rwxr-xr-x
nfsiostat
23.18
KB
-rwxr-xr-x
nfsstat
27.63
KB
-rwxr-xr-x
nsec3hash
18.2
KB
-rwxr-xr-x
nstat
19.88
KB
-rwxr-xr-x
ntp-keygen
180.27
KB
-rwxr-xr-x
ntpdate
108.3
KB
-rwxr-xr-x
ntpdc
248.45
KB
-rwxr-xr-x
ntpq
246.51
KB
-rwxr-xr-x
ntptime
71.14
KB
-rwxr-xr-x
ntsysv
32.95
KB
-rwxr-xr-x
ownership
11.86
KB
-rwxr-xr-x
packer
9.31
KB
-rwxr-xr-x
pdata_tools
1.54
MB
-rwxr-xr-x
pethtool
8.94
KB
-rwxr-xr-x
pifconfig
3.03
KB
-rwxr-xr-x
ping6
35.63
KB
-rwsr-xr-x
pluginviewer
18.22
KB
-rwxr-xr-x
plymouth-set-default-theme
6.2
KB
-rwxr-xr-x
pm-hibernate
2.76
KB
-rwxr-xr-x
pm-powersave
1.53
KB
-rwxr-xr-x
pm-suspend
2.76
KB
-rwxr-xr-x
pm-suspend-hybrid
2.76
KB
-rwxr-xr-x
postconf
297.07
KB
-rwxr-xr-x
postdrop
184.57
KB
-rwxr-sr-x
postmap
212.7
KB
-rwxr-xr-x
postmulti
124.41
KB
-rwxr-xr-x
postqueue
212.73
KB
-rwxr-sr-x
powertop
426.14
KB
-rwxr-xr-x
prelink
1.25
MB
-rwxr-xr-x
pwck
49.61
KB
-rwxr-xr-x
pwconv
45.52
KB
-rwxr-xr-x
pwunconv
36.43
KB
-rwxr-xr-x
quotastats
11.21
KB
-rwxr-xr-x
raid-check
3.7
KB
-rwxr-xr-x
readprofile
15.25
KB
-rwxr-xr-x
redhat_lsb_trigger.x86_64
2.83
KB
-rwx------
regdbdump
9.26
KB
-rwxr-xr-x
reject
10.24
KB
-rwxr-xr-x
repquota
72.66
KB
-rwxr-xr-x
rndc
40.31
KB
-rwxr-xr-x
rndc-confgen
26.63
KB
-rwxr-xr-x
rotatelogs
16.55
KB
-rwxr-xr-x
rpcdebug
16.03
KB
-rwxr-xr-x
rpcinfo
27.25
KB
-rwxr-xr-x
rtacct
35.56
KB
-rwxr-xr-x
rtcwake
17.44
KB
-rwxr-xr-x
run_init
10.32
KB
-rwxr-xr-x
sa
31.53
KB
-rwxr-xr-x
safe_finger
8.69
KB
-rwxr-xr-x
sasldblistusers2
19.8
KB
-rwxr-xr-x
saslpasswd2
17.62
KB
-rwxr-xr-x
selinuxconlist
10.04
KB
-rwxr-xr-x
selinuxdefcon
10.39
KB
-rwxr-xr-x
selinuxenabled
7.8
KB
-rwxr-xr-x
semodule
18.9
KB
-rwxr-xr-x
sendmail
208.61
KB
-rwxr-xr-x
sendmail.postfix
208.61
KB
-rwxr-xr-x
sestatus
14.44
KB
-rwxr-xr-x
setcap
10.77
KB
-rwxr-xr-x
setenforce
9.1
KB
-rwxr-xr-x
setquota
84.78
KB
-rwxr-xr-x
setregdomain
1.47
KB
-rwxr-xr-x
setsebool
14.41
KB
-rwxr-xr-x
setup
15.59
KB
-rwxr-xr-x
showmount
19.34
KB
-rwxr-xr-x
sm-notify
50.41
KB
-rwxr-xr-x
smartctl
560.77
KB
-rwxr-xr-x
smtp-sink
84.54
KB
-rwxr-xr-x
smtp-source
67.55
KB
-rwxr-xr-x
sosreport
898
B
-rwxr-xr-x
ss
73.9
KB
-rwxr-xr-x
sss_cache
87.11
KB
-rwxr-xr-x
start-statd
300
B
-rwxr-xr-x
suexec
13.66
KB
-r-s--x---
sys-unconfig
180
B
-rwxr-xr-x
system-config-network
188
B
-rwxr-xr-x
system-config-network-cmd
13.4
KB
-rwxr-xr-x
system-config-network-tui
10.02
KB
-rwxr-xr-x
t1libconfig
3.83
KB
-rwxr-xr-x
tcpdmatch
38.01
KB
-rwxr-xr-x
tcpdump
725.63
KB
-rwxr-xr-x
tcpslice
24.02
KB
-rwxr-xr-x
testsaslauthd
14.43
KB
-rwxr-xr-x
thin_check
1.54
MB
-rwxr-xr-x
thin_delta
1.54
MB
-rwxr-xr-x
thin_dump
1.54
MB
-rwxr-xr-x
thin_ls
1.54
MB
-rwxr-xr-x
thin_metadata_size
1.54
MB
-rwxr-xr-x
thin_repair
1.54
MB
-rwxr-xr-x
thin_restore
1.54
MB
-rwxr-xr-x
thin_rmap
1.54
MB
-rwxr-xr-x
thin_trim
1.54
MB
-rwxr-xr-x
tickadj
6.02
KB
-rwxr-xr-x
tmpwatch
21.15
KB
-rwxr-xr-x
togglesebool
10.43
KB
-rwxr-xr-x
tracepath
11.17
KB
-rwxr-xr-x
tracepath6
12.02
KB
-rwxr-xr-x
try-from
19.22
KB
-rwxr-xr-x
tunelp
12.24
KB
-rwxr-xr-x
tzdata-update
12.79
KB
-rwxr-xr-x
unbound-anchor
52.26
KB
-rwxr-xr-x
update-alternatives
27.9
KB
-rwxr-xr-x
update-pciids
1.72
KB
-rwxr-xr-x
update-smart-drivedb
8.25
KB
-rwxr-xr-x
useradd
108.71
KB
-rwxr-x---
userdel
71.93
KB
-rwxr-x---
userhelper
41.3
KB
-rws--x--x
usermod
112.4
KB
-rwxr-x---
usernetctl
8.79
KB
-rwsr-xr-x
vigr
59.95
KB
-rwxr-xr-x
vipw
59.95
KB
-rwxr-xr-x
virt-what
10.06
KB
-rwxr-xr-x
visudo
155.24
KB
-rwxr-xr-x
vnstat.cron
311
B
-rwxr-xr-x
vnstatd
59.95
KB
-rwxr-xr-x
vpddecode
14.49
KB
-rwxr-xr-x
warnquota
80.91
KB
-rwxr-xr-x
yppoll
16.26
KB
-rwxr-xr-x
ypserv_test
19.26
KB
-rwxr-xr-x
ypset
14.2
KB
-rwxr-xr-x
yptest
19.48
KB
-rwxr-xr-x
yum-complete-transaction
9.7
KB
-rwxr-xr-x
yumdb
7.83
KB
-rwxr-xr-x
zdump
16.98
KB
-rwxr-xr-x
zic
49.08
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : alsa-delay
#!/bin/bash version=0.0.10 tmpdir=$TMPDIR if test -z "$tmpdir"; then tmpdir="/tmp" fi tmpdir=$tmpdir/alsa-delay-script vardir=$VARDIR if test -z "$vardir"; then vardir="/var/lib/misc" fi vardir=$vardir/alsa-delay-script delay= pcard= pdev= ccard= cdev= yes= quiet= clean= revert= pdevice="default:%s" cdevice="plughw:%s,%s,%s" pctl= cctl= one= arg= mix= pa= useprocfs=yes fuser_prg=fuser insmod_prg=insmod rmmod_prg=rmmod lsmod_prg=lsmod modprobe_prg=modprobe chkconfig_prg=chkconfig pidof_prg=pidof alsaloop_prg=alsaloop amixer_prg=amixer test -x /sbin/fuser && fuser_prg=/sbin/fuser test -x /sbin/insmod && insmod_prg=/sbin/insmod test -x /sbin/rmmod && rmmod_prg=/sbin/rmmod test -x /sbin/lsmod && lsmod_prg=/sbin/lsmod test -x /sbin/modprobe && modprobe_prg=/sbin/modprobe test -x /sbin/chkconfig && chkconfig_prg=/sbin/chkconfig test -x /sbin/pidof && pidof_prg=/sbin/pidof test -x /usr/bin/alsaloop && alsaloop_prg=/usr/bin/alsaloop test -x /usr/local/bin/alsaloop && alsaloop_prg=/usr/local/bin/alsaloop test -x /usr/bin/amixer && amixer_prg=/usr/bin/amixer modprobeconf=/etc/modprobe.d/alsa.conf test -r /etc/modprobe.conf && modprobeconf=/etc/modprobe.conf && useprocfs="" alsaloopconf=/etc/alsaloop.conf test -r modprobe.work && modprobeconf=modprobe.work test -r modprobe.work && alsaloopconf=alsaloop.conf usage() { echo "Usage: $0 [OPTION]... <requested_delay_in_ms> [<output_card>[,<device>]]" cat <<EOF This is a delay utility version $version. The snd-aloop ALSA driver is used to send all PCM streams back to the user space and the alsaloop utility is used to send this stream to a real hardware. <output_card> is ALSA card index (number) or string card identifier <device> is ALSA device number Use 'aplay -l' to list available cards and devices. Operation modes: -h, --help print this help, then exit -q, --quiet quiet mode -y, --yes do not ask any questions - answer is always yes -c, --clean clean temporary directory -r, --revert revert configuration changes (modprobe, pulse-audio) --tmpdir=<DIR> set temporary directory Alsaloop options: --pdevice=<DEV> force playback device --cdevice=<DEV> force capture device --pctl=<DEV> force playback ctl device --cctl=<DEV> force capture ctl device --one=<ARG> pass this argument to last thread --arg=<ARG> pass this argument to all threads --mix=<ARG> redirect ALSA mixer controls to OSS mixer (default is Master) --pa Redirect pulse-audio to alsaloop Note: For devices, the string %s is replaced with the card index and second string %s is replaced with the device index and third string %s is replaced the substream index (0-7). Example: hw:%s,%s,%s (card, device, substream) EOF } while : do case "$1" in -h|--help) usage exit 0 ;; -q|--quiet) quiet=true ;; -y|--yes) yes=true ;; -c|--clean) clean="full" ;; -r|--revert) revert=true ;; --tmpdir*) case "$#,$1" in *,*=*) tmpdir=`expr "z$1" : 'z-[^=]*=\(.*\)'` ;; 1,*) usage ;; *) tmpdir="$2" shift ;; esac tmpdir="$tmpdir/alsa-compile-script" ;; --pdevice*) case "$#,$1" in *,*=*) pdevice=`expr "z$1" : 'z-[^=]*=\(.*\)'` ;; 1,*) usage ;; *) pdevice="$2" shift ;; esac ;; --cdevice*) case "$#,$1" in *,*=*) cdevice=`expr "z$1" : 'z-[^=]*=\(.*\)'` ;; 1,*) usage ;; *) cdevice="$2" shift ;; esac ;; --pctl*) case "$#,$1" in *,*=*) pctl=`expr "z$1" : 'z-[^=]*=\(.*\)'` ;; 1,*) usage ;; *) pctl="$2" shift ;; esac ;; --cctl*) case "$#,$1" in *,*=*) cctl=`expr "z$1" : 'z-[^=]*=\(.*\)'` ;; 1,*) usage ;; *) cctl="$2" shift ;; esac ;; --one*) case "$#,$1" in *,*=*) one1=`expr "z$1" : 'z-[^=]*=\(.*\)'` ;; 1,*) usage ;; *) one1="$2" shift ;; esac one="$one $one1" ;; --arg*) case "$#,$1" in *,*=*) arg1=`expr "z$1" : 'z-[^=]*=\(.*\)'` ;; 1,*) usage ;; *) arg1="$2" shift ;; esac arg="$arg $arg1" ;; --mix*) case "$#,$1" in *,*=*) mix=`expr "z$1" : 'z-[^=]*=\(.*\)'` ;; 1,*) usage ;; *) mix="$2" shift ;; esac arg="$arg $arg1" ;; --pa) pa=true ;; *) if test -n "$1"; then ok= if test -z "$delay"; then delay="$1" if test "$delay" -lt 1000; then delay=$[$delay * 1000] fi ok=true fi if test -z "$ok" -a -z "$pcard"; then pcard="$1" ok=true fi if test -z "$ok"; then echo "Unknown parameter '$1'" break fi else break fi ;; esac shift done test -z "$delay" && delay="50000" test -z "$pcard" && pcard="1" pdev=$(echo $pcard | cut -s -d , -f 2) pcard=$(echo $pcard | cut -d , -f 1) test -z "$pdev" && pdev="0" test -z "$ccard" && ccard="Loopback,1" cdev=$(echo $ccard | cut -s -d , -f 2) ccard=$(echo $ccard | cut -d , -f 1) test -z "$cdev" && cdev="0" # Echo "true" or "false", depending on $yes and user response to prompt # $1 is prompt message question_bool() { if test "$yes" = "yes"; then echo "true" else echo >&2 -n "$1 (Y/ ) " read i local i=${i:0:1} if test "$i" = "Y" -o "$i" = "y"; then echo "true" else echo "false" fi fi } # Log and execute $@ and check success do_cmd() { if test -z "$quiet"; then echo "> $@" fi $@ || exit 1 } # Cache or restore $protocol and $url and $package in $tmpdir check_environment() { if ! test -d $tmpdir ; then mkdir -p $tmpdir if ! test -d $tmpdir; then echo >&2 "Unable to create directory $tmpdir." exit 1 fi fi if ! test -d $vardir ; then mkdir -p $vardir if ! test -d $vardir; then echo >&2 "Unable to create directory $vardir." exit 1 fi fi echo "Using temporary tree: $tmpdir" echo "Using backup tree : $vardir" test -x /bin/depmod && depmodbin=/bin/depmod test -x /sbin/depmod && depmodbin=/sbin/depmod if test -z "$depmodbin"; then echo >&2 "Unable to find depmod utility." exit 1 fi test -x /bin/modinfo && modinfobin=/bin/modinfo test -x /sbin/modinfo && modinfobin=/sbin/modinfo if test -z "$modinfobin"; then echo >&2 "Unable to find modinfo utility." exit 1 fi } # Kill processes currently accessing the audio devices kill_audio_apps() { local pids0=$($fuser_prg /dev/snd/* 2> /dev/null) local pids1=$($fuser_prg /dev/mixer* 2> /dev/null) local pids2=$($fuser_prg /dev/sequencer* 2> /dev/null) local pids= for pid in $pids0 $pids1 $pids2; do local pids="$pids $pid" done if ! test -z "$pids"; then echo echo "WARNING! An audio application uses ALSA driver:" echo for pid in $pids; do ps --no-headers -p $pids || exit 1 done echo if test $(question_bool "Would you like to kill these apps?") = "true"; then for pid in $pids; do do_cmd kill $pid done sleep 2 local killed= for pid in $pids; do local a=$(ps --no-headers -p $pids) if test -n "$a"; then do_cmd kill -9 $pid local killed="true" fi done if test "$killed" = "true"; then sleep 2 for pid in $pids; do local a=$(ps --no-headers -p $pids) if test -n "$a"; then echo >&2 "Unable to kill application:" echo >&2 " $a" exit 1 fi done fi else echo >&2 "Cannot continue with running audio applications." exit 1 fi fi } # Echo the list of configured sound modules configured_modules() { if test -z "$useprocfs"; then cat $modprobeconf | grep -E "^alias snd-card-" | cut -d ' ' -f 3 else cat /proc/asound/modules | colrm 1 3 fi } # Echo the list of loaded sound modules current_modules() { $lsmod_prg | cut -d ' ' -f 1 | grep -E "^(snd[_-])" } # Remove kernel modules, using two phases # $@ is module names my_rmmod() { local phase2= while test -n "$1"; do if ! $rmmod_prg $1 2> /dev/null > /dev/null; then local phase2="$phase2 $1" else echo "> rmmod $1" fi shift done for mod in $phase2; do echo "> rmmod $mod" if ! $rmmod_prg $mod ; then echo >&2 "Unable to remove kernel module $mod." exit 1 fi done } # Reload kernel modules kernel_modules() { local curmods=$(current_modules) local usermods=$(configured_modules) kill_audio_apps my_rmmod $curmods $modprobe_prg soundcore || exit 1 for mod in $usermods; do if ! $modprobe_prg $mod; then echo >&2 "Unable to install kernel module $mod." exit 1 fi done echo "Kernel modules ready:" sleep 4 cat /proc/asound/cards } # If $package is alsa-driver then remove current modules kernel_modules_remove() { local curmods=$(current_modules) if test -z "$curmods"; then echo "No ALSA kernel modules to remove." exit 0 fi kill_audio_apps my_rmmod $curmods echo "ALSA kernel modules removed." } function clean() { echo -n "Removing tree $tmpdir:" if test -d "$tmpdir"; then if ! rm -rf "$tmpdir"; then echo " failed" exit 1 fi fi echo " success" } function revert() { echo "Running: $chkconfig_prg alsaloop off" $chkconfig_prg alsaloop off rm -v /etc/init.d/alsaloop if test -f "$vardir/modprobe.conf"; then echo -n "Copying original $modprobeconf from $vardir:" cp "$vardir/modprobe.conf" $modprobeconf || exit 1 echo " success" fi if test -f "$vardir/pulse-default.pa"; then echo -n "Copying original /etc/pulse/default.pa from $vardir:" cp "$vardir/pulse-default.pa" /etc/pulse/default.pa || exit 1 echo " success" fi echo "Revert done. Reboot the system." } function reindex_modprobe_conf() { if test -z "$useprocfs"; then cat > $tmpdir/run.awk <<EOF function rewrite_line(line, res, c, i, j) { split(line, l, " ") if (l[1] == "alias") { printf(l[1]) c = int(substr(l[2], 9)) + 1 printf(" snd-card-%i %s\n", c, l[3]) } else if (l[1] == "options") { printf(l[1]) for (i = 2; i <= length(l); i++) { c = substr(l[i], 0, 9) if (c == "snd-card-") { c = int(substr(l[i], 9)) + 1 printf(" snd-card-%i", c) continue } c = substr(l[i], 0, 6) if (c == "index=") { printf(" index=") c = substr(l[i], 6) split(c, y, ",") for (j = 1; j <= length(y); j++) { c = int(y[j]) + 1 if (j > 1) printf(",") printf("%i", c) } continue } printf(" %s", l[i]) } printf("\n") } else if (l[1] == "remove") { printf(l[1]) flag = 0 for (i = 2; i <= length(l); i++) { if (l[i] == "/usr/sbin/alsactl" || l[i] == "store") { flag++; printf(" %s", l[i]); continue; } if (flag == 2) { c = int(l[i]) + 1; printf(" %i", c); flag = 0; continue; } flag = 0; printf(" %s", l[i]); } printf("\n") } else { print line } } BEGIN { aloop=0; } /alias snd-card-0 snd-aloop/ { aloop=1; next; } /options snd-card-0 index=0/ { if (aloop) next; } /options snd-aloop/ { next; } /alias snd-card-/ { rewrite_line(\$0); next; } /options snd-/ { rewrite_line(\$0); next; } /remove snd-/ { rewrite_line(\$0); next; } { print \$0; } EOF cat $modprobeconf | awk -f $tmpdir/run.awk > $modprobeconf.new rm $tmpdir/run.awk || exit 1 else local index=1 echo -n "" > $modprobeconf.new declare -A modules printed for mod in $(cat /proc/asound/modules | grep -Ev "^2[6789]" | colrm 1 3); do if test "$mod" != "snd_aloop" -a "$mod" != "snd-aloop"; then if test -z "${modules[$mod]}"; then modules[$mod]="$index" else modules[$mod]="${modules[$mod]},$index" fi echo "alias snd-card-$index $mod" >> $modprobeconf.new echo "options snd-card-$index index=$index" >> $modprobeconf.new fi index=$(expr $index + 1) done for mod in $(cat /proc/asound/modules | grep -Ev "^2[6789]" | colrm 1 3); do if test "$mod" != "snd_aloop" -a "$mod" != "snd-aloop"; then if test -z "${printed[$mod]}"; then echo "options $mod index=${modules[$mod]}" >> $modprobeconf.new printed[$mod]=yes fi fi done fi cat >> $modprobeconf.new <<EOF alias snd-card-0 snd-aloop options snd-card-0 index=0 options snd-aloop index=0 EOF if test -r $modprobeconf; then cp $modprobeconf "$vardir/modprobe.conf" || exit 1 else touch "$vardir/modprobe.conf" || exit 1 fi mv $modprobeconf.new $modprobeconf || exit 1 echo "$modprobeconf changed" echo " *** use --revert option to revert configuration changes ***" } function modify_modprobe_conf() { local check=$(cat $modprobeconf 2> /dev/null | grep -E "^alias snd-card-0 snd-aloop") if test -n "$check"; then echo "Module snd-aloop is already installed." else reindex_modprobe_conf kernel_modules fi } function myprintf() { local cnt=$(echo "$1" | grep -o "%" | wc -l) if test $cnt -eq 1; then printf "$1" "$2" else if test $cnt -eq 2; then printf "$1" "$2" "$3" else printf "$1" "$2" "$3" "$4" fi fi } function check_ctl_name() { $amixer_prg -D "$1" contents | grep "name='$2'" } function check_oss_mixer() { grep ": mixer" /proc/asound/oss/devices } function get_card_id() { $amixer_prg -D "$1" info | head -1 | cut -d '/' -f 1 | cut -d ' ' -f 3- | awk '{ print substr($0, 2, length($0)-2) }' } function generate_alsaloop_line() { local file="$1" local idx="$2" local carg=$(myprintf "$cdevice" $ccard $cdev $idx) local parg=$(myprintf "$pdevice" $pcard $pdev $idx) local res="-C $carg -P $parg -T $idx -t $delay" if test -n "$cctl"; then local carg=$(myprintf "$cctl" $pcard $cdev $idx) local res="$res -Y $carg" fi if test -n "$pctl"; then local parg=$(myprintf "$pctl" $pcard $pdev $idx) local res="$res -X $parg" fi if test -n "$arg"; then local res="$res $arg" fi if test $idx -eq 7; then if test -n "$one"; then local res="$res $one" fi if test -z "$pctl"; then local res="$res -X hw:$pcard" fi local mymix="$mix" if test -z "$mymix"; then local mymix="Master" for mymix in Master "Master Mono" Headphone Headphone2 PCM Speaker \ "Desktop Speaker" Beep Front Rear Center LFE Side \ Surround ; do local check=$(check_ctl_name hw:$pcard "$mymix Playback Switch") if test -n "$check"; then local res="$res -m \"name='$mymix Playback Switch'\"" fi local check=$(check_ctl_name hw:$pcard "$mymix Playback Volume") if test -n "$check"; then local res="$res -m \"name='$mymix Playback Volume'\"" fi done else local check=$(check_ctl_name hw:$pcard "$mymix Playback Switch") if test -n "$check"; then local res="$res -m \"name='$mymix Playback Switch'\"" fi local check=$(check_ctl_name hw:$pcard "$mymix Playback Volume") if test -n "$check"; then local res="$res -m \"name='$mymix Playback Volume'\"" fi fi local check=$(check_oss_mixer) if test -n "$check"; then local res="$res -O \"$mymix@VOLUME\"" fi fi echo $res >> $file } function generate_alsaloop_conf() { local idx=0 rm -f $alsaloopconf.new while test $idx -lt 8; do generate_alsaloop_line $alsaloopconf.new $idx idx=$(expr $idx + 1) done mv $alsaloopconf.new $alsaloopconf || exit 1 } function kill_alsaloop() { pid=$($pidof_prg alsaloop) if test -n "$pid"; then echo "Killing alsaloop..." fi while test -n "$pid"; do kill $pid sleep 0.01 pid=$($pidof_prg alsaloop) done } function restart_alsaloop() { echo "Restarting alsaloop: delay $delay us." /etc/init.d/alsaloop start sleep 0.4 local pid=$($pidof_prg alsaloop) if test -z "$pid"; then echo "ERROR: Not started, check /var/log/messages for details" else ps -p $pid fi } function create_initd() { if test -x /etc/init.d/alsaloop; then echo "/etc/init.d/alsaloop exists" else cat >> /etc/init.d/alsaloop <<EOF #! /bin/sh # alsaloop init file # Copyright (C) 2010 Jaroslav Kysela <jkysela@redhat.com> # For RedHat and cousins: # chkconfig: 2345 99 01 # description: Start alsaloop daemon # processname: alsaloop ### BEGIN INIT INFO # Provides: alsaloop # Required-Start: \$local_fs # Required-Stop: \$local_fs # Should-Start: # Short-Description: ALSALOOP # Description: ALSALOOP ### END INIT INFO # This program 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 2, or (at your option) any later # version. # You should have received a copy of the GNU General Public License (for # example COPYING); if not, write to the Free Software Foundation, Inc., 675 # Mass Ave, Cambridge, MA 02139, USA. # This code was originally developed as a Senior Thesis by Michael Cornwell # at the Concurrent Systems Laboratory (now part of the Storage Systems # Research Center), Jack Baskin School of Engineering, University of # California, Santa Cruz. http://ssrc.soe.ucsc.edu/. alsaloop_opts="--daemonize --workaround serialopen --config $alsaloopconf" ALSALOOP_BIN=/usr/bin/alsaloop test -x /usr/local/bin/alsaloop && ALSALOOP_BIN=/usr/local/bin/alsaloop # Source function library . /etc/rc.d/init.d/functions RETVAL=0 prog=alsaloop pidfile=/var/lock/subsys/alsaloop start() { modprobe snd-aloop echo -n \$"Starting \$prog: " daemon \$ALSALOOP_BIN \$alsaloop_opts RETVAL=\$? echo [ \$RETVAL = 0 ] && touch \$pidfile return \$RETVAL } stop() { echo -n \$"Shutting down \$prog: " killproc \$ALSALOOP_BIN RETVAL=\$? echo rm -f \$pidfile return \$RETVAL } case "\$1" in start) start ;; stop) stop ;; restart) stop start ;; try-restart) if [ -f \$pidfile ]; then stop start fi ;; status) status $prog RETVAL=$? ;; *) echo \$"Usage: \$0 {start|stop|restart|try-restart}" RETVAL=3 esac exit \$RETVAL EOF chmod 755 /etc/init.d/alsaloop || exit 1 $chkconfig_prg --add alsaloop $chkconfig_prg alsaloop on fi } function modify_pa_conf() { if grep Loopback /etc/pulse/default.pa > /dev/null; then echo "/etc/pulse/default.pa already modified" else if test -f /etc/pulse/default.pa; then local pcardid=$(get_card_id "hw:$pcard") cat /etc/pulse/default.pa | \ sed -e 's/^load-module module-udev-detect/#load-module module-udev-detect # commented by alsa-delay/' \ -e 's/^load-module module-detect/#load-module module-detect # commented by alsa-delay/' \ -e "s/^### Automatically load driver modules for Bluetooth hardware/load-module module-alsa-card device_id=Loopback\nload-module module-alsa-card device_id=$pcardid\n\n### Automatically load driver modules for Bluetooth hardware/" > /etc/pulse/default.pa.new if test -s /etc/pulse/default.pa.new; then cp /etc/pulse/default.pa "$vardir/pulse-default.pa" mv /etc/pulse/default.pa.new /etc/pulse/default.pa echo "/etc/pulse/default.pa changed" echo " *** use --revert option to revert configuration changes ***" fi fi fi local file= local rh= if test -d /etc/alsa -a -f /etc/alsa/pulse-default.conf; then file=/etc/alsa/alsaloop-default.conf rh=yes fi if test -z "$file"; then echo "unknown PulseAudio setup (asound.conf)" elif test -f $file; then echo "$file exists" else cat >> $file <<EOF pcm.!default { @args [ CARD ] @args.CARD { type string } type asym playback.pcm "plughw:Loopback" capture.pcm { type pulse } } EOF if test -n "$rh"; then cat /etc/asound.conf | sed 's/pulse-default.conf/alsaloop-default.conf/g' > /etc/asound.conf.new if test -s /etc/asound.conf.new; then mv /etc/asound.conf.new /etc/asound.conf fi fi fi } rundir=$(pwd) export LC_ALL=C export LANGUAGE=C check_environment if test -n "$clean"; then clean fi if test -n "$revert"; then revert exit 0 fi kill_alsaloop create_initd modify_modprobe_conf generate_alsaloop_conf if test -n "$pa"; then modify_pa_conf fi restart_alsaloop clean exit 0
Close