Выбрать главу

  xhdr header [range|MessageID]

  xover [range]

  xpat header range|MessageID pat [morepat...]

  xpath MessageID

Report problems to <usenet@vlager.vbrew.com>

.

NNTP reader mode has a lot of commands. Many of these are designed to make the life of a newsreader easier. We mentioned earlier that there are commands that instruct the server to send the head and the body of articles separately. There are also commands that list the available groups and articles, and others that allow posting, an alternate means of sending news articles to the server.

Listing Available Groups

The list command lists a number of different types of information; notably the groups supported by the server:

list newsgroups

215 Descriptions in form "group description".

control                 News server internal group

junk                    News server internal group

local.general           General local stuff

local.test              Local test group

.

Listing Active Groups

list active shows each supported group and provides information about them. The two numbers in each line of the output are the high-water mark and the low-water mark - that is, the highest numbered article and lowest numbered article in each group. The newsreader is able to form an idea of the number of articles in the group from these. We'll talk a little more about these numbers in a moment. The last field in the output displays flags that control whether posting is allowed to the group, whether the group is moderated, and whether articles posted are actually stored or just passed on. These flags are described in detail in Chapter 23. An example looks like this:

list active

215 Newsgroups in form "group high low flags".

control 0000000000 0000000001 y

junk 0000000003 0000000001 y

alt.test 0000000000 0000000001 y

.

Posting an Article

We mentioned there was a difference between pushing an article and posting an article. When you are pushing an article, there is an implicit assumption that the article already exists, that it has a message identifier that has been uniquely assigned to it by the server to which it was originally posted, and that it has a complete set of headers. When posting an article, you are creating the article for the first time and the only headers you supply are those that are meaningful to you, such as the Subject and the Newgroups to which you are posting the article. The news server you post the article on will add all the other headers for you and create a message ID that it will use when pushing the article onto other servers.

All of this means that posting an article is even easier than pushing one. An example posting looks like this:

post

340 Ok

From: terry@richard.geek.org.au

Subject: test message number 1

Newsgroups: junk

Body: This is a test message, please feel free to ignore it.

.

240 Article posted

We've generated two more messages like this one to give our following examples some realism.

Listing New Articles

When a newsreader first connects to a new server and the user chooses a newsgroup to browse, the newsreader will want to retrieve a list of new articles, those posted or received since the last login by the user. The newnews command is used for this purpose. Three mandatory arguments must be supplied: the name of the group or groups to query, the start date, and the start time from which to list. The date and time are each specified as six-digit numbers, with the most significant information first; yymmdd and hhmmss, respectively:

newnews junk 990101 000000

230 New news follows

‹7g2o5r$aa$6@news.vbrew.com›

‹7g5bhm$8f$2@news.vbrew.com›

‹7g5bk5$8f$3@news.vbrew.com›

.

Selecting a Group on Which to Operate

When the user selects a newsgroup to browse, the newsreader may tell the news server that the group was selected. This simplifies the interaction between newsreader and news server; it removes the need to constantly send the name of the newsgroup with each command. The group command simply takes the name of the selected group as an argument. Many following commands use the group selected as the default, unless another newsgroup is specified explicitly:

group junk

211 3 1 3 junk

The group command returns a message indicating the number of active messages, the low-water mark, the high-water mark, and the name of the group, respectively. Note that while the number of active messages and the high-water mark are the same in our example, this is not often the case; in an active news server, some articles may have expired or been deleted, lowering the number of active messages but leaving the high-water mark untouched.

Listing Articles in a Group

To address newsgroup articles, the newsreader must know which article numbers represent active articles. The listgroup command offers a list of the active article numbers in the current group, or an explicit group if the group name is supplied:

listgroup junk

211 Article list follows

1

2

3

.

Retrieving an Article Header Only

The user must have some information about an article before she can know whether she wishes to read it. We mentioned earlier that some commands allow the article header and body to be transferred separately. The head command is used to request that the server transmit just the header of the specified article to the newsreader. If the user doesn't want to read this article, we haven't wasted time and network bandwidth transferring a potentially large article body unnecessarily.

Articles may be referenced using either their number (from the listgroup command) or their message identifier:

head 2

221 2 ‹7g5bhm$8f$2@news.vbrew.com› head

Path: news.vbrew.com!not-for-mail

From: terry@richard.geek.org.au

Newsgroups: junk

Subject: test message number 2

Date: 27 Apr 1999 21:51:50 GMT

Organization: The Virtual brewery

Lines: 2

Message-ID: ‹7g5bhm$8f$2@news.vbrew.com›

NNTP-Posting-Host: localhost