Coder Social home page Coder Social logo

androz2091 / nodeactyl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nodeactyl/nodeactyl

1.0 1.0 0.0 146 KB

A NodeJS API for Pterodactyl panel, this was originally designed for discord.js (Discord bots)

License: MIT License

JavaScript 100.00%

nodeactyl's Introduction

ANOTHER REWRITE WILL HAPPEN SO I CAN FIX UP SOME FUNCTIONS, GIVE ME TIME AND EVERYTHING WILL BE IN WORKING ORDER AGAIN!

If you have issues with downloading this package, and you come accross "package.json" not found, open a cmd.exe in the startup bar of your PC and then type npm init -y

IF YOU HAVE ANY ISSUES WITH THIS API, PLEASE JOIN THIS DISCORD AND ASK FOR SUPPORT. https://discord.gg/beTDVtD

Updated

login() WAS RECENTLY CHANGED PLEASE VIEW NEW DOCUMENTATION

Stars are very much appreciated <3, i would really appreciate if you find this project useful to please share with your frends :)

Extras

While this was originally meant to work with Discord.js, it will work with any of NodeJS librarys, such as socket.io and more!.

Installation

npm install nodeactyl

Getting started

First, follow the installation instructions, then you will need to have the following in your code.
alt Your device does not support this

AS OF 1.3.0 AND AFTER THIS WAS CHANGED TO THIS!! After importing the API, you need to "login" to your panel/server like so:
alt Your device does not support this
You need to specify wether you login() needs to be a client login or administrator login/

What am i?

Nodeactyl is an API For NodeJS to communicated with the panel, you can control ANY server on your nodes with it (If you purchase a server from another host, no worry! The API works with your own server too!) . Thie library original intent was to be for discord bots, but since this is in NodeJS, it is usable in ANY type of NodeJS program You can remake your own UI for the panel, and just stick with the pterodactyl daemon, doesnt suit you? use it in socket.io and have your node/server information displayed on a webpage! The possibilitys are endless!

How do i work?

This API works by using the pterodactyl API (Curl requests) to the server/node, by gathering the Panel website, Account API and a server/node ID. This library depends on axios, a promise basid http/https request system, this is how nodectyl is able to send curl commands to pterodactyl. The API itself is VERY simple and i am extremely suprised that no one has even tried making one (There are probably private ones, but none are avaliable to the public).

Documentation

Below is some basic documentation until the documentation is fully complete, the WIP documentation can be viewed here: https://nodeactyl.elliotfrost.xyz.

Dont even try using this API without reading Getting Started guide.

Below is mainly client-sided API Usages

How to get online status of a server.
alt This isnt avaliable for your device

How to get the entire server object (returns literally everything). alt This isnt avaliable for your device

/* Returns a JSON Object like so:
   "attributes":{
      "server_owner":true,
      "identifier":"d3aac109",
      "uuid":"d3aac109-e5a0-4331-b03e-3454f7e136dc",
      "name":"Survival",
      "description":"",
      "limits":{
         "memory":1024,
         "swap":0,
         "disk":5000,
         "io":500,
         "cpu":200
      },
      "feature_limits":{
         "databases":5,
         "allocations":5
      }
   }*/

How to check if the API Key holder is the owner of a server.
alt Your device does not support this

How to get CPU Usage.
alt your device does not support this

/* Returns CPU Usage in a JSON Object:
{
    "totalCPU": "23%"
}*/

How to get RAM Usage.
alt Your device does not support this

/* Returns RAM Usage in a JSON Object:
{
    "totalRAM": 1024,
     "usedRAM": 234
}*/

How to get Disk usage.
alt Your device does not support this

/* Returns storage in a JSON Object
{
    "usedDisk": 657
    "totalDisk": 10000
}*/

How to get name/description of a server.
alt Your device does not support this

/* Returns storage in a JSON Object
{
    "name": "Super neat server (Not really)",
    "description": "A cool Server"
}*/

How to get the IDs of a server.
alt Your device does not support this

/* Returns storage in a JSON Object
{
    "id": "86s3n93",
    "uuid": "soidhyffiuy87trg8rhg8egvregfyiegyurgfduiegfiwhgdfiudwhgfiuw2huifregyufgwipgfugwiufgyrfguiewgfruehufhgwdg"
}*/

How to get a server's allocation amount.
alt Your device does not support this

/* Returns storage in a JSON Object
{
    "amount": 2
}*/

How to get a server's MySQL Database amount.
alt Your device does not support this

/* Returns storage in a JSON Object
{
    "amount": 1
}*/

