Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3
inn
inn-2.5.4.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File inn-2.5.4.diff of Package inn
--- ./README.linux.orig 2014-07-16 12:26:26.871925643 +0000 +++ ./README.linux 2014-07-16 12:26:26.871925643 +0000 @@ -0,0 +1,95 @@ +Installing a news system: Florian La Roche +========================= + +The INN news system is installed under the directories /etc/news, +/usr/lib/news, /var/lib/news, /var/spool/news and /var/log/news. +/usr/lib/news contains only binaries and files that normally do not need +changes. All config files are in /etc/news, the database files in +/var/lib/news and the log files in /var/log/news. + +Inn supports multiple storage methods, if you use the "tradspool" +method all news articles will get stored in /var/spool/news/articles, +"tradindexed" overview goes into /var/spool/news/overview. + +rnews is in /usr/bin/rnews and inews is in /usr/bin/inews and +/usr/lib/news/inews (deprecated). + +Many things have to be done as user "news". So you should give the "news" +user a normal password and work on that account. + +Here are some hints on how to get a running INN: +- "/var/lib/news/active" is the list of all newsgroups and + "/var/lib/news/newsgroups" contains a description of these newsgroups. + You should copy these two files from your upstream news server. Maybe + look at "man getlist" to find out how to do this without an account + on that machine. + You can also get these files on ftp://ftp.isc.org/pub/usenet/CONFIG/. +- the minimal set of files in /etc/news you probably have to configure: + inn.conf: main config file for many INN programs + incoming.conf: to accept news from the upstream servers + newsfeeds: to send new news-postings to the upstream news server + expire.ctl: tell INN how long to keep news articles +- please look at /etc/news/crontab.sample for things that you might want + to start from cron +- Important further files in /etc/news (could be changed later on...): + readers.conf: who is allowd to read and/or post news + control.ctl: what to do with control messages (add/delete/check newsgroups) + subscriptions: the default list of newsgroups for people reading the first + time news + storage.conf/cycbuff.conf: if you don't use the traditional storing method +- You can use "rcinn start" and "rcinn stop" to start/stop your news system. + (You can do this either as user "news" or as user "root".) + If there are no errors in the syslog-files, you can enable inn in your + startup scripts. + + +Upgrading from inn-2.2 to inn-2.3 +================================= + +Whereas old versions of inn allowed you to turn of the storage +API, inn-2.3 uses it exclusively to store articles. Because of +this, + 1) the history file has a different format, + 2) the overview database has a different layout, + 3) articles are stored in /var/spool/news/articles instead of + /var/spool/news. + +You have two options for the upgrade: + +a) delete all the old articles and start over with a fresh spool, or +b) convert all articles to the new format. + +First of all you have to check your configuration files: + +inn.conf: + lots of things are new, please copy the new version of the + file (inn.conf.rpmnew) to inn.conf and change it to your + needs. + +nnrp.access: + no longer exists. It is now called "readers.conf" and uses + a different syntax. + +storage.conf: + here you can decide which storage format should be used. The + shipped version is configured for "tradspool", which is the + same format the old inn used. Another interesting method is + "cnfs", which uses raw partitions or big buffer files to + store the articles. If you use it, you have to configure + the cycbuff.conf file as well. You may also want to switch + to the "buffindexed" overview method if you use cnfs. + +newsfeeds: + overchan is no longer needed as innd itself now writes the + overview entries. You also have to add an entry for the + controlchan channel: + controlchan!:!*,control,control.*,!control.cancel\ + :Tc,Wnsm:/usr/lib/news/bin/controlchan + +After that you have to decide what to do with your old articles. +We have provided an upgrade script for your convenience: convertspool. +You can use it to create a new history database and to feed all +articles into innd. If you want to start over with an empty spool +(recomended if you have lots of articles and little time), use +the "--fresh" option to just create a new history database. + --- ./backends/ninpaths.c.orig 2014-05-17 08:24:49.000000000 +0000 +++ ./backends/ninpaths.c 2014-07-16 12:26:26.871925643 +0000 @@ -204,6 +204,7 @@ writedumpfile(const char *n) if (d) { if (writedump(d)<0) unlink(buf); + fclose(d); } else { perror("writedumpfile: fopen"); } --- ./convertspool.orig 2014-07-16 12:26:26.872925643 +0000 +++ ./convertspool 2014-07-16 12:26:26.872925643 +0000 @@ -0,0 +1,142 @@ +#!/bin/sh +. /usr/lib/news/lib/innshellvars + +test -n "$UID" || UID="$(id -ru)" +test "x$UID" = x0 && { + echo "Please run me as user 'news'!" + exit 1 +} + +fresh= +if test X--fresh = "X$1"; then + fresh=true + shift +fi + +if test -n "$1"; then + echo "usage: convertspool [--fresh]" 1>&2 + exit 1 +fi + +cd ${PATHSPOOL} || exit 1 +m="moving old spool directory to /var/spool/news/oldspool" +mkdir -p oldspool +for i in *; do + case $i in + *.*) ;; + archive|articles|incoming|innfeed|outgoing|overview|tmp|oldspool) ;; + *) + test -n "$m" && echo "$m" + m= + mv $i oldspool + ;; + esac +done + +m="deleting old directories" +for i in *; do + case $i in + tradspool.map) ;; + *.*) + test -n "$m" && echo "$m" + m= + echo " - $i" + rm -rf $i + ;; + esac +done + +histhead=`head -n 1 $HISTORY 2>/dev/null` +case X"$histhead" in +X\<*) + echo "creating new history database" + test -f $HISTORY.convertspool || mv $HISTORY $HISTORY.convertspool + :> $HISTORY + rm -f $HISTORY.dir $HISTORY.pag $HISTORY.index $HISTORY.hash + if test -f $HISTORY.convertspool ; then + makedbz -f history -i -s `wc -l <$HISTORY.convertspool` + else + makedbz -f history -i + fi + ;; +esac + +if test -n "$fresh"; then + rmdir --ignore-fail-on-non-empty oldspool + test -d oldspool && echo "you can now delete $PATHSPOOL/oldspool" + echo "done." + exit 0 +fi + +#it's not easy to feed innd another config file... +mkdir -p $PATHSPOOL/oldspool/inn.conf +cat >$PATHSPOOL/oldspool/inn.conf/inn.conf <<EOF +xrefslave: true +artcutoff: 0 +EOF +cat ${NEWSETC}/inn.conf >> $PATHSPOOL/oldspool/inn.conf/inn.conf +echo "pathbin: $PATHSPOOL/oldspool/inn.conf" > $PATHSPOOL/oldspool/inn.conf/inn.conf2 +cat ${NEWSETC}/inn.conf >> $PATHSPOOL/oldspool/inn.conf/inn.conf2 +cat > $PATHSPOOL/oldspool/inn.conf/innd <<EOF +#! /bin/sh +export INNCONF=$PATHSPOOL/oldspool/inn.conf/inn.conf +exec $PATHBIN/innd "\$@" +EOF +chmod 755 $PATHSPOOL/oldspool/inn.conf/innd + +echo "starting news server" +INNCONF="$PATHSPOOL/oldspool/inn.conf/inn.conf2" INND_BIND_ADDRESS=127.0.0.1 rc.news || { + echo "Couldn't start server. Fix the problem and run me again!" + exit 1; +} +sleep 1 + +mode=`ctlinnd mode` +case $mode in +*running*) ;; +*) + echo "$mode" + echo "Server is not running. Fix the problem and run me again!" + exit 1; +esac + +echo "building article list" +cd $PATHSPOOL/oldspool || exit 1 +rm -rf spool.batch +mkdir spool.batch +find $PATHSPOOL/oldspool -name spool.batch -prune -o -name inn.conf -prune -o -type f -print > spool.batch/all +cd spool.batch || exit 1 +if test -s all ; then + count=`wc -l <all` + echo "feeding" $count "articles into the server..." + n=0 + split -a 5 -l 1000 all + for b in x*; do + cp $b y$b + $PATHBIN/innxmit -s -c 127.0.0.1 $PATHSPOOL/oldspool/spool.batch/y$b || { + echo "innxmit error. goodbye." + echo "stopping news server" + rc.news stop + exit 1 + } + touch y$b + cat $b y$b | sort | uniq -u > z$b + cat z$b | xargs rm + t=`wc -l <z$b` + count=`expr $count - $t` + echo "transmitted" $t "articles," $count "to go" + rm -f $b + test -s y$b && mv y$b $b + rm -f y$b z$b + done +fi +echo "stopping news server" +rc.news stop +echo "deleting empty directories" +cd $PATHSPOOL/oldspool || exit 1 +find $PATHSPOOL/oldspool -depth -type d -print | xargs rmdir --ignore-fail-on-non-empty +echo "cleaning up" +rm -rf spool.batch inn.conf +cd $PATHSPOOL +rmdir --ignore-fail-on-non-empty oldspool +echo "done." --- ./crontab.sample.orig 2014-07-16 12:26:26.872925643 +0000 +++ ./crontab.sample 2014-07-16 12:26:26.872925643 +0000 @@ -0,0 +1,38 @@ +# Here are sample entries that could be added to /etc/crontab for +# your INN News-System. + + +# to expire old news-artikel +#15 4 * * * news /usr/lib/news/bin/news.daily expireover delayrm lowmark + +# canceled articles are not removed from the overview database. so we just +# rnews stores news-artikel in /var/spool/news/in.coming, if INN ist +# not running. the next "rnews -U" will feed those news-artikel into +# inn. +#10 * * * * news /usr/bin/rnews -U + +# if you want to fetch some news-groups with suck +#59 */4 * * * news cd /local/spool/suck && suck news.server.foo.bar -c \ +# -br sucknews -r 1000000 -q && find . -name "sucknews*" \ +# -exec rnews -S localhost \{\} \; -exec rm -f \{\} \; + +# feed news via innxmit to multiple hosts, configured with nntpsend.ctl +#*/5 * * * * news /usr/lib/news/bin/nntpsend + +# feed news for directly connected sites (if you don't use nntpsend) +#15 * * * * news /usr/lib/news/bin/send-nntp news.server.com + +# feed news to a uucp-connected machine +#15 * * * * news /usr/lib/news/bin/sendbatch -c wg >/dev/null +# the configuration file for this alternate perl-script is +# /etc/news/send-uucp.cf. +#15 * * * * news /usr/lib/news/bin/send-uucp.pl + +# crontab-entry for uucp: +#20 */2 * * * uucp /usr/sbin/uucico -S wg +#20 4,6 * * * root /usr/sbin/sendmail -q +# once a month delete all news-batches that are older than 100 days +#0 6 10 * * uucp /usr/sbin/uustat --command rnews --older-than 2400 --kill-all --no-list +# generate a uucp transmission statistic +#0 6 10 * * nobody /usr/bin/tua -U + --- ./distributions.orig 2014-07-16 12:26:26.872925643 +0000 +++ ./distributions 2014-07-16 12:26:26.872925643 +0000 @@ -0,0 +1,4 @@ +world Use no distribution rather than world +na North America +usa United States +local This site only --- ./include/inn/options.h.orig 2014-05-17 08:24:49.000000000 +0000 +++ ./include/inn/options.h 2014-07-16 12:26:26.873925639 +0000 @@ -41,7 +41,7 @@ #define DEFAULT_TIMEOUT 300 /* Define if inews should put hostnames into the Path: header itself. */ -#define DO_INEWS_PATH +#undef DO_INEWS_PATH /* Define if inews should munge the GECOS entry of the passwd file when attempting to determine a poster's real name. Use this if your GECOS --- ./newsgroups.orig 2014-07-16 12:26:26.874925633 +0000 +++ ./newsgroups 2014-07-16 12:26:26.874925633 +0000 @@ -0,0 +1,6 @@ +control Various control messages (no posting). +control.cancel Cancel messages (no posting). +control.checkgroups Hierarchy check control messages (no posting). +control.newgroup Newsgroup creation control messages (no posting). +control.rmgroup Newsgroup removal control messages (no posting). +junk Unfiled articles (no posting). --- ./nnrpd/nnrpd.c.orig 2014-05-17 08:24:49.000000000 +0000 +++ ./nnrpd/nnrpd.c 2014-07-16 12:26:26.874925633 +0000 @@ -541,6 +541,7 @@ StartConnection(unsigned short port) socklen_t length; size_t size; int nodelay = 1; + int keepalive = 1; memset(&Client, 0, sizeof(Client)); strlcpy(Client.host, "?", sizeof(Client.host)); @@ -615,6 +616,8 @@ StartConnection(unsigned short port) * of overviews and slow answers on some architectures (like BSD/OS). */ setsockopt(STDIN_FILENO, IPPROTO_TCP, TCP_NODELAY, &nodelay, sizeof(nodelay)); + setsockopt(STDIN_FILENO, SOL_SOCKET, SO_KEEPALIVE, &keepalive, sizeof(keepalive)); + notice("%s (%s) connect - port %u", Client.host, Client.ip, port); PERMgetaccess(NNRPACCESS); --- ./profile.orig 2014-07-16 12:26:26.875925625 +0000 +++ ./profile 2014-07-16 12:26:26.875925625 +0000 @@ -0,0 +1,3 @@ +PATH=/usr/lib/news/bin:/usr/lib/news/bin/control:$PATH +PATH=/usr/lib/news/lib:/usr/sbin:$PATH +export PATH --- ./rc.orig 2014-07-16 12:26:26.875925625 +0000 +++ ./rc 2014-07-16 12:26:26.875925625 +0000 @@ -0,0 +1,69 @@ +#! /bin/sh +# +# Copyright (c) 1998 Florian La Roche +# +### BEGIN INIT INFO +# Provides: inn +# Required-Start: $network $named +# Required-Stop: $network $named +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Inter Net News Server (INN) +# Description: Inter Net News Server (INN) +### END INIT INFO + +. /etc/rc.status + +run_as_news() +{ + test -n "$UID" || UID="$(id -ru)" + if test "x$UID" = x0 ; then + su news -c "$*" + else + $* + fi +} + +NEWSCONF=/etc/news/inn.conf + +test -f $NEWSCONF || exit 5 +PATHRUN=`sed -ne 's/^pathrun: *//p' < $NEWSCONF` +PATHBIN=`sed -ne 's/^pathbin: *//p' < $NEWSCONF` + +WATCH=${PATHRUN}/innwatch.pid +ACTIVED=${PATHRUN}/actived.pid +PID=${PATHRUN}/innd.pid + + +# The echo return value for success (defined in /etc/rc.config). +rc_reset +case "$1" in + start) echo -n "Starting News-Server INN" + run_as_news "$PATHBIN/rc.news" + rc_status -v + ;; + stop) echo -n "Shutting down News-Server INN" + run_as_news "$PATHBIN/rc.news stop" + rc_status -v + ;; + restart) + $0 stop + $0 start + rc_status + ;; + reload) + echo -n "News-Server INN reload configuration files" + run_as_news "$PATHBIN/ctlinnd" reload all "by rcinn reload" >/dev/null + rc_status -v + ;; + status) + test -f "$PID" && run_as_news "$PATHBIN/ctlinnd" mode + echo -n "News-Server INN: " + checkproc -p "$PID" "$PATHBIN/innd" + rc_status -v + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|status}" + exit 1 +esac +rc_exit --- ./samples/cycbuff.conf.orig 2014-05-17 08:24:49.000000000 +0000 +++ ./samples/cycbuff.conf 2014-07-16 12:26:26.875925625 +0000 @@ -28,9 +28,9 @@ refreshinterval:30 ## ## If you're trying to stay under 2 GB, keep your sizes below 2097152. -cycbuff:ONE:/export/cycbuffs/one:512000 -cycbuff:TWO:/export/cycbuffs/two:512000 -cycbuff:THREE:/export/cycbuffs/three:512000 +cycbuff:ONE:/var/spool/news/cycbuffs/one:512000 +cycbuff:TWO:/var/spool/news/cycbuffs/two:512000 +cycbuff:THREE:/var/spool/news/cycbuffs/three:512000 ## 2. Meta-cyclic buffers ## Format: --- ./samples/inn.conf.in.orig 2014-07-16 12:26:26.876925617 +0000 +++ ./samples/inn.conf.in 2014-07-16 12:32:17.780226951 +0000 @@ -21,7 +21,7 @@ mta: "@SENDMAIL@ organization: "A poorly-installed InterNetNews site" ovmethod: tradindexed hismethod: hisv6 -pathhost: @HOSTNAME@ +#pathhost: localhost pathnews: @prefix@ #runasuser: @@ -40,15 +40,15 @@ artcutoff: 10 #bindaddress: #bindaddress6: dontrejectfiltered: false -hiscachesize: 256 +hiscachesize: 512 ignorenewsgroups: false immediatecancel: false linecountfuzz: 0 -maxartsize: 1000000 +maxartsize: 5000000 maxconnections: 50 #pathalias: #pathcluster: -pgpverify: @DO_PGPVERIFY@ +pgpverify: true port: 119 refusecybercancels: false remembertrash: true @@ -78,7 +78,7 @@ xrefslave: false # Reading -allownewnews: true +allownewnews: false articlemmap: true clienttimeout: 1800 initialtimeout: 10 @@ -111,7 +111,7 @@ addnntppostinghost: true checkincludedtext: false #complaints: #fromhost: -localmaxartsize: 1000000 +localmaxartsize: 5000000 #moderatormailer: nnrpdauthsender: false #nnrpdposthost: @@ -140,7 +140,7 @@ backofftrigger: 10000 # Monitoring -doinnwatch: true +doinnwatch: false innwatchbatchspace: 4000 innwatchlibspace: 25000 innwatchloload: 1000 @@ -153,11 +153,11 @@ innwatchspoolspace: 25000 # Logging docnfsstat: false -htmlstatus: true +htmlstatus: false incominglogfrequency: 200 logartsize: true -logcancelcomm: false -logcycles: 3 +logcancelcomm: true +logcycles: 7 logipaddr: true logsitename: true logstatus: false @@ -165,8 +165,8 @@ logtrash: true nnrpdoverstats: false nntplinklog: false #stathist: -status: 0 -timer: 0 +status: 300 +timer: 300 # System Tuning @@ -183,7 +183,7 @@ nicekids: 4 nicenewnews: 0 nicennrpd: 0 pauseretrytime: 300 -peertimeout: 3600 +peertimeout: 1200 rlimitnofile: -1 # Paths --- ./samples/moderators.orig 2014-05-17 08:24:49.000000000 +0000 +++ ./samples/moderators 2014-07-16 12:26:26.876925617 +0000 @@ -22,14 +22,29 @@ ## Public hierarchies with exceptions. aioe.*:%s-newsgroup@aioe.org +bionet.*:%s@net.bio.net +bln.*:%s@fu-berlin.de +cz.*:%s@moderator.vslib.cz +de.*:%s@moderators.dana.de fido7.*:%s@fido7.ru ffm.*:%s@moderators.arcornews.de fj.*:%s@moderators.fj-news.org +gnu.*:%s@prep.ai.mit.edu +han.*:%s@usenet.or.kr +hun.*:%s@sztaki.hu +linux.act.*:linux-submit@yggdrasil.com +linux.*:submit-%s@yggdrasil.com medlux.*:%s@news.medlux.ru nl.*:%s@nl.news-admin.org +nz.*:%s@usenet.net.nz perl.*:news-moderator-%s@perl.org +phil.*:%s@news.phil.uni-sb.de +pl.*:%s@usenet.pl relcom.*:%s@moderators.relcom.ru +saar.*:%s@news.phil.uni-sb.de si.*:%s@arnes.si +sk.*:%s@news.ke.sanet.sk +tnn.*:%s@news.iij.ad.jp ukr.*:%s@sita.kiev.ua ## Direct all other public hierarchies to the master moderator database. --- ./samples/storage.conf.orig 2014-05-17 08:24:49.000000000 +0000 +++ ./samples/storage.conf 2014-07-16 12:26:26.877925610 +0000 @@ -25,7 +25,7 @@ method tradspool { newsgroups: * - class: 0 + class: 1 } ## Here are some samples for a CNFS configuration. This assumes that you --- ./scripts/rc.news.in.orig 2014-05-17 08:24:49.000000000 +0000 +++ ./scripts/rc.news.in 2014-07-16 12:26:26.877925610 +0000 @@ -14,11 +14,11 @@ waitforpid() while [ $i -gt 0 ]; do kill -0 $1 2>/dev/null || break - sleep 5 - printf "." + sleep 1 + #printf "." i=`expr $i - 1` done - printf "\n" + #printf "\n" } case X"$1" in @@ -35,7 +35,7 @@ Xstop) rm -f $WATCHPID fi - printf "Stopping innd: " + #printf "Stopping innd: " ${PATHBIN}/ctlinnd shutdown 'rc.news stop' # wait for innd to exit (up to 60 sec) @@ -50,7 +50,7 @@ Xstop) if [ "$OVMETHOD" = "ovdb" -a -f ${PATHRUN}/ovdb_server.pid ]; then pid=`cat ${PATHRUN}/ovdb_server.pid 2>/dev/null` if [ "$pid" != "" ]; then - printf "Stopping ovdb_server: " + #printf "Stopping ovdb_server: " kill $pid waitforpid $pid fi @@ -58,7 +58,7 @@ Xstop) if [ "$OVMETHOD" = "ovdb" -a -f ${PATHRUN}/ovdb_monitor.pid ]; then pid=`cat ${PATHRUN}/ovdb_monitor.pid 2>/dev/null` if [ "$pid" != "" ]; then - printf "Stopping ovdb_monitor: " + #printf "Stopping ovdb_monitor: " kill $pid waitforpid $pid fi @@ -77,6 +77,20 @@ Xstop) ;; esac +histhead=`head -n 1 $HISTORY 2>/dev/null` +case X"$histhead" in +X\<*) + cat <<EOM + +!!! Your history file format is no longer supported by innd. !!! +!!! Please read /usr/share/doc/packages/inn/README.linux for !!! +!!! information on how to proceed. !!! + +EOM + exit 1 + ;; +esac + ## Pick ${INND} or ${INNDSTART} WHAT=${INND} @@ -148,7 +162,7 @@ rm -f ${NEWSCONTROL} ${NNTPCONNECT} ${SE ## Initialize ovdb. Must be done before starting innd. if [ "$OVMETHOD" = "ovdb" ]; then - echo 'Starting ovdb.' + #echo 'Starting ovdb.' ovdb_init || { echo "Can't initialize ovdb (check news.err for OVDB messages)" exit 1 @@ -157,18 +171,20 @@ if [ "$OVMETHOD" = "ovdb" ]; then fi ## Start the show. -echo 'Starting innd.' +#echo 'Starting innd.' eval ${WHAT} ${RFLAG} ${INNFLAGS} # Gee, looks like lisp, doesn't it? ${DOINNWATCH} && { - echo "Scheduled start of ${INNWATCH}." - ( sleep 60 ; ${INNWATCH} ) > /dev/null & +# echo "Scheduled start of ${INNWATCH}." +# ( sleep 60 ; ${INNWATCH} ) > /dev/null & + ( ${INNWATCH} ) > /dev/null & } ${DOCNFSSTAT} && { - echo "Scheduled start of cnfsstat." - ( sleep 60 ; ${PATHBIN}/cnfsstat -s -l -P ) > /dev/null & +# echo "Scheduled start of cnfsstat." +# ( sleep 60 ; ${PATHBIN}/cnfsstat -s -l -P ) > /dev/null & + ( ${PATHBIN}/cnfsstat -s -l -P ) > /dev/null & } RMFILE=${MOST_LOGS}/expire.rm --- ./site/Makefile.orig 2014-05-17 08:24:49.000000000 +0000 +++ ./site/Makefile 2014-07-16 12:26:26.877925610 +0000 @@ -145,15 +145,15 @@ $D$(PATH_ACTIVE): ; $(CP_DATA) active.m $D$(PATH_NEWSGROUPS): ; $(CP_DATA) newsgroups.minimal $@ $D$(PATH_ACTIVE_TIMES): touch $@ - chown $(RUNASUSER) $@ - chgrp $(RUNASGROUP) $@ + -chown $(RUNASUSER) $@ + -chgrp $(RUNASGROUP) $@ chmod $(FILEMODE) $@ $D$(PATH_HISTORY): touch $@ - chown $(RUNASUSER) $@ - chgrp $(RUNASGROUP) $@ + -chown $(RUNASUSER) $@ + -chgrp $(RUNASGROUP) $@ chmod $(FILEMODE) $@ - test -z "$D" && $(PATHBIN)/makedbz -i -o + test -n "$D" || $(PATHBIN)/makedbz -i -o bootstrap: --- ./subscriptions.orig 2014-07-16 12:26:26.878925605 +0000 +++ ./subscriptions 2014-07-16 12:26:26.878925605 +0000 @@ -0,0 +1 @@ +news.announce.newusers
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