mirror of
https://github.com/miniflux/v2.git
synced 2025-09-30 19:22:11 +00:00
Merge branch 'main' into feat/content-rewrite-progressive-images
This commit is contained in:
commit
c912f1bd34
2 changed files with 59 additions and 53 deletions
|
@ -138,46 +138,51 @@ var (
|
||||||
"linkedin.com/shareArticle",
|
"linkedin.com/shareArticle",
|
||||||
}
|
}
|
||||||
|
|
||||||
validURISchemes = map[string]struct{}{
|
// See https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
|
||||||
"apt": {},
|
validURISchemes = []string{
|
||||||
"bitcoin": {},
|
// Most commong schemes on top.
|
||||||
"callto": {},
|
"https:",
|
||||||
"dav": {},
|
"http:",
|
||||||
"davs": {},
|
|
||||||
"ed2k": {},
|
// Then the rest.
|
||||||
"facetime": {},
|
"apt:",
|
||||||
"feed": {},
|
"bitcoin:",
|
||||||
"ftp": {},
|
"callto:",
|
||||||
"geo": {},
|
"dav:",
|
||||||
"git": {},
|
"davs:",
|
||||||
"gopher": {},
|
"ed2k:",
|
||||||
"http": {},
|
"facetime:",
|
||||||
"https": {},
|
"feed:",
|
||||||
"irc": {},
|
"ftp:",
|
||||||
"irc6": {},
|
"geo:",
|
||||||
"ircs": {},
|
"git:",
|
||||||
"itms-apps": {},
|
"gopher:",
|
||||||
"itms": {},
|
"irc:",
|
||||||
"magnet": {},
|
"irc6:",
|
||||||
"mailto": {},
|
"ircs:",
|
||||||
"news": {},
|
"itms-apps:",
|
||||||
"nntp": {},
|
"itms:",
|
||||||
"rtmp": {},
|
"magnet:",
|
||||||
"sftp": {},
|
"mailto:",
|
||||||
"sip": {},
|
"news:",
|
||||||
"sips": {},
|
"nntp:",
|
||||||
"skype": {},
|
"rtmp:",
|
||||||
"spotify": {},
|
"sftp:",
|
||||||
"ssh": {},
|
"sip:",
|
||||||
"steam": {},
|
"sips:",
|
||||||
"svn": {},
|
"skype:",
|
||||||
"svn+ssh": {},
|
"spotify:",
|
||||||
"tel": {},
|
"ssh:",
|
||||||
"webcal": {},
|
"steam:",
|
||||||
"xmpp": {},
|
"svn:",
|
||||||
|
"svn+ssh:",
|
||||||
|
"tel:",
|
||||||
|
"webcal:",
|
||||||
|
"xmpp:",
|
||||||
|
|
||||||
// iOS Apps
|
// iOS Apps
|
||||||
"opener": {}, // https://www.opener.link
|
"opener:", // https://www.opener.link
|
||||||
"hack": {}, // https://apps.apple.com/it/app/hack-for-hacker-news-reader/id1464477788?l=en-GB
|
"hack:", // https://apps.apple.com/it/app/hack-for-hacker-news-reader/id1464477788?l=en-GB
|
||||||
}
|
}
|
||||||
|
|
||||||
dataAttributeAllowedPrefixes = []string{
|
dataAttributeAllowedPrefixes = []string{
|
||||||
|
@ -467,23 +472,22 @@ func hasRequiredAttributes(tagName string, attributes []string) bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// See https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
|
|
||||||
func hasValidURIScheme(absoluteURL string) bool {
|
func hasValidURIScheme(absoluteURL string) bool {
|
||||||
colonIndex := strings.IndexByte(absoluteURL, ':')
|
for _, scheme := range validURISchemes {
|
||||||
// Scheme must exist (colonIndex > 0). An empty scheme (e.g. ":foo") is not allowed.
|
if strings.HasPrefix(absoluteURL, scheme) {
|
||||||
if colonIndex <= 0 {
|
return true
|
||||||
return false
|
}
|
||||||
}
|
}
|
||||||
|
return false
|
||||||
scheme := absoluteURL[:colonIndex]
|
|
||||||
_, ok := validURISchemes[strings.ToLower(scheme)]
|
|
||||||
return ok
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func isBlockedResource(absoluteURL string) bool {
|
func isBlockedResource(absoluteURL string) bool {
|
||||||
return slices.ContainsFunc(blockedResourceURLSubstrings, func(element string) bool {
|
for _, blockedURL := range blockedResourceURLSubstrings {
|
||||||
return strings.Contains(absoluteURL, element)
|
if strings.Contains(absoluteURL, blockedURL) {
|
||||||
})
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func isValidIframeSource(iframeSourceURL string) bool {
|
func isValidIframeSource(iframeSourceURL string) bool {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.\" Manpage for miniflux.
|
.\" Manpage for miniflux.
|
||||||
.TH "MINIFLUX" "1" "August 19, 2025" "\ \&" "\ \&"
|
.TH "MINIFLUX" "1" "September 29, 2025" "\ \&" "\ \&"
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
miniflux \- Minimalist and opinionated feed reader
|
miniflux \- Minimalist and opinionated feed reader
|
||||||
|
@ -486,7 +486,9 @@ Set to 1 to authorize OAuth2 user creation\&.
|
||||||
Disabled by default\&.
|
Disabled by default\&.
|
||||||
.TP
|
.TP
|
||||||
.B POLLING_FREQUENCY
|
.B POLLING_FREQUENCY
|
||||||
Refresh interval in minutes for feeds\&.
|
Interval for the background job scheduler.
|
||||||
|
.br
|
||||||
|
Determines how often a batch of feeds is selected for refresh, based on their last refresh time\&.
|
||||||
.br
|
.br
|
||||||
Default is 60 minutes\&.
|
Default is 60 minutes\&.
|
||||||
.TP
|
.TP
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue