mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-21 04:39:06 +00:00
remove work.md
This commit is contained in:
174
work.md
174
work.md
@@ -1,174 +0,0 @@
|
||||
# PR Feedback Work Items
|
||||
|
||||
## Security Issues
|
||||
|
||||
### 1. SSRF Vulnerability in ICS Fetch Service
|
||||
**File:** `server/reflector/services/ics_sync.py:45-49`
|
||||
**Issue:** The ICS fetch service doesn't validate or sanitize URLs before fetching them, which could lead to SSRF vulnerabilities.
|
||||
**Severity:** ~~High~~ **Low** (Downgraded)
|
||||
**Note:** After analysis, this is nearly unexploitable because:
|
||||
- Runs async in Celery worker with 5+ minute delays
|
||||
- No feedback to attacker (no errors, timing, or responses)
|
||||
- Only processes valid ICS format
|
||||
- Attacker can't verify if request succeeded or failed
|
||||
**Decision:** Ignore for now - theoretical risk only
|
||||
|
||||
### 2. Race Condition in process_meetings
|
||||
**File:** ~~`server/reflector/worker/ics_sync.py:149-219`~~ `server/reflector/worker/process.py:212-296`
|
||||
**Issue:** Complex logic for handling meeting state transitions with potential race conditions when multiple workers process the same meeting simultaneously.
|
||||
**Severity:** Medium
|
||||
**Status:** ✅ FIXED - Implemented ExtendableLock with Redis
|
||||
**Solution:** Added distributed locking using Redis with automatic lock extension for long-running processes:
|
||||
- 60-second initial timeout with 30-second auto-extension
|
||||
- Non-blocking acquisition to skip locked meetings
|
||||
- Prevents duplicate processing across multiple workers
|
||||
|
||||
## Code Issues
|
||||
|
||||
### 3. Missing Import for meetings_controller
|
||||
**File:** `server/reflector/views/rooms.py` (join meeting endpoint)
|
||||
**Issue:** Missing import for `meetings_controller` will cause NameError.
|
||||
**Severity:** High
|
||||
|
||||
### 4. Import Performance Issue
|
||||
**File:** `server/reflector/views/rooms.py` (sync ICS endpoint)
|
||||
**Issue:** `ics_sync_service` import is inside function body, imported on every request.
|
||||
**Severity:** Low
|
||||
|
||||
### 5. Grace Period Logic Issue
|
||||
**File:** `server/reflector/worker/ics_sync.py`
|
||||
**Issue:** Grace period logic doesn't check if meeting is already inactive and doesn't verify if participants rejoined.
|
||||
**Severity:** Medium
|
||||
|
||||
## Frontend Code Quality
|
||||
|
||||
### 6. Date Parameter Type Issue
|
||||
**File:** `www/app/lib/timeUtils.ts:1`
|
||||
**Issue:** Should just use "Date" and pass with `new Date(start_time)` - too much implicitness.
|
||||
**Severity:** Low
|
||||
|
||||
### 7. Missing End Comment for Calendar Hooks
|
||||
**File:** `www/app/lib/apiHooks.ts:749`
|
||||
**Issue:** Need to signal end of "Calendar integration hooks" section.
|
||||
**Severity:** Low
|
||||
|
||||
### 8. Non-null Assertion Issue
|
||||
**File:** `www/app/lib/apiHooks.ts:650`
|
||||
**Issue:** Using `roomName!` shadows null/undefined issues, better to fail explicitly.
|
||||
**Severity:** Low
|
||||
|
||||
### 9. Missing Comment
|
||||
**File:** `www/app/lib/apiHooks.ts:577`
|
||||
**Issue:** Need comment like "Invalidate all meeting-related queries".
|
||||
**Severity:** Low
|
||||
|
||||
### 10. Array Type Check
|
||||
**File:** `www/app/lib/apiHooks.ts:582`
|
||||
**Issue:** Should verify always returns array.
|
||||
**Severity:** Low
|
||||
|
||||
### 11. Duplicate Condition Check
|
||||
**File:** `www/app/lib/apiHooks.ts:584`
|
||||
**Issue:** Should combine conditions: `&& (k.includes("/meetings/active") || k.includes("/meetings/upcoming"))`.
|
||||
**Severity:** Low
|
||||
|
||||
### 12. Component Naming
|
||||
**File:** `www/app/components/MinimalHeader.tsx:17`
|
||||
**Issue:** Consider renaming to `MeetingMinimalHeader`.
|
||||
**Severity:** Low
|
||||
|
||||
### 13. useEffect Meeting Creation Logic
|
||||
**File:** `www/app/[roomName]/useRoomMeeting.tsx:46`
|
||||
**Issue:** useEffect fires on any meetingId change, potentially creating duplicate meetings.
|
||||
**Severity:** Medium
|
||||
|
||||
### 14. Obvious Comment
|
||||
**File:** `www/app/[roomName]/page.tsx:374`
|
||||
**Issue:** Comment seems obvious from code.
|
||||
**Severity:** Low
|
||||
|
||||
### 15. URL Structure Concern
|
||||
**File:** `www/app/[roomName]/page.tsx:302`
|
||||
**Issue:** URL structure getting complex, needs refactoring.
|
||||
**Severity:** Medium
|
||||
|
||||
### 16. Code Duplication (3rd time)
|
||||
**File:** `www/app/[roomName]/[meetingId]/page.tsx:28`
|
||||
**Issue:** Code repeated 3rd time, needs abstraction.
|
||||
**Severity:** Medium
|
||||
|
||||
### 17. Copy-Paste Issue
|
||||
**File:** `www/app/[roomName]/[meetingId]/page.tsx:43`
|
||||
**Issue:** Code appears to be copy-pasted from `[roomName]/page.tsx`.
|
||||
**Severity:** Medium
|
||||
|
||||
### 18. Unnecessary Code
|
||||
**File:** `www/app/[roomName]/MeetingSelection.tsx:33`
|
||||
**Issue:** Code not needed.
|
||||
**Severity:** Low
|
||||
|
||||
### 19. Missing Punctuation
|
||||
**File:** `www/app/[roomName]/MeetingSelection.tsx:57`
|
||||
**Issue:** Missing period.
|
||||
**Severity:** Low
|
||||
|
||||
### 20. Inconsistent Time Value
|
||||
**File:** `www/app/[roomName]/MeetingSelection.tsx:73`
|
||||
**Issue:** Comment says 1 or 5 minutes?
|
||||
**Severity:** Low
|
||||
|
||||
### 21. Data Partitioning Logic
|
||||
**File:** `www/app/[roomName]/MeetingSelection.tsx:76`
|
||||
**Issue:** Extracting currentMeetings and upcomingMeetings may have intersection issues, needs partition function.
|
||||
**Severity:** Medium
|
||||
|
||||
### 22. Missing Character
|
||||
**File:** `www/app/[roomName]/MeetingSelection.tsx:104`
|
||||
**Issue:** Missing "?".
|
||||
**Severity:** Low
|
||||
|
||||
### 23. Code Duplication
|
||||
**File:** `www/app/(app)/rooms/page.tsx:330`
|
||||
**Issue:** Duplicates code after "detailedEditedRoom".
|
||||
**Severity:** Medium
|
||||
|
||||
### 24. Emoji Constant
|
||||
**File:** `www/app/(app)/rooms/page.tsx:835`
|
||||
**Issue:** ✅ emoji should be a constant with string template.
|
||||
**Severity:** Low
|
||||
|
||||
### 25. Missing Punctuation
|
||||
**File:** `www/app/(app)/rooms/_components/ICSSettings.tsx:70`
|
||||
**Issue:** Missing period.
|
||||
**Severity:** Low
|
||||
|
||||
### 26. Type Safety Issue
|
||||
**File:** `www/app/(app)/rooms/_components/RoomTable.tsx:87`
|
||||
**Issue:** Use `meeting.calendar_metadata?.["title"]` instead of "as any".
|
||||
**Severity:** Low
|
||||
|
||||
### 27. Duplicated Logic
|
||||
**File:** `www/app/(app)/rooms/_components/RoomTable.tsx:114`
|
||||
**Issue:** Minutes logic duplicated in another place.
|
||||
**Severity:** Low
|
||||
|
||||
## Documentation
|
||||
|
||||
### 28. Unclear Purpose
|
||||
**File:** `consent-handler.md`
|
||||
**Issue:** What's this file for? Most likely NOT needed.
|
||||
**Severity:** Low
|
||||
|
||||
## Error Handling
|
||||
|
||||
### 29. Silent Failures in pre_create_upcoming_meetings
|
||||
**File:** `server/reflector/worker/ics_sync.py:103-198`
|
||||
**Issue:** Function catches all exceptions at top level but doesn't properly handle individual meeting creation failures.
|
||||
**Severity:** Medium
|
||||
|
||||
---
|
||||
|
||||
## Priority Levels:
|
||||
- **High**: Items 1, 3
|
||||
- **Medium**: Items 2, 5, 13, 15, 16, 17, 21, 23, 29
|
||||
- **Low**: Items 4, 6, 7, 8, 9, 10, 11, 12, 14, 18, 19, 20, 22, 24, 25, 26, 27, 28
|
||||
Reference in New Issue
Block a user