How to stop a server.
alt Your device does not support this

How to start a server.
alt Your device does not support this

How to send a commands to a server.
alt Your device does not support this

How to get a list of all servers a user has access to.
NOTE: **PLEASE VIEW ** Examples TO SEE THIS IN ACTION, THIS ALONE IS NOT ENOUGH TO DO WHAT YOU NEED
alt Your device does not support this

/* RETURNS JSON LIKE THIS:
"attributes":{
    "server_owner":true,
    "identifier":"d3aac109",
    "uuid":"d3aac109-e5a0-4331-b03e-3454f7e136dc",
     name":"Survival",
     "description":"",
     "limits":{
           "memory":1024,
           "swap":0,
           "disk":5000,
           "io":500,
           "cpu":200
        },
    "feature_limits":{
       "databases":5,
       "allocations":5
        }
     }
 }*/
// (This will keep repeating)

NOTE YOU WILL NEED A APPLICATION API KEY NOT YOUR ACCOUNT API

How to list all users.
NOTE: Take a look at the getALlServers() in the /examples/ area, this works the same way alt Your device does not support this

/* RETURNS JSON OBJECT(S) LIKE THIS:
    {
      "object": "user",
      "attributes": {
        "id": 1,
        "external_id": null,
        "uuid": "c4022c6c-9bf1-4a23-bff9-519cceb38335",
        "username": "codeco",
        "email": "[email protected]",
        "first_name": "Rihan",
        "last_name": "Arfan",
        "language": "en",
        "root_admin": true,
        "2fa": false,
        "created_at": "2018-03-18T15:15:17+00:00",
        "updated_at": "2018-10-16T21:51:21+00:00"
      }
    }

How to get user my UserID
alt Your device does not support this

/* RETURNS A JSON LIKE THIS
{
  "object": "user",
  "attributes": {
    "id": 1,
    "external_id": null,
    "uuid": "c4022c6c-9bf1-4a23-bff9-519cceb38335",
    "username": "codeco",
    "email": "[email protected]",
    "first_name": "Rihan",
    "last_name": "Arfan",
    "language": "en",
    "root_admin": true,
    "2fa": false,
    "created_at": "2018-03-18T15:15:17+00:00",
    "updated_at": "2018-10-16T21:51:21+00:00"
  }*/

How to get user by external ID.
alt Your device does not support this

/* RETURNS A JSON LIKE THIS
{
  "object": "user",
  "attributes": {
    "id": 1,
    "external_id": null,
    "uuid": "c4022c6c-9bf1-4a23-bff9-519cceb38335",
    "username": "codeco",
    "email": "[email protected]",
    "first_name": "Rihan",
    "last_name": "Arfan",
    "language": "en",
    "root_admin": true,
    "2fa": false,
    "created_at": "2018-03-18T15:15:17+00:00",
    "updated_at": "2018-10-16T21:51:21+00:00"
  }
}*/

How to create a server.

Node.login("https://panel.mypanel.com", "8JvMkvdy6L632H3gFY")
Node.createServer("NameServer", "1", "5", "15", "quay.io/pterodactyl/core:java-glibc", "java -Xms128M -Xmx 1024M -jar server.jar", "500", "0", "1024", "500", "100", "1", "2")
// Please provide the following information in order: NameServer, IDOwner, NestID, EggID, DockerImage, Startup, Memory, Swap, Disk, io, Cpu, NumberDataBases, NumberAllocations

How to create a user.
alt Your device does not support this

How to change user account details.
alt Your device does not support this

How to delete an account.
alt Your device does not support this

How to list all nodes.
NOTE: Follow example for getAlllServers() to fully use this API!
alt Your device does not support this

/* RETURNS A JSON OBJECT LIKE SO:
    {
      "object": "node",
      "attributes": {
        "id": 2,
        "public": true,
        "name": "Test",
        "description": "Test",
        "location_id": 1,
        "fqdn": "fsn1.matthewp.io",
        "scheme": "https",
        "behind_proxy": false,
        "maintenance_mode": false,
        "memory": 4096,
        "memory_overallocate": 0,
        "disk": 10000,
        "disk_overallocate": 0,
        "upload_size": 100,
        "daemon_listen": 2096,
        "daemon_sftp": 2022,
        "daemon_base": "\/tmp\/daemon-data",
        "created_at": "2018-04-06T02:19:33+00:00",
        "updated_at": "2018-10-28T01:13:03+00:00"
      }
    }*/

How to get Node by ID:
alt Your device does not support this

