royal-sdk


Nameroyal-sdk JSON
Version 0.1.2 PyPI version JSON
download
home_pageNone
SummaryA Python SDK for Royal TSX/TS - create and manage connections, credentials, and folders programmatically
upload_time2025-07-25 10:34:03
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords royal tsx ts sdk
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Royal SDK

A Python SDK for Royal TSX/TS services, allowing you to programmatically create and manage connections, credentials, and folders.

## Installation

```bash
pip install royal-sdk
```

## Quick Start

### Basic Usage

```python
from royal_sdk import (
    DynamicFolder, 
    TerminalConnection, 
    TerminalConnectionType,
    FileTransferConnection,
    FileTransferConnectionType,
    UsernameAndPassword,
    KeySequenceTask,
    Folder
)

# Create a dynamic folder (for Royal TSX dynamic folder scripts)
folder = DynamicFolder()

# Create credentials
cred = UsernameAndPassword(
    cred_id=1,
    name="My Server Credentials", 
    username="admin",
    password="secret123"
)

# Create SSH terminal connection
ssh_conn = TerminalConnection(
    conn_type=TerminalConnectionType.SSH,
    name="Production Server",
    host="192.168.1.100",
    port=22
)
ssh_conn.set_credential(cred)

# Create SFTP file transfer connection
sftp_conn = FileTransferConnection(
    conn_type=FileTransferConnectionType.SFTP,
    name="File Transfer",
    host="192.168.1.100",
    port=22
)
sftp_conn.set_credential(cred)
sftp_conn.set_local_path("/Users/username/Downloads")
sftp_conn.set_remote_path("/home/admin")

# Create key sequence tasks
task1 = KeySequenceTask(
    name="System Check",
    key_sequence="whoami\nuptime\ndf -h"
)

task2 = KeySequenceTask(
    name="Switch to Root",
    key_sequence="sudo su -",
    no_confirmation_required=True
)

# Add everything to folder
folder.add(cred.objectify())
folder.add(ssh_conn.objectify())
folder.add(sftp_conn.objectify())
folder.add(task1.objectify())
folder.add(task2.objectify())

# Output the dynamic folder JSON
folder.execute()
```

### Creating Static Folders

```python
from royal_sdk import Folder, TerminalConnection, TerminalConnectionType

# Create connections
conn1 = TerminalConnection(
    conn_type=TerminalConnectionType.SSH,
    name="Server 1",
    host="server1.example.com"
)

conn2 = TerminalConnection(
    conn_type=TerminalConnectionType.SSH,
    name="Server 2", 
    host="server2.example.com"
)

# Create a static folder
server_folder = Folder("Production Servers", [
    conn1.objectify(),
    conn2.objectify()
])

print(server_folder.objectify())
```

## API Reference

### Credentials

#### UsernameAndPassword
Create username/password credentials.

```python
cred = UsernameAndPassword(
    cred_id=1,
    name="My Credentials",
    username="user",
    password="pass"
)
```

#### PrivateKey
Create private key credentials.

```python
from royal_sdk import PrivateKey

cred = PrivateKey(
    cred_id=2,
    name="SSH Key",
    private_key_content="-----BEGIN PRIVATE KEY-----...",
    passphrase="key_passphrase"
)
```

### Connections

#### TerminalConnection
Create SSH terminal connections.

```python
from royal_sdk import TerminalConnection, TerminalConnectionType

conn = TerminalConnection(
    conn_type=TerminalConnectionType.SSH,
    name="My Server",
    host="example.com",
    port=22  # optional, defaults to 22
)
```

#### FileTransferConnection  
Create SFTP file transfer connections.

```python
from royal_sdk import FileTransferConnection, FileTransferConnectionType

conn = FileTransferConnection(
    conn_type=FileTransferConnectionType.SFTP,
    name="File Server", 
    host="files.example.com",
    port=22  # optional, defaults to 22
)

# Set local and remote paths
conn.set_local_path("/Users/username/Downloads")
conn.set_remote_path("/home/user/files")
```

### Tasks

#### KeySequenceTask
Create key sequence tasks for automation.

```python
from royal_sdk import KeySequenceTask

# Basic key sequence task
task = KeySequenceTask(
    name="Switch to root user",
    key_sequence="sudo su -"
)

# Advanced key sequence task with options
task = KeySequenceTask(
    name="Check system status",
    key_sequence="whoami{ENTER}uptime{ENTER}df -h",
    no_confirmation_required=True,  # Don't ask for confirmation
    execution_mode=2  # 0=No change, 1=Keyboard simulation, 2=Direct mode
)

# Get the task object for use in folders
task_obj = task.objectify()
```

