from . import iuse
from . import location
from . import mirrors
-from . import newsletter
from . import nopaste
from . import people
from . import ui_modules
# People
"AccountsList" : people.AccountsListModule,
+ "Agent" : people.AgentModule,
"CDR" : people.CDRModule,
"Channels" : people.ChannelsModule,
"MOS" : people.MOSModule,
"WikiList" : wiki.WikiListModule,
# Misc
+ "ChristmasBanner" : ui_modules.ChristmasBannerModule,
+ "Markdown" : ui_modules.MarkdownModule,
"Map" : ui_modules.MapModule,
"ProgressBar" : ui_modules.ProgressBarModule,
},
(r"/donate/error", donate.ErrorHandler),
(r"/donation", tornado.web.RedirectHandler, { "url" : "/donate" }),
- # Newsletter
- (r"/newsletter/subscribe", newsletter.SubscribeHandler),
-
# RSS feed
(r"/news.rss", tornado.web.RedirectHandler, { "url" : "https://blog.ipfire.org/feed.xml" }),
(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" }),
self.add_handlers(r"fireinfo(\.dev)?\.ipfire\.org", [
(r"/", fireinfo.IndexHandler),
+ # Admin
+ (r"/admin", fireinfo.AdminIndexHandler),
+
# Vendors
(r"/vendors", fireinfo.VendorsHandler),
(r"/vendors/(pci|usb)/([0-9a-f]{4})", fireinfo.VendorHandler),
# Send profiles
(r"/send/([a-z0-9]+)", fireinfo.ProfileSendHandler),
- ])
+ ] + authentication_handlers)
# i-use.ipfire.org
self.add_handlers(r"i-use(\.dev)?\.ipfire\.org", [
# 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/([a-z_][a-z0-9_-]{0,31})", 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),
+
+ # Promotional Consent Stuff
+ (r"/subscribe", people.SubscribeHandler),
+ (r"/unsubscribe", people.UnsubscribeHandler),
# 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),
+
+ # Stats
+ (r"/stats", people.StatsHandler),
+
# API
+ (r"/api/check/email", auth.APICheckEmail),
(r"/api/check/uid", auth.APICheckUID),
] + authentication_handlers)