{"id":13485952,"url":"https://github.com/Guichaguri/MinimalFTP","last_synced_at":"2025-03-27T20:31:57.309Z","repository":{"id":50394112,"uuid":"91378938","full_name":"Guichaguri/MinimalFTP","owner":"Guichaguri","description":"A lightweight, simple FTP server. Pure Java, no dependencies.","archived":false,"fork":false,"pushed_at":"2024-02-05T05:55:48.000Z","size":194,"stargazers_count":158,"open_issues_count":1,"forks_count":44,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-08-01T18:25:22.094Z","etag":null,"topics":["file-transfer","ftp","ftp-server","java","minimal","tls"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Guichaguri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-05-15T19:55:46.000Z","updated_at":"2024-07-30T09:01:51.000Z","dependencies_parsed_at":"2024-02-05T06:49:32.988Z","dependency_job_id":null,"html_url":"https://github.com/Guichaguri/MinimalFTP","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guichaguri%2FMinimalFTP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guichaguri%2FMinimalFTP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guichaguri%2FMinimalFTP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guichaguri%2FMinimalFTP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Guichaguri","download_url":"https://codeload.github.com/Guichaguri/MinimalFTP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222313425,"owners_count":16965288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file-transfer","ftp","ftp-server","java","minimal","tls"],"created_at":"2024-07-31T18:00:34.902Z","updated_at":"2024-10-30T21:30:26.310Z","avatar_url":"https://github.com/Guichaguri.png","language":"Java","readme":"# MinimalFTP [![Build Status](https://travis-ci.org/Guichaguri/MinimalFTP.svg?branch=master)](https://travis-ci.org/Guichaguri/MinimalFTP)\nA lightweight, simple FTP server. Pure Java, no libraries.\n\n## Features\nAlthough it's named \"minimal\", it supports a bunch of features:\n\n* 100% Java, no libraries\n* Lightweight\n* Supports 57 FTP commands\n* TLS/SSL support\n* Custom File System support\n* Custom User Authentication support\n* Custom Commands support\n* Support to obsolete commands (some FTP clients might still use them)\n\n## Specification Support\nThe required minimum implementation is already done, however, there are still commands that can be implemented.\n\n* [RFC 959](https://tools.ietf.org/html/rfc959) - File Transfer Protocol (33/33)\n* [RFC 697](https://tools.ietf.org/html/rfc697) - CWD Command of FTP (1/1) (Obsolete)\n* [RFC 737](https://tools.ietf.org/html/rfc737) - FTP Extension: XSEN (0/3) (Obsolete)\n* [RFC 743](https://tools.ietf.org/html/rfc743) - FTP extension: XRSQ/XRCP (0/4) (Obsolete)\n* [RFC 775](https://tools.ietf.org/html/rfc775) - Directory oriented FTP commands (5/5) (Obsolete)\n* [RFC 1123](https://tools.ietf.org/html/rfc1123#page-29) - Requirements for Internet Hosts\n* [RFC 1639](https://tools.ietf.org/html/rfc1639) - FTP Operation Over Big Address Records (2/2) (Obsolete)\n* [RFC 2228](https://tools.ietf.org/html/rfc2228) - FTP Security Extensions (3/8)\n* [RFC 2389](https://tools.ietf.org/html/rfc2389) - Feature negotiation mechanism for the File Transfer Protocol (2/2)\n* [RFC 2428](https://tools.ietf.org/html/rfc2428) - FTP Extensions for IPv6 and NATs (2/2)\n* [RFC 2640](https://tools.ietf.org/html/rfc2640) - Internationalization of the File Transfer Protocol (0/1)\n* [RFC 2773](https://tools.ietf.org/html/rfc2773) - Encryption using KEA and SKIPJACK (0/1)\n* [RFC 3659](https://tools.ietf.org/html/rfc3659) - Extensions to FTP (4/4)\n* [RFC 4217](https://tools.ietf.org/html/rfc4217) - Securing FTP with TLS\n* [RFC 5797](https://tools.ietf.org/html/rfc5797) - FTP Command and Extension Registry\n* [RFC 7151](https://tools.ietf.org/html/rfc7151) - File Transfer Protocol HOST Command for Virtual Hosts (1/1)\n* [draft-twine-ftpmd5-00](https://tools.ietf.org/html/draft-twine-ftpmd5-00) - The \"MD5\" and \"MMD5\" FTP Command Extensions (2/2) (Obsolete)\n* [draft-somers-ftp-mfxx-04](https://tools.ietf.org/html/draft-somers-ftp-mfxx-04) - The \"MFMT\", \"MFCT\", and \"MFF\" Command Extensions for FTP (1/3)\n* [draft-bryan-ftpext-hash-02](https://tools.ietf.org/html/draft-bryan-ftpext-hash-02) - File Transfer Protocol HASH Command for Cryptographic Hashes (1/1)\n* [draft-bryan-ftp-range-08](https://tools.ietf.org/html/draft-bryan-ftp-range-08) - File Transfer Protocol RANG Command for Octet Ranges (0/1)\n\n# Usage\n\n### Dependency\nMinimalFTP is published on JCenter and Maven Central\n\n#### Maven\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.guichaguri\u003c/groupId\u003e\n  \u003cartifactId\u003eminimalftp\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.6\u003c/version\u003e\n  \u003ctype\u003epom\u003c/type\u003e\n\u003c/dependency\u003e\n```\n\n#### Gradle\n```groovy\ncompile 'com.guichaguri:minimalftp:1.0.6'\n```\n\n#### Ivy\n```xml\n\u003cdependency org='com.guichaguri' name='minimalftp' rev='1.0.6'\u003e\n  \u003cartifact name='minimalftp' ext='pom' /\u003e\n\u003c/dependency\u003e\n```\n\n### API\nCheck out more examples [here](https://github.com/Guichaguri/MinimalFTP/tree/master/src/test/java/com/guichaguri/minimalftp) :)\n\n```java\n// Uses the current working directory as the root\nFile root = new File(System.getProperty(\"user.dir\"));\n\n// Creates a native file system\nNativeFileSystem fs = new NativeFileSystem(root);\n\n// Creates a noop authenticator, which allows anonymous authentication\nNoOpAuthenticator auth = new NoOpAuthenticator(fs);\n\n// Creates the server with the authenticator\nFTPServer server = new FTPServer(auth);\n\n// Start listening synchronously\nserver.listenSync(21);\n```","funding_links":[],"categories":["Projects","网络编程","项目"],"sub_categories":["Miscellaneous","杂项"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGuichaguri%2FMinimalFTP","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGuichaguri%2FMinimalFTP","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGuichaguri%2FMinimalFTP/lists"}