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:24.48 GB of 70.42 GB (34.77%)
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/ courier-0.66.1/ maildir/ - drwxrwxrwx

Directory:
Viewing file:     maildirmake.c (5.44 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/*
** Copyright 1998 - 2006Double Precision, Inc.
** See COPYING for distribution information.
*/


#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    "maildircreate.h"
#include    "maildirmisc.h"
#include    "maildirsharedrc.h"
#include    "maildirquota.h"

static void usage()
{
    printf("Usage: maildirmake [ options ] maildir\n");
    exit(1);
}

extern FILE *maildir_shared_fopen(const char *, const char *);
extern void maildir_shared_fparse(char *, char **, char **);

static void add(const char *dir, const char *name)
{
char    *c=malloc(strlen(name)+1);
char    *s;
FILE    *fp;
char    buf[BUFSIZ];
char    *ptr, *dirp;

    if (!c)
    {
        perror("malloc");
        exit(1);
    }
    strcpy(c, name);

    if ((s=strchr(c, '=')) == 0)
        usage();
    *s++=0;
    if (*s != '/')
        usage();
    if (access(s, R_OK))
    {
        perror(s);
        exit(1);
    }
    if (strchr(c, '.') || strchr(c, '/'))
    {
        fprintf(stderr, "%s: invalid name\n", c);
        exit(1);
    }

    if (chdir(dir))
    {
        perror(dir);
        exit(1);
    }

    if ((fp=fopen(MAILDIRSHAREDRC, "r")) != 0)
    {
        while ((ptr=fgets(buf, sizeof(buf), fp)) != 0)
        {
        char    *namep;

            maildir_shared_fparse(buf, &namep, &dirp);
            if (!namep)    continue;
            if (strcmp(namep, c) == 0)
            {
                fclose(fp);
                fprintf(stderr,
        "%s: already defined as a sharable maildir in %s.\n",
                    namep, MAILDIRSHAREDRC);
                exit(2);
            }
        }
        fclose(fp);
    }

    if ((fp=maildir_shared_fopen(".", "a+")) == 0)
    {
        perror(dir);
        exit(1);
    }

    if (fseek(fp, 0L, SEEK_SET) < 0)
    {
        perror(dir);
        exit(1);
    }

    while ((ptr=fgets(buf, sizeof(buf), fp)) != 0)
    {
    char    *namep;

        maildir_shared_fparse(buf, &namep, &dirp);
        if (!namep)    continue;
        if (strcmp(namep, c) == 0)
        {
            fclose(fp);
            fprintf(stderr, "%s: already defined as a sharable maildir.\n",
                namep);
            exit(2);
        }
    }
    fprintf(fp, "%s\t%s\n", c, s);
    if (fflush(fp) || ferror(fp) || fclose(fp))
    {
        perror("dir");
        exit(1);
    }
    exit(0);
}

static void del(const char *dir, const char *n)
{
FILE    *fp;
char    buf[BUFSIZ];
char    buf2[BUFSIZ];

FILE    *fp2;
int    found;
 struct maildir_tmpcreate_info createInfo;

    if (chdir(dir))
    {
        perror(dir);
        exit(1);
    }
    if ((fp=maildir_shared_fopen(".", "r")) == 0)
    {
        perror(dir);
        exit(1);
    }

    maildir_tmpcreate_init(&createInfo);

    createInfo.uniq="shared";
    createInfo.msgsize=0;
    createInfo.doordie=1;

    if ((fp2=maildir_tmpcreate_fp(&createInfo)) == NULL)
    {
        perror(dir);
        exit(1);
    }

    found=0;
    while (fgets(buf, sizeof(buf), fp))
    {
    char    *name, *dirp;

        strcpy(buf2, buf);
        maildir_shared_fparse(buf2, &name, &dirp);
        if (name && strcmp(name, n) == 0)
        {
            found=1;
            continue;
        }
        fprintf(fp2, "%s", buf);
    }
    fclose(fp);
    if (fflush(fp2) || ferror(fp2) || fclose(fp2)
        || rename(createInfo.tmpname, "shared-maildirs"))
    {
        perror(createInfo.tmpname);
        unlink(createInfo.tmpname);
        exit(1);
    }
    maildir_tmpcreate_free(&createInfo);
    if (!found)
    {
        fprintf(stderr, "%s: not found.\n", n);
        exit(1);
    }
    exit(0);
}

int main(int argc, char *argv[])
{
const char *maildir, *folder=0;
char *p;
int    argn;
int    perm=0700;
int    musthavefolder=0;
int    subdirperm;
char    *addshared=0, *delshared=0;
const char *quota=0;
char    *tmp=0;

    for (argn=1; argn<argc; argn++)
    {
        if (argv[argn][0] != '-')    break;
        if (strcmp(argv[argn], "-") == 0)    break;
        if (strncmp(argv[argn], "-f", 2) == 0)
        {
            folder=argv[argn]+2;
            if (*folder == 0 && argn+1 < argc)
                folder=argv[++argn];
            continue;
        }
        if (strcmp(argv[argn], "-S") == 0)
        {
            perm=0755;
            continue;
        }

        if (strncmp(argv[argn], "-s", 2) == 0)
        {
        const char *p=argv[argn]+2;

            if (*p == 0 && argn+1 < argc)
                p=argv[++argn];

            perm=0755;
            for (; *p; ++p)
            {
                if (isspace((int)(unsigned char)*p) ||
                    *p == ',')
                    continue;
                if (*p == 'r')
                    perm=0755;
                else if (*p == 'w')
                    perm=0777 | S_ISVTX;
                else if (*p == 'g')
                    perm &= ~0007;

                while (*p && !isspace((int)(unsigned char)*p)
                    && *p != ',')
                    ++p;
                if (!*p)    break;
            }
            musthavefolder=1;
            continue;
        }

        if (strncmp(argv[argn], "-q", 2) == 0)
        {
            const char *p=argv[argn]+2;

            if (*p == 0 && argn+1 < argc)
                p=argv[++argn];

            quota=p;
            continue;
        }

        if (strcmp(argv[argn], "--add") == 0 && argc-argn > 1)
        {
            addshared=argv[++argn];
            continue;
        }

        if (strcmp(argv[argn], "--del") == 0 && argc-argn > 1)
        {
            delshared=argv[++argn];
            continue;
        }

        usage();
    }

    if (argn == argc)    usage();
    maildir=argv[argn];

    if (addshared)
    {
        add(maildir, addshared);
        exit (0);
    }

    if (delshared)
    {
        del(maildir, delshared);
        exit (0);
    }

    if (folder && *folder == '.')
    {
        printf("Invalid folder name: %s\n", folder);
        exit(1);
    }

    if (folder)
    {
        if ((p=(char *)malloc(strlen(maildir)+strlen(folder)+4)) == 0)
        {
            perror("maildirmake malloc");
            exit(1);
        }
        strcat(strcat(strcpy(p, maildir), "/."), folder);
        maildir=p;
    }
    else    if (musthavefolder)
        usage();

    if (quota)
    {
        maildir_quota_set(maildir, quota);
        exit(0);
    }
    subdirperm=perm;
    if (!folder)    subdirperm=0700;
    umask(0);
    if (maildir_make(maildir, perm & ~0022, subdirperm, folder ? 1:0) < 0)
    {
        tmp=(char *)malloc(strlen(maildir)+14);
        if (!tmp) {
            perror("maildirmake malloc");
            exit(1);
        }
        snprintf(tmp, 14+strlen(maildir), "maildirmake: %s", maildir);
        perror(tmp);
        exit(1);
    }
    exit(0);
    return (0);
}
Command:
Quick Commands:
Upload:
[OK] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [OK]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.28 seconds