This commit is contained in:
retoor 2025-11-13 12:05:05 +01:00
parent b23fd25337
commit 5a61910a93
7 changed files with 24 additions and 24 deletions

View File

@ -1,6 +1,6 @@
# RBox # MyWebdav
RBox is a self-hosted cloud storage web application designed for secure, scalable file management and sharing. Built with modern web technologies, it provides a comprehensive solution for individuals and organizations seeking full control over their data storage. MyWebdav is a commercial cloud storage web application designed for secure, scalable file management and sharing. Built with modern web technologies, it provides a comprehensive solution for individuals and organizations seeking full control over their data storage.
## Features ## Features
@ -74,24 +74,24 @@ RBox is a self-hosted cloud storage web application designed for secure, scalabl
2. Set up the database: 2. Set up the database:
```bash ```bash
createdb rbox createdb mywebdav
``` ```
3. Configure environment variables in `.env` 3. Configure environment variables in `.env`
4. Run database migrations: 4. Run database migrations:
```bash ```bash
poetry run rbox --migrate poetry run mywebdav --migrate
``` ```
5. Start the application: 5. Start the application:
```bash ```bash
poetry run rbox --host 0.0.0.0 --port 8000 poetry run mywebdav --host 0.0.0.0 --port 8000
``` ```
## Configuration ## Configuration
RBox uses environment variables for configuration. Key settings include: MyWebdav uses environment variables for configuration. Key settings include:
- `DATABASE_URL`: PostgreSQL connection string - `DATABASE_URL`: PostgreSQL connection string
- `REDIS_URL`: Redis connection URL - `REDIS_URL`: Redis connection URL
@ -114,7 +114,7 @@ Access the web application through your browser. The interface provides:
- Administrative controls (for admins) - Administrative controls (for admins)
### API Usage ### API Usage
RBox provides a comprehensive REST API. Example requests: MyWebdav provides a comprehensive REST API. Example requests:
```bash ```bash
# Upload a file # Upload a file
@ -134,13 +134,13 @@ curl -X POST "https://your-domain.com/api/shares/" \
``` ```
### WebDAV Access ### WebDAV Access
Mount RBox as a network drive using WebDAV: Mount MyWebdav as a network drive using WebDAV:
``` ```
https://your-domain.com/webdav/ https://your-domain.com/webdav/
``` ```
### SFTP Access ### SFTP Access
Connect via SFTP using your RBox credentials on port 22. Connect via SFTP using your MyWebdav credentials on port 22.
## Deployment ## Deployment

View File

