mibo / miftp

Just for my very special use case 😃 An in memory FTP Server (non persistent) with REST endpoint.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simple FTP Server

Build a embedded in-memory FTP server with REST endpoint.

[ TOC ]

Disclaimer

Current source code and version is published without license.
If you (somebody) want to use this in his project please contact me. Afterwards I will grant the use of this code without warranty. When I find some time to inform myself about the different possible licenses at choosealicense.com I will probably change to a suitable license.

General information

Build a embedded in-memory FTP server with REST endpoint.

Run

  1. With SSL (default)

    1. Start via Gradle gradle bootrun

    2. Execute curl -k ftps://username:password@localhost:50021 to see content of the /tmp folder

      • To add own credentials use gradle bootrun --args='--miftp.ftp.user=ftp --miftp.ftp.user=ftp --miftp.user=miftp --miftp.password={bcrypt}$2a$10$5SyjnpMano4Z3LGbWQC9W.ySSsheBZI.7uufzpJ4uKokBGfd.uHau'

Technical information

  • The release versions are based on Semantic Versioning 2.0.0.

  • Project is (currently) a mixture of Java and Kotlin

  • The latest release require Java 8 (or newer) and is build with Gradle.

Current Features (for this branch)

  • NONE

New and Noteworthy

  • nothing

Roadmap

  • none

Helpful…​

Configure log level via ENV

The logback configuration supports LOG level configuration via ENV params.

Therefore the following ENV variables can be set for:

  • MIFTP_LOG_LEVEL (default value=INFO) for setting "de.mirb.project.miftp" logger (base)

  • MIFTP_FTP_LOG_LEVEL (default value=INFO) for setting "org.apache.ftpserver" logger (FTP server)

  • MIFTP_SPRING_LOG_LEVEL (default value=INFO) for setting "org.springframework" logger (base)

Technical details

Generate a Self Signed Certificate using Java Keytool

Create keystore keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

  • Nothing yet

Presentation

  • Nothing yet

Side notes

Project parts are copied from (my) mi-ftp-server project…​

Command

mvn archetype:generate -DarchetypeGroupId=pl.org.miki -DarchetypeArtifactId=java8-quickstart-archetype -DarchetypeVersion=RELEASE

Output:
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: java8-quickstart-archetype:1.0.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: de.mirb.project
[INFO] Parameter: artifactId, Value: mi-ftp-server
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: de.mirb.project
[INFO] Parameter: packageInPathFormat, Value: de/mirb/project
[INFO] Parameter: package, Value: de.mirb.project
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: testLibrary, Value: junit
[INFO] Parameter: groupId, Value: de.mirb.project
[INFO] Parameter: compilerMode, Value: simple
[INFO] Parameter: artifactId, Value: mi-ftp-server
[INFO] project created from Archetype in dir: /Users/michael/Development/Projects/MiProjects/MiFtp/mi-ftp-server

About

Just for my very special use case 😃 An in memory FTP Server (non persistent) with REST endpoint.


Languages

Language:Java 50.5%Language:Kotlin 44.0%Language:Shell 3.5%Language:HTML 1.2%Language:Dockerfile 0.8%