public class NNTPConnection extends java.lang.Object implements NNTPConstants
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
canPost
Whether the host permits posting of articles.
|
static int |
DEFAULT_PORT
The default NNTP port.
|
static int |
DEFAULT_SSL_PORT
The default NNTPS port
|
protected java.lang.String |
hostname
The hostname of the host we are connected to.
|
protected LineInputStream |
in
The socket input stream.
|
static java.util.logging.Logger |
logger
The logger used for NNTP protocol traces.
|
static java.util.logging.Level |
NNTP_TRACE
The network trace level.
|
protected CRLFOutputStream |
out
The socket output stream.
|
protected PendingData |
pendingData
Pending data, if any.
|
protected int |
port
The port on the host we are connected to.
|
protected java.net.Socket |
socket
The socket used for network communication.
|
protected java.lang.String |
welcome
The greeting issued by the host when we connected.
|
ARTICLE, ARTICLE_FOLLOWS, ARTICLE_NOT_WANTED, ARTICLE_NOT_WANTED_VIA_TAKETHIS, ARTICLE_POSTED, ARTICLE_REJECTED, ARTICLE_RETRIEVED, ARTICLE_TRANSFER_FAILED, ARTICLE_TRANSFERRED, ARTICLE_TRANSFERRED_OK, AUTHINFO_GENERIC, AUTHINFO_OK, AUTHINFO_PASS, AUTHINFO_REJECTED, AUTHINFO_SIMPLE, AUTHINFO_SIMPLE_DENIED, AUTHINFO_SIMPLE_OK, AUTHINFO_SIMPLE_REQUIRED, AUTHINFO_USER, BODY, BODY_FOLLOWS, CHECK, CLOSING_CONNECTION, COMMAND_NOT_RECOGNIZED, CONTINUE_TLS_NEGOTIATION, DATE, DATE_OK, ENCRYPTION_OR_AUTH_REQUIRED, GROUP, GROUP_SELECTED, HEAD, HEAD_FOLLOWS, HELP, HELP_TEXT, IHAVE, INTERNAL_ERROR, LAST, LIST, LIST_ACTIVE, LIST_ACTIVE_TIMES, LIST_DISTRIB_PATS, LIST_DISTRIBUTIONS, LIST_FOLLOWS, LIST_NEWSGROUPS, LIST_OVERVIEW_FMT, LIST_SUBSCRIPTIONS, LISTGROUP, MODE_READER, MODE_STREAM, NEWGROUPS, NEWGROUPS_LIST_FOLLOWS, NEWNEWS, NEWNEWS_LIST_FOLLOWS, NEXT, NO_ARTICLE_SELECTED, NO_GROUP_SELECTED, NO_NEXT_ARTICLE, NO_POSTING_ALLOWED, NO_PREVIOUS_ARTICLE, NO_SUCH_ARTICLE, NO_SUCH_ARTICLE_NUMBER, NO_SUCH_GROUP, OVERVIEW_FOLLOWS, PERMISSION_DENIED, POST, POSTING_ALLOWED, POSTING_FAILED, POSTING_NOT_ALLOWED, QUIT, SEND_ARTICLE, SEND_ARTICLE_VIA_TAKETHIS, SEND_AUTHINFO_SIMPLE, SEND_AUTHINFOPASS, SEND_TRANSFER_ARTICLE, SERVICE_DISCONTINUED, SLAVE, SLAVE_ACKNOWLEDGED, STARTTLS, STAT, STREAMING_OK, SYNTAX_ERROR, TAKETHIS, TLS_INIT_ERROR, TRANSFER_FAILED, TRANSFER_PERMISSION_DENIED, TRY_AGAIN_LATER, XGTITLE, XGTITLE_LIST_FOLLOWS, XHDR, XINDEX, XOVER, XPAT, XPATH, XREPLIC, XROVER| Constructor and Description |
|---|
NNTPConnection(java.lang.String hostname)
Creates a new connection object.
|
NNTPConnection(java.lang.String hostname,
int port)
Creates a new connection object.
|
NNTPConnection(java.lang.String hostname,
int port,
int connectionTimeout,
int timeout)
Creates a new connection object.
|
NNTPConnection(java.lang.String hostname,
int port,
int connectionTimeout,
int timeout,
boolean secure,
javax.net.ssl.TrustManager tm,
boolean init)
Creates a new connection object.
|
NNTPConnection(java.lang.String host,
int port,
javax.net.ssl.TrustManager tm)
Creates a new secure connection using the specified trust manager.
|
| Modifier and Type | Method and Description |
|---|---|
ArticleResponse |
article(int articleNumber)
Send an article retrieval request to the server.
|
ArticleResponse |
article(java.lang.String messageId)
Send an article retrieval request to the server.
|
protected ArticleResponse |
articleImpl(java.lang.String command,
java.lang.String messageId)
Performs an ARTICLE, BODY, HEAD, or STAT command.
|
boolean |
authinfo(java.lang.String username,
java.lang.String password)
Basic authentication strategy.
|
boolean |
authinfoGeneric(java.lang.String mechanism,
java.lang.String username,
java.lang.String password)
Authenticates the connection using the specified SASL mechanism,
username and password.
|
boolean |
authinfoSimple(java.lang.String username,
java.lang.String password)
Implementation of NNTP simple authentication.
|
ArticleResponse |
body(int articleNumber)
Send an article body retrieval request to the server.
|
ArticleResponse |
body(java.lang.String messageId)
Send an article body retrieval request to the server.
|
boolean |
check(java.lang.String messageId) |
java.util.Date |
date()
Returns the date on the server.
|
protected javax.net.ssl.SSLSocketFactory |
getSSLSocketFactory(javax.net.ssl.TrustManager tm)
Returns a configured SSLSocketFactory to use in creating new SSL
sockets.
|
java.lang.String |
getWelcome()
Return the welcome message sent by the server in reply to the initial
connection.
|
GroupResponse |
group(java.lang.String name)
Send a group selection command to the server.
|
ArticleResponse |
head(int articleNumber)
Send an article head retrieval request to the server.
|
ArticleResponse |
head(java.lang.String messageId)
Send an article head retrieval request to the server.
|
LineIterator |
help()
Requests a help listing.
|
PostStream |
ihave(java.lang.String messageId)
Sends an ihave command indicating that the client has an article with
the specified message-id.
|
void |
init()
Initialises the connection.
|
ArticleResponse |
last()
Sends a previous article positioning command to the server.
|
GroupIterator |
list()
Send a group listing command to the server.
|
GroupIterator |
listActive(java.lang.String wildmat)
Returns an iterator over the groups specified according to the wildmat
pattern.
|
ActiveTimesIterator |
listActiveTimes()
Returns an iterator over the active.times file.
|
ArticleNumberIterator |
listGroup(java.lang.String group)
Returns a listing of all the article numbers in the specified
newsgroup.
|
PairIterator |
listNewsgroups(java.lang.String wildmat)
Returns an iterator over the group descriptions for the given groups.
|
LineIterator |
listOverviewFmt()
Returns an iterator over the order in which headers are stored in the
overview database.
|
GroupIterator |
listSubscriptions()
Returns a list of newsgroups suitable for new users of the server.
|
boolean |
modeReader()
Indicates to the server that this is a user-agent.
|
boolean |
modeStream()
Attempt to initialise the connection in streaming mode.
|
LineIterator |
newGroups(java.util.Date since,
java.lang.String[] distributions)
Returns an iterator over the list of new groups on the server since the
specified date.
|
LineIterator |
newNews(java.lang.String newsgroup,
java.util.Date since,
java.lang.String[] distributions)
Returns an iterator over the list of message-ids posted or received to
the specified newsgroup(s) since the specified date.
|
ArticleResponse |
next()
Sends a next article positioning command to the server.
|
protected StatusResponse |
parseResponse(java.lang.String line)
Parse a response object from a response line sent by the server.
|
protected StatusResponse |
parseResponse(java.lang.String line,
boolean isListGroup)
Parse a response object from a response line sent by the server.
|
java.io.OutputStream |
post()
Post an article.
|
void |
quit()
Close the connection.
|
protected java.lang.String |
read()
Read a single line from the server.
|
protected void |
send(java.lang.String line)
Send a single line to the server.
|
void |
slave()
Indicates to the server that this is a slave connection.
|
boolean |
starttls()
Negotiate TLS over the current connection.
|
boolean |
starttls(javax.net.ssl.TrustManager tm)
This command performs a TLS negotiation.
|
ArticleResponse |
stat(int articleNumber)
Send an article status request to the server.
|
ArticleResponse |
stat(java.lang.String messageId)
Send an article status request to the server.
|
java.io.OutputStream |
takethis(java.lang.String messageId)
Implements the out-of-order takethis command.
|
PairIterator |
xgtitle(java.lang.String wildmat)
Returns an iterator over the list of newsgroup descriptions.
|
HeaderIterator |
xhdr(java.lang.String header,
java.lang.String range) |
OverviewIterator |
xover(Range range) |
public static final java.util.logging.Level NNTP_TRACE
public static final int DEFAULT_PORT
public static final int DEFAULT_SSL_PORT
public static final java.util.logging.Logger logger
protected java.lang.String hostname
protected int port
protected java.net.Socket socket
protected LineInputStream in
protected CRLFOutputStream out
protected boolean canPost
protected java.lang.String welcome
protected PendingData pendingData
public NNTPConnection(java.lang.String hostname)
throws java.io.IOException
hostname - the hostname or IP address of the news serverjava.io.IOExceptionpublic NNTPConnection(java.lang.String hostname,
int port)
throws java.io.IOException
hostname - the hostname or IP address of the news serverport - the port to connect tojava.io.IOExceptionpublic NNTPConnection(java.lang.String host,
int port,
javax.net.ssl.TrustManager tm)
throws java.io.IOException
host - the name of the host to connect toport - the port to connect to, or -1 for the defaulttm - a trust manager used to check SSL certificates, or null to
use the defaultjava.io.IOExceptionpublic NNTPConnection(java.lang.String hostname,
int port,
int connectionTimeout,
int timeout)
throws java.io.IOException
hostname - the hostname or IP address of the news serverport - the port to connect toconnectionTimeout - the socket connection timeouttimeout - the read timeout on the socketjava.io.IOExceptionpublic NNTPConnection(java.lang.String hostname,
int port,
int connectionTimeout,
int timeout,
boolean secure,
javax.net.ssl.TrustManager tm,
boolean init)
throws java.io.IOException
hostname - the hostname or IP address of the news serverport - the port to connect toconnectionTimeout - the socket connection timeouttimeout - the read timeout on the socketinit - initialise the connectionjava.io.IOExceptionprotected javax.net.ssl.SSLSocketFactory getSSLSocketFactory(javax.net.ssl.TrustManager tm)
throws java.security.GeneralSecurityException
tm - an optional trust manager to usejava.security.GeneralSecurityExceptionpublic void init()
throws java.io.IOException
java.io.IOExceptionpublic boolean starttls()
throws java.io.IOException
java.io.IOExceptionpublic boolean starttls(javax.net.ssl.TrustManager tm)
throws java.io.IOException
tm - the custom trust manager to usejava.io.IOExceptionpublic java.lang.String getWelcome()
public ArticleResponse article(int articleNumber) throws java.io.IOException
articleNumber - the article number of the article to retrievejava.io.IOExceptionpublic ArticleResponse article(java.lang.String messageId) throws java.io.IOException
messageId - the message-id of the article to retrievejava.io.IOExceptionpublic ArticleResponse head(int articleNumber) throws java.io.IOException
articleNumber - the article number of the article to headjava.io.IOExceptionpublic ArticleResponse head(java.lang.String messageId) throws java.io.IOException
messageId - the message-id of the article to headjava.io.IOExceptionpublic ArticleResponse body(int articleNumber) throws java.io.IOException
articleNumber - the article number of the article to bodyjava.io.IOExceptionpublic ArticleResponse body(java.lang.String messageId) throws java.io.IOException
messageId - the message-id of the article to bodyjava.io.IOExceptionpublic ArticleResponse stat(int articleNumber) throws java.io.IOException
articleNumber - the article number of the article to statjava.io.IOExceptionpublic ArticleResponse stat(java.lang.String messageId) throws java.io.IOException
messageId - the message-id of the article to statjava.io.IOExceptionprotected ArticleResponse articleImpl(java.lang.String command, java.lang.String messageId) throws java.io.IOException
command - one of the above commandsmessageId - the article-number or message-id in string formjava.io.IOExceptionpublic GroupResponse group(java.lang.String name) throws java.io.IOException
name - the name of the group to selectjava.io.IOExceptionpublic LineIterator help() throws java.io.IOException
java.io.IOExceptionpublic PostStream ihave(java.lang.String messageId) throws java.io.IOException
messageId - the article message-idjava.io.IOExceptionpublic ArticleResponse last() throws java.io.IOException
java.io.IOExceptionpublic GroupIterator list() throws java.io.IOException
java.io.IOExceptionpublic LineIterator newGroups(java.util.Date since, java.lang.String[] distributions) throws java.io.IOException
since - the date from which to list new groupsdistributions - if non-null, an array of distributions to matchjava.io.IOExceptionpublic LineIterator newNews(java.lang.String newsgroup, java.util.Date since, java.lang.String[] distributions) throws java.io.IOException
newsgroup - the newsgroup wildmatsince - the date from which to list new articlesdistributions - if non-null, a list of distributions to matchjava.io.IOExceptionpublic ArticleResponse next() throws java.io.IOException
java.io.IOExceptionpublic java.io.OutputStream post()
throws java.io.IOException
write() on the stream for all the
bytes of the article, and finally call close()
on the stream.
No other method should be called in between.java.io.IOExceptionpostComplete()public void quit()
throws java.io.IOException
java.io.IOExceptionpublic void slave()
throws java.io.IOException
java.io.IOExceptionpublic boolean check(java.lang.String messageId)
throws java.io.IOException
java.io.IOExceptionpublic boolean modeStream()
throws java.io.IOException
java.io.IOExceptionpublic java.io.OutputStream takethis(java.lang.String messageId)
throws java.io.IOException
close() on the
stream.java.io.IOExceptiontakethisComplete()public GroupIterator listActive(java.lang.String wildmat) throws java.io.IOException
wildmat - the wildmat pattern. If null, returns all groups. If no
groups are matched, returns an empty iterator.java.io.IOExceptionpublic ActiveTimesIterator listActiveTimes() throws java.io.IOException
java.io.IOExceptionpublic PairIterator listNewsgroups(java.lang.String wildmat) throws java.io.IOException
wildmat - if non-null, limits the groups in the iterator to the
specified patternjava.io.IOExceptionxgtitle(java.lang.String)public LineIterator listOverviewFmt() throws java.io.IOException
java.io.IOExceptionxover(gnu.inet.nntp.Range)public GroupIterator listSubscriptions() throws java.io.IOException
java.io.IOExceptionpublic ArticleNumberIterator listGroup(java.lang.String group) throws java.io.IOException
group parameter is null, the currently
selected group is assumed.group - the name of the group to list articles forjava.io.IOExceptionpublic boolean modeReader()
throws java.io.IOException
java.io.IOExceptionpublic PairIterator xgtitle(java.lang.String wildmat) throws java.io.IOException
wildmat - if non-null, the newsgroups to matchjava.io.IOExceptionpublic HeaderIterator xhdr(java.lang.String header, java.lang.String range) throws java.io.IOException
java.io.IOExceptionpublic OverviewIterator xover(Range range) throws java.io.IOException
java.io.IOExceptionpublic boolean authinfo(java.lang.String username,
java.lang.String password)
throws java.io.IOException
username - the user to authenticatepassword - the(cleartext) passwordjava.io.IOExceptionpublic boolean authinfoSimple(java.lang.String username,
java.lang.String password)
throws java.io.IOException
java.io.IOExceptionpublic boolean authinfoGeneric(java.lang.String mechanism,
java.lang.String username,
java.lang.String password)
throws java.io.IOException
mechanism - a SASL authentication mechanism, e.g. LOGIN, PLAIN,
CRAM-MD5, GSSAPIusername - the authentication principalpassword - the authentication credentialsjava.io.IOExceptionpublic java.util.Date date()
throws java.io.IOException
java.io.IOExceptionprotected StatusResponse parseResponse(java.lang.String line) throws java.net.ProtocolException
java.net.ProtocolExceptionprotected StatusResponse parseResponse(java.lang.String line, boolean isListGroup) throws java.net.ProtocolException
isListGroup - whether we are invoking the LISTGROUP commandjava.net.ProtocolExceptionprotected void send(java.lang.String line)
throws java.io.IOException
line - the line to sendjava.io.IOExceptionprotected java.lang.String read()
throws java.io.IOException
java.io.IOException© Copyright 2003 The Free Software Foundation, all rights reserved