diff options
author | Peter Pickford | 2016-02-18 02:12:16 -0800 |
---|---|---|
committer | Peter Pickford | 2016-02-18 02:12:16 -0800 |
commit | f5792e485ef96b8ad8b6d561899294ea1a099148 (patch) | |
tree | cc162ba253b9d0379d79a5f1c3e0b24439fa8987 | |
download | aur-f5792e485ef96b8ad8b6d561899294ea1a099148.tar.gz |
initial commit
-rw-r--r-- | .SRCINFO | 31 | ||||
-rw-r--r-- | PKGBUILD | 43 | ||||
-rwxr-xr-x | convert_sound.pl | 74 | ||||
-rwxr-xr-x | install_vocp.pl | 272 | ||||
-rw-r--r-- | vocp.install | 8 |
5 files changed, 428 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..d9f23860c6d2 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,31 @@ +# Generated by makepkg 5.0.0 +# Thu Feb 18 10:10:38 UTC 2016 +pkgbase = vocp + pkgdesc = VOCP is a complete messaging solution for voice modems, with voicemail, fax, email pager, DTMF command shell and Text-to-Speech support, 3 GUIs and a web interface. Send and receive faxes and voicemail, listen to emails and execute programs on the host. + pkgver = 0.9.3 + pkgrel = 1 + url = http://vocp.psychogenic.net/index.php?mode=function + install = vocp.install + arch = i686 + arch = x86_64 + license = GPL + makedepends = make + makedepends = perl + depends = mgetty-vgetty + depends = perl-audio-dsp + depends = perl-crypt-blowfish + depends = perl-crypt-cbc + depends = perl-mime-tools + depends = perl-tk + depends = perl-xml-mini + depends = perl-modem-vgetty + conflicts = mgetty + source = http://prdownloads.sourceforge.net/vocp/VOCP-0.9.3.tar.bz2 + source = convert_sound.pl + source = install_vocp.pl + md5sums = 1a570a1f5af11786b39f6aed4304b5c3 + md5sums = b6d69da8f3221d7d51e3be4d2c067c00 + md5sums = 3abd17fdd551aee139b8f40efd7a93a0 + +pkgname = vocp + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..c7c632979d08 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,43 @@ +# Maintainer: +# Contributor: Peter Pickford <arch@netremedies.ca> + +pkgname=vocp +pkgver=0.9.3 +pkgrel=1 +pkgdesc="VOCP is a complete messaging solution for voice modems, with voicemail, fax, email pager, DTMF command shell and Text-to-Speech support, 3 GUIs and a web interface. Send and receive faxes and voicemail, listen to emails and execute programs on the host." +url="http://vocp.psychogenic.net/index.php?mode=function" +license=('GPL') +arch=('i686' 'x86_64') +depends=('mgetty-vgetty' 'perl-audio-dsp' 'perl-crypt-blowfish' 'perl-crypt-cbc' 'perl-mime-tools' 'perl-tk' 'perl-xml-mini' 'perl-modem-vgetty' ) +conflicts=('mgetty') +makedepends=('make' 'perl') +install='vocp.install' +source=('http://prdownloads.sourceforge.net/vocp/VOCP-0.9.3.tar.bz2' +'convert_sound.pl' +'install_vocp.pl' + ) +md5sums=('1a570a1f5af11786b39f6aed4304b5c3' + 'b6d69da8f3221d7d51e3be4d2c067c00' + '3abd17fdd551aee139b8f40efd7a93a0') + +build(){ + cd "$srcdir/$pkgname-$pkgver/prog/VOCP" + + # Install module in vendor directories. + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} +check(){ + cd "$srcdir/$pkgname-$pkgver/prog/VOCP" + #make test +} +package(){ + cd "$srcdir/$pkgname-$pkgver/" + $srcdir/install_vocp.pl "$pkgdir/" + cd "$srcdir/$pkgname-$pkgver/prog/VOCP" + + make install DESTDIR="$pkgdir/" + # remove perllocal.pod and .packlist + find "$pkgdir" -name .packlist -o -name perllocal.pod -delete + install -D -m555 $srcdir/convert_sound.pl $pkgdir/usr/local/vocp/bin/convert_sound.pl +} diff --git a/convert_sound.pl b/convert_sound.pl new file mode 100755 index 000000000000..6bf7e3eac8ce --- /dev/null +++ b/convert_sound.pl @@ -0,0 +1,74 @@ +#!/usr/bin/perl + +use strict; + + + +use vars qw { + $Cp + @Message_dirs + $VOCP_conf_dir + $Spool_dir + %Spool_subdirs + %LocalProgram_files + %Other_Local_exes + %Config_files + @Doc_files + @Com_shell_examples + $Version + $VOCP_group + $Groupadd + $LocalDir + %PerlModule_dirs + $Pwd + %RequiredModules + @LogFiles + $pvftormdopt + $LogDir + }; + +if (defined $ARGV[0] ) { +$pvftormdopt = $ARGV[0]; +} else { +$pvftormdopt = 'Lucent 5'; +} +$LogDir='/var/log/'; + +$Cp='/usr/bin/cp'; + +$LocalDir = "/usr/local/vocp"; + +$VOCP_conf_dir = "/etc/vocp"; + +$Spool_dir = "/var/spool/voice"; + +@Message_dirs = ( + 'messages/num', + 'messages/day', + 'messages/system', + 'messages/menu', + 'messages', + ); + + +sub convert_sound { + + #Do conversion of sound files + my $pvftormd = '/usr/bin/pvftormd'; + + print "\nConverting sound files, this can take a while...\n"; + + chdir $LocalDir; + + foreach my $dir (@Message_dirs) { + + system("ls $dir/*.pvf | sed 's/\.pvf//' | xargs -i $pvftormd $pvftormdopt {}.pvf $Spool_dir/{}.rmd"); + + } + print "Done: sound files converted to rmd format. " + ."Test them with:\n" + ."vm play -s -v ./sounds/path/to/file.rmd\n\n"; + + return 1; +} +&convert_sound; diff --git a/install_vocp.pl b/install_vocp.pl new file mode 100755 index 000000000000..0c893c0c5879 --- /dev/null +++ b/install_vocp.pl @@ -0,0 +1,272 @@ +#!/usr/bin/perl + +use strict; + + + +use vars qw { + $Cp + @Message_dirs + $VOCP_conf_dir + $Spool_dir + %Spool_subdirs + %LocalProgram_files + %Other_Local_exes + %Config_files + @Doc_files + @Com_shell_examples + $Version + $VOCP_group + $Groupadd + $LocalDir + %PerlModule_dirs + $Pwd + %RequiredModules + @LogFiles + $basedir + $LogDir + }; + +$basedir=$ARGV[0]; + +$LogDir='/var/log/'; + +$Cp='/usr/bin/cp'; + +$LocalDir = "$basedir/usr/local/vocp"; + +$VOCP_conf_dir = "$basedir/etc/vocp"; + +$Spool_dir = "$basedir/var/spool/voice"; + +@Message_dirs = ( + 'messages/num', + 'messages/day', + 'messages/system', + 'messages/menu', + 'messages', + ); + +%Spool_subdirs = ( + 'incoming' => 'incoming', + 'cache' => 'incoming/cache', + 'messages' => 'messages', + 'commands' => 'commands', + 'num' => 'messages/num', + 'day' => 'messages/day', + 'system' => 'messages/system', + 'menu' => 'messages/menu', + ); + + +%PerlModule_dirs = ( + 'VOCP' => 'prog/VOCP', +); + +%LocalProgram_files = ( + 'installer' => 'install_vocp.pl', + 'sampleconv' => 'modify_sample_rate.pl', + 'vocpweb' => 'vocpweb', + 'progbin' => 'prog/bin', + 'progrun' => 'prog/run', + 'proglib' => 'prog/lib', + 'images' => 'images', + 'sounds' => 'sounds', + 'testfax' => 'images/faxtest.g3', +); + + +%Other_Local_exes = ( + + 'vocp' => 'prog/vocp.pl', +); + + +%Config_files = ( + 'genconf' => 'prog/vocp.conf', + 'boxconf' => 'prog/boxes.conf', + 'boxshadow' => 'prog/boxes.conf.shadow', + 'cidconf' => 'prog/cid-filter.conf', + 'boxsample' => 'prog/boxes.conf.sample', +); + +@LogFiles = ("$basedir/var/log/vocp.log", "$basedir/var/log/vocp-calls.log"); + + +@Doc_files = ( + 'doc/*', + ); + +@Com_shell_examples = ('commands/seleclisting.pl', 'commands/ip.pl', 'commands/date.pl', 'commands/echo.pl', 'commands/motd.pl'); + +$VOCP_group = 'vocp'; + + + +# Installs are the relevant files, sets permissions and +# converts the sound files. +# +# Uses a bunch of system() calls - not pretty, but not +# too important, used only once... +# +# To be done: Check return values of all system() calls... + +#main +{ + + $Pwd = `pwd`; + chomp($Pwd); + + + system("touch " . join(" ", @LogFiles)); + + ########################### Directories ################################ + + print "\nCreating directories...\n"; + print "\t$VOCP_conf_dir\n"; + system("mkdir -p $VOCP_conf_dir"); + system("mkdir -p $LogDir"); + + + # Documentation dir + my $docdir = "$LocalDir/doc"; + + print "\t$docdir\n"; + # We call system to use the -p option + system("mkdir -p $docdir"); + + print "\t$Spool_dir\n"; + system("mkdir -p $Spool_dir"); + + foreach my $dir (values %Spool_subdirs) { + print "\t$Spool_dir/$dir\n"; + system("mkdir -p $Spool_dir/$dir"); + } + + print "\nDone.\n"; + + ########################### VOCP modules ################################ + #Copy program files + chdir($Pwd); + print "Installing VOCP Perl modules...\n"; + chdir($PerlModule_dirs{'VOCP'}); + system("perl Makefile.PL; make; make install"); + print "\nDone\n\n\n"; + chdir($Pwd); + + + + ########################### Utility programs and files ################################ + + print "Copying files...\n"; + + print "\nConfiguration files\n"; + foreach my $file (values %Config_files) { + print "\t$file to $VOCP_conf_dir\n"; + my $filename; + if ($file =~ m|([^/]+$)|) { #usually will + $filename = $1; + } + if ($filename && (-e "$VOCP_conf_dir/$filename") ) { + print "$filename exists. Saving new file as $filename.new - do a diff to see what has changed\n"; + system("$Cp $file $VOCP_conf_dir/$filename.new"); + } else { + system("$Cp $file $VOCP_conf_dir"); + } + } + + print "\nDocs\n"; + foreach my $file (@Doc_files) { + print "\t$file to $docdir\n"; + system("$Cp $file $docdir"); + } + + + + chdir($LocalProgram_files{'progbin'}); + + my $compiler = $ENV{'CC'} || 'gcc'; + print "Creating pwcheck setgid wrapper\n"; + system("$compiler -o pwcheck pwcheck.c"); + print "Creating xfer_to_vocp setuid wrapper\n"; + system("$compiler -o xfer_to_vocp xfer_to_vocp.c"); + my $festDir='/usr'; + $festDir =~ s|/$||; + system("perl -pi -e \"s|txt2wavProg = '/path/to/bin/text2wave'|txt2wavProg = '$festDir/bin/text2wave'|g\" txttopvf") + if ($festDir); + + + + chdir ($Pwd); + + foreach my $file (values %LocalProgram_files) { + print "Installing $file to $LocalDir\n"; + system("$Cp -R $file $LocalDir"); + } + + foreach my $file (values %Other_Local_exes) { + print "Installing $file to $LocalDir/bin\n"; + system("$Cp -R $file $LocalDir/bin"); + } + + + + print "\nPVF files to $LocalDir\n"; + foreach my $dir (@Message_dirs) { + #print "\t$dir/*.pvf to $Spool_dir/$dir\n"; + system("mkdir -p $LocalDir/$dir"); + system("$Cp $dir/*.pvf $LocalDir/$dir"); + } + + print "\nCommand shell examples and stock programs\n"; + my $cmdspooldir = "$Spool_dir/$Spool_subdirs{'commands'}"; + foreach my $command (@Com_shell_examples) + { + my $filename; + if ($command =~ m|.+/([^/]+)$|) + { + $filename = $1; + } else { + $filename = $command; + } + next if (-e "$cmdspooldir/$filename"); + + + print "\t$filename to $cmdspooldir\n"; + system("$Cp $command $cmdspooldir"); + chmod oct('0755'), "$cmdspooldir/$filename"; + } + + + + + print "\nWhat should the name of the new group be?\n[$VOCP_group]: "; + # The incoming dir - so the the messages script can delete messages belonging to the owner + chmod oct('1777'), "$Spool_dir/$Spool_subdirs{'incoming'}"; + + + my $uid=0; + my $gid=498; + system("groupadd -g $gid vocp"); + + + chown $uid, $gid, $LocalDir . '/bin/messages.pl', $VOCP_conf_dir . '/boxes.conf', $VOCP_conf_dir . '/boxes.conf.shadow', + "$Spool_dir/$Spool_subdirs{'cache'}", "$LocalDir/bin/pwcheck.pl", "$LocalDir/bin/pwcheck"; + + chmod oct('0644'), $VOCP_conf_dir . '/boxes.conf'; + chmod oct('0640'), $VOCP_conf_dir . '/boxes.conf.shadow'; + chmod oct('2755'), $LocalDir . '/bin/messages.pl'; + + if (-e $LocalDir . '/bin/pwcheck') + { + chmod oct('2755'), $LocalDir . '/bin/pwcheck'; + } else { + chmod oct('2755'), $LocalDir . '/bin/pwcheck.pl'; + } + chmod oct('0755'), $LocalDir . '/bin/xvocp.pl'; + chmod oct('0755'), $LocalDir . '/bin/boxconf.pl'; + + chmod oct('0775'), "$Spool_dir/$Spool_subdirs{'cache'}"; + + +} diff --git a/vocp.install b/vocp.install new file mode 100644 index 000000000000..749433abe18c --- /dev/null +++ b/vocp.install @@ -0,0 +1,8 @@ +#convert sound files and remove them +post_install(){ + /usr/local/vocp/bin/convert_sound.pl +} +post_remove(){ + rm -rf /var/spool/voice/messages +} + |