fix: restore all code deleted/truncated by d2217531 Jules SSRF commit
Commitd2217531(google-labs-jules SSRF fix) catastrophically deleted 11,500+ lines across 100+ files while fixing an unrelated IMAP issue. Restored from d2217531^ (pre-bad-commit state): Deleted files (fully restored): - app/api/{automation,classification_rules,comments,sharing}.py - app/middleware/upload_rate_limit.py - app/tasks/{automation_tasks,classify_document}.py - app/utils/{automation_hooks,classification_rules}.py - docs/AppleAppStoreCompliance.md - frontend/input.css, package.json, package-lock.json, tailwind.config.js - frontend/static/js/{annotations,claim,comments,sharing}.js - frontend/templates/{admin_connections,file_annotations,file_summary}.html - tests/{test_api_files_comprehensive,test_auth_extended,test_sharing, test_comments,test_connections,test_imap_profiles,test_api_sessions, test_automation,test_classification_rules,test_api_advanced_filters, test_api_classification_rules,test_upload_rate_limit,test_api_dropbox, test_classify_document,test_comments_ui,test_upload_to_icloud, test_api_onedrive_comprehensive,test_frontend_build,test_sentry, test_diagnostic,test_database,test_views_dropbox,test_local_auth}.py Truncated files (content restored): - app/{auth,config,main,models,celery_worker,database}.py - app/api/{__init__,api_tokens,diagnostic,dropbox,files,google_drive, integrations,local_auth,mobile,onedrive,pipelines,qr_auth, settings,url_upload}.py - app/middleware/upload_rate_limit.py - app/tasks/upload_to_nextcloud.py - app/utils/{allowed_types,settings_service,settings_sync,user_scope,webhook}.py - app/views/{base,dropbox,files,google_drive,onedrive,settings}.py - docs/{API,AuthenticationSetup,ConfigurationGuide,DatabaseConfiguration, DeploymentGuide,DropboxSetup,GoogleDriveSetup,KubernetesDeployment, MobileApp,OneDriveSetup,ProductionReadiness,SentrySetup, SocialLoginSetup,UserGuide}.md - frontend/static/{js/upload.js,styles.css} - frontend/templates/{api_tokens,base,devices,dropbox,dropbox_callback, file_view,files,google_drive,onedrive,onedrive_callback, signup}.html - frontend/translations/en.json - migrations/env.py - tests/{conftest,test_api_integrations,test_api_mobile,test_api_settings, test_api_tokens,test_audit_logs,test_duplicates,test_imap_tasks, test_setup_wizard,test_views_files_comprehensive}.py Security fixes kept from post-d2217531 commits: - app/utils/network.py: DNS SSRF fail-secure fix (06b0fced) - app/utils/file_operations.py: path traversal fix (1018ea17) - tests/test_imap_tasks.py: re-applied 4 is_private_ip mock patches Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> Agent-Logs-Url: https://github.com/christianlouis/DocuElevate/sessions/51133dd8-9bec-41ab-aa10-3de753634187
This commit is contained in:
@@ -315,7 +315,23 @@
|
||||
"admin_users.total_count_users": "{count} users",
|
||||
"admin_users.total_no_users": "No users",
|
||||
"admin_users.total_one_user": "1 user",
|
||||
"annotations.add": "Add annotation",
|
||||
"annotations.color": "Color",
|
||||
"annotations.content_placeholder": "Write an annotation...",
|
||||
"annotations.delete_confirm": "Are you sure you want to delete this annotation?",
|
||||
"annotations.deleted": "Annotation deleted",
|
||||
"annotations.empty": "No annotations yet",
|
||||
"annotations.go_to_page": "Go to page",
|
||||
"annotations.heading": "Annotations",
|
||||
"annotations.page": "Page",
|
||||
"annotations.save": "Save",
|
||||
"annotations.type_highlight": "Highlight",
|
||||
"annotations.type_note": "Note",
|
||||
"annotations.type_strikethrough": "Strikethrough",
|
||||
"annotations.type_underline": "Underline",
|
||||
"annotations.updated": "Annotation updated",
|
||||
"api_tokens.col_created": "Created",
|
||||
"api_tokens.col_expires": "Expires",
|
||||
"api_tokens.col_last_ip": "Last IP",
|
||||
"api_tokens.col_last_used": "Last Used",
|
||||
"api_tokens.col_name": "Name",
|
||||
@@ -327,6 +343,14 @@
|
||||
"api_tokens.create_heading": "Create New Token",
|
||||
"api_tokens.create_token": "Create Token",
|
||||
"api_tokens.creating": "Creating…",
|
||||
"api_tokens.delete": "Delete",
|
||||
"api_tokens.delete_confirm": "Permanently delete this revoked token? This cannot be undone.",
|
||||
"api_tokens.delete_prefix": "Permanently delete token",
|
||||
"api_tokens.expires_at_label": "Expires (optional)",
|
||||
"api_tokens.expires_at_placeholder": "e.g. 30, 90, 365 days",
|
||||
"api_tokens.expires_in_days_label": "Token lifetime (days)",
|
||||
"api_tokens.expires_never": "Never",
|
||||
"api_tokens.expires_on": "Expires",
|
||||
"api_tokens.heading": "API Tokens",
|
||||
"api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.",
|
||||
"api_tokens.loading_tokens": "Loading tokens…",
|
||||
@@ -334,9 +358,13 @@
|
||||
"api_tokens.no_tokens_heading": "No API tokens yet",
|
||||
"api_tokens.no_tokens_help": "Create your first token above to get started.",
|
||||
"api_tokens.page_title": "API Tokens – DocuElevate",
|
||||
"api_tokens.reactivate": "Reactivate",
|
||||
"api_tokens.reactivate_confirm": "Reactivate this token? It will be usable again immediately.",
|
||||
"api_tokens.reactivate_prefix": "Reactivate token",
|
||||
"api_tokens.revoke": "Revoke",
|
||||
"api_tokens.revoke_prefix": "Revoke token",
|
||||
"api_tokens.status_active": "Active",
|
||||
"api_tokens.status_expired": "Expired",
|
||||
"api_tokens.status_revoked": "Revoked",
|
||||
"api_tokens.table_aria": "API Tokens",
|
||||
"api_tokens.token_created": "Token created successfully!",
|
||||
@@ -471,6 +499,21 @@
|
||||
"billing.success_heading": "You're all set!",
|
||||
"billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!",
|
||||
"billing.success_page_title": "DocuElevate - Subscription Activated",
|
||||
"comments.add_comment": "Add comment",
|
||||
"comments.add_reply": "Reply",
|
||||
"comments.body_placeholder": "Write a comment... Use @username to mention someone",
|
||||
"comments.delete_confirm": "Are you sure you want to delete this comment?",
|
||||
"comments.deleted": "Comment deleted",
|
||||
"comments.edit": "Edit",
|
||||
"comments.empty": "No comments yet",
|
||||
"comments.heading": "Comments",
|
||||
"comments.mention_users": "Mention users",
|
||||
"comments.reply_placeholder": "Write a reply...",
|
||||
"comments.resolve": "Resolve",
|
||||
"comments.resolved": "Resolved",
|
||||
"comments.save": "Save",
|
||||
"comments.unresolve": "Reopen",
|
||||
"comments.updated": "Comment updated",
|
||||
"common.actions": "Actions",
|
||||
"common.active": "Active",
|
||||
"common.all": "All",
|
||||
@@ -575,6 +618,22 @@
|
||||
"cookie_policy.s5_p3_pre": "This Cookie Policy is part of and incorporated into our",
|
||||
"cookie_policy.s5_privacy_link": "Privacy Notice",
|
||||
"cookie_policy.s5_terms_link": "Terms of Service",
|
||||
"connections.configure": "Configure",
|
||||
"connections.configured": "Connected",
|
||||
"connections.description": "Configure external authentication providers like OAuth2 and SAML.",
|
||||
"connections.frontend_url_note": "Note: Requires Frontend URL to be configured. Configure in System Settings.",
|
||||
"connections.linked": "Linked",
|
||||
"connections.mobile_upload_description": "Allow users to upload files from mobile devices by scanning a QR code.",
|
||||
"connections.mobile_upload_title": "Mobile Phone Upload",
|
||||
"connections.qr_code_enabled": "Enable QR Code Upload",
|
||||
"connections.save_note": "Changes to authentication providers require a restart to take effect.",
|
||||
"connections.sso_auto_login": "Enable SSO Auto Login",
|
||||
"connections.sso_auto_login_description": "Automatically redirect to SSO login when authentication is required.",
|
||||
"connections.sso_auto_login_title": "SSO Auto Login",
|
||||
"connections.title": "Connections",
|
||||
"connections.unconfigure": "Disconnect",
|
||||
"connections.unlinked": "Unlinked",
|
||||
"connections.unlinked_services": "Services",
|
||||
"credentials.col_action": "Action",
|
||||
"credentials.col_credential": "Credential",
|
||||
"credentials.col_source": "Source",
|
||||
@@ -620,6 +679,11 @@
|
||||
"devices.confirm_deactivate_device": "Remove this device? It will stop receiving push notifications.",
|
||||
"devices.confirm_revoke_token": "Revoke access for this device? It will need to log in again.",
|
||||
"devices.deactivate_device": "Remove",
|
||||
"devices.delete_device": "Delete",
|
||||
"devices.delete_device_confirm": "Permanently delete this inactive device? This cannot be undone.",
|
||||
"devices.delete_token": "Delete",
|
||||
"devices.delete_token_confirm": "Permanently delete this revoked token? This cannot be undone.",
|
||||
"devices.device_deleted_success": "Device permanently deleted.",
|
||||
"devices.device_removed_success": "Device removed successfully.",
|
||||
"devices.heading": "Mobile Devices",
|
||||
"devices.intro": "Manage your mobile app connections and registered devices. You can revoke access for individual devices here.",
|
||||
@@ -632,12 +696,16 @@
|
||||
"devices.no_mobile_tokens_help": "Log in via the mobile app or scan a QR code to create a mobile token.",
|
||||
"devices.page_title": "Devices – DocuElevate",
|
||||
"devices.qr_login_cta": "Connect a new device via QR code",
|
||||
"devices.reactivate_token": "Reactivate",
|
||||
"devices.reactivate_token_confirm": "Reactivate this token? The device will be able to use it again immediately.",
|
||||
"devices.registered_devices_description": "Devices registered for push notifications from the DocuElevate mobile app.",
|
||||
"devices.registered_devices_heading": "Registered Devices",
|
||||
"devices.revoke_token": "Revoke",
|
||||
"devices.status_active": "Active",
|
||||
"devices.status_inactive": "Inactive",
|
||||
"devices.status_revoked": "Revoked",
|
||||
"devices.token_deleted_success": "Token permanently deleted.",
|
||||
"devices.token_reactivated_success": "Token reactivated successfully.",
|
||||
"devices.token_revoked_success": "Device token revoked successfully.",
|
||||
"duplicates.file_id_label": "File ID",
|
||||
"duplicates.file_id_placeholder": "e.g. 42",
|
||||
@@ -1179,6 +1247,7 @@
|
||||
"nav.api_docs": "API Docs",
|
||||
"nav.api_tokens": "API Tokens",
|
||||
"nav.backup_restore": "Backup & Restore",
|
||||
"nav.connections": "Connections",
|
||||
"nav.credentials": "Credentials",
|
||||
"nav.dark_mode": "Dark Mode",
|
||||
"nav.dashboard": "Dashboard",
|
||||
@@ -1675,6 +1744,25 @@
|
||||
"shared.table_aria": "Shared links",
|
||||
"shared.unlimited_placeholder": "Unlimited",
|
||||
"shared.your_links": "Your Shared Links",
|
||||
"sharing.add_share": "Share",
|
||||
"sharing.change_role": "Change role",
|
||||
"sharing.error_empty_user": "Please enter a user ID to share with.",
|
||||
"sharing.heading": "Share with Users",
|
||||
"sharing.loading": "Loading shares…",
|
||||
"sharing.no_shares": "Not shared with anyone yet.",
|
||||
"sharing.revoke": "Revoke access",
|
||||
"sharing.revoke_confirm": "Remove this user's access to the file?",
|
||||
"sharing.role_editor": "Editor",
|
||||
"sharing.role_label": "Role",
|
||||
"sharing.role_viewer": "Viewer",
|
||||
"sharing.user_id_label": "User ID or email",
|
||||
"sharing.user_id_placeholder": "e.g. alice@example.com",
|
||||
"file.owner_label": "Owner",
|
||||
"file.owner_unowned": "Unowned",
|
||||
"file.claim_ownership": "Claim Ownership",
|
||||
"file.claim_ownership_confirm": "Claim this document as yours? You will become the owner and can manage sharing.",
|
||||
"file.claim_ownership_success": "You are now the owner of this document.",
|
||||
"file.claim_ownership_failed": "Could not claim ownership. The document may already have an owner.",
|
||||
"similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can",
|
||||
"similarity.files_missing_text": "file(s) have OCR text but no embedding yet.",
|
||||
"similarity.find_pairs_btn": "Find Pairs",
|
||||
@@ -1891,5 +1979,6 @@
|
||||
"upload.uploading": "Uploading...",
|
||||
"upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)",
|
||||
"upload.url_label": "File URL",
|
||||
"upload.url_placeholder": "https://example.com/document.pdf"
|
||||
"upload.url_placeholder": "https://example.com/document.pdf",
|
||||
"annotations.type": "Type"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user