@ -107,7 +107,7 @@ class InvoiceGenerator:
stripe_invoice = await StripeClient.create_invoice( stripe_invoice = await StripeClient.create_invoice(
customer_id=subscription.stripe_customer_id, customer_id=subscription.stripe_customer_id,
description=f"RBox Usage Invoice for {period_start.strftime('%B %Y')}", description=f"MyWebdav Usage Invoice for {period_start.strftime('%B %Y')}",
line_items=stripe_line_items, line_items=stripe_line_items,
metadata={"rbox_invoice_id": str(invoice.id)} metadata={"rbox_invoice_id": str(invoice.id)}
) )
@ -153,7 +153,7 @@ Due Date: {invoice.due_date}
You can view and pay your invoice at: {invoice.user.email} # Placeholder, should be a link to invoice page You can view and pay your invoice at: {invoice.user.email} # Placeholder, should be a link to invoice page
Best regards, Best regards,
The RBox Team The MyWebdav Team
""" """
html = f""" html = f"""
<h2>Invoice {invoice.invoice_number}</h2> <h2>Invoice {invoice.invoice_number}</h2>
@ -168,7 +168,7 @@ The RBox Team
</table> </table>
<p>Due Date: {invoice.due_date}</p> <p>Due Date: {invoice.due_date}</p>
<p>You can view and pay your invoice at: <a href="#">Invoice Link</a></p> <p>You can view and pay your invoice at: <a href="#">Invoice Link</a></p>
<p>Best regards,<br>The RBox Team</p> <p>Best regards,<br>The MyWebdav Team</p>
""" """
queue_email( queue_email(
to_email=invoice.user.email, to_email=invoice.user.email,

View File

@ -46,8 +46,8 @@ async def lifespan(app: FastAPI):
print("Shutting down...") print("Shutting down...")
app = FastAPI( app = FastAPI(
title="RBox Cloud Storage", title="MyWebdav Cloud Storage",
description="A self-hosted cloud storage web application", description="A commercial cloud storage web application",
version="0.1.0", version="0.1.0",
lifespan=lifespan lifespan=lifespan
) )

View File

@ -65,9 +65,9 @@ async def register_user(user_in: UserCreate):
from ..mail import queue_email from ..mail import queue_email
queue_email( queue_email(
to_email=user.email, to_email=user.email,
subject="Welcome to RBox!", subject="Welcome to MyWebdav!",
body=f"Hi {user.username},\n\nWelcome to RBox! Your account has been created successfully.\n\nBest regards,\nThe RBox Team", body=f"Hi {user.username},\n\nWelcome to MyWebdav! Your account has been created successfully.\n\nBest regards,\nThe MyWebdav Team",
html=f"<h1>Welcome to RBox!</h1><p>Hi {user.username},</p><p>Welcome to RBox! Your account has been created successfully.</p><p>Best regards,<br>The RBox Team</p>" html=f"<h1>Welcome to MyWebdav!</h1><p>Hi {user.username},</p><p>Welcome to MyWebdav! Your account has been created successfully.</p><p>Best regards,<br>The MyWebdav Team</p>"
) )
access_token_expires = timedelta(minutes=30) # Use settings access_token_expires = timedelta(minutes=30) # Use settings

View File

@ -73,7 +73,7 @@ Access link: {share_url}{password_text}
This link is valid{expiry_text}. This link is valid{expiry_text}.
-- --
RBox File Sharing Service""" MyWebdav File Sharing Service"""
email_html = f""" email_html = f"""
<html> <html>
@ -85,7 +85,7 @@ RBox File Sharing Service"""
{f'<p><strong>Password:</strong> {share_in.password}</p>' if share_in.password else ''} {f'<p><strong>Password:</strong> {share_in.password}</p>' if share_in.password else ''}
<p><small>This link is valid{expiry_text}.</small></p> <p><small>This link is valid{expiry_text}.</small></p>
<hr> <hr>
<p><small>RBox File Sharing Service</small></p> <p><small>MyWebdav File Sharing Service</small></p>
</body> </body>
</html> </html>
""" """

View File

@ -5,26 +5,26 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings): class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file='.env', extra='ignore') model_config = SettingsConfigDict(env_file='.env', extra='ignore')
DATABASE_URL: str = "sqlite:///app/rbox.db" DATABASE_URL: str = "sqlite:///app/mywebdav.db"
REDIS_URL: str = "redis://redis:6379/0" REDIS_URL: str = "redis://redis:6379/0"
SECRET_KEY: str = "super_secret_key" SECRET_KEY: str = "super_secret_key"
ALGORITHM: str = "HS256" ALGORITHM: str = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
REFRESH_TOKEN_EXPIRE_DAYS: int = 7 REFRESH_TOKEN_EXPIRE_DAYS: int = 7
DOMAIN_NAME: str = "localhost" DOMAIN_NAME: str = "MyWebdav.eu"
CERTBOT_EMAIL: str = "admin@example.com" CERTBOT_EMAIL: str = "admin@example.com"
STORAGE_PATH: str = "storage" STORAGE_PATH: str = "storage"
S3_ACCESS_KEY_ID: str | None = None S3_ACCESS_KEY_ID: str | None = None
S3_SECRET_ACCESS_KEY: str | None = None S3_SECRET_ACCESS_KEY: str | None = None
S3_ENDPOINT_URL: str | None = None S3_ENDPOINT_URL: str | None = None
S3_BUCKET_NAME: str = "rbox-storage" S3_BUCKET_NAME: str = "mywebdav-storage"
SMTP_HOST: str = "mail.example.com" SMTP_HOST: str = "mail.example.com"
SMTP_PORT: int = 587 SMTP_PORT: int = 587
SMTP_USERNAME: str = "noreply@example.com" SMTP_USERNAME: str = "noreply@example.com"
SMTP_PASSWORD: str = "your-smtp-password" SMTP_PASSWORD: str = "your-smtp-password"
SMTP_USE_TLS: bool = True SMTP_USE_TLS: bool = True
SMTP_SENDER_EMAIL: str = "noreply@example.com" SMTP_SENDER_EMAIL: str = "noreply@example.com"
TOTP_ISSUER: str = "RBox" TOTP_ISSUER: str = "MyWebdav"
STRIPE_SECRET_KEY: str = "" STRIPE_SECRET_KEY: str = ""
STRIPE_PUBLISHABLE_KEY: str = "" STRIPE_PUBLISHABLE_KEY: str = ""
STRIPE_WEBHOOK_SECRET: str = "" STRIPE_WEBHOOK_SECRET: str = ""

View File

@ -75,7 +75,7 @@ async def webdav_auth(request: Request, authorization: Optional[str] = Header(No
raise HTTPException( raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, status_code=status.HTTP_401_UNAUTHORIZED,
headers={'WWW-Authenticate': 'Basic realm="RBox WebDAV"'} headers={'WWW-Authenticate': 'Basic realm="MyWebdav WebDAV"'}
) )
async def resolve_path(path_str: str, user: User): async def resolve_path(path_str: str, user: User):