Re: searching for group names

Mirko Liss <[email protected]> Fri, 15 Oct 2004 12:52:43 +0200
Newsgroups gmane.network.noffle.user
Message-ID <[email protected]>
Dan Jacobson:
> Gentlemen, today we shall discuss searching for group names. E.g.,
> let's ask noffle what is the full name of that shortwave group.


echo "list active *shortwave*" | noffle --server


> I see I have written a bash function to do this:
> noffle_search_group ()
> {
>     noffle -g | awk -F\\t '$1~'/$@/'{print $6,$1}' | sort -k 2
> }
> e.g.,
> $ noffle_search_group shortwave
> y rec.radio.shortwave


What about reading directly from the groupinfo database?  I'd rather
backup the database before doing anything fancy, though.  Here's a
simple example:


#!/usr/bin/env python

# 0755 noffle_active_re.py
# Tested at least once.  Works for me but your mileage may vary.
# Requires Python incl. gdbm module
# Mirko Liss 2003-08-10

import gdbm, re, string, struct
import sys

groupdb = "/var/spool/noffle/data/groupinfo.gdbm"

def active_re( pattern ):
    searcher = re.compile( pattern, re.IGNORECASE ).search
    db = gdbm.open( groupdb, "r" )
    matchlist = filter( searcher, db.keys() )
    matchlist.sort()
    for a in matchlist:
        entry = db[a]
        (first, last, remotelast, createdTime, 
         lastAccessTime) = struct.unpack( "iiiii", entry[:20] )
        (server, description) = string.split( entry[20:-6], "\0" )
        (postAllow, lastPostTime) = struct.unpack( "=ci", entry[-5:] )
        # print groupname without "\0"
        print a[:-1], last, first, postAllow
    return

if len( sys.argv ) > 1:
   active_re( sys.argv[1] )
else:
   print "Usage: %s pattern" % sys.argv[0]

# End-Of-File


-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl