From db36c399fcfe215e0bc9e0fe484918ff14286764 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 6 Aug 2012 21:27:38 -0500
Subject: gnupg -new

---
 abs/core/LinHES-config/PKGBUILD       |  13 +-
 abs/core/LinHES-config/mv_install.py  | 222 ++++++++++++++++++++---
 abs/core/LinHES-config/myth_user_call | 319 ++++++++++++++++------------------
 abs/core/gnupg/PKGBUILD               |  47 +++++
 abs/core/gnupg/install                |  20 +++
 5 files changed, 423 insertions(+), 198 deletions(-)
 create mode 100644 abs/core/gnupg/PKGBUILD
 create mode 100644 abs/core/gnupg/install

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index e872bcf..52303f9 100644
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -5,9 +5,10 @@ conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-co
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
 	 'sg3_utils' 'nmbscan' 'system-templates' 'rsync' 'python-parted'
-	 'ddcxinfo' 'python-pexpect' 'python-netifaces' 'LinHES-timezone'
+	 'python-pexpect' 'python-netifaces' 
 	 'python-iplib' 'mythinstall>=2-10')
-arch=('i686')
+#LinHES-timezone
+arch=('i686' 'x86_64')
 
 source=(mv_install.py
 	mv_config.py
@@ -19,7 +20,7 @@ source=(mv_install.py
 	install_db_chroot.sh
 	restore_default_settings.sh
 	myth_settings_wrapper.sh
-    xconfig.sh
+        xconfig.sh
 	timezip.py
 	soundconfig.sh
 	LinHES-release
@@ -102,12 +103,12 @@ build() {
 
     #Copy in the branding stuff
     install -m 0755 LinHES-release $startdir/pkg/etc/LinHES-release
-    install -m 0755 issue $startdir/pkg/etc/issue
+    #install -m 0755 issue $startdir/pkg/etc/issue
 
 }
-md5sums=('18af4fe481e1fc2ae02050026eb5cd27'
+md5sums=('4ef6a2f04f5cb1777ac3772eeccdc78f'
          '16b98fcb3753ef6cfc35075c326d30e4'
-         'e36da536dd651ef182e7642337889e77'
+         '2596460462cf6c889cf8f95485537b20'
          '985891a43f7c4c983eb2a362162f1a0f'
          '13172731c8b08d669336da31cece5775'
          '5a31addfbdc1154b05997f972a32fa33'
diff --git a/abs/core/LinHES-config/mv_install.py b/abs/core/LinHES-config/mv_install.py
index 2e60ab7..c7a002d3 100755
--- a/abs/core/LinHES-config/mv_install.py
+++ b/abs/core/LinHES-config/mv_install.py
@@ -129,7 +129,7 @@ def mdadm_assemble_all():
 
 def copy_updates():
     try:
-        MVROOT = os.environ["MV_ROOT"]
+        MVROOT = os.environ["MV_ROOT"].strip()
     except:
         logging.debug("MVROOT was not defined,  using the default value")
         MVROOT = "/usr/MythVantage"
@@ -475,20 +475,118 @@ def create_squashlist():
         logging.debug(i)
     f.close()
 
+def mount_for_copy_it():
+
+    image_mount='/image_mount/root'
+    try:
+        os.makedirs(image_mount)
+    except:
+        pass
+        image_mount='/image_mount/root'
+
+    image_mount='/image_mount/usr/share'
+    try:
+        os.makedirs(image_mount)
+    except:
+        pass
+
+    image_mount='/image_mount/lib/modules'
+    try:
+        os.makedirs(image_mount)
+    except:
+        pass
+
+    image_mount='/image_mount/var/cache/pacman'
+    try:
+        os.makedirs(image_mount)
+    except:
+        pass
+
+    image_mount='/image_mount/var/lib/pacman'
+    try:
+        os.makedirs(image_mount)
+    except:
+        pass
+
+    fsimage='root-image'
+    cmd = 'mount /run/archiso/sfs/%s/%s.fs /image_mount/root' %(fsimage,fsimage)
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("Mount image root")
+
+    fsimage='lib-modules'
+    cmd = 'mount /run/archiso/sfs/%s/%s.fs /image_mount/lib/modules' %(fsimage,fsimage)
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("Mount image lib-modules")
+
+    fsimage='usr-share'
+    cmd = 'mount /run/archiso/sfs/%s/%s.fs /image_mount/usr/share' %(fsimage,fsimage)
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("Mount image usr share")
+
+    fsimage='var-lib-pacman'
+    cmd = 'mount /run/archiso/sfs/%s/%s.fs /image_mount/var/lib/pacman' %(fsimage,fsimage)
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("Mount image var-lib-pacman")
+
+    fsimage='var-cache-pacman'
+    cmd = 'mount /run/archiso/sfs/%s/%s.fs /image_mount/var/cache/pacman' %(fsimage,fsimage)
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("Mount image var-cahce-pacman")
+
+
+def umount_for_copy_it():
+    cmd='umount %s' %('/image_mount/lib/modules')
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("unMount image lib_modules")
+
+    cmd='umount %s' %('/image_mount/usr/share')
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("unMount image usr_share")
+
+    cmd='umount %s' %('/image_mount/root')
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("unMount image /")
+
+    cmd='umount %s' %('/image_mount/var/cache/pacman')
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("unMount image var-cache-pacman")
+
+    cmd='umount %s' %('/image_mount/var/lib/pacman')
+    rc = runcmd(cmd)[0]
+    if rc != 0 :
+        error_out("unMount image var-lib-pacman")
+
+
 
 def copy_it(install_type):
     logging.info("______Transferring to disk______")
+    mount_for_copy_it()
     logging.debug(  install_type)
     if ( install_type == "install"):
         logging.info("Transferring system")
-        cmd = "  unsquashfs -f -d %s /.livesys/medium/larch/system.sqf" %(data_config.MOUNTPOINT)
-        #runcmd(cmd)
-        rc = runcmd(cmd)[0]
-        if rc != 0 :
-            error_out("Running unsquashfs")
+        cmdlist = ['rsync -avrp /image_mount/root/* /new_boot',
+                   'rsync -arvp /image_mount/lib/* /new_boot/lib/',
+                   'rsync -arvp /image_mount/usr /new_boot',
+                   'rsync -arvp /image_mount/var /new_boot']
+
+                   #'rsync -arvp /image_mount/lib /new_boot',
+
+        for cmd in cmdlist:
+            #runcmd(cmd)
+            rc = runcmd(cmd)[0]
+            if rc != 0 :
+                error_out("Running %s" %cmd)
+
 
-        #logging.debug(cmd)
-        #cmdout=commands.getoutput(cmd)
 
     if ( install_type == "upgrade"):
         logging.info("Upgrading system")
@@ -533,12 +631,10 @@ def copy_it(install_type):
     runcmd(cmd)
     cmd = "chmod +s  %s/bin/mount" %(data_config.MOUNTPOINT)
     runcmd(cmd)
-    cmd = "rm %s/etc/*.larch*" %(data_config.MOUNTPOINT)
-    runcmd(cmd)
-    cmd = "rm %s/etc/mkinitcpio.d/larch*" %(data_config.MOUNTPOINT)
-    runcmd(cmd)
-    cmd = "rm %s/etc/rc.d/functions.d/*larch*" %(data_config.MOUNTPOINT)
-    runcmd(cmd)
+    apply_pristine()
+    post_process()
+
+    umount_for_copy_it()
     logging.debug("__End of copy_it__")
 
 def create_fstab(extralines):
@@ -636,6 +732,7 @@ def fstab_it(install_type):
         elif os.path.exists("/tmp/etc/fstab"):
             logging.debug("     Upgrade and not Knoppmyth,  using old fstab")
             cp_and_log("/tmp/etc/fstab", fstabfile)
+
 #   Catch all for creating new fstab
     if not os.path.exists(data_config.MOUNTPOINT+"/etc"):
         os.makedirs(data_config.MOUNTPOINT+"/etc")
@@ -735,11 +832,31 @@ def fstab_it(install_type):
 
 def grub_it():
     logging.info("______Start of grub install______")
+    cmd = "chroot %s grub-install --target=i386-pc --recheck --debug /dev/%s"  %(data_config.MOUNTPOINT,hostoptions["rootdisk"])
+    logging.info("Running grub-install")
+    runcmd(cmd)
+
+    cmd = "  mkinitcpio  -g %s/boot/initramfs-linux.img" %(data_config.MOUNTPOINT)
+    logging.info("Running mkinitcpio")
+    runcmd(cmd)
+
+
+    cmd="chroot %s grub-mkconfig -o /boot/grub/grub.cfg" %data_config.MOUNTPOINT
+    runcmd(cmd)
+    #rootuuid = find_uuid(hostoptions["rootpartition"])
+    #cmd = "  mkinitcpio -b %s -g %s/boot/kernel26.img" %(data_config.MOUNTPOINT, data_config.MOUNTPOINT)
+    #cmd = "  mkinitcpio  -g %s/boot/initramfs-linux.img" %(data_config.MOUNTPOINT)
+    #logging.info("Running mkinitcpio")
+    #runcmd(cmd)
+
+def grub_it1():
+    logging.info("______Start of grub install______")
     cmd = "  grub-install --recheck --no-floppy --root-directory=%s \"(hd0)\" "  % data_config.MOUNTPOINT
     logging.info("Running grub-install")
     runcmd(cmd)
     rootuuid = find_uuid(hostoptions["rootpartition"])
     cmd = "  mkinitcpio -b %s -g %s/boot/kernel26.img" %(data_config.MOUNTPOINT, data_config.MOUNTPOINT)
+    cmd = "  mkinitcpio  -g %s/boot/initramfs-linux.img" %(data_config.MOUNTPOINT)
     logging.info("Running mkinitcpio")
     runcmd(cmd)
     logging.info("Adding root uuid to grub menu")
@@ -755,6 +872,20 @@ def grub_it():
                 logging.debug("     Found kernel Root grubline:")
                 logging.debug(      templine)
                 templine[2] = "root=/dev/disk/by-uuid/%s" %(rootuuid)
+                templine[1] = "/boot/vmlinuz-linux"
+                newline = ''
+                for i in templine:
+                    newline+=i
+                    newline+="    "
+                newline+="\n"
+                logging.debug("     New grub menu.lst  line:")
+                logging.debug(      newline)
+                newgrub.append(newline)
+            elif line.startswith("initrd"):
+                templine = line.split()
+                logging.debug("     Found initrd grubline:")
+                logging.debug(      templine)
+                templine[1] = "/boot/initramfs-linux.img"
                 newline = ''
                 for i in templine:
                     newline+=i
@@ -823,7 +954,7 @@ def apply_new_auth():
     logging.info("_____Applying Password updates_______")
     passfile = "/root/myth_user_call.out"
     try:
-        MVROOT = os.environ["MV_ROOT"]
+        MVROOT = os.environ["MV_ROOT"].strip()
     except:
         logging.debug("MVROOT was not defined,  using the default value")
         MVROOT = "/usr/MythVantage"
@@ -1030,10 +1161,48 @@ def restore_default_settings():
     copy_updates()
     fix_permissions()
 
+def apply_pristine():
+    logging.info("_____Applying Pristine files_______")
+    if data_config.NOOPDEBUG == "FALSE":
+        cmd = "chroot " + data_config.MOUNTPOINT + " " + "tar -xvf /pristine.tar"
+    else:
+        cmd = "echo chroot " + data_config.MOUNTPOINT + " " + "tar -xvf /pristine.tar"
+    try:
+#            Using os.system because runcmd fails
+            logging.debug(cmd)
+            os.system(cmd)
+    except:
+        logging.debug("Applying pristine files failed %s", passfile)
+    logging.debug
+
+    try:
+        removefile="%s/pristine.tar" %(data_config.MOUNTPOINT)
+        os.remove(removefile)
+    except OSError:
+        logging.debug("     Couldn't remove pristine.tar")
+        pass
+
+def post_process():
+    logging.info("_____Post processing_______")
+    if data_config.NOOPDEBUG == "FALSE":
+        cmd = "chroot " + data_config.MOUNTPOINT + " " + "/root/.post_process/go.sh"
+    else:
+        cmd = "echo chroot " + data_config.MOUNTPOINT + " " + "/root/.post_process/go.sh"
+    try:
+#            Using os.system because runcmd fails
+            logging.debug(cmd)
+            os.system(cmd)
+    except:
+        logging.debug("Applying post_process_failed %s", passfile)
+    logging.debug
+
+
+
+
 def full_install(hostoptions):
     logging.info("______Start of full install______")
     try:
-        MVROOT = os.environ["MV_ROOT"]
+        MVROOT = os.environ["MV_ROOT"].strip()
     except:
         logging.debug("     MVROOT was not defined,  using the default value")
         MVROOT = "/usr/MythVantage"
@@ -1088,7 +1257,10 @@ def full_install(hostoptions):
     msg = "Configuring system"
     update_status(msg)
     progress(98)
+    mount_bind_chroot()
     grub_it()
+    umount_bind_chroot()
+
     genlocale()
     special_hardware_check()
 #   Configuring the system
@@ -1118,7 +1290,7 @@ def full_install(hostoptions):
         logging.info("______Installing Database in CHROOT________")
         mysqldb("stop", '')
         mount_bind_chroot()
-        cmd = "  chroot %s %s/bin/install_db_chroot.sh |tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT)
+        cmd = "chroot %s %s/bin/install_db_chroot.sh |tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT)
         runcmd(cmd)
         logging.info("Running systemconfig in chroot")
         #cmd = "  chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT)
@@ -1135,7 +1307,7 @@ def full_install(hostoptions):
     else:
         logging.info("______No database required,  continuing configuration________")
         mount_bind_chroot()
-        cmd = "  chroot %s DISPLAY=127.0.0.1:0 %s/bin/MythVantage -t restore, default 1" %(data_config.MOUNTPOINT, MVROOT)
+        cmd = "chroot %s DISPLAY=127.0.0.1:0 %s/bin/MythVantage -t restore, default 1" %(data_config.MOUNTPOINT, MVROOT)
         runcmd(cmd)
 #       Need to check for to touch  /tmp/.dbsysfailed
         #cmd = "  chroot %s %s/bin/myth_settings_wrapper.sh -c restore  -t syssettings " %(data_config.MOUNTPOINT, MVROOT)
@@ -1282,7 +1454,7 @@ def upgrade_mount_search():
 def upgrade(hostoptions):
 
     try:
-        MVROOT = os.environ["MV_ROOT"]
+        MVROOT = os.environ["MV_ROOT"].strip()
     except:
         logging.debug("MVROOT was not defined,  using the default value")
         MVROOT = "/usr/MythVantage"
@@ -1385,23 +1557,23 @@ def upgrade(hostoptions):
     if ( systemconfig["SystemType"] == "Master_backend" or  systemconfig["SystemType"] == "Standalone" ):
         if clean_upgrade() or not backup_sql_check():
             logging.info("Installing new database")
-            cmd = "  chroot %s %s/bin/install_db_chroot.sh |tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT)
+            cmd = "chroot %s %s/bin/install_db_chroot.sh |tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT)
             runcmd(cmd)
         else:
             logging.info("Restoring database")
-            cmd = "  chroot %s %s/bin/restore_km_db_chroot.sh %s|tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT, hostoptions["backupfile"])
+            cmd = "chroot %s %s/bin/restore_km_db_chroot.sh %s|tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT, hostoptions["backupfile"])
             runcmd(cmd)
 
     if os.path.exists("/tmp/etc/KnoppMyth-version"):
-        cmd = "  chroot %s %s/bin/myth_settings_wrapper.sh -c restore  -t hostsettings " %(data_config.MOUNTPOINT, MVROOT)
+        cmd = "chroot %s %s/bin/myth_settings_wrapper.sh -c restore  -t hostsettings " %(data_config.MOUNTPOINT, MVROOT)
         runcmd(cmd)
         logging.debug("Correcting permissions because of km->linhes upgrade")
-        cmd = "  chown -R mythtv:mythtv  %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT)
+        cmd = "chown -R mythtv:mythtv  %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT)
         runcmd(cmd)
-        cmd = "  chown -R root:root  %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT+"/backup")
+        cmd = "chown -R root:root  %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT+"/backup")
         runcmd(cmd)
     else:
-        cmd = "  chroot %s %s/bin/myth_settings_wrapper.sh -c restore  -t syssettings " %(data_config.MOUNTPOINT, MVROOT)
+        cmd = "chroot %s %s/bin/myth_settings_wrapper.sh -c restore  -t syssettings " %(data_config.MOUNTPOINT, MVROOT)
         runcmd(cmd)
 
     logging.info("Running systemconfig in chroot 2nd time")
diff --git a/abs/core/LinHES-config/myth_user_call b/abs/core/LinHES-config/myth_user_call
index 0914b03..1b8d315 100644
--- a/abs/core/LinHES-config/myth_user_call
+++ b/abs/core/LinHES-config/myth_user_call
@@ -1,174 +1,159 @@
-#!/bin/bash
+#!/usr/bin/python2
+# -*- coding: utf-8 -*-
 #Wrapper script to manage USERNAME accounts + web security
 # myth_USERNAME_all -c add -u USERNAME
 # myth_USERNAME_all -c delete -u USERNAME
 # myth_USERNAME_all -c pass  -u USERNAME -p pass
 # myth_USERNAME_all -c web  -u USERNAME -p pass
 
-INIT_CHECK=TRUE
-FULL_CALL="$@"
-function CHROOT_CHECK {
-    INIT=`ps -p 1 -o comm=`
-    if [ x$INIT = xrunit ]
-    then
-       CHROOT_NEEDED=FALSE
-    else
-       CHROOT_NEEDED=TRUE
-    fi
-}
-
-function store_commands () {
-    echo "$FULL_CALL" >> /root/myth_user_call.out
-    chmod 600 /root/myth_user_call.out
-}
-
-
-function add_user() {
-    if [ $CHROOT_NEEDED = TRUE ]
-    then
-        echo "calling myth_call_user in chroot to add user"
-        store_commands
-    else
-        echo "adding user $USERNAME"
-	useradd -m -s /bin/bash $USERNAME -G audio,video,optical,storage,users
-    usermod -a -G mythtv $USERNAME
-
-    fi
-
-}
-
-
-function del_user() {
-    if [ $CHROOT_NEEDED = TRUE ]
-    then
-        echo "calling myth_call_user in chroot to delete user"
-        store_commands
-    else
-        echo "removing  user $USERNAME"
-        userdel $USERNAME
-    fi
-
-}
-
-
-function pass_change() {
-    if [ $CHROOT_NEEDED = TRUE ]
-    then
-        echo "calling myth_call_user in chroot to change password"
-        store_commands
-    else
-        echo "changing password for $USERNAME"
-        echo $USERNAME:$PASSWORD | chpasswd
-    fi
-
-}
-
-
-function web_security {
-
-    grep -q ${USERNAME}: /etc/lighttpd/lighttpd.user
-    if [ $? = 0 ]
-    then
-            #delete user
-            sed -i "/${USERNAME}\:/d"  /etc/lighttpd/lighttpd.user
-    fi
-    echo "${USERNAME}:${PASSWORD}" >> /etc/lighttpd/lighttpd.user
-
-}
-
-function ARG_ERR()  {
-        if [  x$OPTARG = "x" ]
-        then
-            echo "$SWITCH NEEDS AND ARG"
-            exit 11
-        fi
-}
-
-
-function print_help {
-
-    echo "Valid options are:"
-    echo "  -c (add|delete|pass|web)"
-    echo "  -u  USERNAMEname"
-    echo "  -p  password"
-    exit 1
-}
-
-if [ $# -eq 0 ]
-then
-    print_help
-fi
-
-declare -r OPTSTRING="c:u:p:i"
-while getopts "$OPTSTRING"  SWITCH
-do
-    case $SWITCH in
-
-            c)  ARG_ERR
-                OPERATION=$OPTARG
-                ;;
-            u)  ARG_ERR
-                USERNAME=$OPTARG
-                ;;
-            p)  ARG_ERR
-                PASSWORD=$OPTARG
-                ;;
-            i)  INIT_CHECK=FALSE
-
-    esac
-done
-
-if [ $INIT_CHECK = TRUE ]
-then
-    CHROOT_CHECK
-else
-    CHROOT_NEEDED=FALSE
-fi
-
-case $OPERATION in
-    add)
-            if [ x$USERNAME = x ]
-            then
-                print_help
-            fi
-            add_user
-        ;;
-    delete)
-            if [ x$USERNAME = x ]
-            then
-                print_help
-            fi
-            del_user
-        ;;
-    pass)
-            if [ x$USERNAME = x ]
-            then
-                print_help
-            fi
-
-            if [ x$PASSWORD = x ]
-            then
-                print_help
-            fi
-            pass_change
-        ;;
-
-    web)
-            if [ x$USERNAME = x ]
-            then
-                print_help
-            fi
-
-
-            if [ x$PASSWORD = x ]
-            then
-                print_help
-            fi
-            echo "adding webUSERNAME $USERNAME with pass $PASSWORD"
-	    web_security
-            ;;
-    *)  print_help
-        ;;
-esac
-
+import pexpect, sys, time
+import os, re, getopt
+import mv_common
+
+
+
+
+def chroot_check():
+    if  not INIT_CHECK :
+        return False
+    cmd = '''ps -p 1 -o comm='''
+    init = mv_common.runcmd_output(cmd).strip()
+    if init == "runit":
+        return False
+    else:
+        return True
+
+
+def store_commands(full_call):
+    file_name = "/root/myth_user_call.out"
+    try:
+        f = open(file_name,'a')
+    except:
+        print "%s could not be opened" % file_name
+        sys.exit(1)
+    f.write(full_call)
+    f.write("\n")
+    f.close()
+    try:
+        os.chmod(600,file_name)
+    except:
+        pass
+
+
+def add_user(username,full_call):
+    if chroot_check() :
+        print "calling myth_call_user in chroot to add user"
+        store_commands(full_call)
+    else:
+        print "Adding user %s" %username
+        cmd = '''useradd -m -s /bin/bash %s -G audio,video,optical,storage,users''' %username
+        mv_common.runcmd(cmd)
+        cmd = ''' usermod -a -G mythtv %s ''' %username
+
+
+def del_user(username,full_call):
+    if chroot_check() :
+        print "calling myth_call_user in chroot to del user"
+        store_commands(full_call)
+    else:
+        print "Removing  user %s" %username
+        cmd = '''userdel  %s ''' %username
+        mv_common.runcmd(cmd)
+
+
+def pass_change(username,password,full_call) :
+    if chroot_check() :
+        print "calling myth_call_user in chroot to change password"
+        store_commands(full_call)
+    else:
+        print "changing password for %s" %username
+        passwd = [REDACTED] %s" % username)
+
+        for repeat in (1, 2):
+                passwd.expect("password: ")
+                passwd.sendline(password)
+                time.sleep(0.1)
+
+def web_security(username,password) :
+    file_name = "/etc/lighttpd/lighttpd.user"
+    file_contents = ''
+    if  os.path.exists(file_name):
+        try:
+            f = open(file_name,'r')
+            file_contents = f.readlines()
+        except:
+            print " couldn't read %s" % file_name
+    try:
+        f = open(file_name,'w')
+    except:
+        print "%s could not be opened for writing" % file_name
+        return
+
+    for line in file_contents:
+        if not re.search(username, line):
+            f.write(line)
+    line = "%s:%s" %(username, password)
+    f.write(line)
+    f.write("\n")
+    f.close()
+
+
+def usage ():
+    print "Valid options are:"
+    print "  -c (add|delete|pass|web)"
+    print "  -u  USERNAME"
+    print "  -p  password"
+    sys.exit(0)
+
+def main(argv):
+    global INIT_CHECK
+    full_call = ""
+    INIT_CHECK = True
+    try:
+        opts,  args = getopt.getopt(argv,  'c:u:p:ih' )
+    except getopt.GetoptError, why:
+        print why
+        usage()
+        print "exception happened"
+        sys.exit(2)
+
+    for opt,  arg in opts:
+        if opt in ("-h",  "--help"):
+            usage()
+            sys.exit(0)
+        elif opt in ("-c") :
+            module = arg
+            full_call += ''' -c %s ''' %re.escape(arg)
+        elif opt in ("-u") :
+            username = arg
+            full_call += ''' -u %s ''' %re.escape(arg)
+        elif opt in ("-p") :
+            password = arg
+            full_call += ''' -p %s ''' %re.escape(arg)
+        elif opt in ("-i") :
+            INIT_CHECK = False
+            full_call += ''' -i '''
+    try:
+        username
+    except:
+        usage()
+
+    if module == "add":
+        add_user(username,full_call)
+    elif module == "delete":
+        del_user(username,full_call)
+    elif module == "pass":
+        try:
+            password
+        except:
+            print "needs a password"
+            usage()
+        pass_change(username,password,full_call)
+    elif module == "web":
+        web_security(username,password)
+    else:
+        usage()
+
+if __name__ == "__main__":
+   main(sys.argv[1:])
 
diff --git a/abs/core/gnupg/PKGBUILD b/abs/core/gnupg/PKGBUILD
new file mode 100644
index 0000000..cfc51b0
--- /dev/null
+++ b/abs/core/gnupg/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 156582 2012-04-21 09:42:46Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=gnupg
+pkgver=2.0.19
+pkgrel=2
+pkgdesc='Complete and free implementation of the OpenPGP standard'
+url='http://www.gnupg.org/'
+license=('GPL')
+arch=('i686' 'x86_64')
+optdepends=('curl: gpg2keys_curl'
+            'libldap: gpg2keys_ldap'
+            'libusb-compat: scdaemon'
+            'texinfo: documentation')
+makedepends=('curl' 'libldap' 'libusb-compat' 'texinfo')
+depends=('bzip2' 'libksba' 'libgcrypt' 'pth' 'libassuan' 'readline' 'pinentry' 'dirmngr')
+source=("ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2"{,.sig})
+sha1sums=('190c09e6688f688fb0a5cf884d01e240d957ac1f'
+          'f6e6830610a8629b0aad69d789373bf8ca481733')
+
+install=install
+
+conflicts=('gnupg2')
+provides=("gnupg2=${pkgver}")
+replaces=('gnupg2')
+
+build() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	./configure --prefix=/usr --libexecdir=/usr/lib/gnupg
+	make
+}
+
+check() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	make check
+}
+
+package() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	make DESTDIR="${pkgdir}" install
+	ln -s gpg2 "${pkgdir}"/usr/bin/gpg
+	ln -s gpg2 "${pkgdir}"/usr/bin/gpgv
+	ln -s gpg2.1.gz "${pkgdir}"/usr/share/man/man1/gpg.1.gz
+}
diff --git a/abs/core/gnupg/install b/abs/core/gnupg/install
new file mode 100644
index 0000000..3a5dc9f
--- /dev/null
+++ b/abs/core/gnupg/install
@@ -0,0 +1,20 @@
+info_dir=/usr/share/info
+info_files=(gnupg.info gnupg.info-1 gnupg.info-2)
+
+post_install() {
+  [ -x usr/bin/install-info ] || return 0
+  for f in ${info_files[@]}; do
+    usr/bin/install-info ${info_dir}/$f ${info_dir}/dir 2> /dev/null
+  done
+}
+
+post_upgrade() {
+  post_install $1
+}
+
+pre_remove() {
+  [ -x usr/bin/install-info ] || return 0
+  for f in ${info_files[@]}; do
+    usr/bin/install-info --delete ${info_dir}/$f ${info_dir}/dir 2> /dev/null
+  done
+}
-- 
cgit v0.12

