gologin 2.1.12 → 2.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/package.json +1 -1
  2. package/src/gologin.js +2 -1
  3. package/.sentry-native/15e25388-76f1-4a90-cea4-9a33e95e5be5.run/af276dd3-14b9-4b32-df19-69cb16a9a85e.envelope +0 -5
  4. package/.sentry-native/15e25388-76f1-4a90-cea4-9a33e95e5be5.run.lock +0 -0
  5. package/.sentry-native/last_crash +0 -1
  6. package/gologin/.eslintrc.json +0 -290
  7. package/gologin/README.md +0 -163
  8. package/gologin/example.js +0 -36
  9. package/gologin/examples/example-amazon-cloud-browser.js +0 -37
  10. package/gologin/examples/example-amazon-headless.js +0 -50
  11. package/gologin/examples/example-amazon.js +0 -47
  12. package/gologin/examples/example-create-custom-profile.js +0 -39
  13. package/gologin/examples/example-create-profile.js +0 -40
  14. package/gologin/examples/example-custom-args.js +0 -34
  15. package/gologin/examples/example-fast-profile-settings.js +0 -69
  16. package/gologin/examples/example-gmail.js +0 -67
  17. package/gologin/examples/example-iphey.js +0 -17
  18. package/gologin/examples/example-local-profile.js +0 -26
  19. package/gologin/examples/example-login-walmart.js +0 -35
  20. package/gologin/examples/example-stopremote.js +0 -20
  21. package/gologin/examples/example-timezone.js +0 -44
  22. package/gologin/fonts.js +0 -4293
  23. package/gologin/fonts_config +0 -104
  24. package/gologin/gologin-browser-ext.zip +0 -0
  25. package/gologin/gologin_zeroprofile.b64 +0 -1
  26. package/gologin/index.d.ts +0 -61
  27. package/gologin/package.json +0 -49
  28. package/gologin/profile_export_example.csv +0 -2
  29. package/gologin/run.sh +0 -1
  30. package/gologin/src/bookmarks/utils.js +0 -15
  31. package/gologin/src/browser/browser-api.js +0 -95
  32. package/gologin/src/browser/browser-checker.js +0 -392
  33. package/gologin/src/browser/browser-user-data-manager.js +0 -335
  34. package/gologin/src/cookies/cookies-manager.js +0 -189
  35. package/gologin/src/extensions/extensions-extractor.js +0 -56
  36. package/gologin/src/extensions/extensions-manager.js +0 -384
  37. package/gologin/src/extensions/user-extensions-manager.js +0 -295
  38. package/gologin/src/gologin-api.js +0 -110
  39. package/gologin/src/gologin.js +0 -1472
  40. package/gologin/src/profile/profile-archiver.js +0 -86
  41. package/gologin/src/profile/profile-directories-to-remove.js +0 -75
  42. package/gologin/src/utils/browser.js +0 -62
  43. package/gologin/src/utils/common.js +0 -76
  44. package/gologin/src/utils/constants.js +0 -1
  45. package/gologin/src/utils/utils.js +0 -49
  46. package/gologin/zero_profile.zip +0 -0
  47. package/gologin-canvas.zip +0 -0
  48. package/gologin.zip +0 -0
  49. package/test.html +0 -1
