Vlad Doloman
006cedebbe
feat: --show-eml outputs base64-encoded .eml; implies --no-send-email by default
2026-06-24 03:02:38 +03:00
Vlad Doloman
996000c5ae
feat: --send-email / --no-send-email flag for CLI mode
2026-06-24 02:54:48 +03:00
Vlad Doloman
ceaf24414a
feat: CLI mode (--create, --reissue, --revoke, --gen-crl)
2026-06-24 02:53:47 +03:00
Vlad Doloman
1222fb46a4
feat: toggle all-certs view with A key (load_all_certs, Action.TOGGLE_ALL)
2026-06-24 02:36:32 +03:00
Vlad Doloman
ca6fe9f525
feat: TUI main selection screen with checkboxes, menu items, revoke hotkey
2026-06-24 00:20:10 +03:00
Vlad Doloman
565a152243
fix: spec compliance for TUI DIALOGS section
...
- Rename CertFormResult.cancelled → confirmed (True=submit, False=cancel/Esc)
- Change _FORM_FIELDS from list to tuple
- Update _FORM_LABELS to exact values: CN, Email, Password
- Update _FORM_FIELD_Y to {cn:3, email:5, password:7}
- Add password param to show_cert_form (uses generate_password() if empty)
- Add mask=True to password InputField (both init and F5-regen sites)
- Add ord("Q") to show_confirm false-return condition
- Add KEY_UP/KEY_DOWN navigation in show_cert_form
- Add Ctrl-S (0x13) as immediate submit key in show_cert_form
- Update tests/test_dialogs.py: confirmed=True on submit, confirmed=False on cancel
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 00:13:46 +03:00
Vlad Doloman
fefec14929
feat: TUI modal dialogs (confirm Y/N, cert detail form)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 00:07:38 +03:00
Vlad Doloman
3a6d6aa125
feat: TUI widget primitives (colors, InputField, draw helpers)
...
Implement COLOR_* constants, initialization, box/centered drawing,
clamp utility, and InputField with handle_key/value logic for pure
text editing without live curses. All tests pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 00:00:52 +03:00
Vlad Doloman
a2593b644e
feat: MIME email composer with .ovpn attachment via msmtp/sendmail
...
Add send_email() function that composes multipart MIME messages with
template-based body and .ovpn file attachment, piped to mail binary via
subprocess.Popen. Supports Cryptgeon URL insertion and sender metadata.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-23 23:58:00 +03:00
Vlad Doloman
5b9ee8d448
feat: Cryptgeon client with AES-GCM client-side encryption
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-23 23:55:32 +03:00
Vlad Doloman
8a93a1a727
feat: metadata store (CN→email) and .ovpn config builder
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-23 23:52:55 +03:00
Vlad Doloman
c93a7b0c00
feat: EasyRSA subprocess wrappers (revoke, build, gen-crl, copy-crl)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-23 23:50:59 +03:00
Vlad Doloman
941b3d3f5b
feat: password generator with 28-char charset rules
...
Implements generate_password() function that produces 28-character passwords
following charset rules: position 1 uppercase, position 2 and last lowercase
with restricted characters, middle positions alphanumeric. Uses secrets module
for cryptographic randomness.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-23 23:49:14 +03:00
Vlad Doloman
3618d3a73b
feat: project skeleton + settings + PKI index.txt reader
2026-06-23 23:46:44 +03:00