[Firebase] 5. 사용자별 앱별 기기 제한 기반 등록 및 초과 시 차단 로직 구현
목표앱 실행 시 로그인 후:Firestore users/{uid}에서 deviceLimits[appId]를 읽어 해당 앱의 최대 허용 기기 수 확인users/{uid}/devices_{appId}에 등록된 기기 수 확인제한 이내면 현재 기기를 등록 후 사용 허용제한 초과 시 로그인 차단 및 안내 출력 # main_device_register.pyfrom firebase_config import authfrom firestore_client import dbimport getpassimport datetimeimport socketimport randomimport stringdef generate_device_id(): hostname = socket.gethostname() rand_suff..
[Firebase] 4. Python 앱에 Firebase SDK 연동 및 로그인 기능 구현
firebase_config.py main_auth_test.pyfrom firebase_config import authimport getpassdef sign_up(): email = input("가입할 이메일: ") password = getpass.getpass("가입할 비밀번호 (콘솔에 안 보임): ") try: user = auth.create_user_with_email_and_password(email, password) print("✅ 회원가입 성공:", user['email']) except Exception as e: print("❌ 회원가입 실패:", e)def sign_in(): email = input("로그인 이..
PyInstaller 빌드 후 settings.json 경로 이슈 해결 기록
🎯 PyInstaller 빌드 후 settings.json 경로 이슈 해결 기록문제PyInstaller 빌드 후 실행 시 settings.json이 exe 경로가 아닌 _internal 경로에 생성됨_internal은 읽기 전용이라 설정 저장/불러오기 작동 안함원인resource_path()에서 sys._MEIPASS를 사용하여 리소스와 유저 데이터 경로를 구분 없이 처리했기 때문해결리소스(icon, version.txt 등) → resource_path()에서 _MEIPASS 경로 사용유저 데이터(settings.json) → settings_path() 함수 추가, sys.executable 기준 exe 경로 사용 def resource_path(relative_path): """ PyI..
2025년 기차 KTX 코레일 예약 매크로 프로그램 개발 완료(5월 9일자)
기존 KTX 매크로가 막힘에 따라 직접 만들고 싶으신 분들에게 정보 공유차 글 작성합니다. 잘 쓰던 KTX Macro 확장 프로그램이 갑자기 막혔다. 아마도 코레일 측에서 자바 스크립트 기반 탐지를 한거 같다. 그래서 간단하게 selenium으로 간단한 매크로 프로그램 만들어봤는데, 코레일 로그인부터 막혔다.- 봇 우회 기법이나 stelth 모드도 사용해봤는데 역시나 안됨 어쩔 수 없이 화면 탐지 방식으로 개발을 했다. 전체 구성은 G매크로에서 아이디어를 얻었으며, 대신 이미지 탐지가 되게끔 + 조건문과 반복문을 사용자가 직접 구성할 수 있는 방식으로 만들어봤다. -> 현재 5회 성공 / 5회 시도, 100%의 성공률 UI는 아래와 같이 구성했다. 작업 추가 버튼을 통해 다양한 작업들을 추가할 수..