Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.4
drac
drac.dif
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File drac.dif of Package drac
--- drac/Makefile +++ drac/Makefile @@ -5,9 +5,9 @@ # Paths -INSTALL = /usr/ucb/install -EBIN = /usr/local/sbin -MAN = /usr/local/man/man +INSTALL = /usr/bin/install +EBIN = /usr/sbin +MAN = /usr/share/man/man # OS-Dependant settings @@ -33,26 +33,27 @@ # -DCIDR_KEY # keys in CIDR format # -DTERM_KD # keys and data nul-terminated -DEFS = -DTI_RPC -DFCNTL_LOCK -DSYSINFO +DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C # Compiler flags -CC = cc +CC = gcc RANLIB = : -CFLAGS = $(DEFS) -g -I/usr/local/src/db/db-4.1.25/build_unix +OPTFLAGS = -O2 -Wall +CFLAGS = $(DEFS) $(OPTFLAGS) #CFLAGS = $(DEFS) -g -I/usr/local/src/db/db-3.1.17/build_unix #CFLAGS = $(DEFS) -g -I/usr/local/src/db/db-2.4.14/Unix #CFLAGS = $(DEFS) -g -I/usr/local/src/db/db.1.85/PORT/sunos.5.2/include -LDLIBS = -L/usr/local/src/db/db-4.1.25/build_unix -lnsl -ldb-4.1 +LDLIBS = -lnsl -ldb -lpthread #LDLIBS = -L/usr/local/src/db/db-3.1.17/build_unix -lnsl -ldb #LDLIBS = -L/usr/local/src/db/db-2.4.14/Unix -lnsl -ldb #LDLIBS = -L/usr/local/src/db/db.1.85/PORT/sunos.5.2 -lnsl -ldb TSTLIBS = -L. -ldrac -lnsl -RPCGENFLAGS = -#RPCGENFLAGS = -C +#RPCGENFLAGS = +RPCGENFLAGS = -C # Man sections MANLIB = 3 -MANADM = 1m +MANADM = 8 ## Nothing to change after this point @@ -110,7 +111,7 @@ $(CC) -o $(CLIENT) $(TST_OBJ) $(TSTLIBS) $(SERVER): $(S_OBJS) - $(CC) -o $(SERVER) $(S_OBJS) $(LDLIBS) + $(CC) -o $(SERVER) $(S_OBJS) $(LDLIBS) -pie clean: rm -f core $(RPC_ALL) $(H_OBJS) $(TST_OBJ) $(CLIENT) \ @@ -120,7 +121,7 @@ tar cf drac.tar $(PACKAGE) install: $(SERVER) - $(INSTALL) -c -o bin -g bin -m 0755 $(SERVER) $(EBIN) + $(INSTALL) -c -m 0755 $(SERVER) $(EBIN) install-man: $(SERVER).1m dracauth.3 $(INSTALL) -c -m 0444 $(SERVER).1m $(MAN)$(MANADM)/$(SERVER).$(MANADM) --- drac/rc.dracd +++ drac/rc.dracd @@ -0,0 +1,149 @@ +#! /bin/sh +# Copyright (c) 2000 SuSE GmbH Nuernberg, Germany. +# Copyright (c) 2002 SuSE Linux Ag Nuernberg, Germany. +# +# Author: Carsten Hoeger, Ralf Haferkamp +# +# /sbin/init.d/dracd +# +# and symbolic its link +# +# /sbin/rcdracd +# +### BEGIN INIT INFO +# Provides: drac +# Required-Start: $remote_fs portmap +# Required-Stop: $remote_fs portmap +# Default-Start: 3 5 +# Description: start the DRAC Daemon +### END INIT INFO + +test -f /etc/sysconfig/dracd && . /etc/sysconfig/dracd + +# Determine the base and follow a runlevel link name. +base=${0##*/} +link=${base#*[SK][0-9][0-9]} + +DRAC_BIN=/usr/sbin/rpc.dracd +test -x $DRAC_BIN || exit 5 + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v ditto but be verbose in local rc status +# rc_status -v -r ditto and clear the local rc status +# rc_failed set local and overall rc status to failed +# rc_failed <num> set local and overall rc status to <num><num> +# rc_reset clear local rc status (overall remains) +# rc_exit exit appropriate to overall rc status +. /etc/rc.status + +# First reset status of this service +rc_reset + +# Return values acc. to LSB for all commands but status: +# 0 - success +# 1 - generic or unspecified error +# 2 - invalid or excess argument(s) +# 3 - unimplemented feature (e.g. "reload") +# 4 - insufficient privilege +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running +# +# Note that starting an already running service, stopping +# or restarting a not-running service as well as the restart +# with force-reload (in case signalling is not supported) are +# considered a success. + +case "$1" in + start) + echo -n "Starting service DRAC" + ## Start daemon with startproc(8). If this fails + ## the echo return value is set appropriate. + + # NOTE: startproc return 0, even if service is + # already running to match LSB spec. + startproc $DRAC_BIN -i -e $DRACD_RELAYTIME $DRACD_DRACDB + + # Remember status and be verbose + rc_status -v + ;; + stop) + echo -n "Shutting down service DRAC" + ## Stop daemon with killproc(8) and if this fails + ## set echo the echo return value. + + killproc -TERM $DRAC_BIN + + # Remember status and be verbose + rc_status -v + ;; + try-restart) + ## Stop the service and if this succeeds (i.e. the + ## service was running before), start it again. + ## Note: try-restart is not (yet) part of LSB (as of 0.7.5) + $0 status >/dev/null && $0 restart + + # Remember status and be quiet + rc_status + ;; + restart) + ## Stop the service and regardless of whether it was + ## running or not, start it again. + $0 stop + $0 start + + # Remember status and be quiet + rc_status + ;; + force-reload) + ## Signal the daemon to reload its config. Most daemons + ## do this on signal 1 (SIGHUP). + ## If it does not support it, restart. + + echo -n "Reload service DRAC" + ## if it supports it: + #killproc -HUP $CYRUS_BIN + #touch /var/run/FOO.pid + #rc_status -v + + # Otherwise: + $0 stop && $0 start + rc_status + ;; + reload) + ## Like force-reload, but if daemon does not support + ## signalling, do nothing (!) + + echo -n "Reload service DRAC" + # If it supports signalling: + #killproc -HUP $CYRUS_BIN + #touch /var/run/FOO.pid + #rc_status -v + + # Otherwise if it does not support reload: + rc_failed 3 + rc_status -v + ;; + status) + echo -n "Checking for service DRAC: " + ## Check status with checkproc(8), if process is running + ## checkproc will return with exit status 0. + + # Status has a slightly different for the status command: + # 0 - service running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running + + # NOTE: checkproc returns LSB compliant status values. + checkproc $DRAC_BIN + rc_status -v + ;; + *) + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}" + exit 1 + ;; +esac +rc_exit --- drac/README +++ drac/README @@ -18,7 +18,7 @@ periodically expires old entries. o Only trusted mail servers are permitted to communicate with rpc.dracd, - as controlled by /etc/mail/dracd.allow . + as controlled by /etc/dracd.allow . o The daemon can optionally re-create the database on startup. --- drac/rpc.dracd.1m +++ drac/rpc.dracd.1m @@ -22,7 +22,7 @@ The daemon, rpc.dracd, adds or updates entries in the cache, and periodically expires old entries. Only trusted mail servers are permitted to communicate with rpc.dracd, -as controlled by \f4/etc/mail/dracd.allow\f1. +as controlled by \f4/etc/dracd.allow\f1. If this file does not exist, all local IP addresses are permitted. .SS Allow File Format The Allow File file consists of entries of the form: @@ -61,7 +61,7 @@ .B /etc/mail/dracd.db default database file .TP -.B /etc/mail/dracd.allow +.B /etc/dracd.allow default allow file. .PD .SH SEE ALSO --- drac/rpc.dracd.c +++ drac/rpc.dracd.c @@ -37,7 +37,7 @@ #include "drac.h" #define DBFILE "/etc/mail/dracd.db" -#define ALFILE "/etc/mail/dracd.allow" +#define ALFILE "/etc/dracd.allow" struct net_def { struct net_def *nd_next; @@ -62,12 +62,17 @@ FILE *debugf; #endif +static void expire(); +static int lockdb(); +static int unlockdb(); +static void iniclist(); /* On SIGTERM, must close db */ void catcher(n) int n; { terminate = 1; } /* Parse command-line options */ +int main(argc, argv) int argc; char **argv; { int c; extern char *optarg; @@ -93,6 +98,7 @@ } /* Called once after fork */ +void drac_run() { int sel; time_t nexte, now; @@ -176,7 +182,11 @@ (initdb) ? DB_TRUNCATE|DB_CREATE : DB_CREATE, 0644); #else +#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1 + errno = dbp->open(dbp, NULL, dbfile, NULL, DB_BTREE, +#else errno = dbp->open(dbp, dbfile, NULL, DB_BTREE, +#endif (initdb) ? DB_TRUNCATE|DB_CREATE : DB_CREATE, 0644); #endif @@ -357,6 +367,7 @@ } /* Expire old entries from the database */ +static void expire() { #if DB_VERSION_MAJOR < 2 int seqerr, flags; @@ -386,7 +397,7 @@ #endif if ( errno != 0 ) { syslog(LOG_ERR, "expire cursor failed: %m"); - return 0; + return; } #endif @@ -440,6 +451,7 @@ } /* Lock the database */ +static int lockdb() { #ifdef FCNTL_LOCK struct flock lfd; @@ -454,6 +466,7 @@ } /* Unlock the database */ +static int unlockdb() { #ifdef FCNTL_LOCK struct flock lfd; @@ -469,6 +482,7 @@ /* Initialize the trusted client table */ /* All in network byte order */ +static void iniclist() { FILE *alfp; char buf[128], mask[32], addr[32], hname[128]; --- drac/sysconfig.dracd +++ drac/sysconfig.dracd @@ -0,0 +1,17 @@ +## Path: Network/Mail/Drac +## Description: Dynamic Relay Authorization Control (POP-before-SMTP) +## Type: integer +## Default: 5 +## ServiceRestart: dracd +# +# The TTL of a per IP open relay in minutes +# +DRACD_RELAYTIME="5" + +## Type: string +## Default: /etc/postfix/dracd.db +## ServiceRestart: dracd +# +# The name of the (btree) dracdb. +# +DRACD_DRACDB="/etc/postfix/dracd.db" --- drac/testing.c +++ drac/testing.c @@ -3,6 +3,7 @@ */ #include <stdio.h> +#include <stdlib.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> @@ -24,4 +25,5 @@ ip = inet_addr(argv[2]); rc = dracauth(host, ip, &err); if (rc != 0) printf("%s: %s\n", argv[0], err); + return 0; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor