{"id":19065610,"url":"https://github.com/caiorss/jmhttp","last_synced_at":"2026-04-25T11:34:49.974Z","repository":{"id":90043179,"uuid":"109276171","full_name":"caiorss/jmhttp","owner":"caiorss","description":"A portable cross-platform http web server for sharing file and directories on Local Network.","archived":false,"fork":false,"pushed_at":"2018-06-24T12:02:45.000Z","size":12875,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-07T22:03:42.542Z","etag":null,"topics":["app","bonjour","cross-platform","http","java","lan","local","mdns","network","network-discovery","portable","scala","server","sharing","utility","web","zeroconf"],"latest_commit_sha":null,"homepage":"https://caiorss.github.io/jmhttp/","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caiorss.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2017-11-02T14:33:07.000Z","updated_at":"2024-06-17T03:39:49.000Z","dependencies_parsed_at":"2024-04-21T03:12:33.750Z","dependency_job_id":null,"html_url":"https://github.com/caiorss/jmhttp","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/caiorss/jmhttp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2Fjmhttp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2Fjmhttp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2Fjmhttp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2Fjmhttp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caiorss","download_url":"https://codeload.github.com/caiorss/jmhttp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2Fjmhttp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32261116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["app","bonjour","cross-platform","http","java","lan","local","mdns","network","network-discovery","portable","scala","server","sharing","utility","web","zeroconf"],"created_at":"2024-11-09T00:51:20.584Z","updated_at":"2026-04-25T11:34:44.966Z","avatar_url":"https://github.com/caiorss.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+INCLUDE: theme/theme.org\n#+TITLE: jmHttp Server \n#+AUTHOR:  Caio Rodrigues\n#+DESCRIPTION: A portable cross-platform http web server for sharing file and directories on Local Network.\n#+KEYWRODS: http, web, server, share, files, lan, local, network, java, scala, zeroconf, bonjour, mdns, multicast\n#+STARTUP: content \n\n* jmtthp server - A micro scala/java Http server \n** Overview \n\n_jmhttp server_ - is a micro self-contained lightweight http server to\nshare files across local netork. It is useful to access shared files,\nmusics, pictures and directories from other computers, smartphones,\ntablets and so on. This app can also serve static files at local\nnetwork· \n\n  - [[https://github.com/caiorss/jmhttp][Project's Github repository.]]\n\nFeatures: \n\n - _Self contained_: Just one file, one jar file, self-explanatory and\n   easy to use and deploy.\n\n - _No instalation required+_, it is ready to use and ready to\n   go. \n\n - _Cross-platform_, as it runs on top of the Java Platform. So this\n   server can be run without recompiling and reinstalling on Linux,\n   Mac OSX, BSD or Windows.\n\n - _Serve static website_ - The server can serve a static web site if\n   there is any file named index.html at the browsed directory. \n\n - _Network service advertising_ - The server can be advertised at\n   local network and made discoverable as networks printers, scanners,\n   cameras and etc, through zeroconf protocol (aka Apple's\n   Bounjour). So it can be located without knowing its network\n   address.\n\n - _SSL/TSL protocol support_ -  TSL (Transport Secure Layer) or SSL\n   (Secure Socket Layer). It allows the http traffic between the\n   server and browser to be encrypted and secure.\n\n - _Basic Authenticatin login_ \n\n\n*WARNING*: \n\n - The HTTP traffic without TLS/SSL is not encrypted, therefore, don't\n   use the server without SSL over the internet or at insecure or\n   public local networks.\n\n - Basic Authentication should not be used without TLS/SSL as the\n   password and login are sent unencrypted as plain text.\n\n** Usage \n*** Show help\n\nThe Jmhttp server is self-explanatory as it user-help text is\ncomprehensive and gives lots of examples.\n\n#+BEGIN_SRC text \n$ java -jar jmhttp-uber.jar \njmhttp 1.4 - Micro http server for file sharing at local network.\nUsage: $ jmhttp [COMMAND] [OPTIONS] [\u003cARGS\u003e ...]\n\nCommands:\n\n  dir   Share single directory.                 \n  mdir  Share multiple directories.             \n  echo  Run echo server for debugging purposes \n#+END_SRC\n\nCommands: \n\n - dir - Share a single directories:\n\n#+BEGIN_SRC text \n$ java -jar jmhttp-uber.jar dir\nShare single directory.\n\nUSAGE: $ jmhttp dir \u003cDIRECTORY\n\nOPTIONS:\n  -port=\u003cPORT\u003e,                  -p   Port that server will listen to. Default 8080                       \n  -host=\u003cHOST\u003e,                  -    Host that server will listen to. Default 0.0.0.0 - All addresses.   \n  -auth=\u003cUSER\u003e:\u003cPASSWORD\u003e,       -    Authentication - default empty.                                     \n  -tls=\u003cKEY STORE\u003e:\u003cPASSWORD\u003e,   -    Enable TLS (Transport Layer Security)/SSL. It encrypts connection.  \n  -image,                        -im  Show images thumbnails in directory listing.                        \n  -no-index,                     -ni  Don't render index.html if available in directory listing.          \n  -publish,                      -    Publish server with multicast DNS (aka mdns, Zeroconf protocol.)    \n\nEXAMPLES:\nShare single directory /home/user/Documents at default port 8080\n    listening all hosts. Note: (~) tilde is replaced by /home/\u003cuser\u003e on Linux,\n    /User/\u003cuser\u003e on OSX and C:\\\\User\\\\\u003cuser\u003e on Windows.\n\n    \u003e $ jmhttp dir C:\\\\Users\\\\user\\\\Documents  (Windows)\n    \u003e $ jmhttp dir /Users/dummy/documents\n      or\n    \u003e $ jmhttp ~/Documents\n\n    Share single directory with authentication:\n\n    It will serve the user home directory (~) tilde or /home/\u003cusername\u003e on Linux,\n    /Users/\u003cusername\u003e on MacOSX and C:\\\\Users\\\\\u003cusername\u003e on Windows with\n    authentication requesting username john and password pxjmnf.\n    The server will run on the port 8000.\n\n    Note: Even with authentication is still not safe against network sniffers\n    such as WireShark. To make the server secure, in addition to authentication,\n    it is necessary to use TSL (Transport Secure Layer) option.\n    The server can be opened in the web browser at the URL http://localhost:8080\n    or http://127.0.0.1:8080 or http://computerIP:8080. When the server is using\n    SSL/TLS the server URL is https://\u003caddress\u003e:\u003cport\u003e\n\n    \u003e $ jmhttp dir -p=8000 -publish -image -auth=john:pxjmnf tls=cert.jks:pass ~\n\n    Explanation:\n        + -p=8000             - Set server port to 8000\n        + -publish            - Publish server address on Local network using multicast \n                                DNS or (Zeroconf / Bounjour)\n        + -auth=john:pxjmnf   - Basic authentication (user john, password pxmnf)\n        + -image              - Show images in the directory listening\n        + -tls=cert.jks:pass  - Use the TSL certificate cert.jks to encrypt the connection.\n                                \u003cpass\u003e is the certificate's password.\n\n    Note: All command line parameters with (-) dash are optional.\n\n\n    A TSL/SLL certificate can be generated on Linux or OSX using:\n\n    $ keytool -genkeypair -keyalg RSA -alias sec_server \\\n       -keystore cert.jks \\\n       -storepass chargeit -validity 1000000 -keysize 2048\n\n\n#+END_SRC\n\n - mdir - Share multiple directories:\n\n#+BEGIN_SRC text \n$ java -jar jmhttp-uber.jar mdir\nShare multiple directories.\n\nUSAGE: $ jmhttp mdir \u003cURL1:DIRECTORY1\u003e [\u003cURL2:DIRECTORY2\u003e ...]\n\nOPTIONS:\n  -port=\u003cPORT\u003e,                  -p   Port that server will listen to. Default 8080                       \n  -host=\u003cHOST\u003e,                  -    Host that server will listen to. Default 0.0.0.0 - All addresses.   \n  -auth=\u003cUSER\u003e:\u003cPASSWORD\u003e,       -    Authentication - default empty.                                     \n  -tls=\u003cKEY STORE\u003e:\u003cPASSWORD\u003e,   -    Enable TLS (Transport Layer Security)/SSL. It encrypts connection.  \n  -image,                        -im  Show images thumbnails in directory listing.                        \n  -no-index,                     -ni  Don't render index.html if available in directory listing.          \n  -publish,                      -    Publish server with multicast DNS (aka mdns, Zeroconf protocol.)    \n\nEXAMPLES:\n\n    Share multiple directories using port 8090 and announcing server\n    through mDNS multicast DNS Discovery service, aka Apple's Bounjour(®)\n    or Zeroconf. It will make the directory Documents available at\n    http:\u003caddr\u003e:8090/docs and ~/Pictures at http:\u003caddr\u003e:8090/pics.\n\n    \u003e $ jmthtp -p=8090 -publish docs:~/Documents pics:~/Pictures\n\n    Share multiple directories with tsl/ssl (Transport Layer Security/\n    Secure Socket Layer) encryption. It changes the server's URL to\n    https://\u003cserveraddr\u003e:8080. It is no longer http://...\n\n    \u003e $ jmhttp -p=8080 --tls=cert.jks:password -m docs:~/Documents pics:~/Pictures\n\n   To generate the certificate use:\n\n   $ keytool -genkeypair -keyalg RSA -alias sec_server \\\n       -keystore cert.jks \\\n       -storepass chargeit -validity 1000000 -keysize 2048\n#+END_SRC\n\n\n - echo - Run server in echo mode. The server answers all requests\n   by printing back the requests data. This command is useful for \n   debugging http clients or learning more about http requests.\n\n#+BEGIN_SRC text \n$ java -jar jmhttp-uber.jar echo -h\nRun echo server for debugging purposes\n\nUSAGE: $ jmhttp echo \n\nOPTIONS:\n  -port,   -p  Port that server will listen to. Default 8080                      \n  -host,   -   Host that server will listen to. Default 0.0.0.0 - All addresses.  \n  -auth,   -   Authentication - default empty. \n#+END_SRC\n\n*** Running the server \n\nBy default, the server binds to port 8080. To change it to another port\nrun with -p=\u003cport number\u003e, for instance, -p=9090 to bind to port 9090.\n\n*Example 1*\n\nShare the directory /home/archbox/test to ~/test binding\nthe server to port 8080. The shared directory can accessed at\nhttp://192.168.1.22:8080 URL.\n\n#+BEGIN_SRC sh \n$ bin/jmhttp /home/archbox/test/\nServer running at: http://192.168.0.3:8080\n[2017-11-08 13:59:02] [INFO] - jmhttp.server.HttpServer run\n - Starting server at host = 0.0.0.0 and port = 8080 \n\n\n[2017-11-08 13:59:33] [INFO] - jmhttp.server.HttpServer $anonfun$run$2\n - HTTP Request: path = / - method = GET - address = /0:0:0:0:0:0:0:1 \n\n[2017-11-08 13:59:33] [INFO] - jmhttp.server.HttpServer $anonfun$run$2\n - HTTP Request: path = /favicon.ico - method = GET - address = /0:0:0:0:0:0:0:1 \n\n... ... ... ... \n\n#+END_SRC\n\n[[file:images/screenshot1.png][file:images/screenshot1.png]] \n\n[[file:images/screenshot2.png][file:images/screenshot2.png]]\n\nOn windows this sever can be run with: \n\n#+BEGIN_SRC sh \n  $ java -jar jmhttp C:\\Users\\arch\\Desktop\n  # or \n  $ java -jar jmhttp ~/Desktop \n#+END_SRC\n\n*Example 2*\n\nChanging the port that server listen run:\n\n#+BEGIN_SRC sh \n  $ jmhttp -p=9090 /home/archbox/test/\n  Server running at: http://192.168.0.3:9090\n  [2017-11-08 14:00:43] [INFO] - jmhttp.server.HttpServer run\n   - Starting server at host = 0.0.0.0 and port = 9090 \n\n  [2017-11-08 14:00:58] [INFO] - jmhttp.server.HttpServer $anonfun$run$2\n   - HTTP Request: path = /readerMonad.org - method = GET - address = /0:0:0:0:0:0:0:1 \n\n  [2017-11-08 14:00:58] [INFO] - jmhttp.server.HttpServer $anonfun$run$2\n   - HTTP Request: path = /favicon.ico - method = GET - address = /0:0:0:0:0:0:0:1 \n\n\n#+END_SRC\n\n*Example 3*\n\nOpen the server website in the default browser after the server\nstart. It will open the server website at  http://192.168.0.3:9090\n\n#+BEGIN_SRC sh \n$ bin/jmhttp --browser -p=9090 /home/archbox/test/\nServer running at: http://192.168.0.3:9090\n[2017-11-08 14:02:21] [INFO] - jmhttp.server.HttpServer run\n - Starting server at host = 0.0.0.0 and port = 9090 \n\n# Or \n\n$ jmhttp --b -p=9090 /home/archbox/test/\nServer running at: http://192.168.1.22:9090\n\n#+END_SRC\n\n*Example 4*\n\nSharing multiple directories: \n\nIt will make the directory contents of /home/archbox/opt be available\nat the URL  http://192.168.1.22:8080/opt and the directory contents of\n/home/archbox/Documents/wiki  be available at http://192.168.1.22:8080/org. \nIf there is any file named index.html in the wiki directory, it will\nbe displayed instead of showing the directory contents.\n\n#+BEGIN_SRC sh \n$ bin/jmhttp -m -b opt:/home/archbox/opt pics:/home/archbox/Pictures org:/home/archbox/Documents/wiki \nServer running at: http://192.168.1.22:8080\n\n#+END_SRC\n\n[[file:images/screenshot3-shared-dirs.png][file:images/screenshot3-shared-dirs.png]]\n\n[[file:images/screenshot4-index.png][file:images/screenshot4-index.png]]\n\n\n*Example 5* \n\nToo advertising the server at local network with multicast-DNS, zeroconf\n(that Apple calls Boujour) just add the flag -publish. \n\n\n#+BEGIN_SRC sh \n  $ bin/jmhttp -publish -p=9090 opt:~/opt pics:~/Pictures org:/home/archbox/Documents/wiki \n#+END_SRC\n\nThe advertising with zeroconf allows the server to be accessed without\nknowing or typing its IP address by using any Zeroconf browser,\nandroid app with zeroconf for network service discovery or Mac OSX\nSafari Zeroconf.\n\n[[file:images/screenshot5-mac-osx-bounjour.png][file:images/screenshot5-mac-osx-bounjour.png]]\n\n*** Dealing with Firewalls \n\n*Dealing with Firewall* \n\nIn order to use the server it is necessary to disable the firewall or\ncreate a rule to open the port while testing the server.\n\n + _Dealing with firewall on Windows OS_: To opening the port 8080 on\n   Windows \u003e Windows 2008. Open a console cmd.exe as administrator and\n   copy and paste the command below. - Reference: [[https://wiki.mcneel.com/zoo/zoo5netsh][Open TCP Port 80 using Netsh]]\n\n#+BEGIN_SRC sh \n  rem Open TCP Port 8080 inbound and outbound\n  netsh advfirewall firewall add rule name=\"jmhttp port 8080\" dir=in action=allow protocol=TCP localport=8080\n#+END_SRC\n\n \n  + _Dealing with firewall on Linux OS_ \n\n#+BEGIN_SRC sh \n  # Stop firewall temporarily (Fedora) \n  $ systemctl stop firewalld\n  \n  # Start firewall \n  $ systemctl start firewalld\n  \n  # Disable Firewall from boot. \n  $ systemctl disable firewalld\n#+END_SRC\n\n** Building Instructions \n*** Building with sbt \n\nMake sure the latest sbt is available in the system and run $ sbt makesh\n\nStep 1: Enter project root directory.\n\n#+BEGIN_SRC sh \ncd \u003cproject-directory\u003e\n#+END_SRC\n\nStep 2: Compile with $ sbt makesh. It generates the file ./jmhttp\nwhich is placed at the project current directory; \n\n#+BEGIN_SRC sh \n$ sbt makesh\n[info] Loading settings from idea.sbt,plugins.sbt ...\n[info] Loading global plugins from /home/archbox/.sbt/1.0/plugins\n[info] Loading settings from assembly.sbt ...\n[info] Loading project definition from /home/archbox/Documents/projects/jmhttp.scala/project\n[info] Loading settings from build.sbt ...\n[info] Set current project to jmhttp (in build file:/home/archbox/Documents/projects/jmhttp.scala/)\n[info] Including from cache: jmdns-3.4.1.jar\n[info] Including from cache: jmhttp-1.4.jar\n[info] Including from cache: scala-library.jar\n[info] Checking every *.class/*.jar file's SHA-1.\n[info] Merging files...\n[warn] Merging 'META-INF/INDEX.LIST' with strategy 'discard'\n[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'\n[warn] Merging 'META-INF/maven/javax.jmdns/jmdns/pom.properties' with strategy 'discard'\n[warn] Merging 'META-INF/maven/javax.jmdns/jmdns/pom.xml' with strategy 'discard'\n[warn] Strategy 'discard' was applied to 4 files\n[info] Assembly up to date: /home/archbox/Documents/projects/jmhttp.scala/target/jmhttp-assembly-1.4.jar\nCreated  = jmhttp\nRun it with java -jar jmhttp or ./jmhttp or sh jmhttp\n[success] Total time: 4 s, completed Jun 20, 2018 8:48:34 AM\n\n#+END_SRC\n\nStep 3: Test the server. \n\n#+BEGIN_SRC sh \n$ du -h jmhttp\n5.4M\tjmhttp\n5.4M\ttotal\n\n# Check the header \n#----------------------\n$ head -n 15 jmhttp\n#!/usr/bin/env sh\n# Check if JAVA_HOME is Set \nif [ -n \"${JAVA_HOME}\" ]\nthen\n    # Check if JAVA is Installed in this JAVA_HOME\n    if [ -f  \"$JAVA_HOME/bin/java\" ] ;\n    then\n        \"$JAVA_HOME/bin/java\" -jar \"$0\" \"$@\"\n    # Try to use JAVA from $PATH Variable\n    else\n        # Check if Java is Installed \n        if hash java 2\u003e/dev/null;\n        then\n            java -jar \"$0\" \"$@\"\n        els\n\n#+END_SRC\n\nStep 4: Run the program. \n\n#+BEGIN_SRC sh \n# Run as Unix executable \n#-----------------------------------------------------\n$ ./jmhttp\njmhttp 1.4 - Micro http server for file sharing at local network.\nUsage: $ jmhttp [COMMAND] [OPTIONS] [\u003cARGS\u003e ...]\n\nCommands:\n\n  dir   Share single directory.                 \n  mdir  Share multiple directories.             \n  echo  Run echo server for debugging purposes  \n\n# Run as shell script \n#-----------------------------------------------------\n$ sh jmhttp\njmhttp 1.4 - Micro http server for file sharing at local network.\nUsage: $ jmhttp [COMMAND] [OPTIONS] [\u003cARGS\u003e ...]\n\nCommands:\n\n  dir   Share single directory.                 \n  mdir  Share multiple directories.             \n  echo  Run echo server for debugging purposes \n\n# Run with java -jar \n#-----------------------------------------------------\n$ java -jar jmhttp\njmhttp 1.4 - Micro http server for file sharing at local network.\nUsage: $ jmhttp [COMMAND] [OPTIONS] [\u003cARGS\u003e ...]\n\nCommands:\n\n  dir   Share single directory.                 \n  mdir  Share multiple directories.             \n  echo  Run echo server for debugging purposes\n\n#+END_SRC\n\nInstall: \n\n - In order to install, it is necessary just to move the server to any\n   directory in the $PATH environment variable. So, in Linux, MacOSX\n   or any other Unix-like OS, the program could be moved to /bin,\n   /usr/bin or ~/bin. \n\nOnce installed, the program can be run without ./ or absolute path ./path/jmhttp: \n\n#+BEGIN_SRC sh \n$ jmhttp\njmhttp 1.4 - Micro http server for file sharing at local network.\nUsage: $ jmhttp [COMMAND] [OPTIONS] [\u003cARGS\u003e ...]\n  ... ... ... ... .... .... \n#+END_SRC\n\nTo install in the user directory without root permission, it is\nnecessary to create the directory: \n\n#+BEGIN_SRC sh \n$ mkdir -p ~/bin\n\n# Add this line to the file ~/.bashrc or ~/.bash_profile \n$ export PATH=$PATH:~/bin\n\n# Move the program to ~/bin\n$ mv jmhttp ~/bin \n$ chmod +x ~/bin/jmhttp \n\n#+END_SRC\n\n*** Building with jarget\n\nThe server requires scala as building dependency and  [[https://github.com/caiorss/jarget][jarget]]  building\ntool to fetch the dependencies and bundle them with the application.\n\nTo get jarget, just run: \n\n#+BEGIN_SRC sh \n$ curl -o ~/bin/jarget -L https://github.com/caiorss/jarget/raw/v2.1.0-beta-release/jarget \u0026\u0026 chmod +x ~/bin/jarget \n#+END_SRC\n\nTo build the server run: \n\n#+BEGIN_SRC sh \n$ make force \u0026\u0026 make sh-guard \n#+END_SRC\n\nIt will generate an unix-executable uber jar, namely \"bin/jmhttp\"\n\n#+BEGIN_SRC sh \n  $ bin/jmhttp \n  A micro Java/Scala http server to share files in the local network\n\n  Usage: jmhttp [OPTIONS] ... [[DIRECTORY] | [URL:DIRECTORY] [URL:DIRECTORY] ...]\n      \n     ... ... ... ... ... ... ... ...... ... ... ...\n\n\n  $ java -jar bin/jmhttp\n  A micro Java/Scala http server to share files in the local network\n\n  Usage: jmhttp [OPTIONS] ... [[DIRECTORY] | [URL:DIRECTORY] [URL:DIRECTORY] ...]\n                          \n     -h, --help           Display this help and exit\n     ... ... ... ... ... ... ... ...... ... ... ...\n\n     \n  $ file bin/jmhttp \n  bin/jmhttp: a /usr/bin/env sh  script executable (binary data)\n\n  $ du -h bin/jmhttp\n  1.7M    bin/jmhttp\n  1.7M    total\n\n#+END_SRC\n\nAfter building the jarget cache can be removed: \n\n#+BEGIN_SRC sh \n$ jarget cache -jars \n/home/archbox/.jarget/cache/javax/jmdns/jmdns/3.4.1/jmdns-3.4.1.jar\n\n$ jarget cache -path\n/home/archbox/.jarget/cache\n\n$ rm -rf /home/archbox/.jarget \n#+END_SRC\n\n** Binary release \n\nThe most update version can be downloaded from the link below or using\ncurl. \n\n - Most up to date version [[%20https://github.com/caiorss/jmhttp/raw/gh-pages/jmhttp][jmhttp - Download]]\n\n - [[https://github.com/caiorss/jmhttp/raw/v1.0-release/jmhttp][jmhttp 1.0 Download]]\n\n - [[https://github.com/caiorss/jmhttp/raw/1feb4ef04f15d8e8c4676f39b495b2eac4b8f473/jmhttp][jmhttp 1.1 Download]]\n\n - [[https://github.com/caiorss/jmhttp/raw/95d7d04fc43640b2352d3bf10910594729090cd8/jmhttp][jmhttp 1.4 Download]]\n\n#+BEGIN_SRC sh \n$ curl -O -L https://github.com/caiorss/jmhttp/raw/gh-pages/jmhttp\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   130  100   130    0     0     21      0  0:00:06  0:00:06 --:--:--    42\n100 1703k  100 1703k    0     0   121k      0  0:00:14  0:00:14 --:--:--  475k\n\n$ chmod +x jmhttp\n\n$ ./jmhttp --version\njmhttp - v1.0\n\n$ java -jar ./jmhttp --version\njmhttp - v1.0\n\n$ sh ./jmhttp --version\njmhttp - v1.0\n\n#+END_SRC\n\n** TODO Tasklist and future work \n\n - [X] - Implement logging\n\n - [X] - Implement a consistent command line handling.\n\n - [X] - Add Zeroconf - Network Service advertising.\n\n - [X] - Add basic HTTP authentication.\n\n - [X] - Implement cross-platform path expansion.\n\n - [X] - Implement Image Gallery \n\n - [ ] - Add cookie-based authentication.\n\n - [X] - Supoport HTTPS/TLS security extension.\n\n - [X] - Create Unix daemon wrapper. \n\n - [X] - Provide GIT-like subcommands.\n\n - [ ] - [MAYBE] GUI - Graphical User Interface\n\n - [X] - Create sbt file.\n\n - [ ] - Implement plain text human-readable configuration file. \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaiorss%2Fjmhttp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaiorss%2Fjmhttp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaiorss%2Fjmhttp/lists"}