dont proxy dropbox, google or translate

This commit is contained in:
pierce 2025-02-14 22:58:35 -05:00
parent 8f12ceb276
commit d403350d01
No known key found for this signature in database
GPG Key ID: EC79465B0E865E47
4 changed files with 22 additions and 36 deletions

View File

@ -10,27 +10,10 @@ local config = {
} }
} }
if CLIENT then if CLIENT then
local P = {} hook.Add( "CanAccessUrl", "StarfallEx", function( url )
P.id = "urlwhitelist" return true
P.name = "URL Whitelist"
P.settingsoptions = { "Enabled", "Disabled" }
P.defaultsetting = 1
P.checks = {
function() return true end,
"allow",
}
P.settingsoptions[3] = "Disabled for owner"
P.checks[3] = function() return true end
hook.Add( "PostGamemodeLoaded", "CFCHTTP_Wrap_SF", function()
local original = SF.Permissions.includePermissions
SF.Permissions.includePermissions = function()
original()
SF.Permissions.registerProvider( P )
end
end ) end )
end end
return config return config

View File

@ -1,6 +1,8 @@
AddCSLuaFile() AddCSLuaFile()
---@alias WhitelistAddressOption { allowed: boolean|nil, noisy: boolean|nil, permanent: boolean|nil, pattern: boolean|nil, _edited: boolean|nil }
---@alias WhitelistAddressOption { allowed: boolean|nil, noisy: boolean|nil, permanent: boolean|nil, pattern: boolean|nil, _edited: boolean|nil, proxy: boolean|nil }
---@class WhitelistConfig ---@class WhitelistConfig
---@field version string ---@field version string
@ -16,9 +18,7 @@ local config = {
defaultAssetURIOptions = { defaultAssetURIOptions = {
allowed = true, allowed = true,
}, },
defaultOptions = { defaultOptions = {},
allowed = false,
},
addresses = { addresses = {
-- this is used internally by this addon, removing it could cause issues -- this is used internally by this addon, removing it could cause issues
@ -43,17 +43,17 @@ local config = {
["github.com"] = { allowed = true }, ["github.com"] = { allowed = true },
-- dropbox -- dropbox
["dl.dropboxusercontent.com"] = { allowed = true }, ["dl.dropboxusercontent.com"] = { allowed = true, proxy = false },
["dl.dropbox.com"] = { allowed = true }, ["dl.dropbox.com"] = { allowed = true, proxy = false },
["www.dropbox.com"] = { allowed = true }, ["www.dropbox.com"] = { allowed = true, proxy = false },
-- onedrive -- onedrive
["onedrive.live.com"] = { allowed = true }, ["onedrive.live.com"] = { allowed = true },
["api.onedrive.com"] = { allowed = true }, ["api.onedrive.com"] = { allowed = true },
-- google drive -- google drive
["docs.google.com"] = { allowed = true }, ["docs.google.com"] = { allowed = true, proxy = false },
["drive.google.com"] = { allowed = true }, ["drive.google.com"] = { allowed = true, proxy = false },
["*.googleusercontent.com"] = { allowed = true }, ["*.googleusercontent.com"] = { allowed = true },
-- youtube -- youtube
@ -86,7 +86,7 @@ local config = {
["i.redd.it"] = { allowed = true }, ["i.redd.it"] = { allowed = true },
["api.wolframalpha.com"] = { allowed = true }, ["api.wolframalpha.com"] = { allowed = true },
["text-to-speech-demo.ng.bluemix.net"] = { allowed = true }, ["text-to-speech-demo.ng.bluemix.net"] = { allowed = true },
["translate.google.com"] = { allowed = true }, ["translate.google.com"] = { allowed = true, proxy = false },
["cdn[%w-_]*.discordapp%.com"] = { allowed = true, pattern = true }, ["cdn[%w-_]*.discordapp%.com"] = { allowed = true, pattern = true },
["images-([%w%-]+)%.discordapp%.net"] = { allowed = true, pattern = true }, ["images-([%w%-]+)%.discordapp%.net"] = { allowed = true, pattern = true },

View File

@ -17,15 +17,12 @@ local function wrapHTTP()
HTTP = function( req ) HTTP = function( req )
local options = CFCHTTP.GetOptionsForURL( req.url ) local options = CFCHTTP.GetOptionsForURL( req.url )
local isAllowed = options and options.allowed local isAllowed = options and options.allowed
local allowedThroughProxy = options and options.allowedProxy
local noisy = options and options.noisy local noisy = options and options.noisy
local stack = string.Split( debug.traceback(), "\n" ) local stack = string.Split( debug.traceback(), "\n" )
local status = isAllowed and "allowed" or "blocked" local status = isAllowed and "allowed" or "blocked"
-- TODO should we allow proxied http requests
CFCHTTP.LogRequest( { CFCHTTP.LogRequest( {
noisy = noisy, noisy = noisy,
method = req.method, method = req.method,

View File

@ -15,7 +15,13 @@ local function wrapPlayURL()
local stack = string.Split( debug.traceback(), "\n" ) local stack = string.Split( debug.traceback(), "\n" )
local options = CFCHTTP.GetOptionsForURL( url ) local options = CFCHTTP.GetOptionsForURL( url )
local isAllowed = options and options.allowed
local isAllowed = options and options.allowed == true
local isBlocked = options and options.allowed == false
-- if proxy is nil always default to proxying
local shouldProxy = options and options.proxy ~= false
local noisy = options and options.noisy local noisy = options and options.noisy
local status = isAllowed and "allowed" or "blocked" local status = isAllowed and "allowed" or "blocked"
@ -26,9 +32,9 @@ local function wrapPlayURL()
urls = { { url = url, status = status } } urls = { { url = url, status = status } }
} }
local canProxy = CFCHTTP.Proxy:IsHealthy() local canProxy = CFCHTTP.Proxy:IsHealthy() and shouldProxy
if not isAllowed and not canProxy then if isBlocked or (not isAllowed and not canProxy) then
CFCHTTP.LogRequest( logData ) CFCHTTP.LogRequest( logData )
if callback then callback( nil, CFCHTTP.BASS_ERROR_BLOCKED_URI, "BASS_ERROR_BLOCKED_URI" ) end if callback then callback( nil, CFCHTTP.BASS_ERROR_BLOCKED_URI, "BASS_ERROR_BLOCKED_URI" ) end
return return