**Parameters:**
- `name`: Task display name
- `key_sequence`: Commands/keys to execute (use `\n` for new lines)
- `no_confirmation_required`: Skip confirmation dialog (default: False)
- `execution_mode`: How to execute the keys (default: 2)
  - 0 = Do not change
  - 1 = Keyboard input simulation  
  - 2 = Direct mode (where supported)


### Folders

#### DynamicFolder
For Royal TSX dynamic folder scripts.

```python
from royal_sdk import DynamicFolder

folder = DynamicFolder()
folder.add(connection.objectify())
folder.execute()  # Outputs JSON to stdout
```

#### Folder
For static folder structures.

```python
from royal_sdk import Folder

folder = Folder("My Folder", [
    connection1.objectify(),
    connection2.objectify()
])
```

## License

MIT

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "royal-sdk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "royal, tsx, ts, sdk",
    "author": null,
    "author_email": "N0P3 <n0p3.felix@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/cd/f8/8a5b6c0deccd2f56c0dd58a3189429907dcf19403a6f312e3965de6a4c01/royal_sdk-0.1.2.tar.gz",
    "platform": null,
    "description": "# Royal SDK\n\nA Python SDK for Royal TSX/TS services, allowing you to programmatically create and manage connections, credentials, and folders.\n\n## Installation\n\n```bash\npip install royal-sdk\n```\n\n## Quick Start\n\n### Basic Usage\n\n```python\nfrom royal_sdk import (\n    DynamicFolder, \n    TerminalConnection, \n    TerminalConnectionType,\n    FileTransferConnection,\n    FileTransferConnectionType,\n    UsernameAndPassword,\n    KeySequenceTask,\n    Folder\n)\n\n# Create a dynamic folder (for Royal TSX dynamic folder scripts)\nfolder = DynamicFolder()\n\n# Create credentials\ncred = UsernameAndPassword(\n    cred_id=1,\n    name=\"My Server Credentials\", \n    username=\"admin\",\n    password=\"secret123\"\n)\n\n# Create SSH terminal connection\nssh_conn = TerminalConnection(\n    conn_type=TerminalConnectionType.SSH,\n    name=\"Production Server\",\n    host=\"192.168.1.100\",\n    port=22\n)\nssh_conn.set_credential(cred)\n\n# Create SFTP file transfer connection\nsftp_conn = FileTransferConnection(\n    conn_type=FileTransferConnectionType.SFTP,\n    name=\"File Transfer\",\n    host=\"192.168.1.100\",\n    port=22\n)\nsftp_conn.set_credential(cred)\nsftp_conn.set_local_path(\"/Users/username/Downloads\")\nsftp_conn.set_remote_path(\"/home/admin\")\n\n# Create key sequence tasks\ntask1 = KeySequenceTask(\n    name=\"System Check\",\n    key_sequence=\"whoami\\nuptime\\ndf -h\"\n)\n\ntask2 = KeySequenceTask(\n    name=\"Switch to Root\",\n    key_sequence=\"sudo su -\",\n    no_confirmation_required=True\n)\n\n# Add everything to folder\nfolder.add(cred.objectify())\nfolder.add(ssh_conn.objectify())\nfolder.add(sftp_conn.objectify())\nfolder.add(task1.objectify())\nfolder.add(task2.objectify())\n\n# Output the dynamic folder JSON\nfolder.execute()\n```\n\n### Creating Static Folders\n\n```python\nfrom royal_sdk import Folder, TerminalConnection, TerminalConnectionType\n\n# Create connections\nconn1 = TerminalConnection(\n    conn_type=TerminalConnectionType.SSH,\n    name=\"Server 1\",\n    host=\"server1.example.com\"\n)\n\nconn2 = TerminalConnection(\n    conn_type=TerminalConnectionType.SSH,\n    name=\"Server 2\", \n    host=\"server2.example.com\"\n)\n\n# Create a static folder\nserver_folder = Folder(\"Production Servers\", [\n    conn1.objectify(),\n    conn2.objectify()\n])\n\nprint(server_folder.objectify())\n```\n\n## API Reference\n\n### Credentials\n\n#### UsernameAndPassword\nCreate username/password credentials.\n\n```python\ncred = UsernameAndPassword(\n    cred_id=1,\n    name=\"My Credentials\",\n    username=\"user\",\n    password=\"pass\"\n)\n```\n\n#### PrivateKey\nCreate private key credentials.\n\n```python\nfrom royal_sdk import PrivateKey\n\ncred = PrivateKey(\n    cred_id=2,\n    name=\"SSH Key\",\n    private_key_content=\"-----BEGIN PRIVATE KEY-----...\",\n    passphrase=\"key_passphrase\"\n)\n```\n\n### Connections\n\n#### TerminalConnection\nCreate SSH terminal connections.\n\n```python\nfrom royal_sdk import TerminalConnection, TerminalConnectionType\n\nconn = TerminalConnection(\n    conn_type=TerminalConnectionType.SSH,\n    name=\"My Server\",\n    host=\"example.com\",\n    port=22  # optional, defaults to 22\n)\n```\n\n#### FileTransferConnection  \nCreate SFTP file transfer connections.\n\n```python\nfrom royal_sdk import FileTransferConnection, FileTransferConnectionType\n\nconn = FileTransferConnection(\n    conn_type=FileTransferConnectionType.SFTP,\n    name=\"File Server\", \n    host=\"files.example.com\",\n    port=22  # optional, defaults to 22\n)\n\n# Set local and remote paths\nconn.set_local_path(\"/Users/username/Downloads\")\nconn.set_remote_path(\"/home/user/files\")\n```\n\n### Tasks\n\n#### KeySequenceTask\nCreate key sequence tasks for automation.\n\n```python\nfrom royal_sdk import KeySequenceTask\n\n# Basic key sequence task\ntask = KeySequenceTask(\n    name=\"Switch to root user\",\n    key_sequence=\"sudo su -\"\n)\n\n# Advanced key sequence task with options\ntask = KeySequenceTask(\n    name=\"Check system status\",\n    key_sequence=\"whoami{ENTER}uptime{ENTER}df -h\",\n    no_confirmation_required=True,  # Don't ask for confirmation\n    execution_mode=2  # 0=No change, 1=Keyboard simulation, 2=Direct mode\n)\n\n# Get the task object for use in folders\ntask_obj = task.objectify()\n```\n\n**Parameters:**\n- `name`: Task display name\n- `key_sequence`: Commands/keys to execute (use `\\n` for new lines)\n- `no_confirmation_required`: Skip confirmation dialog (default: False)\n- `execution_mode`: How to execute the keys (default: 2)\n  - 0 = Do not change\n  - 1 = Keyboard input simulation  \n  - 2 = Direct mode (where supported)\n\n\n### Folders\n\n#### DynamicFolder\nFor Royal TSX dynamic folder scripts.\n\n```python\nfrom royal_sdk import DynamicFolder\n\nfolder = DynamicFolder()\nfolder.add(connection.objectify())\nfolder.execute()  # Outputs JSON to stdout\n```\n\n#### Folder\nFor static folder structures.\n\n```python\nfrom royal_sdk import Folder\n\nfolder = Folder(\"My Folder\", [\n    connection1.objectify(),\n    connection2.objectify()\n])\n```\n\n## License\n\nMIT\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A Python SDK for Royal TSX/TS - create and manage connections, credentials, and folders programmatically",
    "version": "0.1.2",
    "project_urls": {
        "Changelog": "https://github.com/B9O2/royal-sdk/blob/main/CHANGELOG.md"
    },
    "split_keywords": [
        "royal",
        " tsx",
        " ts",
        " sdk"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "95490afdf7744a401bff921ebf003b49418e13463968d4e2b4436eb2e0866488",
                "md5": "637f9ce1e68541d2591f297a4e3d2679",
                "sha256": "144acfb12f0e81aeb6a9b387a8e4c20ff40c338e887c59e71f38ecfe4b290b26"
            },
            "downloads": -1,
            "filename": "royal_sdk-0.1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "637f9ce1e68541d2591f297a4e3d2679",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 6789,
            "upload_time": "2025-07-25T10:34:02",
            "upload_time_iso_8601": "2025-07-25T10:34:02.131957Z",
            "url": "https://files.pythonhosted.org/packages/95/49/0afdf7744a401bff921ebf003b49418e13463968d4e2b4436eb2e0866488/royal_sdk-0.1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cdf88a5b6c0deccd2f56c0dd58a3189429907dcf19403a6f312e3965de6a4c01",
                "md5": "c6dc2241360960ab5b7148e99a167780",
                "sha256": "5e7a971585a361ac480137372ea00ee3f67ab2e77b7e243b47572473539c1459"
            },
            "downloads": -1,
            "filename": "royal_sdk-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "c6dc2241360960ab5b7148e99a167780",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 6257,
            "upload_time": "2025-07-25T10:34:03",
            "upload_time_iso_8601": "2025-07-25T10:34:03.493238Z",
            "url": "https://files.pythonhosted.org/packages/cd/f8/8a5b6c0deccd2f56c0dd58a3189429907dcf19403a6f312e3965de6a4c01/royal_sdk-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-25 10:34:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "B9O2",
    "github_project": "royal-sdk",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "royal-sdk"
}
        
Elapsed time: 1.75272s