Example #1
0
    def cmdListGroup():
        nonlocal currentgroup, currentarticle
        if len(cmd) == 1:
            if currentgroup is None:
                s.send(b"412 No group selected\r\n")
                return
            group = currentgroup

        if len(cmd) > 1:
            try:
                arg = cmd[1].decode("utf-8")
            except:
                s.send(b"501 Bad argument\r\n")
                return
            group = arg

        if len(cmd) > 2:
            arg2 = cmd[2]
            m = msgrange.match(arg2)
            if not m:
                s.send(b"501 Bad range\r\n")
                return

            try:
                gtethan = int(m.group(1))
                if m.group(2):
                    if m.group(3):
                        ltethan = int(m.group(3))
                    else:
                        ltethan = None
                else:
                    ltethan = gtethan
            except:
                s.send(b"501 Bad range\r\n")
                return

        else:
            gtethan = None
            ltethan = None

        x = ftnexport.nntp_group(db, group)
        if x is None:
            s.send(b"411 No such group\r\n")
            return

        s.send(("211 %d %d %d %s\r\n" % (x[0] or 0, x[1] or 0, x[2] or 0, group)).encode("ascii"))
        currentgroup = group
        currentarticle = x[1]  # None if None
        log(str(a) + " group " + currentgroup + " selected, article: " + repr(currentarticle))

        #    s.send((repr(gtethan)+" - "+repr(ltethan)).encode("ascii")+b"\r\n")

        for num in ftnexport.nntp_group_list(db, currentgroup, gtethan, ltethan):
            s.send(str(num).encode("ascii") + b"\r\n")
        s.send(b".\r\n")
Example #2
0
  def cmdListGroup():
    nonlocal currentgroup, currentarticle
    if len(cmd)==1:
      if currentgroup is None:
        s.send(b"412 No group selected\r\n")
        return
      group = currentgroup

    if len(cmd)>1:
      try:
        arg = cmd[1].decode("utf-8")
      except:
        s.send(b"501 Bad argument\r\n")
        return
      group = arg

    if len(cmd)>2:
      arg2=cmd[2]
      m=msgrange.match(arg2)
      if not m:
        s.send(b"501 Bad range\r\n")
        return

      try:
        gtethan=int(m.group(1))
        if m.group(2):
          if m.group(3):
            ltethan=int(m.group(3))
          else:
            ltethan=None
        else:
          ltethan=gtethan
      except:
        s.send(b"501 Bad range\r\n")
        return

    else:
      gtethan=None
      ltethan=None

    x=ftnexport.nntp_group(db, group)
    if x is None:
      s.send(b"411 No such group\r\n")
      return

    s.send(("211 %d %d %d %s\r\n"%(x[0] or 0, x[1] or 0, x[2] or 0, group)).encode("ascii"))
    currentgroup = group
    currentarticle = x[1] # None if None
    log(str(a)+" group "+currentgroup+" selected, article: "+repr(currentarticle))

#    s.send((repr(gtethan)+" - "+repr(ltethan)).encode("ascii")+b"\r\n")

    for num in ftnexport.nntp_group_list(db, currentgroup, gtethan, ltethan):
      s.send(str(num).encode("ascii")+b"\r\n")
    s.send(b".\r\n")
Example #3
0
 def cmdGroup():
   nonlocal currentgroup
   if len(cmd)<2:
     s.send(b"501 No argument\r\n")
     return
   try:
     arg = cmd[1].decode("utf-8")
   except:
     s.send(b"501 Bad argument\r\n")
     return
   x=ftnexport.nntp_group(db, arg)
   if x is None:
     s.send(b"411 No such group\r\n")
   else:
     s.send(("211 %d %d %d %s\r\n"%(x[0] or 0, x[1] or 0, x[2] or 0, arg)).encode("ascii"))
     currentgroup = arg
     log(str(a)+" group "+arg+" selected")
Example #4
0
 def cmdGroup():
   nonlocal currentgroup, currentarticle
   if len(cmd)<2:
     s.send(b"501 No argument\r\n")
     return
   try:
     arg = cmd[1].decode("utf-8")
   except:
     s.send(b"501 Bad argument\r\n")
     return
   x=ftnexport.nntp_group(db, arg)
   if x is None:
     s.send(b"411 No such group\r\n")
   else:
     s.send(("211 %d %d %d %s\r\n"%(x[0] or 0, x[1] or 0, x[2] or 0, arg)).encode("ascii"))
     currentgroup = arg
     currentarticle = x[1] # None if None
     log(str(a)+" group "+arg+" selected, article: "+repr(currentarticle))