Пример #1
0
int main(int argc, char *argv[])
{
    chdir(BBSHOME);
    setuid(BBSUID);
    setgid(BBSGID);
    setreuid(BBSUID, BBSUID);
    setregid(BBSGID, BBSGID);

#ifndef CYGWIN
#undef time
    bbssettime(time(0));
    sleep(1);
#define time(x) bbstime(x)
#endif

    setpublicshmreadonly(0);

#ifndef CYGWIN
    setpublicshmreadonly(1);
#endif
    init_bbslog();
    if (argc > 1) {
        if (strcasecmp(argv[1], "killuser") == 0) {
			//Added by Marvel
            resolve_utmp(); 

            if (resolve_ucache() != 0)
                return -1;
            return dokilluser();
        }
        if (strcasecmp(argv[1], "giveup") == 0) {
            if (resolve_ucache() != 0)
                return -1;
            return doupdategiveupuser();
        }
        if (strcasecmp(argv[1], "allboards") == 0)
            return dokillalldir();
        if (strcasecmp(argv[1], "daemon") == 0)
            return miscd_dodaemon(argv[1], argv[2]);
        if (strcasecmp(argv[1], "killdir") == 0)
            return dokilldir(argv[2]);
        if (strcasecmp(argv[1], "flush") == 0) {
            if (resolve_ucache() != 0)
	              return -1;
            resolve_boards();
            flushdata();
            return 0;
        }
        return miscd_dodaemon(NULL, argv[1]);
    }
    printf("Usage : %s daemon: to run as a daemon (this is the most common use)\n", argv[0]);
    printf("        %s killuser: to kill old users\n", argv[0]);
    printf("        %s giveup: to unlock given-up users\n", argv[0]);
    printf("        %s killdir <BOARDNAME>: to delete old file in <BOARDNAME>\n", argv[0]);
    printf("        %s allboards: to delete old files in all boards\n", argv[0]);
    printf("        %s flush: to synchronize .PASSWDS and .BOARDS to disk\n", argv[0]);
    printf("That's all, folks. See doc/README.SYSOP for more details\n");

    return 0;
}
Пример #2
0
void timed()
{
#ifndef CYGWIN
    setpublicshmreadonly(0);
#endif
    while (1) {
#undef time
        bbssettime(time(0));
        sleep(1);
#define time(x) bbstime(x)
    }
}
Пример #3
0
Файл: miscd.c Проект: wyat/kbs
void timed()
{
    char line[20];
    const char *path = "var/timed.pid";
    int pidfd = open(path, O_RDWR | O_CREAT, 0660);
    if (write_lock(pidfd, 0, SEEK_SET, 0) < 0) {
        bbslog("3error", "timed had already been started!");
        exit(-1);
    }
    snprintf(line, sizeof(line), "%ld\n", (long)getpid());
    ftruncate(pidfd, 0);
    write(pidfd, line, strlen(line));
#ifndef CYGWIN
    setpublicshmreadonly(0);
#endif
    while (1) {
#undef time
        bbssettime(time(0));
        sleep(1);
#define time(x) bbstime(x)
    }
}
Пример #4
0
int main(int argc, char **argv)
{
    chdir(BBSHOME);
#undef time
    bbssettime(time(0));
    sleep(1);
    resolve_boards();
    load_ucache();
    if (argc == 2 && strcmp(argv[1], "--all") == 0) {
		printf("Transfering Board....\n");
        apply_boards(strip_board, NULL);
		printf("Transfering user mail....\n");
        apply_users(strip_mail, NULL);
    } else if (argc == 2 && strcmp(argv[1], "--mail") == 0) {
        apply_users(strip_mail, NULL);
    } else if (argc == 2 && strcmp(argv[1], "--board") == 0) {
        apply_boards(strip_board, NULL);
    } else if (argc == 2 && strcmp(argv[1], "--rollback") == 0) {
        //apply_boards(rollback_board, NULL);
        apply_users(rollback_mail, NULL);
    } else if (argc == 3 && strcmp(argv[1], "-b") == 0) {
        struct boardheader *bh;

        if ((bh = getbcache(argv[2])) == NULL) {
            fprintf(stderr, "Board <%s> not found!\n", argv[2]);
            exit(-1);
        }
        strip_board(bh, NULL);
    } else if (argc == 3 && strcmp(argv[1], "-m") == 0) {
        struct userec *user;

        if (!getuser(argv[2], &user)) {
            fprintf(stderr, "User <%s> not found!\n", argv[2]);
            exit(-1);
        }
        strip_mail(user, NULL);
    } else if (argc == 3 && strcmp(argv[1], "--rollback-board") == 0) {
        struct boardheader *bh;

        if ((bh = getbcache(argv[2])) == NULL) {
            fprintf(stderr, "Board <%s> not found!\n", argv[2]);
            exit(-1);
        }
        rollback_board(bh, NULL);
    } else if (argc == 3 && strcmp(argv[1], "--rollback-mail") == 0) {
        struct userec *user;

        if (!getuser(argv[2], &user)) {
            fprintf(stderr, "User <%s> not found!\n", argv[2]);
            exit(-1);
        }
        rollback_mail(user, NULL);
    } else {
        fprintf(stderr, "Usage:\n", argv[0]);
        fprintf(stderr, "  %s --all                  Strip all fileheaders.\n", argv[0]);
        fprintf(stderr, "  %s --mail                 Strip mail fileheaders.\n", argv[0]);
        fprintf(stderr, "  %s --board                Strip board fileheaders.\n", argv[0]);
        fprintf(stderr, "  %s --rollback             Rollback all fileheaders.\n", argv[0]);
        fprintf(stderr, "  %s -b board               Strip fileheaders of a board.\n", argv[0]);
        fprintf(stderr, "  %s -m user                Strip fileheaders of a user's mailbox.\n", argv[0]);
        fprintf(stderr, "  %s --rollback-board board Rollback fileheaders of a board.\n", argv[0]);
        fprintf(stderr, "  %s --rollback-mail user   Rollback fileheaders of a user's mailbox.\n", argv[0]);
        exit(-1);
    }

    return 0;
}