zerotier / ZeroTierOne

A Smart Ethernet Switch for Earth
https://zerotier.com
Other
14.16k stars 1.65k forks source link

Unable To Remove Assigned IP After Deauthorize and Delete A Member Via Zerotier One localhost:9993 API #1743

Closed jerrychong25 closed 2 years ago

jerrychong25 commented 2 years ago

What you expect to be happening I would like to deauthorize and delete a member via Zerotier localhost:9993 API as mentioned in https://docs.zerotier.com/self-hosting/network-controllers/.

The previously assigned IP for the member ID should be removed, so that previously assigned IP could assign to new member ID.

What is actually happening? Unfortunately, the API unable to remove assgined IP (In this case 10.1.1.200).

After I've deleted a member, there is no way I could delete the assigned IP anymore.

Thus, previously assigned IP could not assign to new member ID due to already occupied by previous Member ID after the member ID is deleted via API.

Any steps to reproduce the error Steps To Reproduce The Error:

  1. Have existing one online member ID in one network.
  2. Call POST Deauthorize Member API
  3. Call DELETE Member API
  4. Call GET Member API
  5. ipAssignments still have value of 10.1.1.200

Any relevant console output or screenshots POST Deauthorize Member API Details:

Request:
curl -X POST "http://localhost:9993/controller/network/XXXXXXXXXXXXXXXXX/member/aaaaaaaaa" -H "X-ZT1-AUTH: auth_token_here" -d '{"authorized": false}'

DELETE Member API Details:

Request:
curl -X DELETE "http://localhost:9993/controller/network/XXXXXXXXXXXXXXXXX/member/aaaaaaaaa" -H "X-ZT1-AUTH: auth_token_here""

Response:
{}

GET Member API Details:

Request:
curl -X GET "http://localhost:9993/controller/network/XXXXXXXXXXXXXXXXX/member/aaaaaaaaa" -H "X-ZT1-AUTH: auth_token_here"

Response:
{
 "activeBridge": false,
 "address": "aaaaaaaaa",
 "authenticationExpiryTime": 0,
 "authorized": false,
 "capabilities": [],
 "creationTime": 1660278611038,
 "id": "563af8b3a5",
 "identity": "aaaaaaaaa:0:eacd8f65052054d842881f8bb530ea8e6750e262501783f2e8944ea16d4080684f25333dde47af796e27fac16bb8841494ecd164f5b0924b6beb1b0208699999",
 "ipAssignments": [
  "10.1.1.200"
 ],
 "lastAuthorizedCredential": null,
 "lastAuthorizedCredentialType": "api",
 "lastAuthorizedTime": 1660485003251,
 "lastDeauthorizedTime": 1661579147643,
 "noAutoAssignIps": false,
 "nwid": "XXXXXXXXXXXXXXXXX",
 "objtype": "member",
 "remoteTraceLevel": 0,
 "remoteTraceTarget": null,
 "revision": 8,
 "ssoExempt": false,
 "tags": [],
 "vMajor": 1,
 "vMinor": 10,
 "vProto": 12,
 "vRev": 1
}

What operating system and ZeroTier version. Please try the latest ZeroTier release

Related Issues:

Any solution to solve this issue via API only?

Thank you.

jerrychong25 commented 2 years ago

Hi everyone!

Found the solution.

POST API can clear previously assgined IPs and deauthorize a member ID via following ways:

Request:
curl -X POST "http://localhost:9993/controller/network/XXXXXXXXXXXXXXX/member/aaaaaaaaaaaaa" -H "X-ZT1-AUTH: auth_token_here" -d '{"authorized": false, "ipAssignments": []}'

Just set ipAssignments as empty array will clear all previous assgined IPs.

Will close this issue.

Thank you!