[doc] Description Updated
This commit is contained in:
53
.idea/.idea.Abyss/.idea/workspace.xml
generated
53
.idea/.idea.Abyss/.idea/workspace.xml
generated
@@ -9,7 +9,10 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="bf317275-3039-49bb-a475-725a800a0cce" name="Changes" comment="" />
|
<list default="true" id="bf317275-3039-49bb-a475-725a800a0cce" name="Changes" comment="">
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/.idea.Abyss/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.Abyss/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
||||||
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
@@ -69,30 +72,30 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">{
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
".NET Launch Settings Profile.Abyss: http.executor": "Debug",
|
".NET Launch Settings Profile.Abyss: http.executor": "Debug",
|
||||||
".NET Launch Settings Profile.Abyss: https.executor": "Debug",
|
".NET Launch Settings Profile.Abyss: https.executor": "Debug",
|
||||||
".NET Project.AbyssCli.executor": "Run",
|
".NET Project.AbyssCli.executor": "Run",
|
||||||
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||||
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
||||||
"Publish to folder.Publish Abyss to folder x86.executor": "Run",
|
"Publish to folder.Publish Abyss to folder x86.executor": "Run",
|
||||||
"Publish to folder.Publish Abyss to folder.executor": "Run",
|
"Publish to folder.Publish Abyss to folder.executor": "Run",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||||
"RunOnceActivity.git.unshallow": "true",
|
"RunOnceActivity.git.unshallow": "true",
|
||||||
"XThreadsFramesViewSplitterKey": "0.30266345",
|
"XThreadsFramesViewSplitterKey": "0.30266345",
|
||||||
"git-widget-placeholder": "main",
|
"git-widget-placeholder": "main",
|
||||||
"last_opened_file_path": "/storage/Images/31/summary.json",
|
"last_opened_file_path": "/home/acite/embd/WebProjects/Abyss/README.md",
|
||||||
"node.js.detected.package.eslint": "true",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"node.js.detected.package.tslint": "true",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"nodejs_package_manager_path": "npm",
|
"nodejs_package_manager_path": "npm",
|
||||||
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
|
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}</component>
|
}]]></component>
|
||||||
<component name="RunManager" selected="Publish to folder.Publish Abyss to folder">
|
<component name="RunManager" selected="Publish to folder.Publish Abyss to folder">
|
||||||
<configuration name="Publish Abyss to folder x86" type="DotNetFolderPublish" factoryName="Publish to folder">
|
<configuration name="Publish Abyss to folder x86" type="DotNetFolderPublish" factoryName="Publish to folder">
|
||||||
<riderPublish configuration="Release" platform="Any CPU" produce_single_file="true" ready_to_run="true" self_contained="true" target_folder="/opt/security/https/server" target_framework="net9.0" uuid_high="3690631506471504162" uuid_low="-4858628519588143325">
|
<riderPublish configuration="Release" platform="Any CPU" produce_single_file="true" ready_to_run="true" self_contained="true" target_folder="/opt/security/https/server" target_framework="net9.0" uuid_high="3690631506471504162" uuid_low="-4858628519588143325">
|
||||||
@@ -204,6 +207,8 @@
|
|||||||
<workItem from="1757742881713" duration="2285000" />
|
<workItem from="1757742881713" duration="2285000" />
|
||||||
<workItem from="1757745929389" duration="93000" />
|
<workItem from="1757745929389" duration="93000" />
|
||||||
<workItem from="1757751423586" duration="2687000" />
|
<workItem from="1757751423586" duration="2687000" />
|
||||||
|
<workItem from="1757782027930" duration="308000" />
|
||||||
|
<workItem from="1757830765557" duration="374000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
48
README.md
48
README.md
@@ -4,7 +4,7 @@ _<div align="center">
|
|||||||
|
|
||||||
[](https://github.com/rootacite/Abyss)
|
[](https://github.com/rootacite/Abyss)
|
||||||
|
|
||||||
_🚀This is the server of the multimedia application Aether, which can also be extended to other purposes🚀_
|
🚀This is the server of the multimedia application Aether, which can also be extended to other purposes🚀
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -12,6 +12,50 @@ _🚀This is the server of the multimedia application Aether, which can also be
|
|||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
**Abyss** is a modern, self-hosted media server and secure proxy platform built with **.NET 9**. It is designed to provide a highly secure, extensible, and efficient solution for managing and streaming media content (images, videos, live streams) while enforcing fine-grained access control and cryptographic authentication.
|
||||||
|
|
||||||
|
### 🎯 Key Features
|
||||||
|
|
||||||
|
- **Media Management**: Organize and serve images, videos, and live streams with structured directory support.
|
||||||
|
- **User Authentication**: Challenge-response authentication using **Ed25519** signatures. No private keys are ever transmitted.
|
||||||
|
- **Role-Based Access Control (RBAC)**: Hierarchical user privileges with configurable permissions for resources.
|
||||||
|
- **Secure Proxy**: Built-in HTTP/S proxy with end-to-end encrypted tunneling using **X25519** key exchange and **ChaCha20-Poly1305** encryption.
|
||||||
|
- **Resource-Level Permissions**: Fine-grained control over files and directories using a SQLite-based attribute system.
|
||||||
|
- **Task System**: Support for background tasks such as media uploads and processing with chunk-based integrity validation.
|
||||||
|
- **RESTful API**: Fully documented API endpoints for media access, user management, and task control.
|
||||||
|
|
||||||
|
### 🛠️ Technology Stack
|
||||||
|
|
||||||
|
- **Backend**: ASP.NET Core 9, MVC, Dependency Injection
|
||||||
|
- **Database**: SQLite with async ORM support
|
||||||
|
- **Cryptography**: NSec.Cryptography (Ed25519, X25519), ChaCha20Poly1305
|
||||||
|
- **Media Handling**: Range requests, MIME type detection, chunked uploads
|
||||||
|
- **Security**: Rate limiting, IP binding, token expiration, secure headers
|
||||||
|
|
||||||
|
### 🔐 Security Highlights
|
||||||
|
|
||||||
|
- Zero-trust architecture: All requests require valid tokens bound to IP addresses.
|
||||||
|
- No plaintext private key transmission.
|
||||||
|
- All media and metadata access is validated against a permission database.
|
||||||
|
- Secure tunneling with forward secrecy via ephemeral key exchange.
|
||||||
|
|
||||||
|
### 📦 Use Cases
|
||||||
|
|
||||||
|
- Personal media library with access control
|
||||||
|
- Secure internal video streaming platform
|
||||||
|
- Proxy server with authenticated tunneling
|
||||||
|
- Task-driven media processing pipeline
|
||||||
|
|
||||||
|
### 🌱 Extensibility
|
||||||
|
|
||||||
|
Abyss is designed with modularity in mind. Its service-based architecture allows easy integration of new media types, authentication providers, or storage backends.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Development environment
|
## Development environment
|
||||||
|
|
||||||
- Operating System: Voidraw OS v1.1 (based on Ubuntu) or any compatible Linux distribution.
|
- Operating System: Voidraw OS v1.1 (based on Ubuntu) or any compatible Linux distribution.
|
||||||
@@ -326,4 +370,4 @@ These endpoints provide access to static image resources. A valid token is requi
|
|||||||
- [ ] Add P/D method to all controllers to achieve dynamic modification of media items
|
- [ ] Add P/D method to all controllers to achieve dynamic modification of media items
|
||||||
- [x] Implement identity management module
|
- [x] Implement identity management module
|
||||||
- [ ] Add a description of the media library directory structure in the READMD document
|
- [ ] Add a description of the media library directory structure in the READMD document
|
||||||
- [x] Add API interface instructions in the READMD document_
|
- [x] Add API interface instructions in the READMD document
|
||||||
|
|||||||
Reference in New Issue
Block a user