Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
using System.IO;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using PuppeteerSharp.Helpers.Linux;
using Mono.Unix;
using Xunit;
using Xunit.Abstractions;
using PuppeteerSharp.Helpers.Linux;

namespace PuppeteerSharp.Tests.PuppeteerTests
{
Expand Down Expand Up @@ -44,9 +45,11 @@ public async Task ShouldDownloadAndExtractLinuxBinary()

if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
#if NETCOREAPP //don't need to run this code if we're not netcore app since net471 won't run on NIX. And UnixFileSystemInfo is not available for net471
Assert.Equal(
BrowserFetcher.BrowserPermissionsInLinux,
LinuxSysCall.GetFileMode(revisionInfo.ExecutablePath) & BrowserFetcher.BrowserPermissionsInLinux);
LinuxPermissionsSetter.ExecutableFilePermissions,
UnixFileSystemInfo.GetFileSystemEntry(revisionInfo.ExecutablePath).FileAccessPermissions & LinuxPermissionsSetter.ExecutableFilePermissions);
#endif
}
Assert.Equal(new[] { 123456 }, browserFetcher.LocalRevisions());
browserFetcher.Remove(123456);
Expand Down
16 changes: 5 additions & 11 deletions lib/PuppeteerSharp/BrowserFetcher.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Net;
using System.IO.Compression;
using Mono.Unix;
using PuppeteerSharp.Helpers.Linux;

namespace PuppeteerSharp
Expand All @@ -34,13 +35,6 @@ public class BrowserFetcher
{Platform.Win64, "{0}/chromium-browser-snapshots/Win_x64/{1}/{2}.zip"}
};

internal static readonly FilePermissions BrowserPermissionsInLinux =
FilePermissions.S_IRWXU |
FilePermissions.S_IRGRP |
FilePermissions.S_IXGRP |
FilePermissions.S_IROTH |
FilePermissions.S_IXOTH;

/// <summary>
/// Default Chromium revision.
/// </summary>
Expand Down Expand Up @@ -210,7 +204,7 @@ public async Task<RevisionInfo> DownloadAsync(int revision)

if (revisionInfo != null && GetCurrentPlatform() == Platform.Linux)
{
LinuxSysCall.SetPermissions(revisionInfo.ExecutablePath, BrowserPermissionsInLinux);
LinuxPermissionsSetter.SetExecutableFilePermissions(revisionInfo.ExecutablePath);
}
return revisionInfo;
}
Expand Down
27 changes: 0 additions & 27 deletions lib/PuppeteerSharp/Helpers/Linux/FilePermissions.cs

This file was deleted.

21 changes: 21 additions & 0 deletions lib/PuppeteerSharp/Helpers/Linux/LinuxPermissionsSetter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Mono.Unix;

namespace PuppeteerSharp.Helpers.Linux
{
internal static class LinuxPermissionsSetter
{
internal static readonly FileAccessPermissions ExecutableFilePermissions =
FileAccessPermissions.UserRead | FileAccessPermissions.UserWrite | FileAccessPermissions.UserExecute |
FileAccessPermissions.GroupRead |
FileAccessPermissions.GroupExecute |
FileAccessPermissions.OtherRead |
FileAccessPermissions.OtherExecute;

public static void SetExecutableFilePermissions(string revisionInfoExecutablePath)
{
var unixFileSystemInfo = UnixFileSystemInfo.GetFileSystemEntry(revisionInfoExecutablePath);

unixFileSystemInfo.FileAccessPermissions = ExecutableFilePermissions;
}
}
}
49 changes: 0 additions & 49 deletions lib/PuppeteerSharp/Helpers/Linux/LinuxSysCall.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,54 +7,5 @@ internal static class LinuxSysCall
{
[DllImport("libc", SetLastError = true, EntryPoint = "chmod")]
internal static extern int Chmod(string path, uint mode);

[DllImport("MonoPosixHelper", EntryPoint = "Mono_Posix_FromFilePermissions")]
internal static extern int FromFilePermissions(FilePermissions value, out uint rval);

[DllImport("MonoPosixHelper", EntryPoint = "helper_Mono_Posix_Stat")]
internal extern static int GetStats(
string filename,
bool dereference,
out int device,
out int inode,
out int mode,
out int nlinks,
out int uid,
out int gid,
out int rdev,
out long size,
out long blksize,
out long blocks,
out long atime,
out long mtime,
out long ctime);

internal static void SetPermissions(string path, FilePermissions filePermissions)
{
FromFilePermissions(filePermissions, out var permissions);
Chmod(path, permissions);
}

internal static FilePermissions GetFileMode(string filename)
{
GetStats(
filename,
false,
out var device,
out var inode,
out var mode,
out var nlinks,
out var uid,
out var gid,
out var rdev,
out var size,
out var blksize,
out var blocks,
out var atime,
out var mtime,
out var ctime);

return (FilePermissions)mode;
}
}
}
1 change: 1 addition & 0 deletions lib/PuppeteerSharp/PuppeteerSharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.2" />
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="System.Net.Http" Version="4.3.3" />
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.0.2" />
Expand Down