├── src
├── media
│ └── net-logo-white.xcf
├── site
│ ├── resources
│ │ ├── images
│ │ │ └── net-logo-white.png
│ │ └── download_net.cgi
│ ├── custom
│ │ └── project-info-report.properties
│ ├── xdoc
│ │ ├── faq.xml
│ │ └── tasks.xml
│ └── site.xml
├── test
│ ├── resources
│ │ └── org
│ │ │ └── apache
│ │ │ └── commons
│ │ │ └── net
│ │ │ ├── ftpsserver
│ │ │ ├── ftpserver.jks
│ │ │ └── users.properties
│ │ │ ├── test.properties
│ │ │ └── test-data
│ │ │ └── file.txt
│ └── java
│ │ └── org
│ │ └── apache
│ │ └── commons
│ │ └── net
│ │ ├── ftp
│ │ ├── FTPCommandTest.java
│ │ ├── GZIPSocket.java
│ │ ├── TestConnectTimeout.java
│ │ └── NoProtocolSslConfigurationProxy.java
│ │ ├── tftp
│ │ ├── TFTPPacketExceptionTest.java
│ │ ├── TFTPReadRequestPacketTest.java
│ │ ├── TFTPWriteRequestPacketTest.java
│ │ ├── TFTPAckPacketTest.java
│ │ ├── TFTPErrorPacketTest.java
│ │ └── TFTPDataPacketTest.java
│ │ ├── whois
│ │ └── WhoisClientTest.java
│ │ ├── echo
│ │ ├── EchoTCPClientTest.java
│ │ └── EchoUDPClientTest.java
│ │ ├── util
│ │ ├── CharsetsTest.java
│ │ ├── TrustManagerUtilsTest.java
│ │ └── ListenerListTest.java
│ │ ├── telnet
│ │ ├── InvalidTelnetOptionExceptionTest.java
│ │ ├── TelnetOptionTest.java
│ │ ├── EchoOptionHandlerTest.java
│ │ ├── SuppressGAOptionHandlerTest.java
│ │ └── SimpleOptionHandlerTest.java
│ │ ├── chargen
│ │ ├── CharGenTCPClientTest.java
│ │ └── CharGenUDPClientTest.java
│ │ ├── discard
│ │ ├── DiscardTCPClientTest.java
│ │ └── DiscardUDPClientTest.java
│ │ ├── bsd
│ │ ├── RLoginClientTest.java
│ │ ├── RCommandClientTest.java
│ │ └── RExecClientTest.java
│ │ ├── pop3
│ │ └── POP3Constants.java
│ │ ├── daytime
│ │ └── DaytimeUDPClientTest.java
│ │ ├── imap
│ │ └── AuthenticatingIMAPClientTest.java
│ │ ├── SocketClientFunctionalTest.java
│ │ ├── time
│ │ └── TimeUDPClientTest.java
│ │ └── nntp
│ │ └── TestThreader.java
├── main
│ └── java
│ │ └── org
│ │ └── apache
│ │ └── commons
│ │ └── net
│ │ ├── util
│ │ ├── package-info.java
│ │ ├── SSLSocketUtils.java
│ │ ├── NetConstants.java
│ │ └── Charsets.java
│ │ ├── whois
│ │ └── package-info.java
│ │ ├── pop3
│ │ ├── package-info.java
│ │ └── POP3Reply.java
│ │ ├── smtp
│ │ ├── package-info.java
│ │ └── SMTPConnectionClosedException.java
│ │ ├── echo
│ │ ├── package-info.java
│ │ └── EchoTCPClient.java
│ │ ├── finger
│ │ └── package-info.java
│ │ ├── ntp
│ │ └── package-info.java
│ │ ├── telnet
│ │ ├── package-info.java
│ │ ├── TelnetInputListener.java
│ │ ├── InvalidTelnetOptionException.java
│ │ ├── EchoOptionHandler.java
│ │ ├── SuppressGAOptionHandler.java
│ │ ├── SimpleOptionHandler.java
│ │ └── TelnetNotificationHandler.java
│ │ ├── chargen
│ │ └── package-info.java
│ │ ├── daytime
│ │ ├── package-info.java
│ │ └── DaytimeTCPClient.java
│ │ ├── discard
│ │ ├── package-info.java
│ │ └── DiscardTCPClient.java
│ │ ├── ftp
│ │ ├── package-info.java
│ │ ├── parser
│ │ │ ├── package-info.java
│ │ │ ├── FTPTimestampParser.java
│ │ │ ├── ParserInitializationException.java
│ │ │ ├── CompositeFileEntryParser.java
│ │ │ └── FTPFileEntryParserFactory.java
│ │ ├── FTPFileFilter.java
│ │ ├── Configurable.java
│ │ ├── DurationUtils.java
│ │ ├── FTPFileFilters.java
│ │ ├── DeflateSocket.java
│ │ ├── FTPConnectionClosedException.java
│ │ ├── FTPSTrustManager.java
│ │ ├── FTPFileEntryParserImpl.java
│ │ └── FTPSCommand.java
│ │ ├── io
│ │ ├── package-info.java
│ │ ├── SocketInputStream.java
│ │ └── CRLFLineReader.java
│ │ ├── tftp
│ │ ├── package-info.java
│ │ └── TFTPPacketException.java
│ │ ├── bsd
│ │ └── package-info.java
│ │ ├── imap
│ │ └── package-info.java
│ │ ├── nntp
│ │ ├── package-info.java
│ │ ├── ArticleInfo.java
│ │ ├── ArticlePointer.java
│ │ ├── NewsgroupIterator.java
│ │ ├── NNTPConnectionClosedException.java
│ │ ├── ArticleIterator.java
│ │ └── Threadable.java
│ │ ├── time
│ │ └── package-info.java
│ │ ├── package-info.java
│ │ ├── examples
│ │ ├── package-info.java
│ │ ├── PrintCommandListeners.java
│ │ ├── nntp
│ │ │ └── NNTPUtils.java
│ │ ├── telnet
│ │ │ └── WeatherTelnet.java
│ │ ├── unix
│ │ │ └── fwhois.java
│ │ └── mail
│ │ │ └── IMAPMail.java
│ │ ├── MalformedServerReplyException.java
│ │ ├── ProtocolCommandListener.java
│ │ └── DatagramSocketFactory.java
├── conf
│ └── checkstyle-suppressions.xml
└── assembly
│ └── src.xml
├── NOTICE.txt
├── .gitignore
├── BUILDING.txt
├── .gitattributes
├── SECURITY.md
├── CODE_OF_CONDUCT.md
├── .github
├── GH-ROBOTS.txt
├── dependabot.yml
├── workflows
│ ├── dependency-review.yml
│ └── scorecards-analysis.yml
└── pull_request_template.md
└── .asf.yaml
/src/media/net-logo-white.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/commons-net/HEAD/src/media/net-logo-white.xcf
--------------------------------------------------------------------------------
/src/site/resources/images/net-logo-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/commons-net/HEAD/src/site/resources/images/net-logo-white.png
--------------------------------------------------------------------------------
/src/test/resources/org/apache/commons/net/ftpsserver/ftpserver.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apache/commons-net/HEAD/src/test/resources/org/apache/commons/net/ftpsserver/ftpserver.jks
--------------------------------------------------------------------------------
/NOTICE.txt:
--------------------------------------------------------------------------------
1 | Apache Commons Net
2 | Copyright 2001-2025 The Apache Software Foundation
3 |
4 | This product includes software developed at
5 | The Apache Software Foundation (https://www.apache.org/).
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.classpath
2 | /.project
3 | /.settings/
4 | /target/
5 | /.vscode/
6 | .idea/
7 | *.iml
8 | /site-content/
9 |
10 | # NetBeans files
11 | nb-configuration.xml
12 | nbactions.xml
13 |
--------------------------------------------------------------------------------
/src/site/resources/download_net.cgi:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Just call the standard mirrors.cgi script. It will use download.html
3 | # as the input template.
4 | exec /www/www.apache.org/dyn/mirrors/mirrors.cgi $*
--------------------------------------------------------------------------------
/BUILDING.txt:
--------------------------------------------------------------------------------
1 | The code requires at least Java 8 to build.
2 |
3 | For setting up your Maven installation to enable the use of the profile, please see:
4 |
5 | https://commons.apache.org/commons-parent-pom.html#Testing_with_different_Java_versions
6 |
7 | Building the site will also generally require at least Java 8 to run Maven.
8 |
9 | To build the site from scratch, you can use:
10 |
11 | $ mvn clean site
12 |
13 | To install the component locally:
14 |
15 | $ mvn install
16 |
17 | To deploy:
18 |
19 | $ mvn deploy -Prelease -Duser.name=*ASF ID* [-Ptest-deploy]
20 |
21 | The test-deploy profile deploys to target/deploy rather than Nexus
22 |
23 | [1] http://maven.apache.org/docs/history.html
24 |
--------------------------------------------------------------------------------
/src/test/resources/org/apache/commons/net/test.properties:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one or more
2 | # contributor license agreements. See the NOTICE file distributed with
3 | # this work for additional information regarding copyright ownership.
4 | # The ASF licenses this file to You under the Apache License, Version 2.0
5 | # (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # https://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | a=1
17 | b=2
18 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one or more
2 | # contributor license agreements. See the NOTICE file distributed with
3 | # this work for additional information regarding copyright ownership.
4 | # The ASF licenses this file to You under the Apache License, Version 2.0
5 | # (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # https://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | * text=auto
17 | *.patch -text
18 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 |
17 | The Apache Commons security page is [https://commons.apache.org/security.html](https://commons.apache.org/security.html).
18 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/util/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Utility classes
20 | */
21 | package org.apache.commons.net.util;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/whois/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Whois client
20 | */
21 | package org.apache.commons.net.whois;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/pop3/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * POP3 and POP3S mail
20 | */
21 | package org.apache.commons.net.pop3;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/smtp/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * SMTP and SMTPS mail
20 | */
21 | package org.apache.commons.net.smtp;
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 |
17 | The Apache code of conduct page is [https://www.apache.org/foundation/policies/conduct.html](https://www.apache.org/foundation/policies/conduct.html).
18 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/echo/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Echo over TCP and UDP
20 | */
21 | package org.apache.commons.net.echo;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/finger/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Finger implementation
20 | */
21 | package org.apache.commons.net.finger;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ntp/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * NTP - network time protocol
20 | */
21 | package org.apache.commons.net.ntp;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/telnet/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Telnet implementation
20 | */
21 | package org.apache.commons.net.telnet;
--------------------------------------------------------------------------------
/.github/GH-ROBOTS.txt:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one or more
2 | # contributor license agreements. See the NOTICE file distributed with
3 | # this work for additional information regarding copyright ownership.
4 | # The ASF licenses this file to You under the Apache License, Version 2.0
5 | # (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # https://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | # Keeps on creating FUD PRs in test code
17 | # Does not follow Apache disclosure policies
18 | User-agent: JLLeitschuh/security-research
19 | Disallow: *
20 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/chargen/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Chargen over TCP and UDP
20 | */
21 | package org.apache.commons.net.chargen;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/daytime/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Daytime over TCP and UDP
20 | */
21 | package org.apache.commons.net.daytime;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/discard/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Discard over TCP and UDP
20 | */
21 | package org.apache.commons.net.discard;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * FTP and FTPS support classes
20 | */
21 | package org.apache.commons.net.ftp;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/io/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Utility classes for IO support.
20 | */
21 | package org.apache.commons.net.io;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/tftp/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * TFTP cliemt implementation
20 | */
21 | package org.apache.commons.net.tftp;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/bsd/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Classes for rcommand, rexec, rlogin
20 | */
21 | package org.apache.commons.net.bsd;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/imap/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Basic IMAP and IMAPS support classes
20 | */
21 | package org.apache.commons.net.imap;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/nntp/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * NNTP - network news transfer protocol
20 | */
21 | package org.apache.commons.net.nntp;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/time/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Time protocol (RFC 868) over TCP and UDP
20 | */
21 | package org.apache.commons.net.time;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/parser/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * FTP file listing parser classes
20 | */
21 | package org.apache.commons.net.ftp.parser;
--------------------------------------------------------------------------------
/src/test/resources/org/apache/commons/net/test-data/file.txt:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one
2 | # or more contributor license agreements. See the NOTICE file
3 | # distributed with this work for additional information
4 | # regarding copyright ownership. The ASF licenses this file
5 | # to you under the Apache License, Version 2.0 (the
6 | # "License"); you may not use this file except in compliance
7 | # with the License. You may obtain a copy of the License at
8 | #
9 | # https://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 |
18 | “We are all in the gutter, but some of us are looking at the stars.”
19 |
20 | ― Oscar Wilde, Lady Windermere's Fan
21 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Common socket classes and protocol command utility classes
20 | */
21 | package org.apache.commons.net;
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/examples/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | /**
19 | * Example classes.
20 | *
21 | * These do not form part of the public API and may change without notice.
22 | */
23 | package org.apache.commons.net.examples;
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one or more
2 | # contributor license agreements. See the NOTICE file distributed with
3 | # this work for additional information regarding copyright ownership.
4 | # The ASF licenses this file to You under the Apache License, Version 2.0
5 | # (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # https://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | version: 2
17 | updates:
18 | - package-ecosystem: "maven"
19 | directory: "/"
20 | schedule:
21 | interval: "quarterly"
22 | ignore:
23 | - dependency-name: "org.slf4j:slf4j-simple"
24 | - package-ecosystem: "github-actions"
25 | directory: "/"
26 | schedule:
27 | interval: "quarterly"
28 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/ftp/FTPCommandTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import org.junit.jupiter.api.Test;
21 |
22 | public class FTPCommandTest {
23 |
24 | @SuppressWarnings("deprecation") // test of deprecated code
25 | @Test
26 | public void testArray() {
27 | FTPCommand.checkArray();
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/src/conf/checkstyle-suppressions.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/.github/workflows/dependency-review.yml:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one
2 | # or more contributor license agreements. See the NOTICE file
3 | # distributed with this work for additional information
4 | # regarding copyright ownership. The ASF licenses this file
5 | # to you under the Apache License, Version 2.0 (the
6 | # "License"); you may not use this file except in compliance
7 | # with the License. You may obtain a copy of the License at
8 | #
9 | # https://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 |
18 | name: 'Dependency Review'
19 | on: [pull_request]
20 |
21 | permissions:
22 | contents: read
23 |
24 | jobs:
25 | dependency-review:
26 | runs-on: ubuntu-latest
27 | steps:
28 | - name: 'Checkout Repository'
29 | uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
30 | - name: 'Dependency Review PR'
31 | uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
32 |
--------------------------------------------------------------------------------
/src/site/custom/project-info-report.properties:
--------------------------------------------------------------------------------
1 | #
2 | # Licensed to the Apache Software Foundation (ASF) under one or more
3 | # contributor license agreements. See the NOTICE file distributed with
4 | # this work for additional information regarding copyright ownership.
5 | # The ASF licenses this file to You under the Apache License, Version 2.0
6 | # (the "License"); you may not use this file except in compliance with
7 | # the License. You may obtain a copy of the License at
8 | #
9 | # https://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 |
18 | # Replace SCM report description in index page
19 | report.scm.description=This document lists ways to access the online source repository.
20 |
21 | # Replace SCM report text for viewvc section
22 | report.scm.webaccess.title=Browser (HTTP) Access
23 | report.scm.webaccess.url=The following is a link to a browsable version of the source repository. \
24 | Please use the "Anonymous Access" or "Developer Access" URL if you want to check out the source using your SCM client.
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/FTPFileFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | /**
21 | * Performs filtering on {@link FTPFile} instances.
22 | *
23 | * @since 2.2
24 | */
25 | public interface FTPFileFilter {
26 |
27 | /**
28 | * Checks if an FTPFile entry should be included or not.
29 | *
30 | * @param file entry to be checked for inclusion. May be {@code null}.
31 | * @return {@code true} if the file is to be included, {@code false} otherwise.
32 | */
33 | boolean accept(FTPFile file);
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/telnet/TelnetInputListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.telnet;
19 |
20 | /**
21 | * Listener interface used for notification that incoming data is available to be read.
22 | *
23 | * @see TelnetClient
24 | * @since 3.0
25 | */
26 | public interface TelnetInputListener {
27 |
28 | /**
29 | * Callback method invoked when new incoming data is available on a {@link TelnetClient}'s {@link TelnetClient#getInputStream input stream}.
30 | *
31 | * @see TelnetClient#registerInputListener
32 | */
33 | void telnetInputAvailable();
34 | }
35 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/tftp/TFTPPacketExceptionTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.tftp;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertEquals;
21 | import static org.junit.jupiter.api.Assertions.assertNull;
22 |
23 | import org.junit.jupiter.api.Test;
24 |
25 | /**
26 | * Tests {@link TFTPPacketException}.
27 | */
28 | public class TFTPPacketExceptionTest {
29 |
30 | @Test
31 | public void testContructor() {
32 | assertNull(new TFTPPacketException().getMessage());
33 | assertEquals("A", new TFTPPacketException("A").getMessage());
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/nntp/ArticleInfo.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.nntp;
19 |
20 | /**
21 | * Class contains details about an article. Create an instance of the class and pass it to the appropriate NNTP method. The values will be populated on return.
22 | */
23 | public class ArticleInfo {
24 |
25 | /**
26 | * Article ID.
27 | */
28 | public String articleId;
29 |
30 | /**
31 | * Article number.
32 | */
33 | public long articleNumber;
34 |
35 | /**
36 | * Constructs a new instance.
37 | */
38 | public ArticleInfo() {
39 | // empty
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/tftp/TFTPReadRequestPacketTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.tftp;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertNotNull;
21 |
22 | import java.net.InetAddress;
23 | import java.net.UnknownHostException;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link TFTPReadRequestPacket}.
29 | */
30 | public class TFTPReadRequestPacketTest {
31 |
32 | @Test
33 | public void testToString() throws UnknownHostException {
34 | assertNotNull(new TFTPReadRequestPacket(InetAddress.getLocalHost(), 0, "", 0).toString());
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/tftp/TFTPWriteRequestPacketTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.tftp;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertNotNull;
21 |
22 | import java.net.InetAddress;
23 | import java.net.UnknownHostException;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link TFTPReadRequestPacket}.
29 | */
30 | public class TFTPWriteRequestPacketTest {
31 |
32 | @Test
33 | public void testToString() throws UnknownHostException {
34 | assertNotNull(new TFTPReadRequestPacket(InetAddress.getLocalHost(), 0, "", 0).toString());
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/.asf.yaml:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one or more
2 | # contributor license agreements. See the NOTICE file distributed with
3 | # this work for additional information regarding copyright ownership.
4 | # The ASF licenses this file to You under the Apache License, Version 2.0
5 | # (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # https://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | github:
17 | description: "Apache Commons Net"
18 | homepage: https://commons.apache.org/net/
19 |
20 | notifications:
21 | commits: commits@commons.apache.org
22 | issues: issues@commons.apache.org
23 | pullrequests: issues@commons.apache.org
24 | jira_options: link label
25 | jobs: notifications@commons.apache.org
26 | # commits_bot_dependabot: dependabot@commons.apache.org
27 | issues_bot_dependabot: dependabot@commons.apache.org
28 | pullrequests_bot_dependabot: dependabot@commons.apache.org
29 | issues_bot_codecov-commenter: notifications@commons.apache.org
30 | pullrequests_bot_codecov-commenter: notifications@commons.apache.org
31 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/Configurable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | /**
21 | * This interface adds the aspect of configurability by means of a supplied FTPClientConfig object to other classes in the system, especially listing parsers.
22 | */
23 | public interface Configurable {
24 |
25 | /**
26 | * Configures this instance using an FTPClientConfig.
27 | *
28 | * @param config the object containing the configuration data.
29 | * @throws IllegalArgumentException if the elements of the {@code config} are somehow inadequate to configure the Configurable object.
30 | */
31 | void configure(FTPClientConfig config);
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/pop3/POP3Reply.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.pop3;
19 |
20 | /**
21 | * POP3Reply stores POP3 reply code constants.
22 | */
23 |
24 | public final class POP3Reply {
25 | /** The reply code indicating success of an operation. */
26 | public static final int OK = 0;
27 |
28 | /** The reply code indicating failure of an operation. */
29 | public static final int ERROR = 1;
30 |
31 | /**
32 | * The reply code indicating intermediate response to a command.
33 | *
34 | * @since 3.0
35 | */
36 | public static final int OK_INT = 2;
37 |
38 | /** Cannot be instantiated. */
39 | private POP3Reply() {
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/tftp/TFTPAckPacketTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.tftp;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertNotNull;
21 |
22 | import java.net.InetAddress;
23 | import java.net.UnknownHostException;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link TFTPAckPacket}.
29 | */
30 | public class TFTPAckPacketTest {
31 |
32 | @Test
33 | public void testNewDatagram() throws UnknownHostException {
34 | assertNotNull(new TFTPAckPacket(InetAddress.getLocalHost(), 0, 0).newDatagram());
35 | }
36 |
37 | @Test
38 | public void testToString() throws UnknownHostException {
39 | assertNotNull(new TFTPAckPacket(InetAddress.getLocalHost(), 0, 0).toString());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/tftp/TFTPErrorPacketTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.tftp;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertNotNull;
21 |
22 | import java.net.InetAddress;
23 | import java.net.UnknownHostException;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link TFTPErrorPacket}.
29 | */
30 | public class TFTPErrorPacketTest {
31 |
32 | @Test
33 | public void testNewDatagram() throws UnknownHostException {
34 | assertNotNull(new TFTPErrorPacket(InetAddress.getLocalHost(), 0, 0, "").newDatagram());
35 | }
36 |
37 | @Test
38 | public void testToString() throws UnknownHostException {
39 | assertNotNull(new TFTPErrorPacket(InetAddress.getLocalHost(), 0, 0, "").toString());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/tftp/TFTPDataPacketTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.tftp;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertNotNull;
21 |
22 | import java.net.InetAddress;
23 | import java.net.UnknownHostException;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link TFTPDataPacket}.
29 | */
30 | public class TFTPDataPacketTest {
31 |
32 | @Test
33 | public void testNewDatagram() throws UnknownHostException {
34 | assertNotNull(new TFTPDataPacket(InetAddress.getLocalHost(), 0, 0, new byte[0]).newDatagram());
35 | }
36 |
37 | @Test
38 | public void testToString() throws UnknownHostException {
39 | assertNotNull(new TFTPDataPacket(InetAddress.getLocalHost(), 0, 0, new byte[0]).toString());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/whois/WhoisClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.whois;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 |
23 | import java.io.IOException;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link WhoisClient}.
29 | */
30 | public class WhoisClientTest {
31 |
32 | @Test
33 | public void testConstructor() {
34 | assertDoesNotThrow(WhoisClient::new);
35 | }
36 |
37 | @Test
38 | public void testDefaultPort() {
39 | assertEquals(WhoisClient.DEFAULT_PORT, new WhoisClient().getDefaultPort());
40 | }
41 |
42 | @Test
43 | public void testDisconnect() throws IOException {
44 | new WhoisClient().disconnect();
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/echo/EchoTCPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.echo;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertNull;
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 |
23 | import java.io.IOException;
24 | import java.io.InputStream;
25 |
26 | import org.junit.jupiter.api.Test;
27 |
28 | /**
29 | * Tests {@link EchoTCPClient}.
30 | */
31 | public class EchoTCPClientTest {
32 |
33 | @Test
34 | public void testDefaultPort() {
35 | assertEquals(EchoTCPClient.DEFAULT_PORT, new EchoTCPClient().getDefaultPort());
36 | }
37 |
38 | @Test
39 | public void testDetInputStream() throws IOException {
40 | try (InputStream inputStream = new EchoTCPClient().getInputStream()) {
41 | assertNull(inputStream);
42 | }
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/examples/PrintCommandListeners.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.examples;
19 |
20 | import org.apache.commons.net.PrintCommandListener;
21 | import org.apache.commons.net.io.Util;
22 |
23 | /**
24 | * Factory of {@link PrintCommandListener} for examples.
25 | */
26 | public class PrintCommandListeners {
27 |
28 | /**
29 | * Creates a new PrintCommandListener on system out.
30 | *
31 | * @return a new PrintCommandListener on system out.
32 | */
33 | public static PrintCommandListener sysOutPrintCommandListener() {
34 | return new PrintCommandListener(Util.newPrintWriter(System.out), true);
35 | }
36 |
37 | /**
38 | * Constructs a new instance.
39 | *
40 | * @deprecated Will be private in the next major release.
41 | */
42 | @Deprecated
43 | public PrintCommandListeners() {
44 | // empty
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/util/CharsetsTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.util;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 |
23 | import java.nio.charset.StandardCharsets;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link Charsets}.
29 | */
30 | public class CharsetsTest {
31 |
32 | @Test
33 | public void testToCharset() {
34 | assertEquals(StandardCharsets.UTF_8, Charsets.toCharset(StandardCharsets.UTF_8.name()));
35 | }
36 |
37 | @Test
38 | public void testToCharsetDefault() {
39 | assertEquals(StandardCharsets.UTF_8, Charsets.toCharset(null, StandardCharsets.UTF_8.name()));
40 | }
41 |
42 | @SuppressWarnings("deprecation")
43 | @Test
44 | public void testToConstructor() {
45 | assertDoesNotThrow(Charsets::new);
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/util/SSLSocketUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.util;
19 |
20 | import javax.net.ssl.SSLParameters;
21 | import javax.net.ssl.SSLSocket;
22 |
23 | /**
24 | * General utilities for SSLSocket.
25 | *
26 | * @since 3.4
27 | */
28 | public class SSLSocketUtils {
29 |
30 | /**
31 | * Enable the HTTPS endpoint identification algorithm on an SSLSocket.
32 | *
33 | * @param socket the SSL socket
34 | * @return Always returns {@code true}
35 | */
36 | // TODO for 4.0: becomes a void method.
37 | public static boolean enableEndpointNameVerification(final SSLSocket socket) {
38 | final SSLParameters sslParameters = socket.getSSLParameters();
39 | sslParameters.setEndpointIdentificationAlgorithm("HTTPS");
40 | socket.setSSLParameters(sslParameters);
41 | return true;
42 | }
43 |
44 | private SSLSocketUtils() {
45 | // Not instantiable
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/DurationUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import java.time.Duration;
21 |
22 | /** Temporary until Commons Lang 3.12.0. */
23 | final class DurationUtils {
24 |
25 | /**
26 | * Tests whether the given Duration is positive (>0).
27 | *
28 | * @param duration the value to test
29 | * @return whether the given Duration is positive (>0).
30 | */
31 | static boolean isPositive(final Duration duration) {
32 | return duration != null && !duration.isNegative() && !duration.isZero();
33 | }
34 |
35 | static int toMillisInt(final Duration duration) {
36 | final long millis = duration.toMillis();
37 | return millis > 0 ? (int) Math.min(millis, Integer.MAX_VALUE) : (int) Math.max(millis, Integer.MIN_VALUE);
38 | }
39 |
40 | static Duration zeroIfNull(final Duration controlIdle) {
41 | return controlIdle == null ? Duration.ZERO : controlIdle;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/FTPFileFilters.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import java.util.Objects;
21 |
22 | /**
23 | * Implements some simple FTPFileFilter classes.
24 | *
25 | * @since 2.2
26 | */
27 | public class FTPFileFilters {
28 |
29 | /**
30 | * Accepts all FTPFile entries, including null.
31 | */
32 | public static final FTPFileFilter ALL = file -> true;
33 |
34 | /**
35 | * Accepts all non-null FTPFile entries.
36 | */
37 | public static final FTPFileFilter NON_NULL = Objects::nonNull;
38 |
39 | /**
40 | * Accepts all (non-null) FTPFile directory entries.
41 | */
42 | public static final FTPFileFilter DIRECTORIES = file -> file != null && file.isDirectory();
43 |
44 | /**
45 | * Constructs a new instance.
46 | *
47 | * @deprecated Will be private in the next major release.
48 | */
49 | @Deprecated
50 | public FTPFileFilters() {
51 | // empty
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/telnet/InvalidTelnetOptionExceptionTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.telnet;
18 |
19 | import static org.junit.jupiter.api.Assertions.assertTrue;
20 |
21 | import org.junit.jupiter.api.BeforeEach;
22 | import org.junit.jupiter.api.Test;
23 |
24 | /**
25 | * JUnit test class for InvalidTelnetOptionException
26 | */
27 | public class InvalidTelnetOptionExceptionTest {
28 | private InvalidTelnetOptionException exc1;
29 | private String msg1;
30 | private int code1;
31 |
32 | /**
33 | * setUp for the test.
34 | */
35 | @BeforeEach
36 | protected void setUp() {
37 | msg1 = "MSG";
38 | code1 = 13;
39 | exc1 = new InvalidTelnetOptionException(msg1, code1);
40 | }
41 |
42 | /**
43 | * test of the constructors.
44 | */
45 | @Test
46 | public void testConstructors() {
47 | assertTrue(exc1.getMessage().contains(msg1));
48 | assertTrue(exc1.getMessage().contains("" + code1));
49 | }
50 | }
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/nntp/ArticlePointer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.nntp;
19 |
20 | /**
21 | * This class is a structure used to return article number and unique id information extracted from an NNTP server reply. You will normally want this
22 | * information when issuing a STAT command, implemented by {@link NNTPClient#selectArticle selectArticle}.
23 | *
24 | * @see NNTPClient
25 | * @deprecated 3.0 use {@link ArticleInfo} instead
26 | */
27 | @Deprecated
28 | public final class ArticlePointer {
29 | /** The number of the referenced article. */
30 | public int articleNumber;
31 | /**
32 | * The unique id of the referenced article, including the enclosing < and > symbols which are technically not part of the identifier, but are required
33 | * by all NNTP commands taking an article id as an argument.
34 | */
35 | public String articleId;
36 |
37 | /**
38 | * Constructs a new instance.
39 | */
40 | public ArticlePointer() {
41 | // empty
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/assembly/src.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
21 | src
22 |
23 | tar.gz
24 | zip
25 |
26 | ${artifactId}-${version}-src
27 |
28 |
29 |
30 | BUILDING.txt
31 | CODE_OF_CONDUCT.md
32 | CONTRIBUTING.md
33 | LICENSE.txt
34 | NOTICE.txt
35 | pom.xml
36 | README.md
37 | RELEASE-NOTES.txt
38 | SECURITY.md
39 |
40 |
41 |
42 | src
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/DeflateSocket.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import java.io.IOException;
21 | import java.io.InputStream;
22 | import java.io.OutputStream;
23 | import java.net.Socket;
24 | import java.util.zip.DeflaterOutputStream;
25 | import java.util.zip.InflaterInputStream;
26 |
27 | /**
28 | * Wrapper class for FTP data channel sockets when compressing data in the "deflate" compression format. All methods except of {@link #getInputStream()} and
29 | * {@link #getOutputStream()} are calling the delegate methods directly.
30 | */
31 | final class DeflateSocket extends DelegateSocket {
32 |
33 | DeflateSocket(final Socket delegate) {
34 | super(delegate);
35 | }
36 |
37 | @Override
38 | public InputStream getInputStream() throws IOException {
39 | return new InflaterInputStream(delegate.getInputStream());
40 | }
41 |
42 | @Override
43 | public OutputStream getOutputStream() throws IOException {
44 | return new DeflaterOutputStream(delegate.getOutputStream());
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/chargen/CharGenTCPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.chargen;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 | import static org.junit.jupiter.api.Assertions.assertNull;
23 |
24 | import java.io.IOException;
25 | import java.io.InputStream;
26 |
27 | import org.junit.jupiter.api.Test;
28 |
29 | /**
30 | * Tests {@link CharGenTCPClient}.
31 | */
32 | public class CharGenTCPClientTest {
33 |
34 | @Test
35 | public void testConstructor() {
36 | assertDoesNotThrow(CharGenTCPClient::new);
37 | }
38 |
39 | @Test
40 | public void testDefaultPort() {
41 | assertEquals(CharGenTCPClient.DEFAULT_PORT, new CharGenTCPClient().getDefaultPort());
42 | }
43 |
44 | @Test
45 | public void testGetInputStream() throws IOException {
46 | try (InputStream inputStream = new CharGenTCPClient().getInputStream()) {
47 | assertNull(inputStream);
48 | }
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/discard/DiscardTCPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.discard;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 | import static org.junit.jupiter.api.Assertions.assertNull;
23 |
24 | import java.io.IOException;
25 | import java.io.OutputStream;
26 |
27 | import org.junit.jupiter.api.Test;
28 |
29 | /**
30 | * Tests {@link DiscardTCPClient}.
31 | */
32 | public class DiscardTCPClientTest {
33 |
34 | @Test
35 | public void testConstructor() {
36 | assertDoesNotThrow(DiscardTCPClient::new);
37 | }
38 |
39 | @Test
40 | public void testDefaultPort() {
41 | assertEquals(DiscardTCPClient.DEFAULT_PORT, new DiscardTCPClient().getDefaultPort());
42 | }
43 |
44 | @Test
45 | public void testGetOutputStream() throws IOException {
46 | try (OutputStream outputStream = new DiscardTCPClient().getOutputStream()) {
47 | assertNull(outputStream);
48 | }
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/ftp/GZIPSocket.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import java.io.IOException;
21 | import java.io.InputStream;
22 | import java.io.OutputStream;
23 | import java.net.Socket;
24 | import java.util.zip.GZIPInputStream;
25 | import java.util.zip.GZIPOutputStream;
26 |
27 | /**
28 | * Experiment, not in an RFC?
29 | *
30 | * Wrapper class for FTP data channel sockets when compressing data in the GZIP compression format. All methods except of {@link #getInputStream()} and
31 | * {@link #getOutputStream()} are calling the delegate methods directly.
32 | */
33 | final class GZIPSocket extends DelegateSocket {
34 |
35 | GZIPSocket(final Socket delegate) {
36 | super(delegate);
37 | }
38 |
39 | @Override
40 | public InputStream getInputStream() throws IOException {
41 | return new GZIPInputStream(delegate.getInputStream());
42 | }
43 |
44 | @Override
45 | public OutputStream getOutputStream() throws IOException {
46 | return new GZIPOutputStream(delegate.getOutputStream());
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/util/NetConstants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.util;
18 |
19 | import java.security.cert.X509Certificate;
20 |
21 | /**
22 | * Constants provided as public only for our own implementation, you can consider this private for now.
23 | *
24 | * @since 3.8.0
25 | */
26 | public class NetConstants {
27 |
28 | /**
29 | * An empty immutable {@code String} array.
30 | */
31 | public static final String[] EMPTY_STRING_ARRAY = {};
32 |
33 | /**
34 | * An empty immutable {@code byte} array.
35 | */
36 | public static final byte[] EMPTY_BTYE_ARRAY = {};
37 |
38 | /**
39 | * An empty immutable {link X509Certificate} array.
40 | */
41 | public static final X509Certificate[] EMPTY_X509_CERTIFICATE_ARRAY = {};
42 |
43 | /**
44 | * The index value when the end of the stream has been reached {@code -1}.
45 | *
46 | * @since 3.9.0
47 | */
48 | public static final int EOS = -1;
49 |
50 | /**
51 | * Prevents instantiation.
52 | */
53 | private NetConstants() {
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/bsd/RLoginClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.bsd;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 | import static org.junit.jupiter.api.Assertions.assertNull;
23 |
24 | import java.io.IOException;
25 | import java.io.InputStream;
26 |
27 | import org.junit.jupiter.api.Test;
28 |
29 | /**
30 | * Tests {@link RLoginClient}.
31 | */
32 | public class RLoginClientTest {
33 |
34 | private RLoginClient newClient() {
35 | return new RLoginClient();
36 | }
37 |
38 | @Test
39 | public void testConstructor() {
40 | assertDoesNotThrow(RLoginClient::new);
41 | }
42 |
43 | @Test
44 | public void testDefaultPort() {
45 | assertEquals(RLoginClient.DEFAULT_PORT, newClient().getDefaultPort());
46 | }
47 |
48 | @Test
49 | public void testGetInputStream() throws IOException {
50 | try (InputStream inputStream = newClient().getInputStream()) {
51 | assertNull(inputStream);
52 | }
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/pop3/POP3Constants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.pop3;
18 |
19 | /**
20 | *
21 | * The POP3* tests all presume the existence of the following parameters: mailserver: localhost (running on the default port 110) account: username=test;
22 | * password=password account: username=alwaysempty; password=password. mail: At least four emails in the test account and zero emails in the alwaysempty account
23 | *
24 | * If this won't work for you, you can change these parameters in the TestSetupParameters class.
25 | *
26 | * The tests were originally run on a default installation of James. Your mileage may vary based on the POP3 server you run the tests against. Some servers are
27 | * more standards-compliant than others.
28 | */
29 | public class POP3Constants {
30 | public static final String user = "test";
31 | public static final String emptyuser = "alwaysempty";
32 | public static final String password = "password";
33 |
34 | public static final String mailhost = "localhost";
35 |
36 | /** Cannot be instantiated. */
37 | private POP3Constants() {
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/bsd/RCommandClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.bsd;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 | import static org.junit.jupiter.api.Assertions.assertNull;
23 |
24 | import java.io.IOException;
25 | import java.io.InputStream;
26 |
27 | import org.junit.jupiter.api.Test;
28 |
29 | /**
30 | * Tests {@link RCommandClient}.
31 | */
32 | public class RCommandClientTest {
33 |
34 | private RCommandClient newClient() {
35 | return new RCommandClient();
36 | }
37 |
38 | @Test
39 | public void testConstructor() {
40 | assertDoesNotThrow(RCommandClient::new);
41 | }
42 |
43 | @Test
44 | public void testDefaultPort() {
45 | assertEquals(RCommandClient.DEFAULT_PORT, newClient().getDefaultPort());
46 | }
47 |
48 | @Test
49 | public void testGetInputStream() throws IOException {
50 | try (InputStream inputStream = newClient().getInputStream()) {
51 | assertNull(inputStream);
52 | }
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/echo/EchoUDPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.echo;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertThrows;
21 |
22 | import java.net.InetAddress;
23 |
24 | import org.junit.jupiter.api.Test;
25 |
26 | /**
27 | * Tests {@link EchoUDPClient}.
28 | */
29 | public class EchoUDPClientTest {
30 |
31 | @Test
32 | public void testRecieve() {
33 | try (EchoUDPClient client = new EchoUDPClient()) {
34 | // Not connected
35 | assertThrows(NullPointerException.class, () -> client.receive(new byte[0]));
36 | assertThrows(NullPointerException.class, () -> client.receive(new byte[0], 0));
37 | }
38 | }
39 |
40 | @Test
41 | public void testSend() {
42 | try (EchoUDPClient client = new EchoUDPClient()) {
43 | // Not connected
44 | assertThrows(NullPointerException.class, () -> client.send(new byte[0], InetAddress.getLocalHost()));
45 | assertThrows(NullPointerException.class, () -> client.send(new byte[0], 0, InetAddress.getLocalHost()));
46 | }
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/telnet/TelnetOptionTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.telnet;
18 |
19 | import static org.junit.jupiter.api.Assertions.assertEquals;
20 | import static org.junit.jupiter.api.Assertions.assertFalse;
21 | import static org.junit.jupiter.api.Assertions.assertTrue;
22 |
23 | import org.junit.jupiter.api.Test;
24 |
25 | /**
26 | * JUnit test class for TelnetOption
27 | */
28 | public class TelnetOptionTest {
29 | /**
30 | * test of the getOption method.
31 | */
32 | @Test
33 | public void testGetOption() {
34 | assertEquals("BINARY", TelnetOption.getOption(0));
35 | assertEquals("UNASSIGNED", TelnetOption.getOption(91));
36 | assertEquals("Extended-Options-List", TelnetOption.getOption(255));
37 | }
38 |
39 | /**
40 | * test of the isValidOption method.
41 | */
42 | @Test
43 | public void testisValidOption() {
44 | assertTrue(TelnetOption.isValidOption(0));
45 | assertTrue(TelnetOption.isValidOption(91));
46 | assertTrue(TelnetOption.isValidOption(255));
47 | assertFalse(TelnetOption.isValidOption(256));
48 | }
49 | }
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/nntp/NewsgroupIterator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.nntp;
19 |
20 | import java.util.Iterator;
21 |
22 | /**
23 | * Class which wraps an {@code Iterable} of raw newgroup information to generate an {@code Iterable} of the parsed information.
24 | *
25 | * @since 3.0
26 | */
27 | final class NewsgroupIterator implements Iterator, Iterable {
28 |
29 | private final Iterator stringIterator;
30 |
31 | public NewsgroupIterator(final Iterable iterableString) {
32 | stringIterator = iterableString.iterator();
33 | }
34 |
35 | @Override
36 | public boolean hasNext() {
37 | return stringIterator.hasNext();
38 | }
39 |
40 | @Override
41 | public Iterator iterator() {
42 | return this;
43 | }
44 |
45 | @Override
46 | public NewsgroupInfo next() {
47 | final String line = stringIterator.next();
48 | return NNTPClient.parseNewsgroupListEntry(line);
49 | }
50 |
51 | @Override
52 | public void remove() {
53 | stringIterator.remove();
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/site/xdoc/faq.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
22 |
23 | FAQ - Frequently Asked Questions
24 | Apache Commons User Mailing List
25 |
26 |
27 |
28 |
29 |
30 |
31 | This document attempts to answer some of the more frequently asked
32 | questions regarding various aspects of Commons/Net. These questions are
33 | typically asked over and over again on the mailing lists, as a
34 | courtesy to the developers, we ask that you read this document
35 | before posting to the mailing lists.
36 |
37 |
38 | The FAQ is hosted on the Commons Wiki; please see:
39 | CommonsNet/FrequentlyAskedQuestions
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/daytime/DaytimeUDPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.daytime;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertThrows;
22 |
23 | import java.net.InetAddress;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link DaytimeUDPClient}.
29 | */
30 | public class DaytimeUDPClientTest {
31 |
32 | @Test
33 | public void testClose() {
34 | try (DaytimeUDPClient client = new DaytimeUDPClient()) {
35 | // empty
36 | }
37 | }
38 |
39 | @SuppressWarnings("resource")
40 | @Test
41 | public void testConstructor() {
42 | assertDoesNotThrow(DaytimeUDPClient::new);
43 | }
44 |
45 | @Test
46 | public void testGetTime() {
47 | try (DaytimeUDPClient client = new DaytimeUDPClient()) {
48 | // Not connected
49 | assertThrows(NullPointerException.class, () -> client.getTime(InetAddress.getLocalHost()));
50 | assertThrows(NullPointerException.class, () -> client.getTime(InetAddress.getLocalHost(), 0));
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/discard/DiscardUDPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.discard;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertThrows;
22 |
23 | import java.net.InetAddress;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link DiscardUDPClient}.
29 | */
30 | public class DiscardUDPClientTest {
31 |
32 | @SuppressWarnings("resource")
33 | @Test
34 | public void testConstructor() {
35 | assertDoesNotThrow(DiscardUDPClient::new);
36 | }
37 |
38 | @Test
39 | public void testSend() {
40 | try (DiscardUDPClient client = new DiscardUDPClient()) {
41 | // Not connected
42 | assertThrows(NullPointerException.class, () -> client.send(new byte[0], InetAddress.getLocalHost()));
43 | assertThrows(NullPointerException.class, () -> client.send(new byte[0], 0, InetAddress.getLocalHost()));
44 | assertThrows(NullPointerException.class, () -> client.send(new byte[0], 0, InetAddress.getLocalHost(), DiscardUDPClient.DEFAULT_PORT));
45 | }
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 |
19 |
20 | Thanks for your contribution to [Apache Commons](https://commons.apache.org/)! Your help is appreciated!
21 |
22 | Before you push a pull request, review this list:
23 |
24 | - [ ] Read the [contribution guidelines](CONTRIBUTING.md) for this project.
25 | - [ ] Read the [ASF Generative Tooling Guidance](https://www.apache.org/legal/generative-tooling.html) if you use Artificial Intelligence (AI).
26 | - [ ] I used AI to create any part of, or all of, this pull request. Which AI tool was used to create this pull request, and to what extent did it contribute?
27 | - [ ] Run a successful build using the default [Maven](https://maven.apache.org/) goal with `mvn`; that's `mvn` on the command line by itself.
28 | - [ ] Write unit tests that match behavioral changes, where the tests fail if the changes to the runtime are not applied. This may not always be possible, but it is a best practice.
29 | - [ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
30 | - [ ] Each commit in the pull request should have a meaningful subject line and body. Note that a maintainer may squash commits during the merge process.
31 |
--------------------------------------------------------------------------------
/src/site/site.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 |
21 | Apache Commons Net
22 | /images/net-logo-white.png
23 | /index.html
24 | Apache Commons Net™ logo
25 |
26 |
27 |
28 |
37 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/telnet/InvalidTelnetOptionException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.telnet;
19 |
20 | /**
21 | * The InvalidTelnetOptionException is the exception that is thrown whenever a TelnetOptionHandler with an invlaid option code is registered in TelnetClient
22 | * with addOptionHandler.
23 | */
24 | public class InvalidTelnetOptionException extends Exception {
25 |
26 | private static final long serialVersionUID = -2516777155928793597L;
27 |
28 | /**
29 | * Option code
30 | */
31 | private final int optionCode;
32 |
33 | /**
34 | * Error message
35 | */
36 | private final String msg;
37 |
38 | /**
39 | * Constructor for the exception.
40 | *
41 | * @param message Error message.
42 | * @param optcode Option code.
43 | */
44 | public InvalidTelnetOptionException(final String message, final int optcode) {
45 | optionCode = optcode;
46 | msg = message;
47 | }
48 |
49 | /**
50 | * Gets the error message of the exception.
51 | *
52 | * @return the error message.
53 | */
54 | @Override
55 | public String getMessage() {
56 | return msg + ": " + optionCode;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/ftp/TestConnectTimeout.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.ftp;
18 |
19 | import static org.junit.jupiter.api.Assertions.assertTrue;
20 | import static org.junit.jupiter.api.Assertions.fail;
21 |
22 | import java.io.IOException;
23 | import java.net.ConnectException;
24 | import java.net.SocketException;
25 | import java.net.SocketTimeoutException;
26 | import java.net.UnknownHostException;
27 |
28 | import org.junit.jupiter.api.Test;
29 |
30 | /**
31 | * Test the socket connect timeout functionality
32 | */
33 | public class TestConnectTimeout {
34 |
35 | @Test
36 | public void testConnectTimeout() throws SocketException, IOException {
37 | final FTPClient client = new FTPClient();
38 | client.setConnectTimeout(1000);
39 |
40 | try {
41 | // Connect to a valid host on a bogus port
42 | // TODO use a local server if possible
43 | client.connect("www.apache.org", 1234);
44 | fail("Expecting an Exception");
45 | } catch (final ConnectException | SocketTimeoutException | UnknownHostException ue) {
46 | // Not much we can do about this, we may be firewalled
47 | assertTrue(true);
48 | }
49 |
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/FTPConnectionClosedException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import java.io.IOException;
21 |
22 | /**
23 | * FTPConnectionClosedException is used to indicate the premature or unexpected closing of an FTP connection resulting from a
24 | * {@link org.apache.commons.net.ftp.FTPReply#SERVICE_NOT_AVAILABLE FTPReply.SERVICE_NOT_AVAILABLE} response (FTP reply code 421) to a failed FTP command. This
25 | * exception is derived from IOException and therefore may be caught either as an IOException or specifically as an FTPConnectionClosedException.
26 | *
27 | * @see FTP
28 | * @see FTPClient
29 | */
30 | public class FTPConnectionClosedException extends IOException {
31 |
32 | private static final long serialVersionUID = 3500547241659379952L;
33 |
34 | /** Constructs a FTPConnectionClosedException with no message */
35 | public FTPConnectionClosedException() {
36 | }
37 |
38 | /**
39 | * Constructs a FTPConnectionClosedException with a specified message.
40 | *
41 | * @param message The message explaining the reason for the exception.
42 | */
43 | public FTPConnectionClosedException(final String message) {
44 | super(message);
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParser.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp.parser;
19 |
20 | import java.text.ParseException;
21 | import java.util.Calendar;
22 |
23 | /**
24 | * This interface specifies the concept of parsing an FTP server's timestamp.
25 | *
26 | * @since 1.4
27 | */
28 | public interface FTPTimestampParser {
29 |
30 | /**
31 | * the default default date format.
32 | */
33 | String DEFAULT_SDF = UnixFTPEntryParser.DEFAULT_DATE_FORMAT;
34 | /**
35 | * the default recent date format.
36 | */
37 | String DEFAULT_RECENT_SDF = UnixFTPEntryParser.DEFAULT_RECENT_DATE_FORMAT;
38 |
39 | /**
40 | * Parses the supplied datestamp parameter. This parameter typically would have been pulled from a longer FTP listing via the regular expression mechanism
41 | *
42 | * @param timestampStr the timestamp portion of the FTP directory listing to be parsed
43 | * @return a {@code java.util.Calendar} object initialized to the date parsed by the parser
44 | * @throws ParseException if none of the parser mechanisms belonging to the implementor can parse the input.
45 | */
46 | Calendar parseTimestamp(String timestampStr) throws ParseException;
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/test/resources/org/apache/commons/net/ftpsserver/users.properties:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one
2 | # or more contributor license agreements. See the NOTICE file
3 | # distributed with this work for additional information
4 | # regarding copyright ownership. The ASF licenses this file
5 | # to you under the Apache License, Version 2.0 (the
6 | # "License"); you may not use this file except in compliance
7 | # with the License. You may obtain a copy of the License at
8 | #
9 | # https://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 |
18 | # Password is "admin"
19 | ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
20 | ftpserver.user.admin.homedirectory=target/test-classes/org/apache/commons/net/test-data
21 | ftpserver.user.admin.enableflag=true
22 | ftpserver.user.admin.writepermission=true
23 | ftpserver.user.admin.maxloginnumber=0
24 | ftpserver.user.admin.maxloginperip=0
25 | ftpserver.user.admin.idletime=0
26 | ftpserver.user.admin.uploadrate=0
27 | ftpserver.user.admin.downloadrate=0
28 |
29 | ftpserver.user.anonymous.userpassword=
30 | ftpserver.user.anonymous.homedirectory=target/test-classes/org/apache/commons/net/test-data
31 | ftpserver.user.anonymous.enableflag=true
32 | ftpserver.user.anonymous.writepermission=false
33 | ftpserver.user.anonymous.maxloginnumber=20
34 | ftpserver.user.anonymous.maxloginperip=2
35 | ftpserver.user.anonymous.idletime=300
36 | ftpserver.user.anonymous.uploadrate=4800
37 | ftpserver.user.anonymous.downloadrate=4800
38 |
39 | # password is "test"
40 | ftpserver.user.test.userpassword=098f6bcd4621d373cade4e832627b4f6
41 | ftpserver.user.test.homedirectory=target/test-classes/org/apache/commons/net/test-data
42 | ftpserver.user.test.enableflag=true
43 | ftpserver.user.test.writepermission=true
44 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/tftp/TFTPPacketException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.tftp;
19 |
20 | /**
21 | * A class used to signify the occurrence of an error in the creation of a TFTP packet. It is not declared final so that it may be subclassed to identify more
22 | * specific errors. You would only want to do this if you were building your own TFTP client or server on top of the {@link org.apache.commons.net.tftp.TFTP}
23 | * class if you wanted more functionality than the {@link org.apache.commons.net.tftp.TFTPClient#receiveFile receiveFile()} and
24 | * {@link org.apache.commons.net.tftp.TFTPClient#sendFile sendFile()} methods provide.
25 | *
26 | * @see TFTPPacket
27 | * @see TFTP
28 | */
29 |
30 | public class TFTPPacketException extends Exception {
31 |
32 | private static final long serialVersionUID = -8114699256840851439L;
33 |
34 | /**
35 | * Simply calls the corresponding constructor of its superclass.
36 | */
37 | public TFTPPacketException() {
38 | }
39 |
40 | /**
41 | * Simply calls the corresponding constructor of its superclass.
42 | *
43 | * @param message the message
44 | */
45 | public TFTPPacketException(final String message) {
46 | super(message);
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/nntp/NNTPConnectionClosedException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.nntp;
19 |
20 | import java.io.IOException;
21 |
22 | /**
23 | * NNTPConnectionClosedException is used to indicate the premature or unexpected closing of an NNTP connection resulting from a
24 | * {@link org.apache.commons.net.nntp.NNTPReply#SERVICE_DISCONTINUED NNTPReply.SERVICE_DISCONTINUED} response (NNTP reply code 400) to a failed NNTP command.
25 | * This exception is derived from IOException and therefore may be caught either as an IOException or specifically as an NNTPConnectionClosedException.
26 | *
27 | * @see NNTP
28 | * @see NNTPClient
29 | */
30 |
31 | public final class NNTPConnectionClosedException extends IOException {
32 |
33 | private static final long serialVersionUID = 1029785635891040770L;
34 |
35 | /** Constructs a NNTPConnectionClosedException with no message */
36 | public NNTPConnectionClosedException() {
37 | }
38 |
39 | /**
40 | * Constructs a NNTPConnectionClosedException with a specified message.
41 | *
42 | * @param message The message explaining the reason for the exception.
43 | */
44 | public NNTPConnectionClosedException(final String message) {
45 | super(message);
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/smtp/SMTPConnectionClosedException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.smtp;
19 |
20 | import java.io.IOException;
21 |
22 | /**
23 | * SMTPConnectionClosedException is used to indicate the premature or unexpected closing of an SMTP connection resulting from a
24 | * {@link org.apache.commons.net.smtp.SMTPReply#SERVICE_NOT_AVAILABLE SMTPReply.SERVICE_NOT_AVAILABLE} response (SMTP reply code 421) to a failed SMTP command.
25 | * This exception is derived from IOException and therefore may be caught either as an IOException or specifically as an SMTPConnectionClosedException.
26 | *
27 | *
28 | * @see SMTP
29 | * @see SMTPClient
30 | */
31 | public final class SMTPConnectionClosedException extends IOException {
32 |
33 | private static final long serialVersionUID = 626520434326660627L;
34 |
35 | /** Constructs a SMTPConnectionClosedException with no message */
36 | public SMTPConnectionClosedException() {
37 | }
38 |
39 | /**
40 | * Constructs a SMTPConnectionClosedException with a specified message.
41 | *
42 | * @param message The message explaining the reason for the exception.
43 | */
44 | public SMTPConnectionClosedException(final String message) {
45 | super(message);
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/chargen/CharGenUDPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.chargen;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertThrows;
22 |
23 | import java.net.InetAddress;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link CharGenUDPClient}.
29 | */
30 | public class CharGenUDPClientTest {
31 |
32 | @SuppressWarnings("resource")
33 | @Test
34 | public void testConstructor() {
35 | assertDoesNotThrow(CharGenUDPClient::new);
36 | }
37 |
38 | @Test
39 | public void testReceiver() {
40 | try (CharGenUDPClient client = new CharGenUDPClient()) {
41 | // Not connected
42 | assertThrows(NullPointerException.class, client::receive);
43 | }
44 | }
45 |
46 | @Test
47 | public void testSend() {
48 | try (CharGenUDPClient client = new CharGenUDPClient()) {
49 | // Not connected
50 | assertThrows(NullPointerException.class, () -> client.send(InetAddress.getLocalHost()));
51 | assertThrows(NullPointerException.class, () -> client.send(InetAddress.getLocalHost(), CharGenUDPClient.DEFAULT_PORT));
52 | }
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/examples/nntp/NNTPUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.examples.nntp;
18 |
19 | import java.io.IOException;
20 | import java.util.ArrayList;
21 | import java.util.List;
22 |
23 | import org.apache.commons.net.nntp.Article;
24 | import org.apache.commons.net.nntp.NNTPClient;
25 |
26 | /**
27 | * Some convenience methods for NNTP example classes.
28 | */
29 | public class NNTPUtils {
30 |
31 | /**
32 | * Given an {@link NNTPClient} instance, and an integer range of messages, return an array of {@link Article} instances.
33 | *
34 | * @param client the client to use
35 | * @param lowArticleNumber low number
36 | * @param highArticleNumber high number
37 | * @return Article[] An array of Article
38 | * @throws IOException on error
39 | */
40 | public static List getArticleInfo(final NNTPClient client, final long lowArticleNumber, final long highArticleNumber) throws IOException {
41 | final List articles = new ArrayList<>();
42 | final Iterable arts = client.iterateArticleInfo(lowArticleNumber, highArticleNumber);
43 | for (final Article article : arts) {
44 | articles.add(article);
45 | }
46 | return articles;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/util/TrustManagerUtilsTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.util;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertNotNull;
22 |
23 | import java.security.GeneralSecurityException;
24 | import java.security.KeyStore;
25 | import java.security.KeyStoreException;
26 |
27 | import org.junit.jupiter.api.Test;
28 |
29 | /**
30 | * Tests {@link TrustManagerUtils}.
31 | */
32 | public class TrustManagerUtilsTest {
33 |
34 | @Test
35 | public void testGetAcceptAllTrustManager() {
36 | assertNotNull(TrustManagerUtils.getAcceptAllTrustManager());
37 | }
38 |
39 | @Test
40 | public void testGetDefaultTrustManager() throws KeyStoreException, GeneralSecurityException {
41 | assertNotNull(TrustManagerUtils.getDefaultTrustManager(KeyStore.getInstance(KeyStore.getDefaultType())));
42 | }
43 |
44 | @Test
45 | public void testGetValidateServerCertificateTrustManager() {
46 | assertNotNull(TrustManagerUtils.getValidateServerCertificateTrustManager());
47 | }
48 |
49 | @SuppressWarnings("deprecation")
50 | @Test
51 | public void testToConstructor() {
52 | assertDoesNotThrow(TrustManagerUtils::new);
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/telnet/EchoOptionHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.telnet;
19 |
20 | /**
21 | * Implements the Telnet echo option RFC 857.
22 | */
23 | public class EchoOptionHandler extends TelnetOptionHandler {
24 | /**
25 | * Constructor for the EchoOptionHandler. Initial and accept behavior flags are set to false
26 | */
27 | public EchoOptionHandler() {
28 | super(TelnetOption.ECHO, false, false, false, false);
29 | }
30 |
31 | /**
32 | * Constructor for the EchoOptionHandler. Allows defining desired initial setting for local/remote activation of this option and behavior in case a
33 | * local/remote activation request for this option is received.
34 | *
35 | * @param initlocal if set to true, a WILL is sent upon connection.
36 | * @param initremote if set to true, a DO is sent upon connection.
37 | * @param acceptlocal if set to true, any DO request is accepted.
38 | * @param acceptremote if set to true, any WILL request is accepted.
39 | */
40 | public EchoOptionHandler(final boolean initlocal, final boolean initremote, final boolean acceptlocal, final boolean acceptremote) {
41 | super(TelnetOption.ECHO, initlocal, initremote, acceptlocal, acceptremote);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/imap/AuthenticatingIMAPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.imap;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertEquals;
21 |
22 | import java.util.stream.Stream;
23 |
24 | import org.junit.jupiter.params.ParameterizedTest;
25 | import org.junit.jupiter.params.provider.Arguments;
26 | import org.junit.jupiter.params.provider.MethodSource;
27 |
28 | public class AuthenticatingIMAPClientTest {
29 |
30 | private static Stream authMethods() {
31 | return Stream.of(
32 | Arguments.of("PLAIN", AuthenticatingIMAPClient.AUTH_METHOD.PLAIN),
33 | Arguments.of("CRAM-MD5", AuthenticatingIMAPClient.AUTH_METHOD.CRAM_MD5),
34 | Arguments.of("LOGIN", AuthenticatingIMAPClient.AUTH_METHOD.LOGIN),
35 | Arguments.of("XOAUTH", AuthenticatingIMAPClient.AUTH_METHOD.XOAUTH),
36 | Arguments.of("XOAUTH2", AuthenticatingIMAPClient.AUTH_METHOD.XOAUTH2)
37 | );
38 | }
39 |
40 | @ParameterizedTest(name = "auth method for method {1} is `{0}`")
41 | @MethodSource("authMethods")
42 | public void getAuthName(final String expectedAuthMethodName, final AuthenticatingIMAPClient.AUTH_METHOD authMethod) {
43 | assertEquals(expectedAuthMethodName, authMethod.getAuthName());
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/MalformedServerReplyException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net;
19 |
20 | import java.io.IOException;
21 |
22 | /**
23 | * This exception is used to indicate that the reply from a server could not be interpreted. Most of the NetComponents classes attempt to be as lenient as
24 | * possible when receiving server replies. Many server implementations deviate from IETF protocol specifications, making it necessary to be as flexible as
25 | * possible. However, there will be certain situations where it is not possible to continue an operation because the server reply could not be interpreted in a
26 | * meaningful manner. In these cases, a MalformedServerReplyException should be thrown.
27 | */
28 | public class MalformedServerReplyException extends IOException {
29 |
30 | private static final long serialVersionUID = 6006765264250543945L;
31 |
32 | /** Constructs a MalformedServerReplyException with no message */
33 | public MalformedServerReplyException() {
34 | }
35 |
36 | /**
37 | * Constructs a MalformedServerReplyException with a specified message.
38 | *
39 | * @param message The message explaining the reason for the exception.
40 | */
41 | public MalformedServerReplyException(final String message) {
42 | super(message);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/nntp/ArticleIterator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.nntp;
19 |
20 | import java.util.Iterator;
21 |
22 | /**
23 | * Class which wraps an {@code Iterable} of raw article information to generate an {@code Iterable} of the parsed information.
24 | *
25 | * @since 3.0
26 | */
27 | final class ArticleIterator implements Iterator, Iterable {
28 |
29 | private final Iterator stringIterator;
30 |
31 | public ArticleIterator(final Iterable iterableString) {
32 | stringIterator = iterableString.iterator();
33 | }
34 |
35 | @Override
36 | public boolean hasNext() {
37 | return stringIterator.hasNext();
38 | }
39 |
40 | @Override
41 | public Iterator iterator() {
42 | return this;
43 | }
44 |
45 | /**
46 | * Gets the next Article
47 | *
48 | * @return the next {@link Article}, never {@code null}, if unparseable then isDummy() will be true, and the subject will contain the raw info.
49 | */
50 | @Override
51 | public Article next() {
52 | final String line = stringIterator.next();
53 | return NNTPClient.parseArticleEntry(line);
54 | }
55 |
56 | @Override
57 | public void remove() {
58 | stringIterator.remove();
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/telnet/SuppressGAOptionHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.telnet;
19 |
20 | /**
21 | * Implements the Telnet suppress go ahead option RFC 858.
22 | */
23 | public class SuppressGAOptionHandler extends TelnetOptionHandler {
24 | /**
25 | * Constructor for the SuppressGAOptionHandler. Initial and accept behavior flags are set to false
26 | */
27 | public SuppressGAOptionHandler() {
28 | super(TelnetOption.SUPPRESS_GO_AHEAD, false, false, false, false);
29 | }
30 |
31 | /**
32 | * Constructor for the SuppressGAOptionHandler. Allows defining desired initial setting for local/remote activation of this option and behavior in case a
33 | * local/remote activation request for this option is received.
34 | *
35 | * @param initlocal if set to true, a WILL is sent upon connection.
36 | * @param initremote if set to true, a DO is sent upon connection.
37 | * @param acceptlocal if set to true, any DO request is accepted.
38 | * @param acceptremote if set to true, any WILL request is accepted.
39 | */
40 | public SuppressGAOptionHandler(final boolean initlocal, final boolean initremote, final boolean acceptlocal, final boolean acceptremote) {
41 | super(TelnetOption.SUPPRESS_GO_AHEAD, initlocal, initremote, acceptlocal, acceptremote);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/FTPSTrustManager.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import java.security.cert.CertificateException;
21 | import java.security.cert.X509Certificate;
22 |
23 | import javax.net.ssl.X509TrustManager;
24 |
25 | import org.apache.commons.net.util.NetConstants;
26 |
27 | /**
28 | * Do not use.
29 | *
30 | * @since 2.0
31 | * @deprecated 3.0 use {@link org.apache.commons.net.util.TrustManagerUtils#getValidateServerCertificateTrustManager()
32 | * TrustManagerUtils#getValidateServerCertificateTrustManager()} instead
33 | */
34 | @Deprecated
35 | public class FTPSTrustManager implements X509TrustManager {
36 |
37 | /**
38 | * Constructs a new instance.
39 | */
40 | public FTPSTrustManager() {
41 | // empty
42 | }
43 |
44 | /**
45 | * No-op
46 | */
47 | @Override
48 | public void checkClientTrusted(final X509Certificate[] certificates, final String authType) {
49 | }
50 |
51 | @Override
52 | public void checkServerTrusted(final X509Certificate[] certificates, final String authType) throws CertificateException {
53 | for (final X509Certificate certificate : certificates) {
54 | certificate.checkValidity();
55 | }
56 | }
57 |
58 | @Override
59 | public X509Certificate[] getAcceptedIssuers() {
60 | return NetConstants.EMPTY_X509_CERTIFICATE_ARRAY;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/telnet/SimpleOptionHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.telnet;
19 |
20 | /**
21 | * Simple option handler that can be used for options that don't require subnegotiation.
22 | */
23 | public class SimpleOptionHandler extends TelnetOptionHandler {
24 | /**
25 | * Constructor for the SimpleOptionHandler. Initial and accept behavior flags are set to false
26 | *
27 | * @param optcode option code.
28 | */
29 | public SimpleOptionHandler(final int optcode) {
30 | super(optcode, false, false, false, false);
31 | }
32 |
33 | /**
34 | * Constructor for the SimpleOptionHandler. Allows defining desired initial setting for local/remote activation of this option and behavior in case a
35 | * local/remote activation request for this option is received.
36 | *
37 | * @param optcode option code.
38 | * @param initlocal if set to true, a WILL is sent upon connection.
39 | * @param initremote if set to true, a DO is sent upon connection.
40 | * @param acceptlocal if set to true, any DO request is accepted.
41 | * @param acceptremote if set to true, any WILL request is accepted.
42 | */
43 | public SimpleOptionHandler(final int optcode, final boolean initlocal, final boolean initremote, final boolean acceptlocal, final boolean acceptremote) {
44 | super(optcode, initlocal, initremote, acceptlocal, acceptremote);
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/parser/ParserInitializationException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp.parser;
19 |
20 | /**
21 | * This class encapsulates all errors that may be thrown by the process of an FTPFileEntryParserFactory creating and instantiating an FTPFileEntryParser.
22 | */
23 | public class ParserInitializationException extends RuntimeException {
24 |
25 | private static final long serialVersionUID = 5563335279583210658L;
26 |
27 | /**
28 | * Constructs a ParserInitializationException with just a message
29 | *
30 | * @param message Exception message
31 | */
32 | public ParserInitializationException(final String message) {
33 | super(message);
34 | }
35 |
36 | /**
37 | * Constructs a ParserInitializationException with a message and a root cause.
38 | *
39 | * @param message Exception message
40 | * @param rootCause root cause throwable that caused this to be thrown
41 | */
42 | public ParserInitializationException(final String message, final Throwable rootCause) {
43 | super(message, rootCause);
44 | }
45 |
46 | /**
47 | * Gets the root cause of this exception or null if no root cause was specified.
48 | *
49 | * @return the root cause of this exception being thrown
50 | * @deprecated Use {@link #getCause()} instead
51 | */
52 | @Deprecated
53 | public Throwable getRootCause() {
54 | return super.getCause();
55 | }
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/SocketClientFunctionalTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net;
18 |
19 | import static org.junit.jupiter.api.Assertions.assertTrue;
20 |
21 | import java.net.InetSocketAddress;
22 | import java.net.Proxy;
23 |
24 | import org.apache.commons.net.ftp.FTPClient;
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * A simple functional test class for SocketClients.
29 | *
30 | * Requires a Java-compatible SOCK proxy server on 127.0.0.1:9050 and access to ftp.gnu.org.
31 | */
32 | public class SocketClientFunctionalTest {
33 | private static final String PROXY_HOST = "127.0.0.1";
34 | private static final int PROXY_PORT = 9050;
35 | private static final String DEST_HOST = "ftp.gnu.org";
36 | private static final int DEST_PORT = 21;
37 | // any subclass will do, but it should be able to connect to the destination host
38 | SocketClient sc = new FTPClient();
39 |
40 | /**
41 | * A simple test to verify that the Proxy settings work.
42 | *
43 | * @throws Exception in case of connection errors
44 | */
45 | @Test
46 | public void testProxySettings() throws Exception {
47 | // NOTE: HTTP Proxies seem to be invalid for raw sockets
48 | final Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(PROXY_HOST, PROXY_PORT));
49 | sc.setProxy(proxy);
50 | sc.connect(DEST_HOST, DEST_PORT);
51 | assertTrue(sc.isConnected());
52 | sc.disconnect();
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ProtocolCommandListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net;
19 |
20 | import java.util.EventListener;
21 |
22 | /**
23 | * There exists a large class of IETF protocols that work by sending an ASCII text command and arguments to a server, and then receiving an ASCII text reply.
24 | * For debugging and other purposes, it is extremely useful to log or keep track of the contents of the protocol messages. The ProtocolCommandListener interface
25 | * coupled with the {@link ProtocolCommandEvent} class facilitate this process.
26 | *
27 | * To receive ProtocolCommandEvents, you merely implement the ProtocolCommandListener interface and register the class as a listener with a ProtocolCommandEvent
28 | * source such as {@link org.apache.commons.net.ftp.FTPClient}.
29 | *
30 | *
31 | * @see ProtocolCommandEvent
32 | * @see ProtocolCommandSupport
33 | */
34 | public interface ProtocolCommandListener extends EventListener {
35 |
36 | /**
37 | * This method is invoked by a ProtocolCommandEvent source after sending a protocol command to a server.
38 | *
39 | * @param event The ProtocolCommandEvent fired.
40 | */
41 | void protocolCommandSent(ProtocolCommandEvent event);
42 |
43 | /**
44 | * This method is invoked by a ProtocolCommandEvent source after receiving a reply from a server.
45 | *
46 | * @param event The ProtocolCommandEvent fired.
47 | */
48 | void protocolReplyReceived(ProtocolCommandEvent event);
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/src/site/xdoc/tasks.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
20 |
21 | Tasks
22 | Jeffrey D. Brekke
23 | Rory Winston
24 |
25 |
26 |
27 |
28 | - Add more unit tests, and implement mock servers for testing
29 | -
30 | Convert code to specified coding standards. Checkstyle report provided.
31 |
32 | -
33 | Clean out any classes that don't belong in this project. Probably classes from
34 | org.apache.commons.net.util and org.apache.commons.net.io could be moved to their corresponding commons projects.
35 |
36 | -
37 | Parse the client/server interactions without creating so many
38 | strings. Many operations are slow because of this.
39 |
40 | -
41 | Add ESMTP and more extended NNTP commands.
42 |
43 | -
44 | Make NNTPClient.listNewsgroups() and NNTPClient.listNewNews()
45 | more efficient. Don't preparse into lots of little objects.
46 |
47 | - FTP proxy support
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/nntp/Threadable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.nntp;
19 |
20 | /**
21 | * A placeholder interface for threadable message objects.
22 | *
23 | * @param The Threadable implementation.
24 | */
25 | public interface Threadable> {
26 |
27 | /**
28 | * Tests whether this is a dummy instance.
29 | *
30 | * @return whether this is a dummy instance.
31 | */
32 | boolean isDummy();
33 |
34 | /**
35 | * Creates a dummy instance.
36 | *
37 | * @return a dummy instance.
38 | */
39 | T makeDummy();
40 |
41 | /**
42 | * Gets an ID.
43 | *
44 | * @return an ID.
45 | */
46 | String messageThreadId();
47 |
48 | /**
49 | * Gets reference strings.
50 | *
51 | * @return reference strings.
52 | */
53 | String[] messageThreadReferences();
54 |
55 | /**
56 | * Sets the child instance.
57 | *
58 | * @param child the child instance.
59 | */
60 | void setChild(T child);
61 |
62 | /**
63 | * Sets the next instance.
64 | *
65 | * @param next the next instance.
66 | */
67 | void setNext(T next);
68 |
69 | /**
70 | * Gets the simplified subject.
71 | *
72 | * @return the simplified subject.
73 | */
74 | String simplifiedSubject();
75 |
76 | /**
77 | * Tests whether this is a reply.
78 | *
79 | * @return whether this is a reply.
80 | */
81 | boolean subjectIsReply();
82 | }
83 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/io/SocketInputStream.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.io;
19 |
20 | import java.io.FilterInputStream;
21 | import java.io.IOException;
22 | import java.io.InputStream;
23 | import java.net.Socket;
24 |
25 | /**
26 | * This class wraps an input stream, storing a reference to its originating socket. When the stream is closed, it will also close the socket immediately
27 | * afterward. This class is useful for situations where you are dealing with a stream originating from a socket, but do not have a reference to the socket, and
28 | * want to make sure it closes when the stream closes.
29 | *
30 | * @see SocketOutputStream
31 | */
32 | public class SocketInputStream extends FilterInputStream {
33 | private final Socket socket;
34 |
35 | /**
36 | * Creates a SocketInputStream instance wrapping an input stream and storing a reference to a socket that should be closed on closing the stream.
37 | *
38 | * @param socket The socket to close on closing the stream.
39 | * @param stream The input stream to wrap.
40 | */
41 | public SocketInputStream(final Socket socket, final InputStream stream) {
42 | super(stream);
43 | this.socket = socket;
44 | }
45 |
46 | /**
47 | * Closes the stream and immediately afterward closes the referenced socket.
48 | *
49 | * @throws IOException If there is an error in closing the stream or socket.
50 | */
51 | @Override
52 | public void close() throws IOException {
53 | super.close();
54 | socket.close();
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/bsd/RExecClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.bsd;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21 | import static org.junit.jupiter.api.Assertions.assertEquals;
22 | import static org.junit.jupiter.api.Assertions.assertNull;
23 |
24 | import java.io.IOException;
25 | import java.io.InputStream;
26 | import java.io.OutputStream;
27 |
28 | import org.junit.jupiter.api.Test;
29 |
30 | /**
31 | * Tests {@link RExecClient}.
32 | */
33 | public class RExecClientTest {
34 |
35 | private RExecClient newClient() {
36 | return new RExecClient();
37 | }
38 |
39 | @Test
40 | public void testConstructor() {
41 | assertDoesNotThrow(RExecClient::new);
42 | }
43 |
44 | @Test
45 | public void testDefaultPort() {
46 | assertEquals(RExecClient.DEFAULT_PORT, newClient().getDefaultPort());
47 | }
48 |
49 | @Test
50 | public void testGetErrorStream() throws IOException {
51 | try (InputStream inputStream = newClient().getErrorStream()) {
52 | assertNull(inputStream);
53 | }
54 | }
55 |
56 | @Test
57 | public void testGetInputStream() throws IOException {
58 | try (InputStream inputStream = newClient().getInputStream()) {
59 | assertNull(inputStream);
60 | }
61 | }
62 |
63 | @Test
64 | public void testGetOutputStream() throws IOException {
65 | try (OutputStream outputStream = newClient().getOutputStream()) {
66 | assertNull(outputStream);
67 | }
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/time/TimeUDPClientTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.time;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertEquals;
21 | import static org.junit.jupiter.api.Assertions.assertThrows;
22 |
23 | import java.net.InetAddress;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Tests {@link TimeUDPClient}.
29 | */
30 | public class TimeUDPClientTest {
31 |
32 | @Test
33 | public void testConstructor() {
34 | try (TimeUDPClient client = new TimeUDPClient()) {
35 | // empty
36 | }
37 | }
38 |
39 | @Test
40 | public void testGetDate() {
41 | try (TimeUDPClient client = new TimeUDPClient()) {
42 | // Not connected failures
43 | assertThrows(NullPointerException.class, () -> client.getDate(InetAddress.getLocalHost()));
44 | assertThrows(NullPointerException.class, () -> client.getDate(InetAddress.getLocalHost(), TimeUDPClient.DEFAULT_PORT));
45 | }
46 | }
47 |
48 | @Test
49 | public void testGetTime() {
50 | try (TimeUDPClient client = new TimeUDPClient()) {
51 | // Not connected failures
52 | assertThrows(NullPointerException.class, () -> client.getTime(InetAddress.getLocalHost()));
53 | assertThrows(NullPointerException.class, () -> client.getTime(InetAddress.getLocalHost(), TimeUDPClient.DEFAULT_PORT));
54 | }
55 | }
56 |
57 | @Test
58 | public void testToTime() {
59 | final byte[] timeData = new byte[4];
60 | assertEquals(0, TimeUDPClient.toTime(timeData));
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/telnet/TelnetNotificationHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.telnet;
19 |
20 | /**
21 | * The TelnetNotificationHandler interface can be used to handle notification of options negotiation commands received on a Telnet session.
22 | *
23 | * The user can implement this interface and register a TelnetNotificationHandler by using the registerNotificationHandler() of TelnetClient to be notified of
24 | * option negotiation commands.
25 | *
26 | */
27 | public interface TelnetNotificationHandler {
28 | /**
29 | * The remote party sent a DO command.
30 | */
31 | int RECEIVED_DO = 1;
32 |
33 | /**
34 | * The remote party sent a {@code DONT} command.
35 | */
36 | int RECEIVED_DONT = 2;
37 |
38 | /**
39 | * The remote party sent a {@code WILL} command.
40 | */
41 | int RECEIVED_WILL = 3;
42 |
43 | /**
44 | * The remote party sent a {@code WONT} command.
45 | */
46 | int RECEIVED_WONT = 4;
47 |
48 | /**
49 | * The remote party sent a {@code COMMAND}.
50 | *
51 | * @since 2.2
52 | */
53 | int RECEIVED_COMMAND = 5;
54 |
55 | /**
56 | * Callback method called when TelnetClient receives a command or option negotiation command
57 | *
58 | * @param negotiation_code type of (negotiation) command received (RECEIVED_DO, RECEIVED_DONT, RECEIVED_WILL, RECEIVED_WONT, RECEIVED_COMMAND)
59 | * @param option_code code of the option negotiated, or the command code itself (e.g. NOP).
60 | */
61 | void receivedNegotiation(int negotiation_code, int option_code);
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/util/Charsets.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.util;
19 |
20 | import java.nio.charset.Charset;
21 |
22 | /**
23 | * Helps to deal with Charsets.
24 | *
25 | * @since 3.3
26 | * @deprecated Use {@link org.apache.commons.io.Charsets}.
27 | */
28 | @Deprecated
29 | public class Charsets {
30 |
31 | /**
32 | * Returns a charset object for the given charset name.
33 | *
34 | * @param charsetName The name of the requested charset; may be a canonical name, an alias, or null. If null, return the default charset.
35 | * @return A charset object for the named charset
36 | */
37 | public static Charset toCharset(final String charsetName) {
38 | return charsetName == null ? Charset.defaultCharset() : Charset.forName(charsetName);
39 | }
40 |
41 | /**
42 | * Returns a charset object for the given charset name.
43 | *
44 | * @param charsetName The name of the requested charset; may be a canonical name, an alias, or null. If null, return the default charset.
45 | * @param defaultCharsetName the charset name to use if the requested charset is null
46 | * @return A charset object for the named charset
47 | */
48 | public static Charset toCharset(final String charsetName, final String defaultCharsetName) {
49 | return charsetName == null ? Charset.forName(defaultCharsetName) : Charset.forName(charsetName);
50 | }
51 |
52 | /**
53 | * Depreacted.
54 | *
55 | * @deprecated Will be removed in 2.0.
56 | */
57 | @Deprecated
58 | public Charsets() {
59 | // empty
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/discard/DiscardTCPClient.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.discard;
19 |
20 | import java.io.OutputStream;
21 |
22 | import org.apache.commons.net.SocketClient;
23 |
24 | /**
25 | * The DiscardTCPClient class is a TCP implementation of a client for the Discard protocol described in RFC 863. To use the class, merely establish a connection
26 | * with {@link org.apache.commons.net.SocketClient#connect connect} and call {@link #getOutputStream getOutputStream()} to retrieve the discard output stream.
27 | * Don't close the output stream when you're done writing to it. Rather, call {@link org.apache.commons.net.SocketClient#disconnect disconnect} to clean up
28 | * properly.
29 | *
30 | * @see DiscardUDPClient
31 | */
32 | public class DiscardTCPClient extends SocketClient {
33 |
34 | /** The default discard port. It is set to 9 according to RFC 863. */
35 | public static final int DEFAULT_PORT = 9;
36 |
37 | /**
38 | * The default DiscardTCPClient constructor. It merely sets the default port to {@code DEFAULT_PORT}.
39 | */
40 | public DiscardTCPClient() {
41 | setDefaultPort(DEFAULT_PORT);
42 | }
43 |
44 | /**
45 | * Gets an OutputStream through which you may write data to the server. You should NOT close the OutputStream when you're finished reading from it.
46 | * Rather, you should call {@link org.apache.commons.net.SocketClient#disconnect disconnect} to clean up properly.
47 | *
48 | * @return An OutputStream through which you can write data to the server.
49 | */
50 | public OutputStream getOutputStream() {
51 | return _output_;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/examples/telnet/WeatherTelnet.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.examples.telnet;
19 |
20 | import java.io.IOException;
21 |
22 | import org.apache.commons.net.examples.util.IOUtil;
23 | import org.apache.commons.net.telnet.TelnetClient;
24 |
25 | /**
26 | * This is an example of a trivial use of the TelnetClient class. It connects to the weather server at the University of Michigan, um-weather.sprl.umich.edu
27 | * port 3000, and allows the user to interact with the server via standard input. You could use this example to connect to any Telnet server, but it is
28 | * obviously not general purpose because it reads from standard input a line at a time, making it inconvenient for use with a remote interactive shell. The
29 | * TelnetClient class used by itself is mostly intended for automating access to Telnet resources rather than interactive use.
30 | */
31 |
32 | // This class requires the IOUtil support class!
33 | public final class WeatherTelnet {
34 |
35 | public static void main(final String[] args) {
36 | final TelnetClient telnet;
37 |
38 | telnet = new TelnetClient();
39 |
40 | try {
41 | telnet.connect("rainmaker.wunderground.com", 3000);
42 | } catch (final IOException e) {
43 | e.printStackTrace();
44 | System.exit(1);
45 | }
46 |
47 | IOUtil.readWrite(telnet.getInputStream(), telnet.getOutputStream(), System.in, System.out);
48 |
49 | try {
50 | telnet.disconnect();
51 | } catch (final IOException e) {
52 | e.printStackTrace();
53 | System.exit(1);
54 | }
55 |
56 | System.exit(0);
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/parser/CompositeFileEntryParser.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp.parser;
19 |
20 | import org.apache.commons.net.ftp.FTPFile;
21 | import org.apache.commons.net.ftp.FTPFileEntryParser;
22 | import org.apache.commons.net.ftp.FTPFileEntryParserImpl;
23 |
24 | /**
25 | * This implementation allows to pack some FileEntryParsers together and handle the case where the returned dir style isn't clearly defined. The matching parser
26 | * will be cached. If the cached parser won't match due to the server changed the dir style, a new matching parser will be searched.
27 | */
28 | public class CompositeFileEntryParser extends FTPFileEntryParserImpl {
29 | private final FTPFileEntryParser[] ftpFileEntryParsers;
30 | private FTPFileEntryParser cachedFtpFileEntryParser;
31 |
32 | /**
33 | * Constructs a new instance.
34 | *
35 | * @param ftpFileEntryParsers An array of FTPFileEntryParser.
36 | */
37 | public CompositeFileEntryParser(final FTPFileEntryParser[] ftpFileEntryParsers) {
38 | this.cachedFtpFileEntryParser = null;
39 | this.ftpFileEntryParsers = ftpFileEntryParsers;
40 | }
41 |
42 | @Override
43 | public FTPFile parseFTPEntry(final String listEntry) {
44 | if (cachedFtpFileEntryParser != null) {
45 | return cachedFtpFileEntryParser.parseFTPEntry(listEntry);
46 | }
47 | for (final FTPFileEntryParser ftpFileEntryParser : ftpFileEntryParsers) {
48 | final FTPFile matched = ftpFileEntryParser.parseFTPEntry(listEntry);
49 | if (matched != null) {
50 | cachedFtpFileEntryParser = ftpFileEntryParser;
51 | return matched;
52 | }
53 | }
54 | return null;
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/ftp/NoProtocolSslConfigurationProxy.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import java.security.GeneralSecurityException;
21 |
22 | import javax.net.ssl.SSLContext;
23 | import javax.net.ssl.SSLSocketFactory;
24 |
25 | import org.apache.ftpserver.ssl.ClientAuth;
26 | import org.apache.ftpserver.ssl.SslConfiguration;
27 |
28 | /**
29 | * Tests FTPSERVER-491.
30 | *
31 | * See
32 | * https://issues.apache.org/jira/browse/FTPSERVER-491
33 | */
34 | public class NoProtocolSslConfigurationProxy implements SslConfiguration {
35 |
36 | private final SslConfiguration sslConfiguration;
37 |
38 | public NoProtocolSslConfigurationProxy(final SslConfiguration sslConfiguration) {
39 | this.sslConfiguration = sslConfiguration;
40 | }
41 |
42 | @Override
43 | public ClientAuth getClientAuth() {
44 | return sslConfiguration.getClientAuth();
45 | }
46 |
47 | @Override
48 | public String[] getEnabledCipherSuites() {
49 | return sslConfiguration.getEnabledCipherSuites();
50 | }
51 |
52 | @Override
53 | public String getEnabledProtocol() {
54 | return DEFAULT_ENABLED_PROTOCOL;
55 | }
56 |
57 | @Override
58 | public SSLSocketFactory getSocketFactory() throws GeneralSecurityException {
59 | return sslConfiguration.getSocketFactory();
60 | }
61 |
62 | @Override
63 | public SSLContext getSSLContext() throws GeneralSecurityException {
64 | return sslConfiguration.getSSLContext();
65 | }
66 |
67 | @Override
68 | public SSLContext getSSLContext(final String protocol) throws GeneralSecurityException {
69 | return sslConfiguration.getSSLContext(protocol);
70 | }
71 |
72 | }
73 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/DatagramSocketFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net;
19 |
20 | import java.net.DatagramSocket;
21 | import java.net.InetAddress;
22 | import java.net.SocketException;
23 |
24 | /**
25 | * The DatagramSocketFactory interface provides a means for the programmer to control the creation of datagram sockets and provide his own DatagramSocket
26 | * implementations for use by all classes derived from {@link org.apache.commons.net.DatagramSocketClient} . This allows you to provide your own DatagramSocket
27 | * implementations and to perform security checks or browser capability requests before creating a DatagramSocket.
28 | */
29 | public interface DatagramSocketFactory {
30 |
31 | /**
32 | * Creates a DatagramSocket on the local host at the first available port.
33 | *
34 | * @return the socket
35 | * @throws SocketException If the socket could not be created.
36 | */
37 | DatagramSocket createDatagramSocket() throws SocketException;
38 |
39 | /**
40 | * Creates a DatagramSocket on the local host at a specified port.
41 | *
42 | * @param port The port to use for the socket.
43 | * @return the socket
44 | * @throws SocketException If the socket could not be created.
45 | */
46 | DatagramSocket createDatagramSocket(int port) throws SocketException;
47 |
48 | /**
49 | * Creates a DatagramSocket at the specified address on the local host at a specified port.
50 | *
51 | * @param port The port to use for the socket.
52 | * @param localAddress The local address to use.
53 | * @return the socket
54 | * @throws SocketException If the socket could not be created.
55 | */
56 | DatagramSocket createDatagramSocket(int port, InetAddress localAddress) throws SocketException;
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/echo/EchoTCPClient.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.echo;
19 |
20 | import java.io.InputStream;
21 |
22 | import org.apache.commons.net.discard.DiscardTCPClient;
23 |
24 | /**
25 | * The EchoTCPClient class is a TCP implementation of a client for the Echo protocol described in RFC 862. To use the class, merely establish a connection with
26 | * {@link org.apache.commons.net.SocketClient#connect connect} and call {@link DiscardTCPClient#getOutputStream getOutputStream()} to retrieve the echo output
27 | * stream and {@link #getInputStream getInputStream()} to get the echo input stream. Don't close either stream when you're done using them. Rather, call
28 | * {@link org.apache.commons.net.SocketClient#disconnect disconnect} to clean up properly.
29 | *
30 | * @see EchoUDPClient
31 | * @see DiscardTCPClient
32 | */
33 | public final class EchoTCPClient extends DiscardTCPClient {
34 |
35 | /** The default echo port. It is set to 7 according to RFC 862. */
36 | public static final int DEFAULT_PORT = 7;
37 |
38 | /**
39 | * The default EchoTCPClient constructor. It merely sets the default port to {@code DEFAULT_PORT}.
40 | */
41 | public EchoTCPClient() {
42 | setDefaultPort(DEFAULT_PORT);
43 | }
44 |
45 | /**
46 | * Gets the time string from the specified server and port and returns it. an InputStream from which you may read echoed data from the server. You should
47 | * NOT close the InputStream when you're finished reading from it. Rather, you should call {@link org.apache.commons.net.SocketClient#disconnect disconnect
48 | * } to clean up properly.
49 | *
50 | * @return An InputStream from which you can read echoed data from the server.
51 | */
52 | public InputStream getInputStream() {
53 | return _input_;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/daytime/DaytimeTCPClient.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.daytime;
19 |
20 | import java.io.IOException;
21 |
22 | import org.apache.commons.io.IOUtils;
23 | import org.apache.commons.net.SocketClient;
24 |
25 | /**
26 | * The DaytimeTCPClient class is a TCP implementation of a client for the Daytime protocol described in RFC 867. To use the class, merely establish a connection
27 | * with {@link org.apache.commons.net.SocketClient#connect connect} and call {@link #getTime getTime()} to retrieve the daytime string, then call
28 | * {@link org.apache.commons.net.SocketClient#disconnect disconnect} to close the connection properly.
29 | *
30 | * @see DaytimeUDPClient
31 | */
32 | public final class DaytimeTCPClient extends SocketClient {
33 |
34 | /**
35 | * The default daytime port {@value} per RFC 867.
36 | */
37 | public static final int DEFAULT_PORT = 13;
38 |
39 | /**
40 | * The default DaytimeTCPClient constructor. It merely sets the default port to {@code DEFAULT_PORT}.
41 | */
42 | public DaytimeTCPClient() {
43 | setDefaultPort(DEFAULT_PORT);
44 | }
45 |
46 | /**
47 | * Gets the time string from the server and returns it. The server will have closed the connection at this point, so you should call
48 | * {@link org.apache.commons.net.SocketClient#disconnect disconnect} after calling this method. To retrieve another time, you must initiate another
49 | * connection with {@link org.apache.commons.net.SocketClient#connect connect} before calling {@code getTime()} again.
50 | *
51 | * @return The time string retrieved from the server.
52 | * @throws IOException If an error occurs while fetching the time string.
53 | */
54 | public String getTime() throws IOException {
55 | return IOUtils.toString(_input_, getCharset());
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/telnet/EchoOptionHandlerTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.telnet;
18 |
19 | import static org.junit.jupiter.api.Assertions.assertEquals;
20 | import static org.junit.jupiter.api.Assertions.assertNull;
21 |
22 | import org.junit.jupiter.api.BeforeEach;
23 | import org.junit.jupiter.api.Test;
24 |
25 | /**
26 | * JUnit test class for EchoOptionHandler
27 | */
28 | public class EchoOptionHandlerTest extends AbstractTelnetOptionHandlerTest {
29 |
30 | /**
31 | * setUp for the test.
32 | */
33 | @BeforeEach
34 | protected void setUp() {
35 | opthand1 = new EchoOptionHandler();
36 | opthand2 = new EchoOptionHandler(true, true, true, true);
37 | opthand3 = new EchoOptionHandler(false, false, false, false);
38 | }
39 |
40 | /**
41 | * test of server-driven subnegotiation. Checks that no subnegotiation is made.
42 | */
43 | @Test
44 | public void testAnswerSubnegotiation() {
45 | final int[] subn = { TelnetCommand.IAC, TelnetCommand.SB, TelnetOption.ECHO, 1, TelnetCommand.IAC, TelnetCommand.SE, };
46 |
47 | final int[] resp1 = opthand1.answerSubnegotiation(subn, subn.length);
48 |
49 | assertNull(resp1);
50 | }
51 |
52 | /**
53 | * test of the constructors.
54 | */
55 | @Override
56 | @Test
57 | public void testConstructors() {
58 | assertEquals(TelnetOption.ECHO, opthand1.getOptionCode());
59 | super.testConstructors();
60 | }
61 |
62 | /**
63 | * test of client-driven subnegotiation. Checks that no subnegotiation is made.
64 | */
65 | @Test
66 | public void testStartSubnegotiation() {
67 | final int[] resp1 = opthand1.startSubnegotiationLocal();
68 | final int[] resp2 = opthand1.startSubnegotiationRemote();
69 |
70 | assertNull(resp1);
71 | assertNull(resp2);
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/io/CRLFLineReader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.io;
19 |
20 | import java.io.BufferedReader;
21 | import java.io.IOException;
22 | import java.io.Reader;
23 |
24 | import org.apache.commons.net.util.NetConstants;
25 |
26 | /**
27 | * CRLFLineReader implements a readLine() method that requires exactly CRLF to terminate an input line. This is required for IMAP, which allows bare CR and LF.
28 | *
29 | * @since 3.0
30 | */
31 | public final class CRLFLineReader extends BufferedReader {
32 | private static final char LF = '\n';
33 | private static final char CR = '\r';
34 |
35 | /**
36 | * Creates a CRLFLineReader that wraps an existing Reader input source.
37 | *
38 | * @param reader The Reader input source.
39 | */
40 | public CRLFLineReader(final Reader reader) {
41 | super(reader);
42 | }
43 |
44 | /**
45 | * Reads a line of text. A line is considered to be terminated by carriage return followed immediately by a linefeed. This contrasts with BufferedReader
46 | * which also allows other combinations.
47 | *
48 | * @since 3.0
49 | */
50 | @Override
51 | public String readLine() throws IOException {
52 | final StringBuilder sb = new StringBuilder();
53 | int intch;
54 | boolean prevWasCR = false;
55 | synchronized (lock) { // make thread-safe (hopefully!)
56 | while ((intch = read()) != NetConstants.EOS) {
57 | if (prevWasCR && intch == LF) {
58 | return sb.substring(0, sb.length() - 1);
59 | }
60 | prevWasCR = intch == CR;
61 | sb.append((char) intch);
62 | }
63 | }
64 | final String string = sb.toString();
65 | if (string.isEmpty()) { // immediate EOF
66 | return null;
67 | }
68 | return string;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/FTPFileEntryParserImpl.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | import java.io.BufferedReader;
21 | import java.io.IOException;
22 | import java.util.List;
23 |
24 | /**
25 | * This abstract class implements both the older FTPFileListParser and newer FTPFileEntryParser interfaces with default functionality. All the classes in the
26 | * parser subpackage inherit from this.
27 | */
28 | public abstract class FTPFileEntryParserImpl implements FTPFileEntryParser {
29 |
30 | /**
31 | * The constructor for a FTPFileEntryParserImpl object.
32 | */
33 | public FTPFileEntryParserImpl() {
34 | }
35 |
36 | /**
37 | * This method is a hook for those implementors (such as VMSVersioningFTPEntryParser, and possibly others) which need to perform some action upon the
38 | * FTPFileList after it has been created from the server stream, but before any clients see the list.
39 | *
40 | * This default implementation does nothing.
41 | *
42 | * @param original Original list after it has been created from the server stream
43 | * @return {@code original} unmodified.
44 | */
45 | @Override
46 | public List preParse(final List original) {
47 | return original;
48 | }
49 |
50 | /**
51 | * Reads the next entry using the supplied BufferedReader object up to whatever delimits one entry from the next. This default implementation simply calls
52 | * BufferedReader.readLine().
53 | *
54 | * @param reader The BufferedReader object from which entries are to be read.
55 | * @return A string representing the next ftp entry or null if none found.
56 | * @throws IOException thrown on any IO Error reading from the reader.
57 | */
58 | @Override
59 | public String readNextEntry(final BufferedReader reader) throws IOException {
60 | return reader.readLine();
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp.parser;
19 |
20 | import org.apache.commons.net.ftp.FTPClientConfig;
21 | import org.apache.commons.net.ftp.FTPFileEntryParser;
22 |
23 | /**
24 | * The interface describes a factory for creating FTPFileEntryParsers.
25 | *
26 | * @since 1.2
27 | */
28 | public interface FTPFileEntryParserFactory {
29 | /**
30 | *
31 | * Implementation should be a method that extracts a key from the supplied {@link FTPClientConfig FTPClientConfig} parameter and creates an object
32 | * implementing the interface FTPFileEntryParser and uses the supplied configuration to configure it.
33 | *
34 | *
35 | * Note that this method will generally not be called in scenarios that call for autodetection of parser type but rather, for situations where the user
36 | * knows that the server uses a non-default configuration and knows what that configuration is.
37 | *
38 | *
39 | * @param config A {@link FTPClientConfig FTPClientConfig} used to configure the parser created
40 | * @return the {@link FTPFileEntryParser} so created.
41 | * @throws ParserInitializationException Thrown on any exception in instantiation
42 | * @since 1.4
43 | */
44 | FTPFileEntryParser createFileEntryParser(FTPClientConfig config) throws ParserInitializationException;
45 |
46 | /**
47 | * Implementation should be a method that decodes the supplied key and creates an object implementing the interface FTPFileEntryParser.
48 | *
49 | * @param key A string that somehow identifies an FTPFileEntryParser to be created.
50 | * @return the FTPFileEntryParser created.
51 | * @throws ParserInitializationException Thrown on any exception in instantiation
52 | */
53 | FTPFileEntryParser createFileEntryParser(String key) throws ParserInitializationException;
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/telnet/SuppressGAOptionHandlerTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.telnet;
18 |
19 | import static org.junit.jupiter.api.Assertions.assertEquals;
20 | import static org.junit.jupiter.api.Assertions.assertNull;
21 |
22 | import org.junit.jupiter.api.BeforeEach;
23 | import org.junit.jupiter.api.Test;
24 |
25 | /**
26 | * JUnit test class for SuppressGAOptionHandler
27 | */
28 | public class SuppressGAOptionHandlerTest extends AbstractTelnetOptionHandlerTest {
29 |
30 | /**
31 | * setUp for the test.
32 | */
33 | @BeforeEach
34 | protected void setUp() {
35 | opthand1 = new SuppressGAOptionHandler();
36 | opthand2 = new SuppressGAOptionHandler(true, true, true, true);
37 | opthand3 = new SuppressGAOptionHandler(false, false, false, false);
38 | }
39 |
40 | /**
41 | * test of server-driven subnegotiation. Checks that no subnegotiation is made.
42 | */
43 | @Test
44 | public void testAnswerSubnegotiation() {
45 | final int[] subn = { TelnetCommand.IAC, TelnetCommand.SB, TelnetOption.SUPPRESS_GO_AHEAD, 1, TelnetCommand.IAC, TelnetCommand.SE, };
46 |
47 | final int[] resp1 = opthand1.answerSubnegotiation(subn, subn.length);
48 |
49 | assertNull(resp1);
50 | }
51 |
52 | /**
53 | * test of the constructors.
54 | */
55 | @Override
56 | @Test
57 | public void testConstructors() {
58 | assertEquals(TelnetOption.SUPPRESS_GO_AHEAD, opthand1.getOptionCode());
59 | super.testConstructors();
60 | }
61 |
62 | /**
63 | * test of client-driven subnegotiation. Checks that no subnegotiation is made.
64 | */
65 | @Test
66 | public void testStartSubnegotiation() {
67 |
68 | final int[] resp1 = opthand1.startSubnegotiationLocal();
69 | final int[] resp2 = opthand1.startSubnegotiationRemote();
70 |
71 | assertNull(resp1);
72 | assertNull(resp2);
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/telnet/SimpleOptionHandlerTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package org.apache.commons.net.telnet;
18 |
19 | import static org.junit.jupiter.api.Assertions.assertEquals;
20 | import static org.junit.jupiter.api.Assertions.assertNull;
21 |
22 | import org.junit.jupiter.api.BeforeEach;
23 | import org.junit.jupiter.api.Test;
24 |
25 | /**
26 | * JUnit test class for SimpleOptionHandler
27 | */
28 | public class SimpleOptionHandlerTest extends AbstractTelnetOptionHandlerTest {
29 | /**
30 | * setUp for the test.
31 | */
32 | @BeforeEach
33 | protected void setUp() {
34 | opthand1 = new SimpleOptionHandler(4);
35 | opthand2 = new SimpleOptionHandler(8, true, true, true, true);
36 | opthand3 = new SimpleOptionHandler(91, false, false, false, false);
37 | }
38 |
39 | /**
40 | * test of server-driven subnegotiation. Checks that no subnegotiation is made.
41 | */
42 | @Test
43 | public void testAnswerSubnegotiation() {
44 | final int[] subn = { TelnetCommand.IAC, TelnetCommand.SB, 4, 1, TelnetCommand.IAC, TelnetCommand.SE, };
45 |
46 | final int[] resp1 = opthand1.answerSubnegotiation(subn, subn.length);
47 |
48 | assertNull(resp1);
49 | }
50 |
51 | /**
52 | * test of the constructors.
53 | */
54 | @Override
55 | @Test
56 | public void testConstructors() {
57 | assertEquals(4, opthand1.getOptionCode());
58 | assertEquals(8, opthand2.getOptionCode());
59 | assertEquals(91, opthand3.getOptionCode());
60 | super.testConstructors();
61 | }
62 |
63 | /**
64 | * test of client-driven subnegotiation. Checks that no subnegotiation is made.
65 | */
66 | @Test
67 | public void testStartSubnegotiation() {
68 |
69 | final int[] resp1 = opthand1.startSubnegotiationLocal();
70 | final int[] resp2 = opthand1.startSubnegotiationRemote();
71 |
72 | assertNull(resp1);
73 | assertNull(resp2);
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/examples/unix/fwhois.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.examples.unix;
19 |
20 | import java.io.IOException;
21 | import java.net.InetAddress;
22 | import java.net.UnknownHostException;
23 |
24 | import org.apache.commons.net.whois.WhoisClient;
25 |
26 | /**
27 | * This is an example of how you would implement the Linux fwhois command in Java using NetComponents. The Java version is much shorter.
28 | */
29 | public final class fwhois {
30 |
31 | public static void main(final String[] args) {
32 | final int index;
33 | final String handle;
34 | final String host;
35 | InetAddress address = null;
36 | final WhoisClient whois;
37 |
38 | if (args.length != 1) {
39 | System.err.println("usage: fwhois handle[@]");
40 | System.exit(1);
41 | }
42 |
43 | index = args[0].lastIndexOf('@');
44 |
45 | whois = new WhoisClient();
46 | // We want to timeout if a response takes longer than 60 seconds
47 | whois.setDefaultTimeout(60000);
48 |
49 | if (index == -1) {
50 | handle = args[0];
51 | host = WhoisClient.DEFAULT_HOST;
52 | } else {
53 | handle = args[0].substring(0, index);
54 | host = args[0].substring(index + 1);
55 | }
56 |
57 | try {
58 | address = InetAddress.getByName(host);
59 | System.out.println("[" + address.getHostName() + "]");
60 | } catch (final UnknownHostException e) {
61 | System.err.println("Error unknown host: " + e.getMessage());
62 | System.exit(1);
63 | }
64 |
65 | try {
66 | whois.connect(address);
67 | System.out.print(whois.query(handle));
68 | whois.disconnect();
69 | } catch (final IOException e) {
70 | System.err.println("Error I/O exception: " + e.getMessage());
71 | System.exit(1);
72 | }
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/util/ListenerListTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.util;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertEquals;
21 | import static org.junit.jupiter.api.Assertions.assertSame;
22 | import static org.junit.jupiter.api.Assertions.assertTrue;
23 |
24 | import java.util.EventListener;
25 | import java.util.Iterator;
26 |
27 | import org.junit.jupiter.api.Test;
28 |
29 | /**
30 | * Tests {@link ListenerList}.
31 | */
32 | public class ListenerListTest {
33 |
34 | static class EventListenerImpl implements EventListener {
35 | // empty
36 | }
37 |
38 | @Test
39 | public void testAdd() {
40 | final EventListenerImpl eventListenerImpl = new EventListenerImpl();
41 | final ListenerList listenerList = new ListenerList();
42 | listenerList.addListener(eventListenerImpl);
43 | assertEquals(1, listenerList.getListenerCount());
44 | }
45 |
46 | @Test
47 | public void testConstructor() {
48 | assertEquals(0, new ListenerList().getListenerCount());
49 | }
50 |
51 | @Test
52 | public void testIterator() {
53 | final EventListenerImpl eventListenerImpl = new EventListenerImpl();
54 | final ListenerList listenerList = new ListenerList();
55 | listenerList.addListener(eventListenerImpl);
56 | final Iterator iterator = listenerList.iterator();
57 | assertTrue(iterator.hasNext());
58 | assertSame(eventListenerImpl, iterator.next());
59 | }
60 | @Test
61 | public void testRemove() {
62 | final EventListenerImpl eventListenerImpl = new EventListenerImpl();
63 | final ListenerList listenerList = new ListenerList();
64 | listenerList.addListener(eventListenerImpl);
65 | assertEquals(1, listenerList.getListenerCount());
66 | listenerList.removeListener(eventListenerImpl);
67 | assertEquals(0, listenerList.getListenerCount());
68 | listenerList.iterator();
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/.github/workflows/scorecards-analysis.yml:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one or more
2 | # contributor license agreements. See the NOTICE file distributed with
3 | # this work for additional information regarding copyright ownership.
4 | # The ASF licenses this file to You under the Apache license, Version 2.0
5 | # (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # https://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the license for the specific language governing permissions and
14 | # limitations under the license.
15 |
16 | name: "Scorecards supply-chain security"
17 |
18 | on:
19 | workflow_dispatch:
20 | branch_protection_rule:
21 | push:
22 | branches: [ "master" ]
23 | paths-ignore:
24 | - '**/workflows/*.yml'
25 | - '!**/workflows/scorecards-analysis.yml'
26 |
27 | permissions: read-all
28 |
29 | jobs:
30 |
31 | analysis:
32 |
33 | name: "Scorecards analysis"
34 | runs-on: ubuntu-latest
35 | permissions:
36 | # Needed to upload the results to the code-scanning dashboard.
37 | security-events: write
38 | actions: read
39 | id-token: write # This is required for requesting the JWT
40 | contents: read # This is required for actions/checkout
41 |
42 | steps:
43 |
44 | - name: "Checkout code"
45 | uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
46 | with:
47 | persist-credentials: false
48 |
49 | - name: "Run analysis"
50 | uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # 2.4.3
51 | with:
52 | results_file: results.sarif
53 | results_format: sarif
54 | # A read-only PAT token, which is sufficient for the action to function.
55 | # The relevant discussion: https://github.com/ossf/scorecard-action/issues/188
56 | repo_token: ${{ secrets.GITHUB_TOKEN }}
57 | # Publish the results for public repositories to enable scorecard badges.
58 | # For more details: https://github.com/ossf/scorecard-action#publishing-results
59 | publish_results: true
60 |
61 | - name: "Upload artifact"
62 | uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
63 | with:
64 | name: SARIF file
65 | path: results.sarif
66 | retention-days: 5
67 |
68 | - name: "Upload to code-scanning"
69 | uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
70 | with:
71 | sarif_file: results.sarif
72 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/examples/mail/IMAPMail.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.examples.mail;
19 |
20 | import java.io.IOException;
21 | import java.net.URI;
22 |
23 | import org.apache.commons.net.PrintCommandListener;
24 | import org.apache.commons.net.imap.IMAPClient;
25 |
26 | /**
27 | * This is an example program demonstrating how to use the IMAP[S]Client class. This program connects to a IMAP[S] server, lists its capabilities and shows the
28 | * status of the Inbox.
29 | *
30 | * Usage: IMAPMail imap[s]://user:password@server/
31 | *
32 | * For example
33 | * IMAPMail imaps://user:password@imap.mail.yahoo.com/
34 | * or
35 | * IMAPMail imaps://user:password@imap.googlemail.com/
36 | */
37 | public final class IMAPMail {
38 |
39 | public static void main(final String[] args) throws IOException {
40 | if (args.length != 1) {
41 | System.err.println("Usage: IMAPMail imap[s]://user:password@server/");
42 | System.err.println("Connects to server; lists capabilities and shows Inbox status");
43 | System.exit(1);
44 | }
45 |
46 | final URI uri = URI.create(args[0]);
47 |
48 | // Connect and login
49 | final IMAPClient imap = IMAPUtils.imapLogin(uri, 10000, null);
50 |
51 | // suppress login details
52 | imap.addProtocolCommandListener(new PrintCommandListener(System.out, true));
53 |
54 | try {
55 | imap.setSoTimeout(6000);
56 |
57 | imap.capability();
58 |
59 | imap.select("inbox");
60 |
61 | imap.examine("inbox");
62 |
63 | imap.status("inbox", new String[] { "MESSAGES" });
64 |
65 | imap.list("", "*"); // Show the folders
66 |
67 | } catch (final IOException e) {
68 | System.out.println(imap.getReplyString());
69 | e.printStackTrace();
70 | System.exit(10);
71 | } finally {
72 | imap.logout();
73 | imap.disconnect();
74 | }
75 | }
76 | }
77 |
78 |
--------------------------------------------------------------------------------
/src/main/java/org/apache/commons/net/ftp/FTPSCommand.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.ftp;
19 |
20 | /**
21 | * FTPS-specific commands.
22 | *
23 | * @since 2.0
24 | * @deprecated 3.0 DO NOT USE
25 | */
26 | @Deprecated
27 | public final class FTPSCommand {
28 |
29 | /**
30 | * {@value}
31 | */
32 | public static final int AUTH = 0;
33 |
34 | /**
35 | * {@value}
36 | */
37 | public static final int ADAT = 1;
38 |
39 | /**
40 | * {@value}
41 | */
42 | public static final int PBSZ = 2;
43 |
44 | /**
45 | * {@value}
46 | */
47 | public static final int PROT = 3;
48 |
49 | /**
50 | * {@value}
51 | */
52 | public static final int CCC = 4;
53 |
54 | /**
55 | * {@value}
56 | */
57 | public static final int AUTHENTICATION_SECURITY_MECHANISM = AUTH;
58 |
59 | /**
60 | * {@value}
61 | */
62 | public static final int AUTHENTICATION_SECURITY_DATA = ADAT;
63 |
64 | /**
65 | * {@value}
66 | */
67 | public static final int PROTECTION_BUFFER_SIZE = PBSZ;
68 |
69 | /**
70 | * {@value}
71 | */
72 | public static final int DATA_CHANNEL_PROTECTION_LEVEL = PROT;
73 |
74 | /**
75 | * {@value}
76 | */
77 | public static final int CLEAR_COMMAND_CHANNEL = CCC;
78 |
79 | /**
80 | * {@value}
81 | */
82 | private static final String[] commands = { "AUTH", "ADAT", "PBSZ", "PROT", "CCC" };
83 |
84 | /**
85 | * Gets the FTPS command string corresponding to a specified command code.
86 | *
87 | * @param command The command code.
88 | * @return The FTPS command string corresponding to a specified command code.
89 | */
90 | public static String getCommand(final int command) {
91 | return commands[command];
92 | }
93 |
94 | /**
95 | * Constructs a new instance.
96 | */
97 | public FTPSCommand() {
98 | // empty
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/src/test/java/org/apache/commons/net/nntp/TestThreader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one or more
3 | * contributor license agreements. See the NOTICE file distributed with
4 | * this work for additional information regarding copyright ownership.
5 | * The ASF licenses this file to You under the Apache License, Version 2.0
6 | * (the "License"); you may not use this file except in compliance with
7 | * the License. You may obtain a copy of the License at
8 | *
9 | * https://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package org.apache.commons.net.nntp;
19 |
20 | import static org.junit.jupiter.api.Assertions.assertNull;
21 |
22 | import java.util.Arrays;
23 | import java.util.List;
24 |
25 | import org.junit.jupiter.api.Test;
26 |
27 | /**
28 | * Test the Threader
29 | */
30 | public class TestThreader {
31 |
32 | private static final Threadable[] EMPTY_THREADABLE_ARRAY = {};
33 |
34 | @SuppressWarnings("deprecation") // test of deprecated method
35 | @Test
36 | public void testEmptyArray() { // NET-539
37 | final Threader t = new Threader();
38 | final Threadable[] messages = EMPTY_THREADABLE_ARRAY;
39 | assertNull(t.thread(messages));
40 | }
41 |
42 | @Test
43 | public void testEmptyIterable() { // NET-539
44 | final Threader t = new Threader();
45 | final Threadable[] messages = EMPTY_THREADABLE_ARRAY;
46 | final Iterable asList = Arrays.asList(messages);
47 | assertNull(t.thread(asList));
48 | }
49 |
50 | @Test
51 | public void testEmptyList() { // NET-539
52 | final Threader t = new Threader();
53 | final Threadable[] messages = EMPTY_THREADABLE_ARRAY;
54 | final List asList = Arrays.asList(messages);
55 | assertNull(t.thread(asList));
56 | }
57 |
58 | @Test
59 | @SuppressWarnings("deprecation") // test of deprecated method
60 | public void testNullArray() { // NET-539
61 | final Threader t = new Threader();
62 | final Threadable[] messages = null;
63 | assertNull(t.thread(messages));
64 | }
65 |
66 | @Test
67 | public void testNullIterable() {
68 | final Threader t = new Threader();
69 | final Iterable messages = null;
70 | assertNull(t.thread(messages));
71 | }
72 |
73 | @Test
74 | public void testNullList() {
75 | final Threader t = new Threader();
76 | final List messages = null;
77 | assertNull(t.thread(messages));
78 | }
79 |
80 | }
81 |
--------------------------------------------------------------------------------