Updat.e
This commit is contained in:
parent
b23fd25337
commit
5a61910a93
18
README.md
18
README.md
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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>
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -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 = ""
|
||||||
|
|||||||
@ -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):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user