Giter Club home page Giter Club logo

openfire-pionturn-plugin's Introduction

Openfire Pion TURN Plugin

This plugin provides a TURN/STUN Server for Openfire.

CI Build Status

Build Status

Overview

This plugin uses the Pion Turn Project (https://github.com/pion/turn) to create a TURN/STUN server for Openfire. A TURN/STUN server is used to help users who are on uncooperative networks connect their calls or video calls. For this plugin to work, you will also need to install the plugin "External Service Discovery" in order to expose this service to the clients.

Known Issues

This version has embedded binaries for only Linux 64 and Windows 64.

Installation

  1. Copy the pionturn.jar file to the OPENFIRE_HOME/plugins directory.
  2. Configure the admin properties page.

Configuration of the External Service Discovery

Head to 'Server>Media Services>External Service Discovery' and set the fields:
  • Host*: With your server's external IP address if you have a static IP (highly recommended) or with your domain name (if you are running with dynamicIP)
  • Port: Here choose a port number (you will have to allow this port in your firewall as UDP only and also port forward in case you are behind a NAT).
  • Description: In this one you can write anything you want, but it is recommended to write something (it will help Pionturn identify the configuration, otherwise you will see it as "null").
  • Transport: "UDP"
  • Type*: "TURN"
  • Credentials: Here you have 2 options, but it is highly recommended that you go with "Shared Secret (for generating ephemeral passwords)" and then set a secret. But be aware some characters might cause some issues. So it's better to stick with alphanumericals.
  • After that, just click on the button "Add Service".

    Configuration of the Pion Turn Plugin

    Head to 'Server>Media Services>Pion Turn/Stun' and set the fields:
  • Check the box for "Enabled"
  • Service: Here you select the field which matches with your External Service Discovery Description(Pionturn will then grab all the info you did set there).
  • UDP Port Range Min: this will be your lower port on the UDP range used by the TURN server. You will have to allow it on the firewall and also port forward (the whole range) in case you are behind NAT.
  • UDP Port Range Max: this will be your higher port on the UDP range used by the TURN server. You will have to allow it on the firewall and also port forward (the whole range) in case you are behind NAT.
  • After that just click "Save" and don't forget to go to 'Plugins' and restart the Pionturn plugin.

    Reporting Issues

    Issues may be reported to the forums or via this repo's Github Issues.

    openfire-pionturn-plugin's People

    Contributors

    akrherz avatar deleolajide avatar fishbowler avatar naive924 avatar zoidberg2 avatar

    Stargazers

     avatar  avatar

    Watchers

     avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

    openfire-pionturn-plugin's Issues

    How to add it to openfire server.

    Hello,
    can u add a compilled functional plugin for download too and some enhance description? does it work with Conversations android app?

    Thanx in Advance :)

    Brut

    Dynamic IP challenge.

    For people that are running their servers in a dynamic IP environment using the Pionturn plugin for Openfire is a challenge.
    every time the IP changes server admins will have to open the admin panel and update the IP manually on the Pionturn side.
    this issue will be even bigger with the new release, requiring the users to re config everything in the External Service Discovery then going to the plugin to catch again the settings from the External Service Discovery and then reloading the plugin again.
    Some comments about this made me believe that this mechanism that is already implemented by Pionturn itself would solve this issue by looking up the DNS name:(pion/turn#244). however i did not succeed in implementing this mechanism into the Pionturn binaries.
    although this also could be solved by other ways for example something in your java code to do something like: check the external IP if the same do nothing, if changed then apply the new IP + reload the plugin? doing this like every 10 minutes?
    but it certainly also uses more resources and if an user actually have an static IP this would not even be necessary.

    Read me doesn't reflect the actual state of the plugin.

    As of the latest upgrade of the Pionturn plugin version 0.0.5 the introduction of the Port Range as a setting the plugin no longer is required to be in a "Non Natted" environment. All one user have to do to make this work is to portfoward the 3478/UDP (or
    the chosen customized port) and also portfoward the range(Default 50000:55000, that can also be customized)

    Feature request

    Hello, With the latest code of the Pionturn plugin, it is now possible to use the more secure Ephemeral secret (TURN REST compatible now with the Openfire External Service Discovery plugin) as the credentials. this mechanism greatly improves the security of the TURN server making it impossible for someone eaves dropping to be able to actually know the real password. it would improve the Openfire Pionturn plugin to a much better standard (along side with your new addition the Port Range of course). Thanks for reading. here is a link to the new format:
    https://github.com/pion/turn/tree/master/examples/turn-server/lt-cred-turn-rest

    Pion TURN executable not spawned by 32-bit JRE on Windows x64

    For Openfire 4.6.4 with 32-bit bundled JRE, the following error occurs at start-up:

    2021.07.12 19:16:02 ERROR [pool-13228-thread-1]: org.ifsoft.turn.openfire.PionTurn - checkNatives unknown OS C:\Programs\Openfire\plugins\pionturn
    2021.07.12 19:16:02 INFO  [pool-13228-thread-1]: org.ifsoft.turn.openfire.PionTurn - PionTurn disabled
    2021.07.12 19:16:02 INFO  [pool-13228-thread-1]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'pionturn'.
    

    This can be fixed by changing the following condition in PionTurn.java to OSUtils.IS_WINDOWS:

    else if(OSUtils.IS_WINDOWS64)
    {
        suffix = "win-64" + File.separator + "turn-server-log.exe";
    }
    

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google โค๏ธ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.