src/templates/auth/activate.html \
src/templates/auth/activated.html \
src/templates/auth/login.html \
+ src/templates/auth/password-reset.html \
+ src/templates/auth/password-reset-initiation.html \
+ src/templates/auth/password-reset-successful.html \
src/templates/auth/register.html \
src/templates/auth/register-spam.html \
src/templates/auth/register-success.html
templates_authdir = $(templatesdir)/auth
templates_auth_messages_DATA = \
+ src/templates/auth/messages/password-reset.txt \
src/templates/auth/messages/register.txt
templates_auth_messagesdir = $(templates_authdir)/messages
templates_netbootdir = $(templatesdir)/netboot
templates_newsletter_DATA = \
+ src/templates/newsletter/subscribe.txt \
src/templates/newsletter/subscribed.html
templates_newsletterdir = $(templatesdir)/newsletter
src/templates/people/conferences.html \
src/templates/people/call.html \
src/templates/people/calls.html \
+ src/templates/people/group.html \
+ src/templates/people/groups.html \
src/templates/people/index.html \
src/templates/people/passwd.html \
src/templates/people/search.html \
templates_people_modulesdir = $(templates_peopledir)/modules
-templates_people_ssh_keys_DATA = \
- src/templates/people/ssh-keys/delete.html \
- src/templates/people/ssh-keys/error.html \
- src/templates/people/ssh-keys/error-invalid-key.html \
- src/templates/people/ssh-keys/index.html \
- src/templates/people/ssh-keys/upload.html
-
-templates_people_ssh_keysdir = $(templates_peopledir)/ssh-keys
-
templates_static_DATA = \
src/templates/static/blocked.html \
- src/templates/static/chat.html \
src/templates/static/features.html \
src/templates/static/legal.html \
src/templates/static/support.html
</li>
<li class="nav-item">
- <a class="nav-link {% if request.path.startswith("/download") %}active{% end %}" href="/download">{{ _("Download") }}</a>
+ <a class="nav-link {% if request.path == "/support" %}active{% end %}" href="/support">{{ _("Support") }}</a>
</li>
<li class="nav-item">
- <a class="nav-link {% if request.path == "/support" %}active{% end %}" href="/support">{{ _("Support") }}</a>
+ <a class="nav-link" href="https://blog.ipfire.org/">{{ _("Blog") }}</a>
</li>
<li class="nav-item">
- <a class="nav-link" href="https://blog.ipfire.org/">{{ _("Blog") }}</a>
+ <a class="nav-link" href="https://community.ipfire.org/">{{ _("Community") }}</a>
+ </li>
+
+ <li class="nav-item">
+ <a class="nav-link {% if request.path.startswith("/download") %}active{% end %}" href="/download">{{ _("Download") }}</a>
</li>
</ul>
{{ _("Users") }}
</a>
</li>
+
+ <li class="nav-item">
+ <a class="nav-link {% if request.path.startswith("/groups") %}active{% end %}" href="/groups">
+ {{ _("Groups") }}
+ </a>
+ </li>
{% end %}
{% if current_user.has_sip() %}
</li>
<li>
- <a href="/download">{{ _("Download") }}</a>
+ <a href="/support">{{ _("Support") }}</a>
</li>
<li>
- <a href="/support">{{ _("Support") }}</a>
+ <a href="https://blog.ipfire.org">{{ _("Blog") }}</a>
+ </li>
+
+ <li>
+ <a href="https://community.ipfire.org/">{{ _("Community") }}</a>
</li>
</ul>
</div>
<div class="col">
<ul class="list-unstyled">
<li>
- <a href="https://blog.ipfire.org">{{ _("Blog") }}</a>
+ <a href="/download">{{ _("Download") }}</a>
</li>
<li>
"WikiList" : wiki.WikiListModule,
# Misc
+ "Markdown" : ui_modules.MarkdownModule,
"Map" : ui_modules.MapModule,
"ProgressBar" : ui_modules.ProgressBarModule,
},
(r"/news/(.*)", handlers.NewsHandler),
# Static Pages
- (r"/chat", StaticHandler, { "template" : "chat.html" }),
(r"/features", StaticHandler, { "template" : "features.html" }),
(r"/legal", StaticHandler, { "template" : "legal.html" }),
(r"/support", StaticHandler, { "template" : "support.html" }),
# people.ipfire.org
self.add_handlers(r"people(\.dev)?\.ipfire\.org", [
(r"/", people.IndexHandler),
- (r"/activate/(\w+)/(\w+)", auth.ActivateHandler),
+ (r"/activate/([a-z_][a-z0-9_-]{0,31})/(\w+)", auth.ActivateHandler),
(r"/conferences", people.ConferencesHandler),
+ (r"/groups", people.GroupsHandler),
+ (r"/groups/(\w+)", people.GroupHandler),
(r"/register", auth.RegisterHandler),
(r"/search", people.SearchHandler),
(r"/users", people.UsersHandler),
- (r"/users/(\w+)", people.UserHandler),
- (r"/users/(\w+)\.jpg", people.AvatarHandler),
- (r"/users/(\w+)/calls/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})", people.CallHandler),
- (r"/users/(\w+)/calls(?:/(\d{4}-\d{2}-\d{2}))?", people.CallsHandler),
- (r"/users/(\w+)/edit", people.UserEditHandler),
- (r"/users/(\w+)/passwd", people.UserPasswdHandler),
- (r"/users/(\w+)/ssh-keys", people.SSHKeysIndexHandler),
- (r"/users/(\w+)/ssh-keys/(SHA256\:.*)/delete", people.SSHKeysDeleteHandler),
- (r"/users/(\w+)/ssh-keys/(SHA256\:.*)", people.SSHKeysDownloadHandler),
- (r"/users/(\w+)/ssh-keys/upload", people.SSHKeysUploadHandler),
- (r"/users/(\w+)/sip", people.SIPHandler),
+ (r"/users/([a-z_][a-z0-9_-]{0,31})", people.UserHandler),
+ (r"/users/([a-z_][a-z0-9_-]{0,31})\.jpg", people.AvatarHandler),
+ (r"/users/([a-z_][a-z0-9_-]{0,31})/calls/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})", people.CallHandler),
+ (r"/users/([a-z_][a-z0-9_-]{0,31})/calls(?:/(\d{4}-\d{2}-\d{2}))?", people.CallsHandler),
+ (r"/users/([a-z_][a-z0-9_-]{0,31})/edit", people.UserEditHandler),
+ (r"/users/([a-z_][a-z0-9_-]{0,31})/passwd", people.UserPasswdHandler),
+ (r"/users/([a-z_][a-z0-9_-]{0,31})/sip", people.SIPHandler),
# Single-Sign-On for Discourse
(r"/sso/discourse", people.SSODiscourse),
+
+ # Password Reset
+ (r"/password\-reset", auth.PasswordResetInitiationHandler),
+ (r"/password\-reset/([a-z_][a-z0-9_-]{0,31})/(\w+)", auth.PasswordResetHandler),
+
+ # API
+ (r"/api/check/uid", auth.APICheckUID),
] + authentication_handlers)
# wiki.ipfire.org