view src/group.h @ 288:c02c4eb95f95 noffle

[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user and noffle-group configs. * src/configfile.c,src/fetch.c,src/fetchlist.c,src/protocol.c, src/server.c: Replace strcpy() with Utl_cpyStr() where appropriate. See Debian bug 168128. * src/control.c,src/configfile.c,src/noffle.c: Replace [s]scanf("%s") with [s]scanf(MAXCHAR_FMT). * src/noffle.c: Log warning if noffle.conf is world readable. * src/noffle.c: Restrict most options to news admins; i.e. those who are root or news on running Noffle. * Makefile.in,acconfig.h,aclocal.m4,config.h.in,configure,configure.in, docs/Makefile.in,docs/noffle.conf.5,packages/Makefile.in, packages/redhat/Makefile.in,src/Makefile.am,src/Makefile.in, src/authenticate.c,src/authenticate.h,src/noffle.c,src/server.c: Add basic authentication using either Noffle-specific user file or authenticating via PAM (service 'noffle'). PAM authentication needs to run as root, so a Noffle server that needs PAM must be started by root. Helpful (?) error messages will be logged if not. Noffle will switch ruid and euid to 'news' (or whatever is configured) ASAP. * src/noffle.c: Add uid checking.
author bears
date Fri, 10 Jan 2003 23:25:45 +0000
parents 93d5d8b098da
children
line wrap: on
line source

/*
  group.h

  Groups database

  $Id: group.h 382 2002-06-05 22:03:44Z mirkol $
*/

#ifndef GRP_H
#define GRP_H

#if HAVE_CONFIG_H
#include <config.h>
#endif

#if TIME_WITH_SYS_TIME
#include <sys/time.h>
#include <time.h>
#else
#if HAVE_SYS_TIME_H
#include <sys/time.h>
#else
#include <time.h>
#endif
#endif

#include "common.h"

#define GRP_LOCAL_SERVER_NAME		"(local)"
#define	GRP_RMT_NEXT_NOT_SUBSCRIBED	(-1)

/* open group database */
Bool
Grp_open( void );

/* close group database */
void
Grp_close( void );

/* does group exist? */
Bool
Grp_exists( const char *name );

/* is it a local group? */
Bool
Grp_local( const char *name );

/* create new group and save it in database */
void
Grp_create( const char *name );

/* delete a group and its articles from the database. */
void
Grp_delete( const char *name );

/* Get group description */
const char *
Grp_dsc( const char *name );

/* Get server the group resides on */
const char *
Grp_server( const char *name );

/*
  Get article number of the first article in the group
  This number is a hint only, it is independent of the
  real articles in content.c
*/
int
Grp_first( const char *name );

/*
  Get article number of the last article in the group
  This number is a hint only, it is independent of the
  real articles in content.c
*/
int
Grp_last( const char *name );

int
Grp_lastAccess( const char *name );

int
Grp_rmtNext( const char *name );

time_t
Grp_created( const char *name );

char
Grp_postAllow( const char *name );

time_t
Grp_lastPostTime( const char *name );

/* Replace group's description (only if value != ""). */
void
Grp_setDsc( const char *name, const char *value );

void
Grp_setLocal( const char *name );

void
Grp_setServ( const char *name, const char *value );

void
Grp_setRmtNext( const char *name, int value );

void
Grp_setLastAccess( const char *name );

void
Grp_setFirstLast( const char *name, int first, int last );

void
Grp_setPostAllow( const char *name, char postAllow );

void
Grp_setLastPostTime( const char *name );

/* Begin iterating through the names of all groups. Store name of first
   group (or NULL if there aren't any) in name. Returns whether there are
   any groups. */
Bool
Grp_firstGrp( const char **name );

/* Continue iterating trough the names of all groups. Store name of next
   group (or NULL if there aren't any more) in name. Returns TRUE on
   success, FALSE when there are no more groups. */
Bool
Grp_nextGrp( const char **name );

/* Check group name for forbidden patterns. Returns true if the group name
   contains patterns like "*.all.*, "*.ctl.", etc. It should be called
   before Grp_create(). This function doesn't call Grp_exists(), though. */
Bool
Grp_isForbiddenName( const char *name );

/* Check group name for invalid characters. Returns false if the group
   name contains file name separators or whitespace characters. It should
   be called before deleting an overview file or before Grp_create(). */
Bool
Grp_isValidName( const char *name );

#endif