Skip to content

nyoeng/Systemprogramming_Teamproject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

187 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔒 암호화 기반 버전 관리 공유 파일 시스템

2025-2 시스템 프로그래밍 팀 프로젝트 [4조]

-ncurses 라이브러리를 사용하여 직관적인 TUI를 제공하고, 암호화를 사용하여 파일의 모든 버전을 안전하게 관리하는 공유 파일 시스템입니다.

스크린샷 2025-12-20 214942

🛠️ 컴파일 방법&실행

Makefile 사용

make

실행(개별 터미널에서 실행)

./bin/evfs_server
./bin/evfs_client

📁 파일 구조

linux-team-project/
├─ bin/
│  ├─ evfs_client  # tui 실행파일
│  └─ evfs_server  # server 실행파일
│
├─ client/
│  ├─ client.c
│  ├─ net_client.c/.h  # 클라이언트 통신
│  ├─ ui_handler.c/.h # tui 단축키 핸들러 
│  └─ ui.c/.h  # tui 레이아웃 렌더링
│
├─ common/
│  ├─ crypto.c/.h # 암호화 
│  └─ protocol.h # 프로토콜 정의
│
├─ server/
│  ├─ projects/  # 프로젝트 저장소
│  ├─ auth.c/.h  # 로그인 및 회원가입 
│  ├─ project.c/.h  # 프로젝트 관리 로직
│  ├─ server.c  # 서버 구동 및 메인 루프
│  ├─ server_handler.c/.h  # 클라이언트 요청 처리 핸들러
│  └─ version.c/.h  # 프로젝트 버전 관리
│
├─ users.db # 유저 데이터베이스
├─ Makefile  # 빌드 스크립트
└─ README.md  

📁 서버 내 프로젝트 디렉토리 구조

server/
├─ projects/
│  ├─ project1/
│  │  ├─ file1/
│  │  │  ├─ .meta # project1/file1의 meta
│  │  │  ├─ v1_20251204... # project1/file1의 v1
│  │  │  └─ v2_20251204... # project1/file1의 v2
│  │  ├─ file2/
│  │  ├─.meta # project1의 meta
│  │  └─ readme.txt
│  │
│  └─ project2/

📋 기능

  • 로그인/회원가입: SHA-256 암호화 기반 팝업 형태로 구현
  • 동적 파일 탐색기: 위아래 방향키로 목록 순회, Spacebar로 폴더 열기/닫기, Enter로 파일 선택 가능
  • 프로젝트 생성: Ctrl+P로 새로운 프로젝트 생성 가능
  • 파일 생성: Ctrl+F로 새로운 파일 생성 가능
  • 파일 편집: Enter키로 선택한 파일 내용 불러온 뒤 편집기에서 편집 가능(방향키로 커서 이동, 백스페이스 사용)
  • 파일 저장: Ctrl+S로 파일 저장(새로운 버전 생성)
  • 멤버 초대: Ctrl+A로 프로젝트에 접근 가능한 새로운 멤버 추가 가능
  • 파일 삭제: Ctrl+R로 파일 삭제 가능(프로젝트의 오너만 삭제 권한 보유)
  • 파일 암호화: AES-256 암호화 기반 파일 저장/불러오기 시마다 서버 내 파일 암호화/복호화 수행

🤝 팀원 정보/역할

❗ commit author에 github 메일이 등록되어 있지 않은 채로 프로젝트를 진행하여 Contributor 그래프에는 commit 수가 제대로 반영되지 않고 있습니다. 세부 commit 기록을 확인해주시면 감사하겠습니다.

김민서: 서버 로직 구현

진유민: 통신/암호화 모듈 구현

한나영: TUI 구현

About

시프 팀플

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors