feat: add module property --chromium-proxy-server

This commit is contained in:
Julien Neuhart
2021-11-04 17:22:50 +01:00
parent 094863f0ea
commit 7022ebe4ca
3 changed files with 14 additions and 0 deletions

View File

@@ -52,6 +52,7 @@ type Chromium struct {
incognito bool
ignoreCertificateErrors bool
allowFileAccessFromFiles bool
proxyServer string
allowList *regexp.Regexp
denyList *regexp.Regexp
disableRoutes bool
@@ -186,6 +187,7 @@ func (mod Chromium) Descriptor() gotenberg.ModuleDescriptor {
fs.Bool("chromium-incognito", false, "Start Chromium with incognito mode")
fs.Bool("chromium-ignore-certificate-errors", false, "Ignore the certificate errors")
fs.Bool("chromium-allow-file-access-from-files", false, "Allow file:// URIs to read other file:// URIs")
fs.String("chromium-proxy-server", "", "Set the outbound proxy server; this switch only affects HTTP and HTTPS requests")
fs.String("chromium-allow-list", "", "Set the allowed URLs for Chromium using a regular expression")
fs.String("chromium-deny-list", "^file:///[^tmp].*", "Set the denied URLs for Chromium using a regular expression")
fs.Bool("chromium-disable-routes", false, "Disable the routes")
@@ -199,8 +201,10 @@ func (mod Chromium) Descriptor() gotenberg.ModuleDescriptor {
// Provision sets the module properties.
func (mod *Chromium) Provision(ctx *gotenberg.Context) error {
flags := ctx.ParsedFlags()
mod.userAgent = flags.MustString("chromium-user-agent")
mod.ignoreCertificateErrors = flags.MustBool("chromium-ignore-certificate-errors")
mod.allowFileAccessFromFiles = flags.MustBool("chromium-allow-file-access-from-files")
mod.proxyServer = flags.MustString("chromium-proxy-server")
mod.allowList = flags.MustRegexp("chromium-allow-list")
mod.denyList = flags.MustRegexp("chromium-deny-list")
mod.disableRoutes = flags.MustBool("chromium-disable-routes")
@@ -312,6 +316,11 @@ func (mod Chromium) PDF(ctx context.Context, logger *zap.Logger, URL, outputPath
args = append(args, chromedp.Flag("allow-file-access-from-files", true))
}
if mod.proxyServer != "" {
// See https://github.com/gotenberg/gotenberg/issues/376.
args = append(args, chromedp.ProxyServer(mod.proxyServer))
}
allocatorCtx, cancel := chromedp.NewExecAllocator(ctx, args...)
defer cancel()

View File

@@ -234,6 +234,7 @@ func TestChromium_PDF(t *testing.T) {
incognito bool
ignoreCertificateErrors bool
allowFileAccessFromFiles bool
proxyServer string
allowList *regexp.Regexp
denyList *regexp.Regexp
expectErr bool
@@ -297,6 +298,7 @@ func TestChromium_PDF(t *testing.T) {
incognito: true,
ignoreCertificateErrors: true,
allowFileAccessFromFiles: true,
proxyServer: "foo",
},
{
URL: "file:///tests/test/testdata/chromium/html/sample1/index.html",
@@ -348,6 +350,7 @@ func TestChromium_PDF(t *testing.T) {
mod.incognito = tc.incognito
mod.ignoreCertificateErrors = tc.ignoreCertificateErrors
mod.allowFileAccessFromFiles = tc.allowFileAccessFromFiles
mod.proxyServer = tc.proxyServer
if tc.allowList == nil {
tc.allowList = regexp.MustCompile("")