Name | royal-sdk JSON |
Version |
0.1.2
JSON |
| download |
home_page | None |
Summary | A Python SDK for Royal TSX/TS - create and manage connections, credentials, and folders programmatically |
upload_time | 2025-07-25 10:34:03 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT |
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"
}