5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 22:13:36 +08:00

Add EnableFraudulentWebsiteDetection to options (#2269)

This allows to explicitly opt-in to scan services for fraudulent
content, such as malware or phishing attempts.
This commit is contained in:
stffabi 2023-01-05 14:06:26 +01:00 committed by GitHub
parent 0a32c1124e
commit 284e20a290
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 41 additions and 9 deletions

View File

@ -17,7 +17,7 @@
#define WindowStartsMinimised 2 #define WindowStartsMinimised 2
#define WindowStartsFullscreen 3 #define WindowStartsFullscreen 3
WailsContext* Create(const char* title, int width, int height, int frameless, int resizable, int fullscreen, int fullSizeContent, int hideTitleBar, int titlebarAppearsTransparent, int hideTitle, int useToolbar, int hideToolbarSeparator, int webviewIsTransparent, int alwaysOnTop, int hideWindowOnClose, const char *appearance, int windowIsTranslucent, int debug, int windowStartState, int startsHidden, int minWidth, int minHeight, int maxWidth, int maxHeight); WailsContext* Create(const char* title, int width, int height, int frameless, int resizable, int fullscreen, int fullSizeContent, int hideTitleBar, int titlebarAppearsTransparent, int hideTitle, int useToolbar, int hideToolbarSeparator, int webviewIsTransparent, int alwaysOnTop, int hideWindowOnClose, const char *appearance, int windowIsTranslucent, int debug, int windowStartState, int startsHidden, int minWidth, int minHeight, int maxWidth, int maxHeight, bool fraudulentWebsiteWarningEnabled);
void Run(void*, const char* url); void Run(void*, const char* url);
void SetTitle(void* ctx, const char *title); void SetTitle(void* ctx, const char *title);

View File

@ -13,7 +13,7 @@
#import "WailsMenu.h" #import "WailsMenu.h"
#import "WailsMenuItem.h" #import "WailsMenuItem.h"
WailsContext* Create(const char* title, int width, int height, int frameless, int resizable, int fullscreen, int fullSizeContent, int hideTitleBar, int titlebarAppearsTransparent, int hideTitle, int useToolbar, int hideToolbarSeparator, int webviewIsTransparent, int alwaysOnTop, int hideWindowOnClose, const char *appearance, int windowIsTranslucent, int debug, int windowStartState, int startsHidden, int minWidth, int minHeight, int maxWidth, int maxHeight) { WailsContext* Create(const char* title, int width, int height, int frameless, int resizable, int fullscreen, int fullSizeContent, int hideTitleBar, int titlebarAppearsTransparent, int hideTitle, int useToolbar, int hideToolbarSeparator, int webviewIsTransparent, int alwaysOnTop, int hideWindowOnClose, const char *appearance, int windowIsTranslucent, int debug, int windowStartState, int startsHidden, int minWidth, int minHeight, int maxWidth, int maxHeight, bool fraudulentWebsiteWarningEnabled) {
[NSApplication sharedApplication]; [NSApplication sharedApplication];
@ -25,7 +25,7 @@ WailsContext* Create(const char* title, int width, int height, int frameless, in
fullscreen = 1; fullscreen = 1;
} }
[result CreateWindow:width :height :frameless :resizable :fullscreen :fullSizeContent :hideTitleBar :titlebarAppearsTransparent :hideTitle :useToolbar :hideToolbarSeparator :webviewIsTransparent :hideWindowOnClose :safeInit(appearance) :windowIsTranslucent :minWidth :minHeight :maxWidth :maxHeight]; [result CreateWindow:width :height :frameless :resizable :fullscreen :fullSizeContent :hideTitleBar :titlebarAppearsTransparent :hideTitle :useToolbar :hideToolbarSeparator :webviewIsTransparent :hideWindowOnClose :safeInit(appearance) :windowIsTranslucent :minWidth :minHeight :maxWidth :maxHeight :fraudulentWebsiteWarningEnabled];
[result SetTitle:safeInit(title)]; [result SetTitle:safeInit(title)];
[result Center]; [result Center];

View File

@ -57,7 +57,7 @@
@property (retain) NSString* aboutTitle; @property (retain) NSString* aboutTitle;
@property (retain) NSString* aboutDescription; @property (retain) NSString* aboutDescription;
- (void) CreateWindow:(int)width :(int)height :(bool)frameless :(bool)resizable :(bool)fullscreen :(bool)fullSizeContent :(bool)hideTitleBar :(bool)titlebarAppearsTransparent :(bool)hideTitle :(bool)useToolbar :(bool)hideToolbarSeparator :(bool)webviewIsTransparent :(bool)hideWindowOnClose :(NSString *)appearance :(bool)windowIsTranslucent :(int)minWidth :(int)minHeight :(int)maxWidth :(int)maxHeight; - (void) CreateWindow:(int)width :(int)height :(bool)frameless :(bool)resizable :(bool)fullscreen :(bool)fullSizeContent :(bool)hideTitleBar :(bool)titlebarAppearsTransparent :(bool)hideTitle :(bool)useToolbar :(bool)hideToolbarSeparator :(bool)webviewIsTransparent :(bool)hideWindowOnClose :(NSString *)appearance :(bool)windowIsTranslucent :(int)minWidth :(int)minHeight :(int)maxWidth :(int)maxHeight :(bool)fraudulentWebsiteWarningEnabled;
- (void) SetSize:(int)width :(int)height; - (void) SetSize:(int)width :(int)height;
- (void) SetPosition:(int)x :(int) y; - (void) SetPosition:(int)x :(int) y;
- (void) SetMinSize:(int)minWidth :(int)minHeight; - (void) SetMinSize:(int)minWidth :(int)minHeight;

View File

@ -137,7 +137,7 @@ typedef void (^schemeTaskCaller)(id<WKURLSchemeTask>);
return NO; return NO;
} }
- (void) CreateWindow:(int)width :(int)height :(bool)frameless :(bool)resizable :(bool)fullscreen :(bool)fullSizeContent :(bool)hideTitleBar :(bool)titlebarAppearsTransparent :(bool)hideTitle :(bool)useToolbar :(bool)hideToolbarSeparator :(bool)webviewIsTransparent :(bool)hideWindowOnClose :(NSString*)appearance :(bool)windowIsTranslucent :(int)minWidth :(int)minHeight :(int)maxWidth :(int)maxHeight { - (void) CreateWindow:(int)width :(int)height :(bool)frameless :(bool)resizable :(bool)fullscreen :(bool)fullSizeContent :(bool)hideTitleBar :(bool)titlebarAppearsTransparent :(bool)hideTitle :(bool)useToolbar :(bool)hideToolbarSeparator :(bool)webviewIsTransparent :(bool)hideWindowOnClose :(NSString*)appearance :(bool)windowIsTranslucent :(int)minWidth :(int)minHeight :(int)maxWidth :(int)maxHeight :(bool)fraudulentWebsiteWarningEnabled {
self.urlRequestsId = 0; self.urlRequestsId = 0;
self.urlRequests = [NSMutableDictionary new]; self.urlRequests = [NSMutableDictionary new];
@ -220,7 +220,11 @@ typedef void (^schemeTaskCaller)(id<WKURLSchemeTask>);
[config setURLSchemeHandler:self forURLScheme:@"wails"]; [config setURLSchemeHandler:self forURLScheme:@"wails"];
// [config.preferences setValue:[NSNumber numberWithBool:true] forKey:@"developerExtrasEnabled"]; // [config.preferences setValue:[NSNumber numberWithBool:true] forKey:@"developerExtrasEnabled"];
if (@available(macOS 10.15, *)) {
config.preferences.fraudulentWebsiteWarningEnabled = fraudulentWebsiteWarningEnabled;
}
WKUserContentController* userContentController = [WKUserContentController new]; WKUserContentController* userContentController = [WKUserContentController new];
[userContentController addScriptMessageHandler:self name:@"external"]; [userContentController addScriptMessageHandler:self name:@"external"];
config.userContentController = userContentController; config.userContentController = userContentController;

View File

@ -219,7 +219,7 @@ int main(int argc, const char * argv[]) {
int windowStartState = 0; int windowStartState = 0;
int startsHidden = 0; int startsHidden = 0;
WailsContext *result = Create("OI OI!",400,400, frameless, resizable, fullscreen, fullSizeContent, hideTitleBar, titlebarAppearsTransparent, hideTitle, useToolbar, hideToolbarSeparator, webviewIsTransparent, alwaysOnTop, hideWindowOnClose, appearance, windowIsTranslucent, debug, windowStartState, WailsContext *result = Create("OI OI!",400,400, frameless, resizable, fullscreen, fullSizeContent, hideTitleBar, titlebarAppearsTransparent, hideTitle, useToolbar, hideToolbarSeparator, webviewIsTransparent, alwaysOnTop, hideWindowOnClose, appearance, windowIsTranslucent, debug, windowStartState,
startsHidden, 400, 400, 600, 600); startsHidden, 400, 400, 600, 600, false);
SetBackgroundColour(result, 255, 0, 0, 255); SetBackgroundColour(result, 255, 0, 0, 255);
void *m = NewMenu(""); void *m = NewMenu("");
SetAbout(result, "Fake title", "I am a description", _Users_username_Pictures_SaltBae_png, _Users_username_Pictures_SaltBae_png_len); SetAbout(result, "Fake title", "I am a description", _Users_username_Pictures_SaltBae_png, _Users_username_Pictures_SaltBae_png_len);

View File

@ -67,6 +67,8 @@ func NewWindow(frontendOptions *options.App, debugMode bool) *Window {
title = c.String(frontendOptions.Title) title = c.String(frontendOptions.Title)
enableFraudulentWebsiteWarnings := C.bool(frontendOptions.EnableFraudulentWebsiteDetection)
if frontendOptions.Mac != nil { if frontendOptions.Mac != nil {
mac := frontendOptions.Mac mac := frontendOptions.Mac
if mac.TitleBar != nil { if mac.TitleBar != nil {
@ -85,7 +87,7 @@ func NewWindow(frontendOptions *options.App, debugMode bool) *Window {
var context *C.WailsContext = C.Create(title, width, height, frameless, resizable, fullscreen, fullSizeContent, var context *C.WailsContext = C.Create(title, width, height, frameless, resizable, fullscreen, fullSizeContent,
hideTitleBar, titlebarAppearsTransparent, hideTitle, useToolbar, hideToolbarSeparator, webviewIsTransparent, hideTitleBar, titlebarAppearsTransparent, hideTitle, useToolbar, hideToolbarSeparator, webviewIsTransparent,
alwaysOnTop, hideWindowOnClose, appearance, windowIsTranslucent, debug, windowStartState, startsHidden, alwaysOnTop, hideWindowOnClose, appearance, windowIsTranslucent, debug, windowStartState, startsHidden,
minWidth, minHeight, maxWidth, maxHeight) minWidth, minHeight, maxWidth, maxHeight, enableFraudulentWebsiteWarnings)
// Create menu // Create menu
result := &Window{ result := &Window{

View File

@ -409,6 +409,11 @@ func (f *Frontend) Quit() {
func (f *Frontend) setupChromium() { func (f *Frontend) setupChromium() {
chromium := f.chromium chromium := f.chromium
disableFeatues := []string{}
if !f.frontendOptions.EnableFraudulentWebsiteDetection {
disableFeatues = append(disableFeatues, "msSmartScreenProtection")
}
if opts := f.frontendOptions.Windows; opts != nil { if opts := f.frontendOptions.Windows; opts != nil {
chromium.DataPath = opts.WebviewUserDataPath chromium.DataPath = opts.WebviewUserDataPath
chromium.BrowserPath = opts.WebviewBrowserPath chromium.BrowserPath = opts.WebviewBrowserPath
@ -418,6 +423,11 @@ func (f *Frontend) setupChromium() {
} }
} }
if len(disableFeatues) > 0 {
arg := fmt.Sprintf("--disable-features=%s", strings.Join(disableFeatues, ","))
chromium.AdditionalBrowserArgs = append(chromium.AdditionalBrowserArgs, arg)
}
chromium.MessageCallback = f.processMessage chromium.MessageCallback = f.processMessage
chromium.WebResourceRequestedCallback = f.processRequest chromium.WebResourceRequestedCallback = f.processRequest
chromium.NavigationCompletedCallback = f.navigationCompleted chromium.NavigationCompletedCallback = f.navigationCompleted

View File

@ -2,7 +2,6 @@ package options
import ( import (
"context" "context"
"github.com/wailsapp/wails/v2/pkg/options/linux"
"html" "html"
"io/fs" "io/fs"
"log" "log"
@ -10,6 +9,7 @@ import (
"runtime" "runtime"
"github.com/wailsapp/wails/v2/pkg/options/assetserver" "github.com/wailsapp/wails/v2/pkg/options/assetserver"
"github.com/wailsapp/wails/v2/pkg/options/linux"
"github.com/wailsapp/wails/v2/pkg/options/mac" "github.com/wailsapp/wails/v2/pkg/options/mac"
"github.com/wailsapp/wails/v2/pkg/options/windows" "github.com/wailsapp/wails/v2/pkg/options/windows"
@ -72,6 +72,11 @@ type App struct {
// The CSS Value that the CSSDragProperty must have to be draggable, EG: "drag" // The CSS Value that the CSSDragProperty must have to be draggable, EG: "drag"
CSSDragValue string CSSDragValue string
// EnableFraudulentWebsiteDetection enables scan services for fraudulent content, such as malware or phishing attempts.
// These services might send information from your app like URLs navigated to and possibly other content to cloud
// services of Apple and Microsoft.
EnableFraudulentWebsiteDetection bool
Windows *windows.Options Windows *windows.Options
Mac *mac.Options Mac *mac.Options
Linux *linux.Options Linux *linux.Options

View File

@ -51,6 +51,7 @@ func main() {
OnBeforeClose: app.beforeClose, OnBeforeClose: app.beforeClose,
CSSDragProperty: "--wails-draggable", CSSDragProperty: "--wails-draggable",
CSSDragValue: "drag", CSSDragValue: "drag",
EnableFraudulentWebsiteDetection: false,
ZoomFactor: 1.0, ZoomFactor: 1.0,
IsZoomControlEnabled: false, IsZoomControlEnabled: false,
Bind: []interface{}{ Bind: []interface{}{
@ -415,6 +416,15 @@ Indicates what value the `CSSDragProperty` style should have to drag the window.
Name: CSSDragValue<br/> Name: CSSDragValue<br/>
Type: `string` Type: `string`
### EnableFraudulentWebsiteDetection
EnableFraudulentWebsiteDetection enables scan services for fraudulent content, such as malware or phishing attempts.
These services might send information from your app like URLs navigated to and possibly other content to cloud
services of Apple and Microsoft.
Name: EnableFraudulentWebsiteDetection<br/>
Type: `bool`
### ZoomFactor ### ZoomFactor
Name: ZoomFactor<br/> Name: ZoomFactor<br/>

View File

@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### Added
- Added Webview GPU acceleration options for [Windows](/docs/reference/options#webviewgpuisdisabled) and [Linux](/docs/reference/options#webviewgpupolicy). Added by @Lyimmi in [PR](https://github.com/wailsapp/wails/pull/2266) - Added Webview GPU acceleration options for [Windows](/docs/reference/options#webviewgpuisdisabled) and [Linux](/docs/reference/options#webviewgpupolicy). Added by @Lyimmi in [PR](https://github.com/wailsapp/wails/pull/2266)
- Added `EnableFraudulentWebsiteDetection` option to opt-in to scan services for fraudulent content, such as malware or phishing attempts. Older releases had the scan services per default activated. Added by @stffabi in [PR](https://github.com/wailsapp/wails/pull/2269)
## v2.3.0 - 2022-12-29 ## v2.3.0 - 2022-12-29