ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:23.92 GB of 70.42 GB (33.96%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: 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,

/ usr/ src/ maildrop-2.2.0/ maildir/ - drwxr-xr-x

Directory:
Viewing file:     maildiracl.c (4.36 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/*
** Copyright 2003 Double Precision, Inc.
** See COPYING for distribution information.
*/

/* $Id: maildiracl.c,v 1.1 2004/01/11 02:47:33 mrsam Exp $ */

#if    HAVE_CONFIG_H
#include    "config.h"
#endif
#include    <stdio.h>
#include    <string.h>
#include    <stdlib.h>
#if    HAVE_FCNTL_H
#include    <fcntl.h>
#endif
#if    HAVE_UNISTD_H
#include    <unistd.h>
#endif
#include    <sys/types.h>
#if    HAVE_SYS_STAT_H
#include    <sys/stat.h>
#endif
#include    <ctype.h>
#include    <errno.h>

#include    "maildirmisc.h"
#include    "maildiraclt.h"

static const char resetcmd[]="-reset";
static const char listcmd[]="-list";
static const char setcmd[]="-set";
static const char deletecmd[]="-delete";
static const char computecmd[]="-compute";

static void usage()
{
    printf("Usage: maildiracl [ options ] maildir [INBOX[.folder] [identifier rights]]\n");
    exit(1);
}

static int acl_list(const char *identifier,
            const maildir_aclt *acl,
            void *cb_arg)
{
    printf("%s\t%s\n", identifier, maildir_aclt_ascstr(acl));
    return (0);
}

struct computeinfo {
    int argc;
    char **argv;
};

static int isme(const char *identifier,
        void *void_arg)
{
    struct computeinfo *ci=(struct computeinfo *)void_arg;
    int i;

    for (i=4; i<ci->argc; i++)
        if (strcmp(ci->argv[i], identifier) == 0)
            return 1;
    return 0;
}

int main(int argc, char *argv[])
{
    const char *cmd;
    const char *maildir;
    const char *folder;

    if (argc < 3)
        usage();

    cmd=argv[1];

    if (strcmp(cmd, resetcmd) &&
        strcmp(cmd, listcmd) &&
        strcmp(cmd, setcmd) &&
        strcmp(cmd, deletecmd) &&
        strcmp(cmd, computecmd))
        usage();

    maildir=argv[2];

    if (strcmp(cmd, resetcmd) == 0)
    {
        if (maildir_acl_reset(maildir))
        {
            perror(maildir);
            exit(1);
        }
        exit(0);
    }

    if (argc < 4)
        usage();

    folder=argv[3];

    if (strcmp(folder, INBOX) &&
        strncmp(folder, INBOX ".", sizeof(INBOX ".")-1))
    {
        errno=EINVAL;
        perror(folder);
        exit(1);
    }
    folder += sizeof(INBOX)-1;

    if (!*folder)
        folder=".";

    if (strcmp(cmd, listcmd) == 0)
    {
        maildir_aclt_list l;

        if (maildir_acl_read(&l, maildir, folder) ||
            maildir_aclt_list_enum(&l, acl_list, NULL))
        {
            perror(maildir);
            exit(1);
        }

        maildir_aclt_list_destroy(&l);
        exit(0);
    }

    if (strcmp(cmd, setcmd) == 0)
    {
        maildir_aclt_list l;
        maildir_aclt a;

        const char *identifier;
        const char *rights;
        const char *err_failedrights;

        if (argc < 6)
            usage();

        identifier=argv[4];
        rights=argv[5];

        if (maildir_acl_read(&l, maildir, folder))
        {
            perror(maildir);
            exit(1);
        }

        if (*rights == '+')
        {
            if (maildir_aclt_init(&a, NULL,
                          maildir_aclt_list_find(&l,
                                     identifier
                                     )) ||
                maildir_aclt_add(&a, rights+1, NULL))
            {
                perror(argv[0]);
                exit(1);
            }
        } else if (*rights == '-')
        {
            if (maildir_aclt_init(&a, NULL,
                          maildir_aclt_list_find(&l,
                                     identifier
                                     )) ||
                maildir_aclt_del(&a, rights+1, NULL))
            {
                perror(argv[0]);
                exit(1);
            }
        }
        else if (maildir_aclt_init(&a, rights, NULL))
        {
            perror(argv[0]);
            exit (1);
        }

        if (maildir_aclt_list_add(&l, identifier, NULL, &a))
        {
            perror(argv[0]);
            exit(1);
        }

        if (maildir_acl_write(&l, maildir, folder, "owner",
                      &err_failedrights))
        {
            if (err_failedrights)
            {
                fprintf(stderr,
                    "Trying to set invalid access"
                    " rights for %s\n",
                    err_failedrights);
            }
            else perror(maildir);
            exit(1);
        }
    }

    if (strcmp(cmd, deletecmd) == 0)
    {
        maildir_aclt_list l;
        const char *identifier;
        const char *err_failedrights;

        if (argc < 5)
            usage();

        identifier=argv[4];

        if (maildir_acl_read(&l, maildir, folder))
        {
            perror(maildir);
            exit(1);
        }

        if (maildir_aclt_list_del(&l, identifier))
        {
            perror(maildir);
            exit(1);
        }

        if (maildir_acl_write(&l, maildir, folder, "owner",
                      &err_failedrights))
        {
            if (err_failedrights)
            {
                fprintf(stderr,
                    "Trying to set invalid access"
                    " rights for %s\n",
                    err_failedrights);
            }
            else perror(maildir);
            exit(1);
        }
    }

    if (strcmp(cmd, computecmd) == 0)
    {
        maildir_aclt_list l;
        maildir_aclt a;

        struct computeinfo ci;

        ci.argc=argc;
        ci.argv=argv;

        if (argc < 5)
            usage();

        if (maildir_acl_read(&l, maildir, folder))
        {
            perror(maildir);
            exit(1);
        }

        if (maildir_acl_compute(&a, &l, isme, &ci))
        {
            perror(maildir);
            exit(1);
        }

        printf("%s\n", maildir_aclt_ascstr(&a));
    }

    return (0);
}
Command:
Quick Commands:
Upload:
[Read-Only] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [Read-Only]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.3373 seconds