
माउंटेबल Rails इंजन जो 24+ साइबरसुरक्षा एस्केप रूम परिदृश्य प्रदान करता है, जिसमें यादृच्छिक पासवर्ड, JIT-संकलित NPC संवाद, और खेल की स्थिति प्रबंधन के लिए RESTful API शामिल है। व्यावहारिक सुरक्षा प्रशिक्षण के लिए डिज़ाइन किया गया।
एक mountable Rails Engine के रूप में साइबर सुरक्षा प्रशिक्षण एस्केप रूम गेम।
अपने Gemfile में:
gem 'break_escape', path: 'path/to/break_escape'
फिर:
bundle install
rails break_escape:install:migrations
rails db:migrate
rails db:seed # वैकल्पिक: परिदृश्यों से मिशन बनाता है
अपने config/routes.rb में:
mount BreakEscape::Engine => "/break_escape"
export BREAK_ESCAPE_STANDALONE=true
rails server
# Visit http://localhost:3000/break_escape/
Hacktivity या किसी अन्य Rails ऐप में माउंट करें। इंजन Devise के माध्यम से होस्ट ऐप के current_user का उपयोग करेगा।
# config/initializers/break_escape.rb
BreakEscape.configure do |config|
config.standalone_mode = false # डेवलपमेंट के लिए true
config.demo_user_handle = 'demo_player'
end
break_escape_missions - परिदृश्य मेटाडेटा (नाम, display_name, प्रकाशित, कठिनाई)break_escape_games - प्लेयर स्थिति + परिदृश्य स्नैपशॉट (JSONB)break_escape_demo_users - केवल स्टैंडअलोन मोड (वैकल्पिक)GET /games/:id/scenario - परिदृश्य JSON (ERB-जनरेटेड)GET /games/:id/ink?npc=X - NPC स्क्रिप्ट (.ink से JIT संकलित)GET /games/:id/bootstrap - प्रारंभिक गेम डेटाPUT /games/:id/sync_state - प्लेयर स्थिति सिंक करेंPOST /games/:id/unlock - अनलॉक प्रयास मान्य करेंPOST /games/:id/inventory - इन्वेंटरी अपडेट करेंपरिदृश्य .json.erb टेम्पलेट के रूप में संग्रहीत होते हैं और रैंडमाइज़्ड मानों के साथ ऑन-डिमांड रेंडर किए जाते हैं:
<%= random_password %> - प्रति गेम अद्वितीय पासवर्ड उत्पन्न करता है<%= random_pin %> - अद्वितीय 4-अंकीय PIN उत्पन्न करता है<%= random_code %> - अद्वितीय हेक्स कोड उत्पन्न करता हैNPC संवाद स्क्रिप्ट पहले अनुरोध पर संकलित होती हैं (~300ms):
.json मौजूद है और .ink से नया हैinklecate चलाएँप्लेयर स्थिति JSONB कॉलम में संग्रहीत:
परीक्षण स्वचालित रूप से GitHub Actions पर चलते हैं। कमिटेड Gemfile.lock उपयोग किए गए सटीक gem संस्करणों को पिन करता है।
bundle install
bundle exec rails db:create db:migrate RAILS_ENV=test
bundle exec rails test
इंजन के साथ एक bin/setup स्क्रिप्ट आती है जो एक सिबलिंग Hacktivity चेकआउट से बंडल को बूटस्ट्रैप करती है (जिसमें पहले से सभी आवश्यक gem वेंडर किए गए हैं):
# BreakEscape रूट से — Hacktivity ../Hacktivity पर होनी चाहिए
bin/setup
bundle exec rails test
# यदि Hacktivity कहीं और है, तो HACKTIVITY_DIR सेट करें:
HACKTIVITY_DIR=/path/to/Hacktivity bin/setup
bin/setup हल किए गए .gem फ़ाइलों को vendor/cache/ में कॉपी करता है और bundle install --local चलाता है। vendor/cache/ और vendor/bundle/ निर्देशिकाएँ gitignored हैं; केवल Gemfile.lock कमिट किया गया है।
एकीकरण गाइड के लिए HACKTIVITY_INTEGRATION.md देखें।
परियोजना में योगदान देने वाले सभी लोगों का बहुत-बहुत धन्यवाद। कृपया GitHub इतिहास देखें।