[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" />
|
||||
</component>
|
||||
<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="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
@@ -69,30 +72,30 @@
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
".NET Launch Settings Profile.Abyss: http.executor": "Debug",
|
||||
".NET Launch Settings Profile.Abyss: https.executor": "Debug",
|
||||
".NET Project.AbyssCli.executor": "Run",
|
||||
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
||||
"Publish to folder.Publish Abyss to folder x86.executor": "Run",
|
||||
"Publish to folder.Publish Abyss to folder.executor": "Run",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"XThreadsFramesViewSplitterKey": "0.30266345",
|
||||
"git-widget-placeholder": "main",
|
||||
"last_opened_file_path": "/storage/Images/31/summary.json",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
".NET Launch Settings Profile.Abyss: http.executor": "Debug",
|
||||
".NET Launch Settings Profile.Abyss: https.executor": "Debug",
|
||||
".NET Project.AbyssCli.executor": "Run",
|
||||
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
||||
"Publish to folder.Publish Abyss to folder x86.executor": "Run",
|
||||
"Publish to folder.Publish Abyss to folder.executor": "Run",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"XThreadsFramesViewSplitterKey": "0.30266345",
|
||||
"git-widget-placeholder": "main",
|
||||
"last_opened_file_path": "/home/acite/embd/WebProjects/Abyss/README.md",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}</component>
|
||||
}]]></component>
|
||||
<component name="RunManager" selected="Publish to folder.Publish Abyss 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">
|
||||
@@ -204,6 +207,8 @@
|
||||
<workItem from="1757742881713" duration="2285000" />
|
||||
<workItem from="1757745929389" duration="93000" />
|
||||
<workItem from="1757751423586" duration="2687000" />
|
||||
<workItem from="1757782027930" duration="308000" />
|
||||
<workItem from="1757830765557" duration="374000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
|
||||
48
README.md
48
README.md
@@ -4,7 +4,7 @@ _<div align="center">
|
||||
|
||||
[](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>
|
||||
|
||||
@@ -12,6 +12,50 @@ _🚀This is the server of the multimedia application Aether, which can also be
|
||||
<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
|
||||
|
||||
- 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
|
||||
- [x] Implement identity management module
|
||||
- [ ] 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