/* RETURNS A JSON OBJECT LIKE SO:
{
  "object": "node",
  "attributes": {
    "id": 2,
    "public": true,
    "name": "Test",
    "description": "Test",
    "location_id": 1,
    "fqdn": "fsn1.matthewp.io",
    "scheme": "https",
    "behind_proxy": false,
    "maintenance_mode": false,
    "memory": 4096,
    "memory_overallocate": 0,
    "disk": 10000,
    "disk_overallocate": 0,
    "upload_size": 100,
    "daemon_listen": 2096,
    "daemon_sftp": 2022,
    "daemon_base": "\/tmp\/daemon-data",
    "created_at": "2018-04-06T02:19:33+00:00",
    "updated_at": "2018-10-28T01:13:03+00:00"
  }
}
*/

How to create/edit a node:,br /> Seriously... you dont want a API for this. just do it manually (Will add if requested)

How to delete a node:
alt Your device does not support this

How to list node allocations (Which servers have which ports, or see if ports are open):
NOTE: Take a look at the /examples/ for getAllServers() in order to use this API fully
alt Your device doest not support this

/* RETURNS A JSON OBJECT LIKE SO:
{
      "object": "allocation",
      "attributes": {
        "id": 3,
        "ip": "195.201.194.74",
        "alias": null,
        "port": 25499,
        "assigned": true
      }
    }
*/

How to create/delete allocations:,br /> Will be added if requested

How to get every single server on the panel:
NOTE: Take a look at the /examples/ for getAllServers() in order to use this API fully alt Your device does not support this

/* RETURNS A JSON OBJECT AS SO:
{
      "object": "server",
      "attributes": {
        "id": 2,
        "external_id": null,
        "uuid": "47a7052b-f07e-4845-989d-e876e30960f4",
        "identifier": "47a7052b",
        "name": "Eat Cows",
        "description": "",
        "suspended": false,
        "limits": {
          "memory": 2048,
          "swap": -1,
          "disk": 10000,
          "io": 500,
          "cpu": 300
        },
        "feature_limits": {
          "databases": 10,
          "allocations": 0
        },
        "user": 1,
        "node": 2,
        "allocation": 3,
        "nest": 1,
        "egg": 4,
        "pack": null,
        "container": {
          "startup_command": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
          "image": "quay.io\/pterodactyl\/core:java",
          "installed": true,
          "environment": {
            "SERVER_JARFILE": "server.jar",
            "VANILLA_VERSION": "latest",
            "STARTUP": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
            "P_SERVER_LOCATION": "test",
            "P_SERVER_UUID": "47a7052b-f07e-4845-989d-e876e30960f4"
          }
        },
        "updated_at": "2018-11-20T14:35:00+00:00",
        "created_at": "2018-09-29T22:50:16+00:00"
      }
    }
*/

how to get detailed server details:
alt Your device does not support this

/* RETURNS A JSON OBJECT AS SO:
{
  "object": "server",
  "attributes": {
    "id": 2,
    "external_id": null,
    "uuid": "47a7052b-f07e-4845-989d-e876e30960f4",
    "identifier": "47a7052b",
    "name": "Survival",
    "description": "gsk;ljgkj;hgdakl;gha",
    "suspended": false,
    "limits": {
      "memory": 2048,
      "swap": -1,
      "disk": 10000,
      "io": 500,
      "cpu": 300
    },
    "feature_limits": {
      "databases": 10,
      "allocations": 0
    },
    "user": 1,
    "node": 2,
    "allocation": 3,
    "nest": 1,
    "egg": 4,
    "pack": null,
    "container": {
      "startup_command": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
      "image": "quay.io\/pterodactyl\/core:java",
      "installed": true,
      "environment": {
        "SERVER_JARFILE": "server.jar",
        "VANILLA_VERSION": "latest",
        "STARTUP": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
        "P_SERVER_LOCATION": "test",
        "P_SERVER_UUID": "47a7052b-f07e-4845-989d-e876e30960f4"
      }
    },
    "updated_at": "2018-11-20T02:52:37+00:00",
    "created_at": "2018-09-29T22:50:16+00:00"
  }
}
*/

How to Update Server Build configuration/update Startup parameters/update server details: Please, save yourself the hassle and do it in the panel (Will add upon request)

How to suspend a server:
alt Your device does not support this

How to unsuspend a server:
alt Your device does not support this

How to rebuild a server:
alt Your device does not support this

How to delete a server:
alt Your device does not support this

nodeactyl's People

Contributors

arnaudlier avatar burchard36 avatar emmanuel-novus-zz avatar jelly-exe avatar

Stargazers

 avatar

Watchers

 avatar

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.