.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "MOD-ACTIVE 8" .TH MOD-ACTIVE 8 2024-04-01 "INN 2.7.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME mod\-active \- Batch processing of newsgroups creation and removal commands .SH SYNOPSIS .IX Header "SYNOPSIS" \&\fBmod-active\fR [\fIctlinnd-command-file\fR ...] .SH DESCRIPTION .IX Header "DESCRIPTION" \&\fBmod-active\fR is a Perl script that updates the \fIactive\fR file based on its input lines of \fBctlinnd\fR \f(CW\*(C`newgroup\*(C'\fR, \f(CW\*(C`rmgroup\*(C'\fR and \f(CW\*(C`changegroup\*(C'\fR commands. It pauses the server briefly while the existing \fIactive\fR file is read and rewritten, which not only keeps \fBinnd\fR from updating the \&\fIactive\fR file but also locks against other instances of \fBmod-active\fR. .PP The script must be run as the news user. .PP The input to \fBmod-active\fR can come either from one or more \&\fIctlinnd-command-file\fR files named on the command line, or from the standard input. Typically its input is the output from the \fBdocheckgroups\fR or \fBactsync\fR commands. Every line which contains the string \f(CW\*(C`ctlinnd newgroup\*(C'\fR, \f(CW\*(C`ctlinnd rmgroup\*(C'\fR, or \f(CW\*(C`ctlinnd changegroup\*(C'\fR, optionally preceded by whitespace and/or the path to \fBctlinnd\fR, is noted for the update. Redundant commands, such as a newgroup directive for a group that already exists, are silently ignored. All other lines in the input are also silently ignored. After the new \fIactive\fR file has been generated, the existing one is renamed to \fIactive.old\fR and the new one is moved into place. The script then displays the differences between the two files. Any groups that were added to the \fIactive\fR file are also added to the \fIactive.times\fR file with the string \&\f(CW\*(C`checkgroups\-update\*(C'\fR. .PP Please note that no syntax checking is performed on group names by \&\fBmod-active\fR. .SH BUGS .IX Header "BUGS" Though \fBinnd\fR is paused while \fBmod-active\fR works, it is not inconceivable that there could be a conflict if something else tries to update the \fIactive\fR file during the relatively short time that \fBmod-active\fR is working. The two most realistic ways for this to happen are either by an administrator concurrently doing a manual \fBctlinnd\fR command, or by \fBinnd\fR receiving a control message, then \fBmod-active\fR pausing the server, then the control message handler script that \fBinnd\fR forked running its own \fBctlinnd\fR command while \fBmod-active\fR is working. Note that such scenarios are \fIvery\fR unlikely to happen. .SH HISTORY .IX Header "HISTORY" Written by David C Lawrence for InterNetNews. Converted to POD by Julien Elie. .SH "SEE ALSO" .IX Header "SEE ALSO" active(5), active.times(5), actsync(8), ctlinnd(8), docheckgroups(8), innd(8).