public class NNTPConnection extends java.lang.Object implements NNTPConstants
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_PORT
The default NNTP port.
|
static int |
DEFAULT_SSL_PORT
The default NNTPS port
|
static java.util.logging.Level |
NNTP_TRACE
The network trace level.
|
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)
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.
|
java.util.logging.Logger |
getLogger()
Returns the logger used by this connection for debug output.
|
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.
|
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 NNTPConnection(java.lang.String hostname) throws java.io.IOException
hostname
- the hostname or IP address of the news serverjava.io.IOException
public 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.IOException
public 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.IOException
public 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.IOException
public NNTPConnection(java.lang.String hostname, int port, int connectionTimeout, int timeout, boolean secure, javax.net.ssl.TrustManager tm)
hostname
- the hostname or IP address of the news serverport
- the port to connect toconnectionTimeout
- the socket connection timeouttimeout
- the read timeout on the socketprotected javax.net.ssl.SSLSocketFactory getSSLSocketFactory(javax.net.ssl.TrustManager tm) throws java.security.GeneralSecurityException
tm
- an optional trust manager to usejava.security.GeneralSecurityException
public java.util.logging.Logger getLogger()
public boolean starttls() throws java.io.IOException
java.io.IOException
public boolean starttls(javax.net.ssl.TrustManager tm) throws java.io.IOException
tm
- the custom trust manager to usejava.io.IOException
public java.lang.String getWelcome()
public ArticleResponse article(int articleNumber) throws java.io.IOException
articleNumber
- the article number of the article to retrievejava.io.IOException
public ArticleResponse article(java.lang.String messageId) throws java.io.IOException
messageId
- the message-id of the article to retrievejava.io.IOException
public ArticleResponse head(int articleNumber) throws java.io.IOException
articleNumber
- the article number of the article to headjava.io.IOException
public ArticleResponse head(java.lang.String messageId) throws java.io.IOException
messageId
- the message-id of the article to headjava.io.IOException
public ArticleResponse body(int articleNumber) throws java.io.IOException
articleNumber
- the article number of the article to bodyjava.io.IOException
public ArticleResponse body(java.lang.String messageId) throws java.io.IOException
messageId
- the message-id of the article to bodyjava.io.IOException
public ArticleResponse stat(int articleNumber) throws java.io.IOException
articleNumber
- the article number of the article to statjava.io.IOException
public ArticleResponse stat(java.lang.String messageId) throws java.io.IOException
messageId
- the message-id of the article to statjava.io.IOException
protected 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.IOException
public GroupResponse group(java.lang.String name) throws java.io.IOException
name
- the name of the group to selectjava.io.IOException
public LineIterator help() throws java.io.IOException
java.io.IOException
public PostStream ihave(java.lang.String messageId) throws java.io.IOException
messageId
- the article message-idjava.io.IOException
public ArticleResponse last() throws java.io.IOException
java.io.IOException
public GroupIterator list() throws java.io.IOException
java.io.IOException
public 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.IOException
public 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.IOException
public ArticleResponse next() throws java.io.IOException
java.io.IOException
public 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.IOException
postComplete()
public void quit() throws java.io.IOException
java.io.IOException
public void slave() throws java.io.IOException
java.io.IOException
public boolean check(java.lang.String messageId) throws java.io.IOException
java.io.IOException
public boolean modeStream() throws java.io.IOException
java.io.IOException
public java.io.OutputStream takethis(java.lang.String messageId) throws java.io.IOException
close()
on the
stream.java.io.IOException
takethisComplete()
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.IOException
public ActiveTimesIterator listActiveTimes() throws java.io.IOException
java.io.IOException
public 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.IOException
xgtitle(java.lang.String)
public LineIterator listOverviewFmt() throws java.io.IOException
java.io.IOException
xover(gnu.inet.nntp.Range)
public GroupIterator listSubscriptions() throws java.io.IOException
java.io.IOException
public 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.IOException
public boolean modeReader() throws java.io.IOException
java.io.IOException
public PairIterator xgtitle(java.lang.String wildmat) throws java.io.IOException
wildmat
- if non-null, the newsgroups to matchjava.io.IOException
public HeaderIterator xhdr(java.lang.String header, java.lang.String range) throws java.io.IOException
java.io.IOException
public OverviewIterator xover(Range range) throws java.io.IOException
java.io.IOException
public boolean authinfo(java.lang.String username, java.lang.String password) throws java.io.IOException
username
- the user to authenticatepassword
- the(cleartext) passwordjava.io.IOException
public boolean authinfoSimple(java.lang.String username, java.lang.String password) throws java.io.IOException
java.io.IOException
public 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.IOException
public java.util.Date date() throws java.io.IOException
java.io.IOException
protected StatusResponse parseResponse(java.lang.String line) throws java.net.ProtocolException
java.net.ProtocolException
protected StatusResponse parseResponse(java.lang.String line, boolean isListGroup) throws java.net.ProtocolException
isListGroup
- whether we are invoking the LISTGROUP commandjava.net.ProtocolException
protected void send(java.lang.String line) throws java.io.IOException
line
- the line to sendjava.io.IOException
protected java.lang.String read() throws java.io.IOException
java.io.IOException