@@ -1,61 +0,0 @@
1
- import { type Browser } from 'puppeteer-core/lib/Browser';
2
-
3
- export const OPERATING_SYSTEMS = {
4
- win: 'win',
5
- lin: 'lin',
6
- mac: 'mac',
7
- android: 'android',
8
- } as const;
9
- export type OsType = (typeof OPERATING_SYSTEMS)[keyof typeof OPERATING_SYSTEMS];
10
-
11
- type CloudLaunchParams = {
12
- cloud: true;
13
-
14
- /**
15
- * Format: 'dataCenter:DE'
16
- */
17
- geolocation?: string;
18
- };
19
- type LocalLaunchParams = {
20
- cloud: false;
21
- headless: boolean;
22
- };
23
-
24
- type ExistingProfileLaunchParams = {
25
- profileId: string;
26
- };
27
- type NewProfileLaunchParams = {
28
- proxyGeolocation: string;
29
- };
30
-
31
- type LaunchParams =
32
- | CloudLaunchParams
33
- | LocalLaunchParams
34
- | ExistingProfileLaunchParams
35
- | NewProfileLaunchParams
36
- | {
37
- /**
38
- * default delay, 250
39
- */
40
- defaultDelay: number;
41
-
42
- /**
43
- * Operating system
44
- */
45
- os: OsType;
46
- };
47
-
48
- type LaunchFn = (params?: LaunchParams) => Promise<{ browser: Browser }>;
49
-
50
- type GologinApiType = {
51
- launch: LaunchFn;
52
- exit: (status = 0) => Promise<void>;
53
- delay: (ms: number) => Promise<void>;
54
- };
55
-
56
- type GologinApiParams = {
57
- token: string;
58
- };
59
-
60
- export declare function GologinApi(params: GologinApiParams): GologinApiType;
61
- export declare function exitAll(): Promise<void>;
@@ -1,49 +0,0 @@
1
- {
2
- "name": "gologin",
3
- "version": "2.1.4",
4
- "description": "A high-level API to control Orbita browser over GoLogin API",
5
- "types": "./index.d.ts",
6
- "main": "./src/gologin.js",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/gologinapp/gologin.git"
10
- },
11
- "engines": {
12
- "node": ">=16.0.0"
13
- },
14
- "type": "module",
15
- "author": "The GoLogin Authors",
16
- "license": "GPL-3.0",
17
- "dependencies": {
18
- "adm-zip": "^0.5.1",
19
- "archiver": "^3.1.1",
20
- "child_process": "^1.0.2",
21
- "decompress": "^4.2.1",
22
- "decompress-unzip": "^4.0.1",
23
- "form-data": "^3.0.0",
24
- "progress": "^2.0.3",
25
- "puppeteer-core": "^2.1.1",
26
- "request": "^2.88.2",
27
- "requestretry": "^4.1.0",
28
- "rimraf": "^3.0.2",
29
- "socks-proxy-agent": "^8.0.3",
30
- "sqlite": "^4.0.23",
31
- "sqlite3": "^5.0.2"
32
- },
33
- "bugs": {
34
- "url": "https://github.com/gologinapp/gologin/issues"
35
- },
36
- "homepage": "https://github.com/gologinapp/gologin#readme",
37
- "directories": {
38
- "example": "examples"
39
- },
40
- "devDependencies": {
41
- "eslint": "^8.21.0",
42
- "eslint-plugin-simple-import-sort": "^8.0.0"
43
- },
44
- "scripts": {
45
- "test": "echo \"Error: no test specified\" && exit 1",
46
- "format": "npx prettier --single-quote src/* --write",
47
- "iphey": "GOLOGIN_PROFILE_ID= GOLOGIN_API_TOKEN= node examples/example-iphey "
48
- }
49
- }
@@ -1,2 +0,0 @@
1
- _id,name,notes,proxy,os,isM1,timezone.enabled,timezone.fillBasedOnIp,timezone.timezone,geolocation.accuracy,geolocation.customize,geolocation.enabled,geolocation.fillBasedOnIp,geolocation.latitude,geolocation.longitude,geolocation.mode,cookies,webGLMetadata.renderer,webGLMetadata.vendor,proxy.autoProxyRegion,proxy.torProxyRegion,audioContext.mode,audioContext.noise,browserType,canvas.mode,canvas.noise,chromeExtensions,clientRects.mode,clientRects.noise,devicePixelRatio,dns,extensions.enabled,extensions.preloadCustom,fonts.enableDomRect,fonts.enableMasking,fonts.families,googleServicesEnabled,lockEnabled,mediaDevices.audioInputs,mediaDevices.audioOutputs,mediaDevices.enableMasking,mediaDevices.uid,mediaDevices.videoInputs,navigator.deviceMemory,navigator.hardwareConcurrency,navigator.language,navigator.maxTouchPoints,navigator.platform,navigator.resolution,navigator.userAgent,plugins.enableFlash,plugins.enableVulnerable,proxyEnabled,startUrl,storage.bookmarks,storage.extensions,storage.history,storage.local,storage.passwords,storage.session,updateUALastChosenBrowserV,userChromeExtensions,webGL.getClientRectsNoise,webGL.mode,webGL.noise,webGLMetadata.mode,webRTC.customize,webRTC.enabled,webRTC.fillBasedOnIp,webRTC.localIpMasking,webRTC.localIps,webRTC.mode,webRTC.publicIp,webglParams.antialiasing,webglParams.extensions,webglParams.glCanvas,webglParams.glParamValues,webglParams.shaiderPrecisionFormat,webglParams.supportedFunctions,webglParams.textureMaxAnisotropyExt
2
- "62ceac1ebf5c65e7b9737e90",divine-moon,,gologin://us,lin,,true,true,,10,true,true,true,0,0,prompt,"[{""sameSite"":""unspecified"",""url"":""http://accounts.youtube.com/accounts"",""domain"":""accounts.youtube.com"",""name"":""CheckConnectionTempCookie418"",""value"":""583900"",""path"":""/accounts"",""secure"":false,""httpOnly"":false,""hostOnly"":true,""session"":false,""expirationDate"":1657711797},{""sameSite"":""no_restriction"",""url"":""https://google.com/"",""domain"":"".google.com"",""name"":""NID"",""value"":""511=pmrVWL6S6C04qFVhNbPwFk7VuJS3Q4GIbuYcwLeIBx8qxFPkraAGDr89L_9v1OxfCdvukGBBXLZzQ-Zx17qqxmKesRDAwk91GzT2uXWM6n_62DBXD0K5Dt2vBPtnVV15UA-AkE1ujldxEDI5FJjzN6RJ_VLYK3YaJax_Drdhp_I"",""path"":""/"",""secure"":true,""httpOnly"":true,""hostOnly"":false,""session"":false,""expirationDate"":1673522989.3169844},{""sameSite"":""unspecified"",""url"":""https://accounts.google.com/"",""domain"":""accounts.google.com"",""name"":""__Host-GAPS"",""value"":""1:XwbHhqGMbhJNRMbV1-WjwIE3WM3iqA:SGVT-tDrpcVPTnu3"",""path"":""/"",""secure"":true,""httpOnly"":true,""hostOnly"":true,""session"":false,""expirationDate"":1720783788.086744}]",,Google Inc.,us,us,noise,2.992842533846e-8,chrome,off,0.3554128,[],noise,5.40273,1.34375,,true,true,true,true,"[""AIGDT"",""AMGDT"",""Alef"",""Ani"",""AnjaliOldLipi"",""Caladea"",""Chilanka"",""David Libre"",""DejaVu Sans"",""DejaVu Sans Condensed"",""DejaVu Sans Light"",""DejaVu Serif"",""Droid Sans"",""Frank Ruehl"",""Frank Ruehl Libre"",""Frank Ruehl Libre Black"",""Frank Ruehl Libre Light"",""FreeMono"",""FreeSans"",""FreeSerif"",""Gargi"",""Gubbi"",""Jamrul"",""KacstBook"",""KacstLetter"",""KacstNaskh"",""Kalapi"",""Kalimati"",""Karumbi"",""Khmer OS"",""Khmer UI"",""Kinnari"",""Liberation Mono"",""Liberation Sans"",""Liberation Sans Narrow"",""Liberation Serif"",""Lohit Devanagari"",""Loma"",""Meera"",""Meera Inimai"",""Miriam"",""Miriam Fixed"",""Miriam Libre"",""Mitra Mono"",""Mukti Narrow"",""Nakula"",""Navuli"",""Nimbus Roman"",""Nimbus Sans"",""Nimbus Sans Narrow"",""Norasi"",""Noto Sans"",""Noto Sans Arabic UI"",""Noto Sans CJK JP"",""Noto Sans CJK KR"",""Noto Sans CJK SC"",""Noto Sans CJK TC"",""Noto Sans Mono CJK HK"",""Noto Sans Mono CJK KR"",""Noto Sans Mono CJK SC"",""Noto Sans Mono CJK TC"",""Noto Serif"",""Noto Serif CJK JP"",""Noto Serif CJK KR"",""Noto Serif CJK SC"",""Noto Serif Georgian"",""Oswald"",""Padauk"",""Pagul"",""Phetsarath OT"",""Pothana2000"",""Purisa"",""Roboto Light"",""Roboto Medium"",""Roboto Thin"",""Rubik"",""Sahadeva"",""Samyak Devanagari"",""Samyak Gujarati"",""Source Code Pro"",""Source Code Pro Black"",""Source Code Pro Extra Light"",""Source Code Pro Light"",""Source Code Pro Medium"",""Source Code Pro Semibold"",""Source Sans Pro"",""Source Sans Pro Black"",""Source Sans Pro Extra Light"",""Source Sans Pro Semibold"",""Source Serif Pro"",""Source Serif Pro Light"",""Source Serif Pro Semibold"",""Suruma"",""Tibetan Machine Uni"",""Tlwg Mono"",""Tlwg Typist"",""URW Gothic L"",""Uroob"",""Vemana2000""]",false,false,1,1,true,b04187cb002a40aeb4382c7c2d9cc3ccb395aee9613241af81df212fd0,0,8,8,"en-US,en;q=0.9",0,Linux x86_64,1600x900,"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36",true,true,true,https://iphey.com,true,true,true,true,true,true,,[],5.40273,noise,35.999,mask,true,true,true,true,[],alerted,,false,"[""ANGLE_instanced_arrays"",""EXT_blend_minmax"",""EXT_color_buffer_half_float"",""EXT_float_blend"",""EXT_frag_depth"",""EXT_sRGB"",""EXT_shader_texture_lod"",""EXT_texture_compression_rgtc"",""EXT_texture_filter_anisotropic"",""KHR_parallel_shader_compile"",""OES_element_index_uint"",""OES_fbo_render_mipmap"",""OES_standard_derivatives"",""OES_texture_float"",""OES_texture_float_linear"",""OES_texture_half_float"",""OES_texture_half_float_linear"",""OES_vertex_array_object"",""WEBGL_color_buffer_float"",""WEBGL_compressed_texture_astc"",""WEBGL_compressed_texture_s3tc"",""WEBGL_compressed_texture_s3tc_srgb"",""WEBGL_debug_renderer_info"",""WEBGL_debug_shaders"",""WEBGL_depth_texture"",""WEBGL_draw_buffers"",""WEBGL_lose_context"",""WEBGL_multi_draw"",""WEBKIT_EXT_texture_filter_anisotropic"",""WEBKIT_WEBGL_compressed_texture_s3tc"",""WEBKIT_WEBGL_depth_texture"",""WEBKIT_WEBGL_lose_context""]",webgl,"[{""name"":""ALIASED_LINE_WIDTH_RANGE"",""value"":{""0"":1,""1"":7}},{""name"":""ALIASED_POINT_SIZE_RANGE"",""value"":{""0"":1,""1"":255}},{""name"":[""DEPTH_BITS"",""STENCIL_BITS""],""value"":""n/a""},{""name"":""MAX_3D_TEXTURE_SIZE"",""value"":""n/a""},{""name"":""MAX_ARRAY_TEXTURE_LAYERS"",""value"":""n/a""},{""name"":""MAX_COLOR_ATTACHMENTS"",""value"":""n/a""},{""name"":""MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_COMBINED_TEXTURE_IMAGE_UNITS"",""value"":32},{""name"":""MAX_COMBINED_UNIFORM_BLOCKS"",""value"":""n/a""},{""name"":""MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_CUBE_MAP_TEXTURE_SIZE"",""value"":8192},{""name"":""MAX_DRAW_BUFFERS"",""value"":""n/a""},{""name"":""MAX_FRAGMENT_INPUT_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_FRAGMENT_UNIFORM_BLOCKS"",""value"":""n/a""},{""name"":""MAX_FRAGMENT_UNIFORM_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_FRAGMENT_UNIFORM_VECTORS"",""value"":1024},{""name"":""MAX_PROGRAM_TEXEL_OFFSET"",""value"":""n/a""},{""name"":""MAX_RENDERBUFFER_SIZE"",""value"":8192},{""name"":""MAX_SAMPLES"",""value"":""n/a""},{""name"":""MAX_TEXTURE_IMAGE_UNITS"",""value"":16},{""name"":""MAX_TEXTURE_LOD_BIAS"",""value"":""n/a""},{""name"":""MAX_TEXTURE_SIZE"",""value"":8192},{""name"":""MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS"",""value"":""n/a""},{""name"":""MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_UNIFORM_BLOCK_SIZE"",""value"":""n/a""},{""name"":""MAX_UNIFORM_BUFFER_BINDINGS"",""value"":""n/a""},{""name"":""MAX_VARYING_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_VARYING_VECTORS"",""value"":16},{""name"":""MAX_VERTEX_ATTRIBS"",""value"":16},{""name"":""MAX_VERTEX_OUTPUT_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_VERTEX_TEXTURE_IMAGE_UNITS"",""value"":16},{""name"":""MAX_VERTEX_UNIFORM_BLOCKS"",""value"":""n/a""},{""name"":""MAX_VERTEX_UNIFORM_COMPONENTS"",""value"":""n/a""},{""name"":""MAX_VERTEX_UNIFORM_VECTORS"",""value"":1024},{""name"":""MAX_VIEWPORT_DIMS"",""value"":{""0"":8192,""1"":8192}},{""name"":""MIN_PROGRAM_TEXEL_OFFSET"",""value"":""n/a""},{""name"":[""RED_BITS"",""GREEN_BITS"",""BLUE_BITS"",""ALPHA_BITS""],""value"":""n/a""},{""name"":""RENDERER"",""value"":""WebKit WebGL""},{""name"":""SHADING_LANGUAGE_VERSION"",""value"":""WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)""},{""name"":""UNIFORM_BUFFER_OFFSET_ALIGNMENT"",""value"":""n/a""},{""name"":""VENDOR"",""value"":""WebKit""},{""name"":""VERSION"",""value"":""WebGL 1.0 (OpenGL ES 2.0 Chromium)""}]",highp/highp,"[{""name"":""beginQuery"",""supported"":false},{""name"":""beginTransformFeedback"",""supported"":false},{""name"":""bindBufferBase"",""supported"":false},{""name"":""bindBufferRange"",""supported"":false},{""name"":""bindSampler"",""supported"":false},{""name"":""bindTransformFeedback"",""supported"":false},{""name"":""bindVertexArray"",""supported"":false},{""name"":""blitFramebuffer"",""supported"":false},{""name"":""clearBufferfi"",""supported"":false},{""name"":""clearBufferfv"",""supported"":false},{""name"":""clearBufferiv"",""supported"":false},{""name"":""clearBufferuiv"",""supported"":false},{""name"":""clientWaitSync"",""supported"":false},{""name"":""compressedTexImage3D"",""supported"":false},{""name"":""compressedTexSubImage3D"",""supported"":false},{""name"":""copyBufferSubData"",""supported"":false},{""name"":""copyTexSubImage3D"",""supported"":false},{""name"":""createQuery"",""supported"":false},{""name"":""createSampler"",""supported"":false},{""name"":""createTransformFeedback"",""supported"":false},{""name"":""createVertexArray"",""supported"":false},{""name"":""deleteQuery"",""supported"":false},{""name"":""deleteSampler"",""supported"":false},{""name"":""deleteSync"",""supported"":false},{""name"":""deleteTransformFeedback"",""supported"":false},{""name"":""deleteVertexArray"",""supported"":false},{""name"":""drawArraysInstanced"",""supported"":false},{""name"":""drawBuffers"",""supported"":false},{""name"":""drawElementsInstanced"",""supported"":false},{""name"":""drawRangeElements"",""supported"":false},{""name"":""endQuery"",""supported"":false},{""name"":""endTransformFeedback"",""supported"":false},{""name"":""fenceSync"",""supported"":false},{""name"":""framebufferTextureLayer"",""supported"":false},{""name"":""getActiveUniformBlockName"",""supported"":false},{""name"":""getActiveUniformBlockParameter"",""supported"":false},{""name"":""getActiveUniforms"",""supported"":false},{""name"":""getBufferSubData"",""supported"":false},{""name"":""getFragDataLocation"",""supported"":false},{""name"":""getIndexedParameter"",""supported"":false},{""name"":""getInternalformatParameter"",""supported"":false},{""name"":""getQuery"",""supported"":false},{""name"":""getQueryParameter"",""supported"":false},{""name"":""getSamplerParameter"",""supported"":false},{""name"":""getSyncParameter"",""supported"":false},{""name"":""getTransformFeedbackVarying"",""supported"":false},{""name"":""getUniformBlockIndex"",""supported"":false},{""name"":""getUniformIndices"",""supported"":false},{""name"":""invalidateFramebuffer"",""supported"":false},{""name"":""invalidateSubFramebuffer"",""supported"":false},{""name"":""isQuery"",""supported"":false},{""name"":""isSampler"",""supported"":false},{""name"":""isSync"",""supported"":false},{""name"":""isTransformFeedback"",""supported"":false},{""name"":""isVertexArray"",""supported"":false},{""name"":""pauseTransformFeedback"",""supported"":false},{""name"":""readBuffer"",""supported"":false},{""name"":""renderbufferStorageMultisample"",""supported"":false},{""name"":""resumeTransformFeedback"",""supported"":false},{""name"":""samplerParameterf"",""supported"":false},{""name"":""samplerParameteri"",""supported"":false},{""name"":""texImage3D"",""supported"":false},{""name"":""texStorage2D"",""supported"":false},{""name"":""texStorage3D"",""supported"":false},{""name"":""texSubImage3D"",""supported"":false},{""name"":""transformFeedbackVaryings"",""supported"":false},{""name"":""uniform1ui"",""supported"":false},{""name"":""uniform1uiv"",""supported"":false},{""name"":""uniform2ui"",""supported"":false},{""name"":""uniform2uiv"",""supported"":false},{""name"":""uniform3ui"",""supported"":false},{""name"":""uniform3uiv"",""supported"":false},{""name"":""uniform4ui"",""supported"":false},{""name"":""uniform4uiv"",""supported"":false},{""name"":""uniformBlockBinding"",""supported"":false},{""name"":""uniformMatrix2x3fv"",""supported"":false},{""name"":""uniformMatrix2x4fv"",""supported"":false},{""name"":""uniformMatrix3x2fv"",""supported"":false},{""name"":""uniformMatrix3x4fv"",""supported"":false},{""name"":""uniformMatrix4x2fv"",""supported"":false},{""name"":""uniformMatrix4x3fv"",""supported"":false},{""name"":""vertexAttribDivisor"",""supported"":false},{""name"":""vertexAttribI4i"",""supported"":false},{""name"":""vertexAttribI4iv"",""supported"":false},{""name"":""vertexAttribI4ui"",""supported"":false},{""name"":""vertexAttribI4uiv"",""supported"":false},{""name"":""vertexAttribIPointer"",""supported"":false},{""name"":""waitSync"",""supported"":false}]",16
package/gologin/run.sh DELETED
@@ -1 +0,0 @@
1
- DISPLAY=:$5 $1 --remote-debugging-port=$2 --proxy-server=$3 --user-data-dir=$4 --tz=$6 --load-extension=$7 --password-store=basic --lang=en --new-window
@@ -1,15 +0,0 @@
1
- import { promises as _promises } from 'fs';
2
-
3
- const { readFile } = _promises;
4
-
5
- export const getCurrentProfileBookmarks = async (pathToBookmarks) => {
6
- let bookmarks = {};
7
- try {
8
- const currentBookmarksFileData = await readFile(pathToBookmarks, { encoding: 'utf-8' });
9
- bookmarks = JSON.parse(currentBookmarksFileData);
10
- } catch (error) {
11
- console.log(error);
12
- }
13
-
14
- return bookmarks;
15
- };
@@ -1,95 +0,0 @@
1
- import requestretry from 'requestretry';
2
-
3
- import { API_URL } from '../utils/common.js';
4
-
5
- /**
6
- * @param {string} profileId
7
- * @param {string} ACCESS_TOKEN
8
- * @param {string} resolution
9
- */
10
- export const updateProfileResolution = (profileId, ACCESS_TOKEN, resolution) =>
11
- requestretry.patch(`${API_URL}/browser/${profileId}/resolution`, {
12
- headers: {
13
- Authorization: `Bearer ${ACCESS_TOKEN}`,
14
- 'user-agent': 'gologin-api',
15
- },
16
- json: { resolution },
17
- maxAttempts: 3,
18
- retryDelay: 2000,
19
- timeout: 10 * 1000,
20
- }).catch((e) => {
21
- console.log(e);
22
-
23
- return { body: [] };
24
- });
25
-
26
- /**
27
- * @param {string} profileId
28
- * @param {string} ACCESS_TOKEN
29
- * @param {string} userAgent
30
- */
31
- export const updateProfileUserAgent = (profileId, ACCESS_TOKEN, userAgent) =>
32
- requestretry.patch(`${API_URL}/browser/${profileId}/ua`, {
33
- headers: {
34
- Authorization: `Bearer ${ACCESS_TOKEN}`,
35
- 'user-agent': 'gologin-api',
36
- },
37
- json: { userAgent },
38
- maxAttempts: 3,
39
- retryDelay: 2000,
40
- timeout: 10 * 1000,
41
- }).catch((e) => {
42
- console.log(e);
43
-
44
- return { body: [] };
45
- });
46
-
47
- /**
48
- * @param {string} profileId
49
- * @param {string} ACCESS_TOKEN
50
- * @param {Object} browserProxyData
51
- * @param {'http' | 'socks4' | 'socks5' | 'none'} browserProxyData.mode
52
- * @param {string} [browserProxyData.host]
53
- * @param {string} [browserProxyData.port]
54
- * @param {string} [browserProxyData.username]
55
- * @param {string} [browserProxyData.password]
56
- */
57
- export const updateProfileProxy = (profileId, ACCESS_TOKEN, browserProxyData) =>
58
- requestretry.patch(`${API_URL}/browser/${profileId}/proxy`, {
59
- headers: {
60
- Authorization: `Bearer ${ACCESS_TOKEN}`,
61
- 'user-agent': 'gologin-api',
62
- },
63
- json: browserProxyData,
64
- maxAttempts: 3,
65
- retryDelay: 2000,
66
- timeout: 10 * 1000,
67
- }).catch((e) => {
68
- console.log(e);
69
-
70
- return { body: [] };
71
- });
72
-
73
- /**
74
- * @param {string} profileId
75
- * @param {string} ACCESS_TOKEN
76
- * @param {Object} bookmarks
77
- */
78
- export const updateProfileBookmarks = async (profileIds, ACCESS_TOKEN, bookmarks) => {
79
- const params = {
80
- profileIds,
81
- bookmarks,
82
- };
83
-
84
- return requestretry.patch(`${API_URL}/browser/bookmarks/many`, {
85
- headers: {
86
- Authorization: `Bearer ${ACCESS_TOKEN}`,
87
- 'user-agent': 'gologin-api',
88
- },
89
- json: params,
90
- maxAttempts: 3,
91
- retryDelay: 2000,
92
- timeout: 10 * 1000,
93
- }).catch((error) => console.log(error));
94
- };
95
-
@@ -1,392 +0,0 @@
1
- import { exec as execNonPromise } from 'child_process';
2
- import decompress from 'decompress';
3
- import decompressUnzip from 'decompress-unzip';
4
- import { createWriteStream, promises as _promises } from 'fs';
5
- import { get } from 'https';
6
- import { homedir } from 'os';
7
- import { join } from 'path';
8
- import ProgressBar from 'progress';
9
- import { createInterface } from 'readline';
10
- import util from 'util';
11
-
12
- import { findLatestBrowserVersionDirectory } from '../utils/utils.js';
13
- import { API_URL, getOS } from '../utils/common.js';
14
-
15
- const exec = util.promisify(execNonPromise);
16
- const { access, mkdir, readdir, rmdir, unlink, copyFile, readlink, symlink, lstat, rename, writeFile } = _promises;
17
-
18
- const PLATFORM = process.platform;
19
- const ARCH = process.arch;
20
-
21
- const VERSION_FILE = 'latest-version.txt';
22
-
23
- const WIN_FOLDERSIZE_FILE = 'foldersize.txt';
24
- const WIN_FOLDERSIZE_FILE_LINK = `https://orbita-browser-windows.gologin.com/${WIN_FOLDERSIZE_FILE}`;
25
-
26
- const BROWSER_ARCHIVE_NAME = `orbita-browser-latest.${PLATFORM === 'win32' ? 'zip' : 'tar.gz'}`;
27
-
28
- const MAC_HASH_FILE = 'hashfile.mtree';
29
- const DEB_HASH_FILE = 'hashfile.txt';
30
- const WIN_HASH_FILE = DEB_HASH_FILE;
31
- const MAC_HASHFILE_LINK = `https://orbita-browser-mac.gologin.com/${MAC_HASH_FILE}`;
32
- const DEB_HASHFILE_LINK = `https://orbita-browser-linux.gologin.com/${DEB_HASH_FILE}`;
33
- const WIN_HASHFILE_LINK = `https://orbita-browser-windows.gologin.com/${WIN_HASH_FILE}`;
34
- const MAC_ARM_HASHFILE_LINK = `https://orbita-browser-mac-arm.gologin.com/${MAC_HASH_FILE}`;
35
-
36
- const FAIL_SUM_MATCH_MESSAGE = 'hash_sum_not_matched';
37
- const EXTRACTED_FOLDER = 'extracted-browser';
38
-
39
- export class BrowserChecker {
40
- #homedir;
41
- #browserPath;
42
- #executableFilePath;
43
- #skipOrbitaHashChecking = false;
44
-
45
- constructor(skipOrbitaHashChecking) {
46
- this.#skipOrbitaHashChecking = skipOrbitaHashChecking;
47
- this.#homedir = homedir();
48
- this.#browserPath = join(this.#homedir, '.gologin', 'browser');
49
-
50
- let executableFilePath = join(this.#browserPath, 'orbita-browser', 'chrome');
51
- if (PLATFORM === 'darwin') {
52
- const orbitaFolderName = findLatestBrowserVersionDirectory(this.#browserPath);
53
- if (orbitaFolderName === 'error') {
54
- throw Error('Orbita folder not found in this directory: ' + this.#browserPath);
55
- }
56
-
57
- executableFilePath = join(this.#browserPath, orbitaFolderName, 'Orbita-Browser.app', 'Contents', 'MacOS', 'Orbita');
58
- } else if (PLATFORM === 'win32') {
59
- executableFilePath = join(this.#browserPath, 'orbita-browser', 'chrome.exe');
60
- }
61
-
62
- this.#executableFilePath = executableFilePath;
63
- // console.log('executableFilePath:', executableFilePath);
64
- }
65
-
66
- async checkBrowser(autoUpdateBrowser = false, checkBrowserUpdate = true) {
67
- const browserFolderExists = await access(this.#executableFilePath).then(() => true).catch(() => false);
68
-
69
- const { latestVersion: browserLatestVersion, browserDownloadUrl } = await this.getLatestBrowserVersion();
70
-
71
- if (!browserFolderExists) {
72
- return this.downloadBrowser(browserLatestVersion, browserDownloadUrl);
73
- }
74
-
75
- const currentVersionReq = await this.getCurrentVersion();
76
- const currentVersion = (currentVersionReq?.stdout || '').replace(/(\r\n|\n|\r)/gm, '');
77
-
78
- if (browserLatestVersion === currentVersion || !checkBrowserUpdate) {
79
- return;
80
- }
81
-
82
- if (autoUpdateBrowser) {
83
- return this.downloadBrowser(browserLatestVersion, browserDownloadUrl);
84
- }
85
-
86
- return new Promise(resolve => {
87
- const rl = createInterface(process.stdin, process.stdout);
88
- const timeout = setTimeout(() => {
89
- console.log(`\nContinue with current ${currentVersion} version.`);
90
- resolve();
91
- }, 10000);
92
-
93
- rl.question(`New Orbita ${browserLatestVersion} is available. Update? [y/n] `, (answer) => {
94
- clearTimeout(timeout);
95
- rl.close();
96
- if (answer && answer[0].toString().toLowerCase() === 'y') {
97
- return this.downloadBrowser(browserLatestVersion, browserDownloadUrl).then(() => resolve());
98
- }
99
-
100
- console.log(`Continue with current ${currentVersion} version.`);
101
- resolve();
102
- });
103
- });
104
- }
105
-
106
- async downloadBrowser(latestVersion, browserDownloadUrl) {
107
- await this.deleteOldArchives(true);
108
- await mkdir(this.#browserPath, { recursive: true });
109
-
110
- const pathStr = join(this.#browserPath, BROWSER_ARCHIVE_NAME);
111
-
112
- await this.downloadBrowserArchive(browserDownloadUrl, pathStr);
113
- await this.checkBrowserArchive(pathStr);
114
- await this.extractBrowser();
115
- await this.checkBrowserSum(latestVersion);
116
- console.log('Orbita hash checked successfully');
117
- await this.replaceBrowser();
118
- await this.addLatestVersion(latestVersion).catch(() => null);
119
- await this.deleteOldArchives();
120
- console.log('Orbita updated successfully');
121
- }
122
-
123
- addLatestVersion(latestVersion) {
124
- return mkdir(join(this.#browserPath, 'orbita-browser', 'version'), { recursive: true })
125
- .then(() => writeFile(join(this.#browserPath, 'orbita-browser', 'version', 'latest-version.txt'), latestVersion));
126
- }
127
-
128
- downloadBrowserArchive(link, pathStr) {
129
- return new Promise((resolve, reject) => {
130
- const writableStream = createWriteStream(pathStr);
131
- writableStream.on('error', async err => {
132
- await unlink(pathStr);
133
- reject(err);
134
- });
135
- writableStream.on('finish', () => resolve());
136
-
137
- const req = get(link, {
138
- timeout: 15 * 1000,
139
- }, (res) => {
140
- const len = parseInt(res.headers['content-length'], 10);
141
- const formattedLen = len / 1024 / 1024;
142
- const bar = new ProgressBar('Orbita downloading [:bar] :rate/mps :downloadedMb/:fullMbMB :percent :etas', {
143
- complete: '=',
144
- incomplete: ' ',
145
- width: 30,
146
- total: Math.round(formattedLen),
147
- });
148
-
149
- let downloadedMb = 0;
150
-
151
- res.on('data', (chunk) => {
152
- const formattedChunckLenght = chunk.length / 1024 / 1024;
153
- downloadedMb += formattedChunckLenght;
154
- bar.tick(formattedChunckLenght, {
155
- fullMb: formattedLen.toFixed(2),
156
- downloadedMb: downloadedMb.toFixed(2),
157
- });
158
- });
159
-
160
- res.on('end', () => {
161
- bar.tick(bar.total, {
162
- fullMb: formattedLen.toFixed(2),
163
- downloadedMb: formattedLen.toFixed(2),
164
- });
165
- console.log('\nDownload completed');
166
- writableStream.end();
167
- });
168
-
169
- res.pipe(writableStream);
170
- });
171
-
172
- req.on('error', (err) => writableStream.destroy(err));
173
- req.end();
174
- });
175
- }
176
-
177
- async checkBrowserArchive(pathStr) {
178
- console.log('Checking Orbita archive');
179
- try {
180
- await access(pathStr);
181
- } catch (e) {
182
- throw new Error('Archive has not been found. Please run script again.');
183
- }
184
- }
185
-
186
- async extractBrowser() {
187
- console.log('Extracting Orbita');
188
- await mkdir(join(this.#browserPath, EXTRACTED_FOLDER), { recursive: true });
189
- if (PLATFORM === 'win32') {
190
- return decompress(join(this.#browserPath, BROWSER_ARCHIVE_NAME), join(this.#browserPath, EXTRACTED_FOLDER),
191
- {
192
- plugins: [decompressUnzip()],
193
- filter: file => !file.path.endsWith('/'),
194
- },
195
- );
196
- }
197
-
198
- return exec(
199
- `tar xzf ${join(this.#browserPath, BROWSER_ARCHIVE_NAME)} --directory ${join(this.#browserPath, EXTRACTED_FOLDER)}`,
200
- );
201
- }
202
-
203
- async downloadHashFile(latestVersion) {
204
- let hashLink = DEB_HASHFILE_LINK;
205
- let resultPath = join(this.#browserPath, DEB_HASH_FILE);
206
- if (PLATFORM === 'darwin') {
207
- hashLink = MAC_HASHFILE_LINK;
208
- if (ARCH === 'arm64') {
209
- hashLink = MAC_ARM_HASHFILE_LINK;
210
- }
211
- resultPath = join(this.#browserPath, MAC_HASH_FILE);
212
- }
213
-
214
- if (latestVersion) {
215
- const [majorVer] = latestVersion.split('.');
216
- hashLink = hashLink.replace('hashfile.', `hashfile-${majorVer}.`);
217
- }
218
-
219
- const writableStream = createWriteStream(resultPath);
220
- writableStream.on('error', async (err) => {
221
- await unlink(resultPath);
222
- throw err;
223
- });
224
-
225
- await new Promise(resolve => get(hashLink,
226
- {
227
- timeout: 10 * 1000,
228
- }, (res) => {
229
- res.on('end', () => {
230
- console.log('Hashfile downloading completed');
231
- writableStream.end();
232
- resolve();
233
- });
234
-
235
- res.pipe(writableStream);
236
- }).on('error', (err) => writableStream.destroy(err)));
237
-
238
- const hashFile = PLATFORM === 'darwin' ? MAC_HASH_FILE : DEB_HASH_FILE;
239
- const hashFilePath = join(this.#browserPath, hashFile);
240
-
241
- return access(hashFilePath);
242
- }
243
-
244
- async checkBrowserSum(latestVersion) {
245
- if (this.#skipOrbitaHashChecking) {
246
- return Promise.resolve();
247
- }
248
-
249
- console.log('Orbita hash checking');
250
- if (PLATFORM === 'win32') {
251
- return Promise.resolve();
252
- }
253
-
254
- await this.downloadHashFile(latestVersion);
255
- if (PLATFORM === 'darwin') {
256
- const calculatedHash = await exec(
257
- `mtree -p ${join(this.#browserPath, EXTRACTED_FOLDER, 'Orbita-Browser.app')} < ${join(this.#browserPath, MAC_HASH_FILE)} || echo ${FAIL_SUM_MATCH_MESSAGE}`,
258
- );
259
-
260
- const checkedRes = (calculatedHash || '').toString().trim();
261
- if (checkedRes.includes(FAIL_SUM_MATCH_MESSAGE)) {
262
- throw new Error('Error in sum matching. Please run script again.');
263
- }
264
-
265
- return;
266
- }
267
-
268
- const hashFileContent = await exec(`cat ${join(this.#browserPath, DEB_HASH_FILE)}`);
269
- let serverRes = (hashFileContent.stdout || '').toString().trim();
270
- serverRes = serverRes.split(' ')[0];
271
-
272
- const calculateLocalBrowserHash = await exec(
273
- `cd ${join(this.#browserPath, EXTRACTED_FOLDER)} && find orbita-browser -type f -print0 | sort -z | \
274
- xargs -0 sha256sum > ${this.#browserPath}/calculatedFolderSha.txt`,
275
- );
276
-
277
- const localHashContent = await exec(`cd ${this.#browserPath} && sha256sum calculatedFolderSha.txt`);
278
- let userRes = (localHashContent.stdout || '').toString().trim();
279
- userRes = userRes.split(' ')[0];
280
- if (userRes !== serverRes) {
281
- throw new Error('Error in sum matching. Please run script again.');
282
- }
283
- }
284
-
285
- async replaceBrowser() {
286
- console.log('Copy Orbita to target path');
287
- if (PLATFORM === 'darwin') {
288
- return rename(join(this.#browserPath, EXTRACTED_FOLDER), join(this.#browserPath, 'orbita-browser'))
289
- }
290
-
291
- const targetBrowserPath = join(this.#browserPath, 'orbita-browser');
292
- await this.deleteDir(targetBrowserPath);
293
-
294
- await this.copyDir(
295
- join(this.#browserPath, EXTRACTED_FOLDER, 'orbita-browser'),
296
- targetBrowserPath,
297
- );
298
- }
299
-
300
- async deleteOldArchives(deleteCurrentBrowser = false) {
301
- if (deleteCurrentBrowser) {
302
- return this.deleteDir(join(this.#browserPath, 'orbita-browser'));
303
- }
304
-
305
- await this.deleteDir(join(this.#browserPath, EXTRACTED_FOLDER));
306
-
307
- return readdir(this.#browserPath)
308
- .then((files) => {
309
- const promises = [];
310
- files.forEach((filename) => {
311
- if (filename.match(/(txt|dylib|mtree)/)) {
312
- promises.push(unlink(join(this.#browserPath, filename)));
313
- }
314
- });
315
-
316
- return Promise.all(promises);
317
- })
318
- .catch(e => {
319
- console.log(`Error in deleting old archives. ${e.message}`);
320
-
321
- return Promise.resolve();
322
- });
323
- }
324
-
325
- async copyDir(src, dest) {
326
- await mkdir(dest);
327
- const files = await readdir(src);
328
- for (let i = 0; i < files.length; i++) {
329
- const current = await lstat(join(src, files[i]));
330
- if (current.isDirectory()) {
331
- await this.copyDir(join(src, files[i]), join(dest, files[i]));
332
- } else if (current.isSymbolicLink()) {
333
- const symlinkObj = await readlink(join(src, files[i]));
334
- await symlink(symlinkObj, join(dest, files[i]));
335
- } else {
336
- await copyFile(join(src, files[i]), join(dest, files[i]));
337
- }
338
- }
339
- }
340
-
341
- getCurrentVersion() {
342
- let command = `if [ -f ${join(this.#browserPath, 'orbita-browser', 'version')} ]; then cat ${join(this.#browserPath, 'orbita-browser', 'version')}; else echo 0.0.0; fi`;
343
- if (PLATFORM === 'win32') {
344
- command = `if exist "${join(this.#browserPath, 'orbita-browser', 'version')}" (type "${join(this.#browserPath, 'orbita-browser', 'version')}") else (echo 0.0.0)`;
345
- } else if (PLATFORM === 'darwin') {
346
- command = `if [ -f ${join(this.#browserPath, 'orbita-browser', 'version', VERSION_FILE)} ]; then cat ${join(this.#browserPath, 'orbita-browser', 'version', VERSION_FILE)}; else echo 0.0.0; fi`;
347
- }
348
-
349
- return exec(command);
350
- }
351
-
352
- getLatestBrowserVersion() {
353
- const userOs = getOS();
354
-
355
- return new Promise(resolve => get(`${API_URL}/gologin-global-settings/latest-browser-info?os=${userOs}`,
356
- {
357
- timeout: 15 * 1000,
358
- headers: {
359
- 'Content-Type': 'application/json',
360
- 'User-Agent': 'gologin-api',
361
- },
362
- }, (res) => {
363
- res.setEncoding('utf8');
364
-
365
- let resultResponse = '';
366
- res.on('data', (data) => resultResponse += data);
367
-
368
- res.on('end', () => {
369
- resolve(JSON.parse(resultResponse.trim()));
370
- });
371
- }).on('error', (err) => resolve('')));
372
- }
373
-
374
- get getOrbitaPath() {
375
- return this.#executableFilePath;
376
- }
377
-
378
- async deleteDir(path = '') {
379
- if (!path) {
380
- return;
381
- }
382
-
383
- const directoryExists = await access(path).then(() => true).catch(() => false);
384
- if (!directoryExists) {
385
- return;
386
- }
387
-
388
- return rmdir(path, { recursive: true });
389
- }
390
- }
391
-
392
- export default BrowserChecker;