Skip to content

luci-app-2fa: init checkin#8280

Draft
Tokisaki-Galaxy wants to merge 1 commit intoopenwrt:masterfrom
Tokisaki-Galaxy:tokisaki-luci-app-otp
Draft

luci-app-2fa: init checkin#8280
Tokisaki-Galaxy wants to merge 1 commit intoopenwrt:masterfrom
Tokisaki-Galaxy:tokisaki-luci-app-otp

Conversation

@Tokisaki-Galaxy
Copy link
Contributor

@Tokisaki-Galaxy Tokisaki-Galaxy commented Jan 29, 2026

2026-02-04.180055.mp4
image

the app must changed LuCI core file because:

  • No hook point exists between password verification and session creation
  • External packages cannot inject authentication logic
  • No plugin discovery mechanism in the original code

Security Measures

Constant-time string comparison to prevent timing attacks
Username sanitization to prevent command injection
Array-based popen to prevent shell injection
OTP format validation (exactly 6 digits)
Session destroyed if 2FA verification fails
Uses authenticated session username to prevent bypass attacks

origin repo https://github.com/Tokisaki-Galaxy/luci-app-2fa

@github-actions

This comment has been minimized.

@Neustradamus
Copy link

@Tokisaki-Galaxy: Nice, good job!

Do not forget to solve:

🔶 Author name (Tokisaki-Galaxy) seems to be a nickname or an alias
🔶 Committer name (Tokisaki-Galaxy) seems to be a nickname or an alias

@stangri
Copy link
Member

stangri commented Jan 29, 2026

Looks very polished @Tokisaki-Galaxy!

Does this use TOTP? If the OpenWrt device doesn't have RTC and is offline or generally doesn't have correct time, does SSH become the only option to login?

Is there a README/instructions (ideally a hint on failed attempt) on how to disable 2FA from SSH/CLI for people who may be locked out of WebUI and can't read code ahead of time?

@Tokisaki-Galaxy
Copy link
Contributor Author

Tokisaki-Galaxy commented Jan 30, 2026

@stangri

Please refer to the newly added video at the top of the description section for details.

The plugin can choose either TOTP or HOTP, but TOTP is recommended.
For RTC clock that is not synchronized (for example, the year is 1970), users can choose the 2fa behavior (strict mode) through options. By default, LAN areas are allowed to bypass 2FA for login, while non-LAN areas are prohibited. It can be configured to allow anyone to bypass 2FA for login.

Regarding the documentation for SSH/CLI, I'm not quite sure where it should be placed. Should it be directly included in the web UI? But if users don't read it carefully, they might not be able to log in and it would be impossible to see the result. Do you have any suggestions?

Previously, it was planned to add backup code, but this was abandoned because it would cause the bitward auto-fill function to become unusable and the complexity would be too high.

Tokisaki-Galaxy

This comment was marked as outdated.

@Tokisaki-Galaxy Tokisaki-Galaxy changed the title [WIP] luci-app-2fa: init checkin luci-app-2fa: init checkin Feb 2, 2026
@Tokisaki-Galaxy Tokisaki-Galaxy force-pushed the tokisaki-luci-app-otp branch 2 times, most recently from d55e8c5 to 0e97b5b Compare February 2, 2026 04:46
@github-actions

This comment has been minimized.

Co-authored-by: Christian Marangi <ansuelsmth@gmail.com>
Signed-off-by: tokisaki galaxy <moebest@outlook.jp>
@systemcrash systemcrash mentioned this pull request Mar 16, 2026
10 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants