Skip to content

Commit

Permalink
feat: support for enhanced authentication (#111)
Browse files Browse the repository at this point in the history
  • Loading branch information
Rory-Z committed Dec 21, 2020
1 parent 9e867b1 commit 4330899
Show file tree
Hide file tree
Showing 8 changed files with 308 additions and 79 deletions.
71 changes: 18 additions & 53 deletions .github/workflows/build_packages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,28 @@ jobs:
strategy:
matrix:
os:
- ubuntu20.04
- ubuntu18.04
- ubuntu16.04
- ubuntu14.04
- debian10
- debian9
- debian8
- opensuse
- centos8
- centos7
- centos6

steps:
- uses: actions/checkout@v1
- name: build emqx packages
env:
ERL_OTP: erl22.1
ERL_OTP: erl22.3
SYSTEM: ${{ matrix.os }}
run: |
docker run -i --name emqtt-$SYSTEM-build -v $(pwd):/emqtt emqx/build-env:$ERL_OTP-$SYSTEM /bin/bash -c "cd /emqtt && .github/workflows/script/build.sh"
cd _packages && for var in $(ls); do sudo bash -c "echo $(sha256sum $var | awk '{print $1}') > $var.sha256"; done && cd -
- uses: actions/upload-artifact@v1
with:
name: packages-${{ matrix.os }}
name: packages
path: _packages/.

build-on-mac:
Expand All @@ -47,9 +47,9 @@ jobs:
- uses: actions/checkout@v1
- name: prepare
run: |
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install curl zip unzip gnu-sed erlang
echo "/usr/local/bin:$PATH" >> ~/.bashrc
brew install curl zip unzip gnu-sed erlang@22
echo "/usr/local/opt/erlang@22/bin" >> $GITHUB_PATH
echo "/usr/local/bin" >> $GITHUB_PATH
- name: install rebar3
run: |
curl -Lo /usr/local/bin/rebar3 https://s3.amazonaws.com/rebar3/rebar3
Expand All @@ -73,63 +73,28 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v1
with:
name: packages-ubuntu18.04
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-ubuntu16.04
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-ubuntu14.04
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-debian10
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-debian9
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-debian8
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-opensuse
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-centos7
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-centos6
path: _packages
- uses: actions/download-artifact@v1
with:
name: packages-mac
name: packages
path: _packages
- name: get packages
run: |
cd _packages && for var in $( ls |grep emqtt |grep -v sha256); do
echo "$(cat $var.sha256) $var" | sha256sum -c || exit 1
done
- name: set aws
if: github.event_name == 'release'
run: |
curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws configure set aws_access_key_id ${{ secrets.AwsAccessKeyId }}
aws configure set aws_secret_access_key ${{ secrets.AwsSecretAccessKey }}
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws configure set default.region us-west-2
- name: get packages
run: |
cd _packages && for var in $( ls |grep emqtt |grep -v sha256); do
echo "$(cat $var.sha256) $var" | sha256sum -c || exit 1
done
- name: upload aws
if: github.event_name == 'release'
run: |
version=$(echo ${{ github.ref }} | sed -r "s .*/.*/(.*) \1 g")
aws s3 cp --recursive ./_packages s3://packages.emqx.io/emqtt/$version
aws cloudfront create-invalidation --distribution-id E3TYD0WSP4S14P --paths "/emqtt/$version/*"
aws s3 cp --recursive ./_packages s3://packages.emqx/emqtt/$version
aws cloudfront create-invalidation --distribution-id E170YEULGLT8XB --paths "/emqtt/$version/*"
- name: upload github
if: github.event_name == 'release'
run: |
Expand Down
10 changes: 0 additions & 10 deletions .travis.yml

This file was deleted.

46 changes: 45 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,8 @@ option() = {name, atom()} |
{auto_ack, boolean()} |
{ack_timeout, pos_integer()} |
{force_ping, boolean()} |
{properties, properties()}
{properties, properties()} |
{enhanced_auth, enhanced_auth()}
```

<span id="client">**client()**</span>
Expand Down Expand Up @@ -470,6 +471,33 @@ pubopt() = {retain, boolean()} |
reason_code() = 0..16#FF
```

<span id="method">**method()**</span>

```
method() = binary()
```

<span id="params">**params()**</span>

```
params() = any()
```

<span id="enhanced_auth_state">**enhanced_auth_state()**</span>

```
enhanced_auth_state() = #{method => method(), params => params(), stage => initialized | atom(), latest_server_data => undefined | binary(), any() => any()}).
```

<span id="enhanced_auth">**enhanced_auth()**</span>

```
enhanced_auth() = #{method => method(), params => params()} |
#{method => method(), params => params(),
function => fun((EnhancedAuthState :: enhanced_auth_state()) ->
{ok, NEnhancedAuthState :: enhanced_auth_state()} | {ok, NAuthData :: binary(), NEnhancedAuthState :: enhanced_auth_state()})}
```

### Exports

**emqtt:start_link() -> {ok, Pid} | ignore | {error, Reason}**
Expand Down Expand Up @@ -596,6 +624,10 @@ If false (the default), if any other packet is sent during keep alive interval,

Properties of CONNECT packet.

`{enhanced_auth, EnhancedAuth}`

The data required to enhance authentication

**emqtt:connect(Client) -> {ok, Properties} | {error, Reason}**

&ensp;&ensp;**Types**
Expand Down Expand Up @@ -766,6 +798,18 @@ Send a `PUBREL` packet to the MQTT server. `PacketId`, `ReasonCode` and `Propert

Send a `PUBCOMP` packet to the MQTT server. `PacketId`, `ReasonCode` and `Properties` specify packet identifier, reason code and properties for `PUBCOMP` packet.

**emqtt:reauthentication(Client) -> ok**

**emqtt:reauthentication(Client, EnhancedAuth) -> ok**

&ensp;&ensp;**Types**

&ensp;&ensp;&ensp;&ensp;**Client = [client()](#client)**

&ensp;&ensp;&ensp;&ensp;**EnhancedAuth = [enhanced_auth](#enhanced_auth)**

Send a `AUTH` packet to the MQTT server.

**emqtt:subscriptions(Client) -> Subscriptions**

&ensp;&ensp;**Types**
Expand Down
17 changes: 9 additions & 8 deletions rebar.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{minimum_otp_vsn, "21.0"}.

{erl_opts, [debug_info,
warn_export_all,
warn_unused_vars,
warn_shadow_vars,
warn_unused_import,
Expand All @@ -10,7 +9,8 @@

{deps, [{cowlib, "2.8.0"},
{gun, {git, "https://github.com/emqx/gun", {tag, "1.3.4"}}},
{getopt, "1.0.1"}
{getopt, "1.0.1"},
{esasl, {git, "https://github.com/emqx/esasl", {tag, "master"}}}
]}.

{escript_name, emqtt_cli}.
Expand All @@ -23,8 +23,9 @@
[{test,
[{deps,
[{meck, "0.8.13"},
{emqx, {git, "https://github.com/emqx/emqx", {branch, "master"}}},
{emqx_ct_helpers, {git, "https://github.com/emqx/emqx-ct-helpers", {branch, "develop"}}}
{emqx, {git, "https://github.com/emqx/emqx", {tag, "v4.2.2"}}},
{emqx_sasl, {git, "https://github.com/emqx/emqx-sasl", {tag, "v4.2.2"}}},
{emqx_ct_helpers, {git, "https://github.com/emqx/emqx-ct-helpers", {tag, "1.2.2"}}}
]},
{erl_opts, [debug_info]}
]},
Expand All @@ -42,7 +43,8 @@
os_mon,
inets,
compiler,
runtime_tools
runtime_tools,
esasl
]},
{overlay_vars,["vars.config"]},
{overlay, [
Expand Down Expand Up @@ -70,7 +72,8 @@
os_mon,
inets,
compiler,
runtime_tools
runtime_tools,
esasl
]},
{overlay_vars,["vars-pkg.config"]},
{overlay, [
Expand Down Expand Up @@ -102,5 +105,3 @@
syntax_tools,
compiler,
crypto]}.


Binary file modified rebar3
Binary file not shown.
Loading

0 comments on commit 4330899

Please sign in to comment.