• Stars
    star
    121
  • Rank 287,946 (Top 6 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Cordova plugin for managing Wifi networks (new version of WiFiWizard) - Latest is version 3+

WiFiWizard2 - 3.1.1

Table of Contents

About

WifiWizard2 enables Wifi management for both Android and iOS applications within Cordova/Phonegap projects.

This project is a fork of the WifiWizard plugin with fixes and updates, as well as patches taken from the Cordova Network Manager plugin.

Version 3.0.0+ has undergone a TON of changes from the original fork (version 2.0), and the majority of method/functions have been changed. You can find the latest release of version 2 on the 2.1.x branch

The recommended version to use is the latest 3+ as that is the version that is actively maintained.

iOS has limited functionality as Apple's WifiManager equivalent is only available as a private API. Any app that used these features would not be allowed on the app store.

If you are an iOS developer, please consider helping us to resolve the open iOS issues

If you are an Android developer, please consider helping us to refactor the current code base

If you're a Cordova developer, please consider helping out this project, open a new issue, a PR, or contact me directly

Basics

This plugin creates the object WifiWizard2 and is accessible after deviceready has been fired, see Cordova deviceready Event Docs

document.addEventListener('deviceready', function () {
    // Call some WifiWizard2.method after deviceready fired
}, false);

This is really only necessary if you plan on immediately invoking one of this plugin's methods/functions, as the majority of the time you would probably just call the method/function on say, a button click to scan for networks, etc. Basically if you are going to call something immediately when a webview is shown, make sure to add the event listener for deviceready before making that call, otherwise you probably don't need to.

Async Handling

Because Cordova exec calls are made asynchronously, all methods/functions return async promises. These functions will return the results, or a JavaScript error. You should use await and try/catch blocks (or .then and .catch). See below for more details, and examples.

Callbacks are not longer supported in this plugin

Promises are handled by the Cordova PromisesPlugin as an ES6 polyfill if your application does not already define window.Promise

Demo Meteor Project

To test this plugin as well as provide some example code for others to work off of, I have created an example Meteor project you can find here:

https://github.com/tripflex/WifiWizard2Demo

This demo has examples of using both async functions (with async/await and try/catch blocks), as well as non async functions with .then and .catch

Android and IOS Permissions and Notes

In order to obtain scan results (to call scan or startScan then getScanResults) your application must have the ACCESS_FINE_LOCATION Android Permission. You can do this by calling the requestPermission method detailed below, or this plugin will automagically do this for you when you call scan or startScan functions.

Newer versions of Android will not allow you to remove, update existing configuration, or disable networks that were not created by your application. If you are having issues using this features, with your device connected to your computer, run adb logcat to view Android Logs for specific error.

IOS Notes

iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. If you also want to use the iOS specific connection functions the Hotspot Configuration capability. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.

Ionic/Angular Notes

This plugin does not have @ionic/native typings (yet), in order to use it add this to just below your import list on your service: declare var WifiWizard2: any;

Global Functions

These are functions that can be used by both Android and iOS applications

WifiWizard2.getConnectedSSID()
  • Returns connected network SSID (only if connected) in success callback, otherwise fail callback will be called (if not connected or unable to retrieve)
  • This does NOT return the BSSID if unable to obtain SSID (like original WifiWizard did)
WifiWizard2.getConnectedBSSID()
  • Same as above, except BSSID (mac) is returned
WifiWizard2.timeout(delay)
  • delay should be time in milliseconds to delay
  • Helper async timeout delay, delay is optional, default is 2000ms = 2 seconds
  • This method always returns a resolved promise after the delay, it will never reject or throw an error

Example inside async function

async function example(){
    await WifiWizard2.timeout(4000);
    // do something after 4 seconds
}

Example inside standard non-async function

function example(){
    WifiWizard2.timeout(4000).then( function(){
        // do something after waiting 4 seconds
    }):
}

Thrown Errors

  • TIMEOUT_WAITING_FOR_SCAN on timeout waiting for scan 10 seconds +
  • SCAN_FAILED if unable to start scan

iOS Functions

For functionality, you need to note the following:

  • Connect/Disconnect only works for iOS11+
  • Can not run in the simulator so you need to attach an actual device when building with Xcode
  • Make sure 'HotspotConfiguration' and 'NetworkExtensions' capabilities are added to your Xcode project
  • To connect to open network omit ssidPassword or call with false
WifiWizard2.iOSConnectNetwork(ssid, ssidPassword)
WifiWizard2.iOSDisconnectNetwork(ssid)

Android Functions

  • WifiWizard2 will automagically try to enable WiFi if it's disabled when calling any android related methods that require WiFi to be enabled

Connect vs Enable

When writing Android Java code, there is no connect methods, you basically either enable or disable a network. In the original versions of WifiWizard the connect method would basically just call enable in Android. I have changed the way this works in WifiWizard2 version 3.0.0+, converting it to a helper method to eliminate having to call formatWifiConfig then add and then enable ... the connect method will now automatically call formatWifiConfig, then call add to either add or update the network configuration, and then call enable. If the connect method is unable to update existing network configuration (added by user or other apps), but there is a valid network ID, it will still attempt to enable that network ID.

WifiWizard2.connect(ssid, bindAll, password, algorithm, isHiddenSSID)
  • ssid should be the SSID to connect to required
  • bindAll should be set to true to tell Android to route all connections from your Android app, through the wifi connection (default is false) optional
    • See WifiWizard2.enable for more details regarding bindAll feature
  • algorithm and password is not required if connecting to an open network
  • Currently WPA and WEP are only supported algorithms
  • For WPA2 just pass WPA as the algorithm
  • Set isHiddenSSID to true if the network you're connecting to is hidden
  • These arguments are the same as for formatWifiConfig
  • This method essentially calls formatWifiConfig then add then enable
  • If unable to update network configuration (was added by user or other app), but a valid network ID exists, this method will still attempt to enable the network
  • Promise will not be returned until method has verified that connection to WiFi was in completed state (waits up to 60 seconds)

Thrown Errors

  • CONNECT_FAILED_TIMEOUT unable to verify connection, timed out after 60 seconds
  • INVALID_NETWORK_ID_TO_CONNECT Unable to connect based on generated wifi config
  • INTERPUT_EXCEPT_WHILE_CONNECTING Interupt exception while waiting for connection

Disconnect vs Disable

Same as above for Connect vs Enable, except in this situation, disconnect will first disable the network, and then attempt to remove it (if SSID is passed)

WifiWizard2.disconnect(ssid)
  • ssid can either be an SSID (string) or a network ID (integer)
  • ssid is OPTIONAL .. if not passed, will disconnect current WiFi (almost all Android versions now will just automatically reconnect to last wifi after disconnecting)
  • If ssid is provided, this method will first attempt to disable and then remove the network
  • If you do not want to remove network configuration, use disable instead

Thrown Errors

  • DISCONNECT_NET_REMOVE_ERROR Android returned error when removing wifi configuration
  • DISCONNECT_NET_DISABLE_ERROR Unable to connect based on generated wifi config
  • DISCONNECT_NET_ID_NOT_FOUND Unable to determine network ID to disconnect/remove (from passed SSID)
  • ERROR_DISCONNECT - Android error disconnecting wifi (only when SSID is not passed)
WifiWizard2.formatWifiConfig(ssid, password, algorithm, isHiddenSSID)
  • algorithm and password is not required if connecting to an open network
  • Currently WPA and WEP are only supported algorithms
  • For WPA2 just pass WPA as the algorithm
  • Set isHiddenSSID to true if the network you're connecting to is hidden
WifiWizard2.formatWPAConfig(ssid, password, isHiddenSSID)
  • This is just a helper method that calls WifiWizard2.formatWifiConfig( ssid, password, 'WPA', isHiddenSSID );
WifiWizard2.add(wifi)
  • wifi must be an object formatted by formatWifiConfig, this must be done before calling enable

Thrown Errors

  • AUTH_TYPE_NOT_SUPPORTED - Invalid auth type specified
  • ERROR_ADDING_NETWORK - Android returned -1 specifying error adding network
  • ERROR_UPDATING_NETWORK - Same as above, except an existing network ID was found, and unable to update it
WifiWizard2.remove(ssid)
  • ssid can either be an SSID (string) or a network ID (integer)
  • Please note, most newer versions of Android will only allow wifi to be removed if created by your application

Thrown Errors

  • UNABLE_TO_REMOVE Android returned failure in removing network
  • REMOVE_NETWORK_NOT_FOUND Unable to determine network ID from passed SSID
WifiWizard2.listNetworks()
WifiWizard2.scan([options])
  • Same as calling startScan and then getScanResults, except this method will only resolve the promise after the scan completes and returns the results.
WifiWizard2.startScan()
  • It is recommended to just use the scan method instead of startScan

Thrown Errors

  • STARTSCAN_FAILED Android returned failure in starting scan
WifiWizard2.getScanResults([options])
  • getScanResults should only be called after calling startScan (it is recommended to use scan instead as this starts the scan, then returns the results)
  • [options] is optional, if you do not want to specify, just pass success callback as first parameter, and fail callback as second parameter
  • Retrieves a list of the available networks as an array of objects and passes them to the function listHandler. The format of the array is:
networks = [
    {   "level": signal_level, // raw RSSI value
        "SSID": ssid, // SSID as string, with escaped double quotes: "\"ssid name\""
        "BSSID": bssid // MAC address of WiFi router as string
        "frequency": frequency of the access point channel in MHz
        "capabilities": capabilities // Describes the authentication, key management, and encryption schemes supported by the access point.
        "timestamp": timestamp // timestamp of when the scan was completed
        "channelWidth":
        "centerFreq0":
        "centerFreq1":
    }
]
  • channelWidth centerFreq0 and centerFreq1 are only supported on API > 23 (Marshmallow), any older API will return null for these values

An options object may be passed. Currently, the only supported option is numLevels, and it has the following behavior:

  • if (n == true || n < 2), *.getScanResults({numLevels: n}) will return data as before, split in 5 levels;
  • if (n > 1), *.getScanResults({numLevels: n}) will calculate the signal level, split in n levels;
  • if (n == false), *.getScanResults({numLevels: n}) will use the raw signal level;
WifiWizard2.isWifiEnabled()
  • Returns boolean value of whether Wifi is enabled or not
WifiWizard2.setWifiEnabled(enabled)
  • Pass true for enabled parameter to set Wifi enabled
  • You do not need to call this function to set WiFi enabled to call other methods that require wifi enabled. This plugin will automagically enable WiFi if a method is called that requires WiFi to be enabled.

Thrown Errors

  • ERROR_SETWIFIENABLED wifi state does not match call (enable or disable)
WifiWizard2.getConnectedNetworkID()
  • Returns currently connected network ID in success callback (only if connected), otherwise fail callback will be called

Thrown Errors

  • GET_CONNECTED_NET_ID_ERROR Unable to determine currently connected network ID (may not be connected)

New to 3.1.1+

WifiWizard2.resetBindAll()
  • Disable bindAll to WiFi network without disconnecting from WiFi
WifiWizard2.setBindAll()
  • Enable bindAll to WiFi network without disconnecting from WiFi
WifiWizard2.canConnectToInternet()
  • Returns boolean, true or false, if device is able to connect to https://www.google.com via HTTP connection (since ping is unreliable)
  • Unknown errors will still be thrown like all other async functions
  • If you called connect or enable and passed true for bindAll, your application will force the ping through wifi connection.
  • If you did not pass true (or passed false) for bindAll, and the wifi does not have internet connection, Android Lollipop+ (API 21+) will use cell connection to ping (due to Android using cell connection when wifi does not have internet) More Details
WifiWizard2.canConnectToRouter()
  • As canPingWifiRouter is notoriously unreliable, this method uses HTTP connection to test if able to connect to router (as most routers should have web server running on port 80)
  • Unknown errors will still be thrown like all other async functions
  • This is useful for testing to make sure that your Android app is able to connect to the private network after connecting to WiFi
  • This was added for testing the bindAll feature to support issues with Android Lollipop+ (API 21+) not routing calls through WiFi if WiFi does not have internet connection See Android Blog
  • Attempts to connect router IP HTTP server on port 80 (example: http://192.168.0.1/ where 192.168.0.1 is the automatically detected IP address)

New to 3.0.0+

WifiWizard2.isConnectedToInternet()
  • Returns boolean, true or false, if device is able to ping 8.8.8.8
  • Unknown errors will still be thrown like all other async functions
  • If you called connect or enable and passed true for bindAll, your application will force the ping through wifi connection.
  • If you did not pass true (or passed false) for bindAll, and the wifi does not have internet connection, Android Lollipop+ (API 21+) will use cell connection to ping (due to Android using cell connection when wifi does not have internet) More Details
WifiWizard2.canPingWifiRouter()
  • Returns boolean, true or false, if device is able to ping the connected WiFi router IP (obtained from DHCP info)
  • Version 3.1.1+ uses HTTP connection to test if able to connect to router (as ping previous did not work)
  • Unknown errors will still be thrown like all other async functions
  • This is useful for testing to make sure that your Android app is able to connect to the private network after connecting to WiFi
  • This was added for testing the bindAll feature to support issues with Android Lollipop+ (API 21+) not routing calls through WiFi if WiFi does not have internet connection See Android Blog
WifiWizard2.enableWifi()
WifiWizard2.disableWifi()
WifiWizard2.getWifiIP()
  • Returns IPv4 address of currently connected WiFi, or rejects promise if IP not found or wifi not connected
WifiWizard2.getWifiRouterIP()
  • Returns IPv4 WiFi router IP from currently connected WiFi, or rejects promise if unable to determine, or wifi not connected

Thrown Errors

  • NO_VALID_IP_IDENTIFIED if unable to determine a valid IP (ip returned from device is 0.0.0.0)
WifiWizard2.getWifiIPInfo()
  • Returns a JSON object with IPv4 address and subnet {"ip": "192.168.1.2", "subnet": "255.255.255.0" } or rejected promise if not found or not connected Thrown Errors

  • NO_VALID_IP_IDENTIFIED if unable to determine a valid IP (ip returned from device is 0.0.0.0)

WifiWizard2.reconnect()
  • Reconnect to the currently active access point, if we are currently disconnected.

Thrown Errors

  • ERROR_RECONNECT Android returned error when reconnecting
WifiWizard2.reassociate()
  • Reconnect to the currently active access point, even if we are already connected.

Thrown Errors

  • ERROR_REASSOCIATE Android returned error when reassociating
WifiWizard2.getSSIDNetworkID(ssid)
  • Get Android Network ID from passed SSID
WifiWizard2.disable(ssid)
  • ssid can either be an SSID (string) or a network ID (integer)
  • Disable the passed SSID network
  • Please note that most newer versions of Android will only allow you to disable networks created by your application

Thrown Errors

  • UNABLE_TO_DISABLE Android returned failure in disabling network
  • DISABLE_NETWORK_NOT_FOUND Unable to determine network ID from passed SSID to disable
WifiWizard2.requestPermission()
  • Request ACCESS_FINE_LOCATION permssion
  • This Android permission is required to run scan, startStart and getScanResults
  • You can request permission by running this function manually, or WifiWizard2 will automagically request permission when one of the functions above is called

Thrown Errors

  • PERMISSION_DENIED user denied permission on device
WifiWizard2.enable(ssid, bindAll, waitForConnection)
  • ssid can either be an SSID (string) or a network ID (integer)
  • bindAll should be set to true to tell Android to route all connections from your Android app, through the wifi connection
    • Android Lollipop+ (API 21+) will not route connections to the WiFi device if it does not have internet connection. Passing true to bindAll will force Android to route connections from your Android app through Wifi, regardless of internet connection.
    • If you are having problems connecting to a local IP through WiFi because it does not have internet, try enabling bindAll and this should fix the problem.
    • During my testing, some versions of Android (5.0 - 7.1.2) would still route connections through WiFi without internet, but it was random that some versions would and would not work.
    • Testing Android Oreo+ (8.0.0+) if wifi does not have internet, 100% of the time it would NOT route connections through WiFi, so you must enable this for Oreo or newer to route connections from your application through wifi without internet.
    • When bindAll is enabled, ALL connections from your app will be routed through WiFi, until you call disconnect or disable
    • See the Google Android Blog for More Details
    • This feature ONLY works for Android Lollipop+ (API 21+), if device is running API older than 21, bindall will be ignored (as API older than 21 does this by default)
  • Enable the passed SSID network
  • You MUST call WifiWizard2.add(wifi) before calling enable as the wifi configuration must exist before you can enable it (or previously used connect without calling disconnect)
  • This method does NOT wait or verify connection to wifi network, pass true to waitForConnection to only return promise once connection is verified in COMPLETED state to specific ssid

Thrown Errors

UNABLE_TO_ENABLE - Android returned -1 signifying failure enabling

Installation

Master

Run cordova plugin add https://github.com/tripflex/wifiwizard2

To install from the master branch (latest on GitHub)

To install a specific branch (add #tag replacing tag with tag from this repo, example: cordova plugin add https://github.com/tripflex/wifiwizard2#v3.1.1

Find available tags here: https://github.com/tripflex/WifiWizard2/tags

If you are wanting to have the latest and greatest stable version, then run the 'Releases' command below.

Releases

Run cordova plugin add cordova-plugin-wifiwizard2

Meteor

To install and use this plugin in a Meteor project, you have to specify the exact version from NPM repository: https://www.npmjs.com/package/cordova-plugin-wifiwizard2

As of April 4th 2019, the latest version is 3.1.1:

meteor add cordova:[email protected]

Errors/Rejections

Methods now return formatted string errors as detailed below, instead of returning generic error messages. This allows you to check yourself what specific error was returned, and customize the error message. In an upcoming release I may add easy ways to override generic messages, or set your own, but for now, errors returned can be found below each method/function.

Generic Thrown Errors

WIFI_NOT_ENABLED

Examples

Please see demo Meteor project for code examples: https://github.com/tripflex/WifiWizard2Demo

Ionic/Angular Example (User Provided)

Props @13546777510 (Angelo Fan) has provided a basic Ionic/Angluar demo app: https://github.com/13546777510/WifiWizard2-Demo See issue #69 regarding this

I recommend using ES6 arrow functions to maintain this reference. This is especially useful if you're using Blaze and Meteor.

this.FirstName = 'John';

wifiConnection.then( result => {
   // Do something after connecting!
   // Using arrow functions, you still have access to `this`
   console.log( this.FirstName + ' connected to wifi!' );
});

#License Apache 2.0

Changelog:

3.1.1 - April 4, 2019

  • Fixed/Added location services check for Android 9+ for any method that utilises the getConnectionInfo method. Issue #71 (@arsenal942)
  • Move verifyWifiEnabled() to after methods that do not require wifi to be enabled. Issue #54 (@props seanyang1984)
  • Added canConnectToRouter() and canConnectToInternet() to use HTTP to test connection (since ping is notoriously unreliable)
  • Added canConnectToRouter(), canConnectToInternet(), canPingWifiRouter(), isConnectedToInternet() to iOS fn return not supported
  • Added resetBindAll() and setBindAll() for Android (props @saoron PR #74)
  • Use JSONObject.NULL instead of just null when scan results Android older than Marshmallow (props @seanyang1984) Issue #51

3.1.0 - August 28, 2018

  • Fixed/Added compatibility with iOS to connect to open network
  • Fixed Uncaught SyntaxError in JavaScript from using let (changed to var)
  • Fixed main thread blocked while connecting to a network by connecting asynchronously (props @jack828)
  • Add isHiddenSSID config for connecting Android devices to hidden networks (props @jack828)
  • Update iOSConnectNetwork to return real response in promise (props @saoron)
  • Correct iOS SSID comparison (props @saoron)
  • iOS Add HotspotConfiguration & NetworkExtension capabilities automatically (props @saoron)
  • Removed jdk.nashorn.internal.codegen.CompilerConstants import (props @jack828)
  • Reduce connection retry count from 60 -> 15 (props @jack828)
  • Fixed Object cannot be converted to int in Android code (props @xLarry)
  • Props to @arsenal942 @jack828 @xLarry @saoron for contributions

3.0.0 - April 12, 2018

  • Completely refactored JS methods, all now return Promises
  • Added getWifiIP and getWifiIPInfo functions
  • Added getWifiRouterIP function
  • Changed method names to be more generalized (connect instead of androidConnectNetwork, etc)
  • Added requestPermission and automatic request permission when call method that requires them
  • Added isConnectedToInternet to ping 8.8.8.8 and verify if wifi has internet connection
  • Added canPingWifiRouter to ping wifi router IP obtained through DHCP information
  • Added bindAll feature to use bindProcessToNetwork for Marshmallow (API 23+) and setProcessDefaultNetwork for Lollipop (API 21-22) More Details
  • Converted connect to helper method that calls formatWifiConfig then add then enable
  • Converted disconnect to helper method that calls disable then remove
  • Updated add method to set priority of added wifi to highest priority (locates max priority on existing networks and sets to +1)
  • Completely refactored and updated all documentation and examples
  • Added ping Android Java code for possible new methods to ping custom IP/URL (in upcoming releases)
  • Updated all error callbacks to use detectable strings (for custom error messages, instead of generic ones)
  • DO NOT upgrade from version 2.x.x without reading ENTIRE README! Method/Function names have all been changed!

2.1.1 - 1/9/2018

  • Added Async Promise based methods
  • Fix issue with thread running before wifi is fully enabled
  • Added thread sleep for up to 10 seconds waiting for wifi to enable

2.1.0 - 1/8/2018

  • Added Async Promise based methods
  • Fixed incorrect Android Cordova exec methods incorrectly being called and returned (fixes INVALID ACTION errors/warnings)
  • Updated javascript code to call fail callback when error detected in JS (before calling Cordova)
  • Moved automagically enabling WiFi to exec actions (before actions called that require wifi enabled)
  • Added es6-promise-plugin cordova dependency to plugin.xml
  • Only return false in Cordova Android execute when invalid action is called Issue #1
  • Added JS doc blocks to JS methods
  • Added Async example code

2.0.0 - 1/5/2018

  • Added automatic disable of currently connected network on connect call (to prevent reconnect to previous wifi ssid)
  • Added initial disconnect() before and reconnect() after disable/enable network on connect call
  • Added getConnectedNetworkID to return currently connected network ID
  • Added verifyWiFiEnabled to automatically enable WiFi for methods that require WiFi to be enabled
  • Strip enclosing double quotes returned on getSSID (android) @props lianghuiyuan
  • Fixed Android memory leak @props Maikell84
  • Add new ScanResult fields to results (centerFreq0,centerFreq1,channelWidth) @props essboyer
  • Added getConnectedBSSID to Android platform @props caiocruz
  • Added isWiFiEnabled implementation for ios @props caiocruz
  • Android Marshmallow Location Permissions Request @props jimcortez
  • Only return connected SSID if supplicantState is COMPLETED @props admund1
  • Added support for WEP @props adamtegen
  • Fix null issues with getConnectedSSID @props jeffcharles
  • Added scan method to return networks in callback @props jeffcharles
  • Call success callback after checking connection (on connect to network) @props jeffcharles

Changelog below this line, is from original WifiWizard

v0.2.9

isWifiEnabled bug fixed. level in getScanResults object now refers to raw RSSI value. The function now accepts an options object, and by specifiying { numLevels: value } you can get the old behavior.

v0.2.8

getScanResults now returns the BSSID along with the SSID and strength of the network.

v0.2.7

  • Clobber WifiWizard.js automatically via Cordova plugin architecture

v0.2.6

  • Added isWifiEnabled, setWifiEnabled

v0.2.5

  • Fixes getConnectedSSID error handlers

v0.2.4

  • Added getConnectedSSID method

v0.2.3

  • Added disconnect that does disconnection on current WiFi

v0.2.2

  • Added startScan and getScanResults

v0.2.1

  • Fixed reference problem in formatWPAConfig

v0.2.0

  • Changed format of wifiConfiguration object to allow more extensibility.

v0.1.1

  • addNetwork will now update the network if the SSID already exists.

v0.1.0

  • All functions now work!

v0.0.3

  • Fixed errors in native implementation. Currently, Add and Remove networks aren't working, but others are working as expected.

v0.0.2

  • Changed plugin.xml and WifiWizard.js to attach WifiWizard directly to the HTML.

v0.0.1

  • Initial commit

More Repositories

1

inodes

Bash/Shell script to count inode usage
Shell
83
star
2

MOD-t

NewMatter MOD-t 3d Printer Files, Firmware, Client Software, etc.
G-code
75
star
3

whmcs-affcoupons

WHMCS Addon to allow clients/customers to give out promo codes (or coupon codes) instead of affiliate link.
PHP
53
star
4

cpsetup

Intuitive bash/shell script to setup and harden/configure cPanel CentOS/RHEL server with ConfigServer Firewall, MailManage, MailQueue, Malware Detect, ClamAV, mod_cloudflare, CloudFlare RailGun, and many more applications and security tweaks
Perl
46
star
5

captive-portal-wifi-stack

Mongoose OS Captive Portal WiFi Stack - a full stack for Captive Portal WiFi Setup/Configuration (Captive Portal, WiFi Setup Web UI, WiFi Setup RPC)
31
star
6

piklist

Piklist is the developers best friend. A rapid development framework for WordPress that will let you concentrate on the main focus of your plugin or theme, and let Piklist handle everything else. ::NOTE:: This repo is automagically synced from the Wordpress SVN every 6 hours.
PHP
30
star
7

awesome-mongoose-os

A curated list of Awesome Resources for Mongoose OS
JavaScript
29
star
8

igitlab

GitLab shell/bash installer script for Ubuntu (really any Debian flavor)
29
star
9

builder-engine

Open Source CMS HTML5 Website Builder
JavaScript
25
star
10

wifi-captive-portal

Mongoose OS WiFi Captive Portal Library
JavaScript
23
star
11

wp-login-flow

WordPress wp-login.php complete customization, including activation via email using core forgot password form, custom permalink rewrites, image/header/link, colors, and more!
PHP
20
star
12

sublime-wp-developer-resources

Sublime Text 2/3 Plugin to search the new Wordpress Developer Resources (developer.wordpress.org)
Python
17
star
13

whmcs-pushover

Send WHMCS notifications using Pushover to Android and iPhone devices. Currently supports notification on new support ticket being opened and replies.
PHP
14
star
14

captive-portal

Mongoose OS Captive Portal Library
C
13
star
15

user-meta-display

Simple Wordpress plugin to display user meta from dropdown list
PHP
10
star
16

wp-tinymce-placeholder

TinyMCE plugin for placeholder attribute support in WordPress
JavaScript
10
star
17

plexmediaserver-init

INIT script for PlexMediaServer
10
star
18

VuetifyDialogLoader

Vuetify Dialog Loader Component (with SnackBar) component that can be used locally or globally
Vue
8
star
19

scripts

Collection of Bash, Shell, and Expect scripts for Linux.
Shell
7
star
20

wp-job-manager-field-editor-import

WP All Import addon support for WP Job Manager Field Editor
PHP
6
star
21

whmcs-purchaseorder

Custom WHMCS Gateway to allow clients to use Purchase Orders, and Auto Activate, using Custom Client Field
PHP
6
star
22

wp-job-manager-shortwidget

WP Job Manager Shortcode and Widget Builder
PHP
6
star
23

whmcs-dynadot

WHMCS Dynadot registrar module using API v3
PHP
6
star
24

ajenti-v-wp-nginx

Custom Nginx configuration files for use with Ajenti V
5
star
25

wp_dropdown_posts

WordPress wp_dropdown_posts() function, or at least my own version of it :)
PHP
5
star
26

vue-firebase-anon-convert

Vue.js and Firebase/Firestore Anonymous User Account convert with User Profile collection data
JavaScript
5
star
27

vue-wp-admin-ajax

Vue.js plugin wrapper around axios for making AJAX calls to WordPress admin-ajax.php (IN DEVELOPMENT)
JavaScript
4
star
28

captive-portal-wifi-stack-demo

Mongoose OS Captive Portal WiFi Stack Demo Application - Full demo Mongoose OS application to show off my full stack captive portal library
C
4
star
29

whmcs-livesupport

WHMCS Addons has an official GitHub for this addon
PHP
4
star
30

wp-job-manager-empty-meta-cleanup

Clean up and prevent empty meta from being saved for Job, Company, or Resume listings in database
PHP
4
star
31

whmcs-responsetime

WHMCS Module and Widget for average support ticket response times.
4
star
32

SublimeWordpressCodexQueryPosts

Sublime Text 3 Plugin to search Wordpress Codex, or QueryPosts for any term or a specific function in only two clicks.
Python
4
star
33

meteor-suiblocker

Meteor UI blocker/loader/spinner using Semantic UI dimmer and loader with Blaze
CSS
3
star
34

captive-portal-wifi-rpc

Mongoose OS Captive Portal WiFi RPC Library
C
3
star
35

resourcify

Resourcify is a Wordpress Plugin that will allow you to add Sources, Resources, and Quote Sources to a post.
PHP
3
star
36

captive-portal-wifi-setup

Mongoose OS WiFi Setup Library (Captive Portal)
C
3
star
37

whmcs-widget-hetzner

WHMCS Hetzner Widget
PHP
3
star
38

wp-job-manager-registration-use-email

Wordpress plugin for WP Job Manager to use email address as username when a new user registers. Compatible with Jobify.
PHP
3
star
39

observium-sensors

Additional sensors for Observium NMS
PHP
3
star
40

captive-portal-wifi-web

Mongoose OS Wifi Web UI Configuration library
JavaScript
3
star
41

wordcamp-miami-badges

Wordpress plugin to display Wordcamp Miami 2014 badges on your website using Shortcodes or Widgets
PHP
3
star
42

vue-datetime

JavaScript
2
star
43

provision-wifi

Mongoose OS WiFi Provisioning library to check/test WiFi credentials, and save them to STA configuration
C
2
star
44

wp-advanced-cron-manager

WordPress Advanced Cron Manager Plugin
PHP
2
star
45

rigelvipor

Shell
2
star
46

hastebin-python-client

Python client for hastebin (similar to PasteBin)
Python
2
star
47

NEOv2

OSM (Open Source Microlight) & OSM2 NEO Arduino Codebase (Unofficial Repository)
Arduino
2
star
48

mqtt-queue-gcp

MQTT file queue handler library for Mongoose OS and GCP (Google Cloud Platform/Google Core IoT)
C
2
star
49

iPlex

Plex install helper for debian without upstart (init.d script)
2
star
50

wp-job-manager-cat-colors

Wordpress plugin to change a job category color without editing CSS. This plugin was created from Astoundify's Job Colors for Job Types. You will need to add some HTML and PHP code to your template file in order to display the Job Category with the included styling.
PHP
2
star
51

meteor-ionicons3

Meteor package for Ionic Icons (ionicons) version 3, with offline support (does not load via CDN or URL)
CSS
1
star
52

whmcs-collective

WHMCS Collective KB Module
PHP
1
star
53

cloudflarecp

Bash/Shell script to install, and add IPs to CSF for CloudFlare on a cPanel server
1
star
54

mongoose-os-ide

Mongoose OS IDE
TypeScript
1
star
55

generator-wpplugin

Yeoman WordPress plugin generator based off the WebDevStudios yeoman plugin generator
JavaScript
1
star
56

d3-js

JavaScript for new FDOT District 3 website, which parses xml data directly from SunGuide
JavaScript
1
star
57

pantheon-env-admin-bar

Show the current Pantheon environment in WordPress admin bar
PHP
1
star
58

newwp

Wordpress starter configuration (organized directories) based off the Wordpress Hacker's Guide to the Galaxy
PHP
1
star
59

radiatorz

Fork of Hive https://github.com/radifier/radiator with tweaks
Shell
1
star
60

meteor-homie

Meteor package to general Homie iot configuration, and helper methods
JavaScript
1
star
61

WifiWizard2Demo

Demo Meteor application for the WifiWizard2 cordova plugin
JavaScript
1
star
62

download-monitor-page-addon-qr

Display QR code on Download Monitor information/detail page
CSS
1
star
63

clicmd

Just a repo of useful shell commands :)
1
star
64

postcpbackup

Automatic cPanel backup rotation. Allows you to create multiple cPanel backups for daily, weekly, and monthly backups using built-in backup system for cPanel.
Shell
1
star
65

wpu-sso-enhanced

WP Ultimo 1.x enhancement for Mercator SSO to support custom domains with recent SameSite=Lax change in Chrome, etc.
PHP
1
star