Download, Install, Update

Overview

What is it?

Getdown (yes, it's the funky stuff) is a system for deploying Java applications to end-user computers, as well as keeping those applications up to date.

It was designed as a replacement for Java Web Start due to limitations in Java Web Start's architecture which are outlined in the rationale section.

Note: Getdown was designed in 2004 as an alternative to Java Web Start, because of design choices made by JWS that were problematic to the use cases its authors had. It is not a drop-in replacement for JWS, aimed to help the developers left in the lurch by the deprecation of JWS in Java 9. It may still be a viable alternative for developers looking to replace JWS, but don't expect to find feature parity with JWS.

How do I use it?

A tutorial and more detailed specification are available from the Documentation page. Questions can be posted to the OOO Libs Google group.

Note that because one can not rely on users having a JRE installed, you must create a custom installer for each platform that you plan to support (Windows, macOS, Linux) that installs a JRE, the Getdown launcher jar file, a stub configuration file that identifies the URL at which your real app manifest is hosted, and whatever the appropiate "desktop integration" is that provides an icon the user can click on. We have some details on the installers documentation page, though it is unfortunately not very detailed.

How does it work?

The main design and operation of Getdown is detailed on the design page. You can also browse the javadoc documentation and source code if you're interested in implementation details.

Where can I see it in action?

Getdown was originally written by developers at OOO for the deployment of their Java-based massively multiplayer games. Try out any of the following games to see it in action:

Getdown is implemented in Java, and is designed to deploy and update JVM-based applications. While it would be technically feasible to use Getdown to deploy non-JVM-based applications, it is not currently supported and it is unlikely that the overhead of bundling a JVM just to run Getdown would be worth it if the JVM were not also being used to run the target application.

Release notes

See CHANGELOG.md for release notes.

Obtaining Getdown

Getdown will likely need to be integrated into your build. We have separate instructions for build integration. You can also download the individual jar files from Maven Central if needed. Getdown is comprised of three Maven artifacts (jar files), though you probably only need the first one:

  • getdown-launcher contains minified (via Proguard) code that you actually run to update and launch your app. It also contains the tools needed to build a Getdown app distribution.

  • getdown-core contains the core logic for downloading, verifying, patching and launching an app as well as the core logic for creating an app distribution. It does not contain any user interface code. You would only use this artifact if you were planning to integrate Getdown directly into your app.

  • getdown-ant contains an Ant task for building a Getdown app distribution. See the build integration instructions for details.

You can also:

JVM Version Requirements

  • Getdown version 1.8.x requires Java 7 VM or newer.
  • Getdown version 1.7.x requires Java 7 VM or newer.
  • Getdown version 1.6.x requires Java 6 VM or newer.
  • Getdown version 1.5 and earlier requires Java 5 VM or newer.

Migrating from Getdown 1.7 to Getdown 1.8

See this document on the changes needed to migrate from Getdown 1.7 to 1.8.

Building

Getdown is built with Maven in the standard ways. Invoke the following commands, for fun and profit:

% mvn compile  # builds the classes
% mvn test     # builds and runs the unit tests
% mvn package  # builds and creates jar file
% mvn install  # builds, jars and installs in your local Maven repository

Discussion

Feel free to pop over to the OOO Libs Google Group to ask questions and get (and give) answers.

Comments
  • enable custom java local dir instead of hardcoded

    enable custom java local dir instead of hardcoded "java_vm"

    currently bundled jvm is extracted to hardcoded "java_vm" subdirectory making it impossible to use getdown in conjunction with packr. pr adds custom "java_local_dir" config arg that denotes any location relative to the app dir

    upd: verified with packr, it works

    opened by sergiorussia 10
  • Allow for environment variables in the getdown.txt

    Allow for environment variables in the getdown.txt

    Some applications require a system environment variable to be passed in as a command line argument. Since these are specific to the client launching the app, they can't be pre-configured in the getdown.txt.

    opened by beirtipol 10
  • Digest algorithm and Maven snapshots

    Digest algorithm and Maven snapshots

    It seems to not break functionality; only irritating / wrong metadata TL;DR

    The Resource.computeDigest() Line 241 ignores the META-INF. This might work well for most users, but i encountered an issue while working with my project:

    Have a Maven project, distributing sometimes some snapshot jars (for testers). In gui, i display the JAR manifest impl version, to get a clue what is deployed in what version.

    When i now release that jar, so that ONLY the metadata changes (but not a class file; compared to last snapshot update), the digest is the same, and never downloaded/updated the release version! (still displaying snapshot in gui) (Would be the same, if you always release unchanged jars, to have them all on same version)

    What is/was the need for skipping the meta-inf? How could i change that w/o breaking live instances (aka GD self update)? It gives me a slightly bad feeling, that not the jar i deploy is downloaded and checked 1:1...

    opened by myron0815 10
  • Expose in the getdown console the output of the launched process

    Expose in the getdown console the output of the launched process

    Hi,

    Last version of getdown allows to launch a 'jar' application with the "manifest" keyword. (class = manifest) However the wiki states that it is not possible to use the flag "-Ddirect=true" with this option.

    Launching the app in the same jvm than getdown would be interesting to directly get the application's output in the same console used to launch the update of the said app.(instead of tailing the log file)

    Do you think this would be easy to achieve ?

    Thx

    opened by ihommani 9
  • System.out being swallowed

    System.out being swallowed

    The System.out prints are getting swallowed by the getdown app. I can see that my application is launching successfully and writing a test file to the filesystem but can't see any stdout in either the launcher.log or in the console I launch the app from. I guess it's something to do with log4j config?

    opened by beirtipol 8
  • Add glob 'cleanup_pattern' to remove obsolete resources

    Add glob 'cleanup_pattern' to remove obsolete resources

    Hello,

    We noticed that over time obsolete resources accumulate in Getdown folder. This PR allows to define optional list of Glob patterns in Getdown.txt, like:

    cleanup_pattern = lib\*.jar
    cleanup_pattern = rsrcs\*.jpg
    cleanup_pattern = old_*.png
    

    Glob patterns are defined relative to 'getdown' folder.
    In this case Getdown would collect list for files from the patterns, that is cross-check against resources specified in Getdown.txt. Then only the files that are not in getdown resource list, will be removed.

    Potentially closes #183

    opened by gieza 7
  • Updating a jar while the application is still running

    Updating a jar while the application is still running

    I just changed our application delivery so that getdown is responsible to install the application and keep it up-to-date. Now, I have the following situation:

    1. I run the application via getdown. It opens and everything is fine.
    2. While the application is running, I open another instance of the application. getdown is now running an update because I changed a jar file (by intention).
    3. Back in the previously opened application I issue a command that results in a ClassNotFoundException.

    As far as I know this is the expected result if a jar file is being replaced while an application is running. What can be done in order to prevent such situations? I'm on Windows 8.1 if that helps.

    I'm still new to getdown, so bear with me if that's a configuration issue or this question has already been asked.

    Regards, -- Thomas

    opened by thokuest 7
  • Show GUI but not launch

    Show GUI but not launch

    Is it possible to show the GUI, but not launch the application? In a worst-case scenario I guess I can import getdown.jar into my classpath, and extend the StatusPanel to create my own GUI, but that sounds like a lot of work ...

    opened by davidsteinsland 7
  • fixed exception logging

    fixed exception logging

    @samskivert, hi. found small issue in logger. w/o fix:

    ...
    2019/05/05 20:24:49:266 INFO Application requires update.
    2019/05/05 20:29:53:149 WARNING Download failed [rsrc=patch201904141803.dat, java.io.FileNotFoundException: http://app/files/201905051855/patch201904141803.dat=<toString() failure: java.lang.ArrayIndexOutOfBoundsException: 3>]
    java.io.FileNotFoundException: http://app/files/201905051855/patch201904141803.dat
    ...
    

    wrote a test which initially failed:

    Expected :Download failed [rsrc=Resource]
    Actual   :Download failed [rsrc=Resource, java.io.FileNotFoundException: patch.dat=<toString() failure: java.lang.ArrayIndexOutOfBoundsException: 3>]
    

    i got a question though. why not change Log.format method to accept Map<String, Object> instead of Object[]? Map is verbose to write of course but better reflects method requirements and less error-prone.

    opened by sergiorussia 6
  • Proxy Authentification

    Proxy Authentification

    Hi there,

    we added support for Proxy Authentification to getdown. We mainly changed 3 things:

    1. We are using the java.net.Proxy class for proxy settings in the URLConnections. This is because if you set it only as SystemProperty, it seems java uses a fallback if the proxy is not reachable and tries to connect without proxy. Which we think is not desirable.
    2. We changed the Proxy dialog to include 2 fields with username and password and a checkbox field to activate the 2 input fields. Also we changed some minor locales in the dialog.
    3. Since it is not very secure to set the credentials as SystemProperty to pass trough to the main application that gets started, we included a Service Provider Interface. One method for saving the credentials and one for loading the credentials. With this way everyone who uses getdown can implement there own secure way of passing the credentials to the application that gets started. If no SPI is implemented, the credentials will only be set in getdown.

    Greetings ThomasG

    opened by ThomasG-AI 6
  • load bootstrap.properties from getdown-launcher.jar

    load bootstrap.properties from getdown-launcher.jar

    Hi,

    we need a as simple as possible bootstrap solution for our application. Therefor deploying a getdown-launcher.jar including a getdown.txt is a step to much for us and we don't have the possibility to deploy the first getdown-launcher.jar and txt otherwise.

    I developed a simple solution to include a "bootstrap.properties" file in the getdown-launcher.jar so getdown will fetch the first getdown.txt in a (server-side) configurable appdir. There is an optional variable in the appdir property to reference the user home directory on the client.

    I tried to be as less invasive as possible. Please feel free to comment and correct style and location. I hope there is a chance to merge this request somehow.

    Volker

    opened by vgropp 6
  • cleanup_pattern problem - does not work

    cleanup_pattern problem - does not work

    I have a cleanup pattern defined like

    cleanup_pattern = *.jar

    since I have no special lib folder. This does not seem to work. Since I have no logging feedback, which pathes where to be cleaned it is difficult to find the error. So first could you introduce some more logging for this clean up process.

    Is there a problem using this *.jar in the "root" getdown folder?

    By the way which files should be cleaned? Only those with a corresponding jarv file? Or is not yet included in your actual 1.8.7 version?

    opened by wumpz 0
  • Platform-specific Configuration for arm based mac

    Platform-specific Configuration for arm based mac

    Specifying eg. in getdown.txt - java_location = [mac os x-aarch64]binary/javavm-mac-arm-23.1-SNAPSHOT.zip doesn't work. I would like Getdown to use the custom arm based java vm if running on an arm based Mac. Is this possible?

    opened by trkas 0
  • [SECURITY] Fix Temporary File Information Disclosure Vulnerability

    [SECURITY] Fix Temporary File Information Disclosure Vulnerability

    Security Vulnerability Fix

    This pull request fixes a Temporary File Information Disclosure Vulnerability, which existed in this project.

    Preamble

    The system temporary directory is shared between all users on most unix-like systems (not MacOS, or Windows). Thus, code interacting with the system temporary directory must be careful about file interactions in this directory, and must ensure that the correct file posix permissions are set.

    This PR was generated because a call to File.createTempFile(..) was detected in this repository in a way that makes this project vulnerable to local information disclosure. With the default uname configuration, File.createTempFile(..) creates a file with the permissions -rw-r--r--. This means that any other user on the system can read the contents of this file.

    Impact

    Information in this file is visible to other local users, allowing a malicious actor co-resident on the same machine to view potentially sensitive files.

    Other Examples

    The Fix

    The fix has been to convert the logic above to use the following API that was introduced in Java 1.7.

    File tmpDir = Files.createTempFile("temp dir").toFile();
    

    The API both creates the file securely, ie. with a random, non-conflicting name, with file permissions that only allow the currently executing user to read or write the contents of this file. By default, Files.createTempFile("temp dir") will create a file with the permissions -rw-------, which only allows the user that created the file to view/write the file contents.

    :arrow_right: Vulnerability Disclosure :arrow_left:

    :wave: Vulnerability disclosure is a super important part of the vulnerability handling process and should not be skipped! This may be completely new to you, and that's okay, I'm here to assist!

    First question, do we need to perform vulnerability disclosure? It depends!

    1. Is the vulnerable code only in tests or example code? No disclosure required!
    2. Is the vulnerable code in code shipped to your end users? Vulnerability disclosure is probably required!

    Vulnerability Disclosure How-To

    You have a few options options to perform vulnerability disclosure. However, I'd like to suggest the following 2 options:

    1. Request a CVE number from GitHub by creating a repository-level GitHub Security Advisory. This has the advantage that, if you provide sufficient information, GitHub will automatically generate Dependabot alerts for your downstream consumers, resolving this vulnerability more quickly.
    2. Reach out to the team at Snyk to assist with CVE issuance. They can be reached at the Snyk's Disclosure Email.

    Detecting this and Future Vulnerabilities

    This vulnerability was automatically detected by GitHub's CodeQL using this CodeQL Query.

    You can automatically detect future vulnerabilities like this by enabling the free (for open-source) GitHub Action.

    I'm not an employee of GitHub, I'm simply an open-source security researcher.

    Source

    This contribution was automatically generated with an OpenRewrite refactoring recipe, which was lovingly hand crafted to bring this security fix to your repository.

    The source code that generated this PR can be found here: SecureTempFileCreation

    Opting-Out

    If you'd like to opt-out of future automated security vulnerability fixes like this, please consider adding a file called .github/GH-ROBOTS.txt to your repository with the line:

    User-agent: JLLeitschuh/security-research
    Disallow: *
    

    This bot will respect the ROBOTS.txt format for future contributions.

    Alternatively, if this project is no longer actively maintained, consider archiving the repository.

    CLA Requirements

    This section is only relevant if your project requires contributors to sign a Contributor License Agreement (CLA) for external contributions.

    It is unlikely that I'll be able to directly sign CLAs. However, all contributed commits are already automatically signed-off.

    The meaning of a signoff depends on the project, but it typically certifies that committer has the rights to submit this work under the same license and agrees to a Developer Certificate of Origin (see https://developercertificate.org/ for more information).

    - Git Commit Signoff documentation

    If signing your organization's CLA is a strict-requirement for merging this contribution, please feel free to close this PR.

    Sponsorship & Support

    This contribution is sponsored by HUMAN Security Inc. and the new Dan Kaminsky Fellowship, a fellowship created to celebrate Dan's memory and legacy by funding open-source work that makes the world a better (and more secure) place.

    This PR was generated by Moderne, a free-for-open source SaaS offering that uses format-preserving AST transformations to fix bugs, standardize code style, apply best practices, migrate library versions, and fix common security vulnerabilities at scale.

    Tracking

    All PR's generated as part of this fix are tracked here: https://github.com/JLLeitschuh/security-research/issues/18

    opened by JLLeitschuh 0
  • [SECURITY] Fix Zip Slip Vulnerability

    [SECURITY] Fix Zip Slip Vulnerability

    Security Vulnerability Fix

    This pull request fixes a Zip Slip vulnerability either due to an insufficient, or missing guard when unzipping zip files.

    Even if you deem, as the maintainer of this project, this is not necessarily fixing a security vulnerability, it is still, most likely, a valid security hardening.

    Preamble

    Impact

    This issue allows a malicious zip file to potentially break out of the expected destination directory, writing contents into arbitrary locations on the file system. Overwriting certain files/directories could allow an attacker to achieve remote code execution on a target system by exploiting this vulnerability.

    Why?

    The best description of Zip-Slip can be found in the white paper published by Snyk: Zip Slip Vulnerability

    But I had a guard in place, why wasn't it sufficient?

    If the changes you see are a change to the guard, not the addition of a new guard, this is probably because this code contains a Zip-Slip vulnerability due to a partial path traversal vulnerability.

    To demonstrate this vulnerability, consider "/usr/outnot".startsWith("/usr/out"). The check is bypassed although /outnot is not under the /out directory. It's important to understand that the terminating slash may be removed when using various String representations of the File object. For example, on Linux, println(new File("/var")) will print /var, but println(new File("/var", "/") will print /var/; however, println(new File("/var", "/").getCanonicalPath()) will print /var.

    The Fix

    Implementing a guard comparing paths with the method java.nio.files.Path#startsWith will adequately protect against this vulnerability.

    For example: file.getCanonicalFile().toPath().startsWith(BASE_DIRECTORY) or file.getCanonicalFile().toPath().startsWith(BASE_DIRECTORY_FILE.getCanonicalFile().toPath())

    Other Examples

    :arrow_right: Vulnerability Disclosure :arrow_left:

    :wave: Vulnerability disclosure is a super important part of the vulnerability handling process and should not be skipped! This may be completely new to you, and that's okay, I'm here to assist!

    First question, do we need to perform vulnerability disclosure? It depends!

    1. Is the vulnerable code only in tests or example code? No disclosure required!
    2. Is the vulnerable code in code shipped to your end users? Vulnerability disclosure is probably required!

    For partial path traversal, consider if user-supplied input could ever flow to this logic. If user-supplied input could reach this conditional, it's insufficient and, as such, most likely a vulnerability.

    Vulnerability Disclosure How-To

    You have a few options options to perform vulnerability disclosure. However, I'd like to suggest the following 2 options:

    1. Request a CVE number from GitHub by creating a repository-level GitHub Security Advisory. This has the advantage that, if you provide sufficient information, GitHub will automatically generate Dependabot alerts for your downstream consumers, resolving this vulnerability more quickly.
    2. Reach out to the team at Snyk to assist with CVE issuance. They can be reached at the Snyk's Disclosure Email. Note: Please include JLLeitschuh Disclosure in the subject of your email so it is not missed.

    Detecting this and Future Vulnerabilities

    You can automatically detect future vulnerabilities like this by enabling the free (for open-source) GitHub Action.

    I'm not an employee of GitHub, I'm simply an open-source security researcher.

    Source

    This contribution was automatically generated with an OpenRewrite refactoring recipe, which was lovingly handcrafted to bring this security fix to your repository.

    The source code that generated this PR can be found here: Zip Slip

    Why didn't you disclose privately (ie. coordinated disclosure)?

    This PR was automatically generated, in-bulk, and sent to this project as well as many others, all at the same time.

    This is technically what is called a "Full Disclosure" in vulnerability disclosure, and I agree it's less than ideal. If GitHub offered a way to create private pull requests to submit pull requests, I'd leverage it, but that infrastructure, sadly, doesn't exist yet.

    The problem is that, as an open source software security researcher, I (exactly like open source maintainers), I only have so much time in a day. I'm able to find vulnerabilities impacting hundreds, or sometimes thousands of open source projects with tools like GitHub Code Search and CodeQL. The problem is that my knowledge of vulnerabilities doesn't scale very well.

    Individualized vulnerability disclosure takes time and care. It's a long and tedious process, and I have a significant amount of experience with it (I have over 50 CVEs to my name). Even tracking down the reporting channel (email, Jira, etc..) can take time and isn't automatable. Unfortunately, when facing problems of this scale, individual reporting doesn't work well either.

    Additionally, if I just spam out emails or issues, I'll just overwhelm already over-taxed maintainers, I don't want to do this either.

    By creating a pull request, I am aiming to provide maintainers something highly actionable to actually fix the identified vulnerability; a pull request.

    There's a larger discussion on this topic that can be found here: https://github.com/JLLeitschuh/security-research/discussions/12

    Opting Out

    If you'd like to opt out of future automated security vulnerability fixes like this, please consider adding a file called .github/GH-ROBOTS.txt to your repository with the line:

    User-agent: JLLeitschuh/security-research
    Disallow: *
    

    This bot will respect the ROBOTS.txt format for future contributions.

    Alternatively, if this project is no longer actively maintained, consider archiving the repository.

    CLA Requirements

    This section is only relevant if your project requires contributors to sign a Contributor License Agreement (CLA) for external contributions.

    It is unlikely that I'll be able to directly sign CLAs. However, all contributed commits are already automatically signed off.

    The meaning of a signoff depends on the project, but it typically certifies that committer has the rights to submit this work under the same license and agrees to a Developer Certificate of Origin (see https://developercertificate.org/ for more information).

    - Git Commit Signoff documentation

    If signing your organization's CLA is a strict-requirement for merging this contribution, please feel free to close this PR.

    Sponsorship & Support

    This contribution is sponsored by HUMAN Security Inc. and the new Dan Kaminsky Fellowship, a fellowship created to celebrate Dan's memory and legacy by funding open-source work that makes the world a better (and more secure) place.

    This PR was generated by Moderne, a free-for-open source SaaS offering that uses format-preserving AST transformations to fix bugs, standardize code style, apply best practices, migrate library versions, and fix common security vulnerabilities at scale.

    Tracking

    All PR's generated as part of this fix are tracked here: https://github.com/JLLeitschuh/security-research/issues/16

    opened by JLLeitschuh 0
  • JVM error when adding JavaFX modules

    JVM error when adding JavaFX modules

    I'm trying to use the JavaFX toolkit inside of my application. I'm running using OpenJDK 11.0.15 and running on Windows 10 64-bit. Using the latest 1.8.7 version of Getdown.

    I have added the following options to my getdown.txt file:

    # ---------------------------------------------------------------
    # Parameters passed to the JVM
    # ---------------------------------------------------------------
    
    jvmarg = -Xms256M
    jvmarg = -Xmx1024M
    jvmarg = -Djava.library.path=%APPDIR%/lib/native
    jvmarg = -Datms.log.type=log4j
    jvmarg = -DLOG=logs
    jvmarg = -Datms.log.dir=logs
    jvmarg = -Datms.log.filename=desktopDecoder.log
    jvmarg = -DrootWebUrl=http://10.1.249.13/inet/desktopdecoder
    jvmarg = --module-path %APPDIR%/javafx-sdk-11.0.2/lib
    jvmarg = --add-modules javafx.controls,javafx.fxml,javafx.web,javafx.media,javafx.swing
    

    However, when I compile and run the application I get a popup saying that the JVM can't be started (Error: Could not create the Java Virtual Machine) and the following error in the launcher.log file:

    Unrecognized option: --module-path C:\path\to\./javafx-sdk-11.0.2/lib

    Strangely enough, I tried taking the complete command line from the launcher.log file and ran it in a separate command prompt and had no issues starting the application using that approach. I tried single and double quoting the --module-path and --add-modules options but nothing worked.

    Thanks, Dave

    opened by dhirwin 1
  • generating digest file in a project that does not use a built tool such as maven, ant

    generating digest file in a project that does not use a built tool such as maven, ant

    Is there a way of generating the digest.txt file if you project is not using a built tool such as maven or ant. it seems the documentation only talks of getting it done with build tools

    opened by mwinensoaa 1
Owner
Three Rings
Three Rings
GitHub Action to download and install Oracle's Java Development Kit builds

oracle-actions/setup-java This action downloads a Java Development Kit (JDK) built by Oracle and installs it using actions/setup-java. JDKs built by O

Oracle GitHub Actions 43 Dec 15, 2022
Ini adalah Launcher SAMP untuk android, ini hanya untuk mengganti nama dan kemungkinan di update lanjutnya akan mendukung download client. Bersenang senanglah!!!

SAMP-Launcher-Android Ini adalah Launcher SAMP untuk android, ini hanya untuk mengganti nama dan kemungkinan di update lanjutnya akan mendukung downlo

Kiril 3 Nov 3, 2022
An efficient map viewer for Minecraft seed in a nice GUI with utilities without ever needing to install Minecraft.

To download it head to the Releases section. To run it: either double click it on it if you have the Java Runtime (JRE) or use the command line (shift

Neil 127 Dec 24, 2022
Lightweight installer written in java, made for minecraft mods, The installer uses JPanel and uses a URL to install to the specific area (Discord URL's work the best i've seen)

InstallerForJava Lightweight installer written in java, made for minecraft mods, The installer uses JPanel and uses a URL to install to the specific a

null 18 Dec 9, 2022
XManager-Spotify - An android application where you can manage and install all versions of the spotify app.

For contributors, pull request should be done on the "Developer" branch. The "main" branch is for the release. IMPORTANT NOTES (READ ME FIRST) •xManag

xManager (Spotify) 3.7k Jan 3, 2023
InstallRepos - Install GitHub Repository on any Operating System (Linux, MacOS or Windows).

Install Repos Install GitHub Repository on any Operating System (Linux, MacOS or Windows). Requires Java JRE 17.0.0.1 or later. Repository Includes: s

Tushar Chaurasia 2 Apr 21, 2022
An Android library for member secretGFX group, This can be used to growing your apps and get more install via a simple banner view & native view and interstitial dialog.

GFX-AdPromote An Android library for member secretGFX group, This can be used to growing your apps and get more install via a simple banner view & nat

SAID MOTYA 10 Dec 25, 2022
TCP/IP packet demultiplexer. Download from:

TCPFLOW 1.5.0 Downloads directory: http://digitalcorpora.org/downloads/tcpflow/ Installation Most common GNU/Linux distributions ship tcpflow in their

Simson L. Garfinkel 1.5k Jan 4, 2023
Pcap editing and replay tools for *NIX and Windows - Users please download source from

Tcpreplay Tcpreplay is a suite of GPLv3 licensed utilities for UNIX (and Win32 under Cygwin) operating systems for editing and replaying network traff

AppNeta, Inc. 956 Dec 30, 2022
Prevent your mods being stolen onto 9minecraft and other reposting sites! Forces the user to download from curseforge, modrinth or a trusted site.

Prevent users from downloading your mods from reposting sites or malicious providers. Powered by the reposting site list from StopModReposts Important

i-am-cal 17 Sep 26, 2021
A Java script to download anime episodes from twist.moe

twist-moe-dl A simple Java script to download anime episodes from twist.moe. Usage git clone https://github.com/youngkaneda/twist-moe-dl cd twist-moe-

Juan Pablo 3 Aug 19, 2021
Prevent your mods being stolen onto 9minecraft and other reposting sites! Redirects the user to download from curseforge, modrinth or a trusted site.

Prevent users from downloading your mods from reposting sites or malicious providers. Powered by the reposting site list from StopModReposts Important

cal6541 17 Sep 26, 2021
YDI_B It is a project to download videos from YouTube

YDI-B in this project will be Application based YouTube url extractor . downloader youtube video and audio from url Gradle To always build from the la

ismail belgacem 6 Jun 27, 2022
Download compiled jar from packages or compile it by yourself from sources

idle_codes Install Download compiled jar from packages or compile it by yourself from sources Put the jar file wherever you want. Make sure you have J

null 8 Dec 31, 2021
The Download Manager uses a simple yet effective GUI interface built with java’s Swing libraries

The Download Manager uses a simple yet effective GUI interface built with java’s Swing libraries.The use of Swing gives the interface a crisp, modern look and feel. The GUI maintains a list of downloads that are currently being managed.

Manish Kumar Mahawar 2 Jan 2, 2022
Download or repost public instagram posts easily by selecting "Copy Link" in Instagram.

Insta Save and Repost Description Download or repost public instagram posts easily by selecting "Copy Link" in Instagram. Screenshots Features Downloa

null 1 Jan 21, 2022
Java, Spring Boot Mini Project - Library Management System - Free Download

Java, Spring Boot Mini Project - Library Management System Local setup Step 1: Download or clone the source code from GitHub to the local machine Step

Sibin Rasiya 15 Dec 27, 2022
A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.

ChartFx ChartFx is a scientific charting library developed at GSI for FAIR with focus on performance optimised real-time data visualisation at 25 Hz u

GSI CS-CO/ACO 386 Jan 2, 2023
A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.

ChartFx ChartFx is a scientific charting library developed at GSI for FAIR with focus on performance optimised real-time data visualisation at 25 Hz u

GSI CS-CO/ACO 385 Dec 30, 2022