Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chrome extension denyying crx file #1322

Open
wants to merge 35 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
2b6225c
Remove tracking, notifications & permissions
aciidic Dec 16, 2020
7072d36
Update README.md
aciidic Dec 16, 2020
6f7679d
Update README.md
aciidic Dec 16, 2020
276cf0a
Update README.md
aciidic Dec 16, 2020
6b77837
Updated Group Policy documentation
aciidic Dec 16, 2020
305773d
Update README.md
aciidic Dec 16, 2020
d5eac23
Group Policy extension installation
aciidic Dec 16, 2020
41fbbd5
Update README.md
aciidic Dec 16, 2020
98ab900
Update README.md
aciidic Jan 17, 2021
0db8695
Update README.md
aciidic Jan 17, 2021
253cfa2
Update manifest.json
aciidic Jan 17, 2021
6d8095a
Update manifest.json
aciidic Jan 17, 2021
28db43b
Update README.md
aciidic Jan 17, 2021
9beda96
Support migration from TGS with other extension ids
luke-jr Feb 5, 2021
d67e5f6
Merge pull request #3 from luke-jr/migrate
aciidic Feb 6, 2021
9f47900
Update README.md
aciidic Feb 6, 2021
6ed23c0
Remove gsAnalytics.js
tbmc Feb 7, 2021
3ffc594
Merge pull request #4 from tbmc/master
aciidic Feb 24, 2021
0ad50d9
Update messages.json
aciidic Feb 28, 2021
cc47680
Update messages.json
aciidic Feb 28, 2021
39c3090
Update messages.json
aciidic Feb 28, 2021
156ad81
Update messages.json
aciidic Feb 28, 2021
a1ce46a
Update messages.json
aciidic Feb 28, 2021
c3373c8
Update messages.json
aciidic Feb 28, 2021
8212ad2
Update messages.json
aciidic Feb 28, 2021
b722842
Update messages.json
aciidic Feb 28, 2021
6d005b7
Update manifest.json
aciidic Feb 28, 2021
8d4375d
Update about.html
aciidic Feb 28, 2021
e66afcb
Option to disable firstrun/update popups
aciidic Feb 28, 2021
0726b82
Option to disable firstrun/update popups
aciidic Feb 28, 2021
03c4a53
Option to disable firstrun/update popups
aciidic Feb 28, 2021
5d3143e
Add some annotation to make README a bit more clear
tianhuil Apr 2, 2021
3cc60a1
Merge pull request #5 from tianhuil/patch-2
aciidic Apr 7, 2021
e439217
Update package-lock.json
yurovant Apr 10, 2021
62a0b5c
Merge pull request #6 from yurovant/patch-1
aciidic Apr 23, 2021
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
120 changes: 102 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,89 @@
# The Great Suspender
# The Great Suspender - Without Analytics Tracking

**PLEASE NOTE: If you are switching to this extension from a different version of TheGreatSuspender, first export your tabs from the plugin settings window then, after updating, re-import your suspended tabs. Alternatively unsuspend (or bookmark) your existing suspended tabs before upgrading - you can find "unsuspend all tabs" by clicking on the extension icon in the top right corner of Chrome**

**Import/Export Instructions: https://i.imgur.com/jgr0qEd.png**


Modified version of "The Great Suspender" to remove analytics tracking and rogue .js files from anonymous developer who is now in control of the GitHub source & web store versions.

Read more:

[New ownership announcement](https://github.com/greatsuspender/thegreatsuspender/issues/1175)

[New maintainer is probably malicious](https://github.com/greatsuspender/thegreatsuspender/issues/1263)

[Flagged as malware by Microsoft Edge](https://www.windowscentral.com/great-suspender-extension-now-flagged-malware-edge-has-built-replacement)

[Reddit forum discussion](https://old.reddit.com/r/HobbyDrama/comments/jouwq7/open_source_development_the_great_suspender_saga/)

[Medium Article](https://medium.com/nerd-for-tech/malware-in-browser-extensions-3805e8763dd5)

This project is a fork from [v7.1.8 of The Great Suspender](https://github.com/greatsuspender/thegreatsuspender) with all tracking code removed, along with some annoying popups/prompts.

This work carries no guarantees only to the best of my ability in 2 hours using notepad2 & AstroGrep. I am not a developer and do not intend to spend much time keeping this extension updated.

<img src="/src/img/suspendy-guy.png" width="100px" />

"The Great Suspender" is a free and open-source Google Chrome extension for people who find that chrome is consuming too much system resource or suffer from frequent chrome crashing. Once installed and enabled, this extension will automatically *suspend* tabs that have not been used for a while, freeing up memory and cpu that the tab was consuming.

If you have suggestions or problems using the extension, please [submit a bug or a feature request](https://github.com/greatsuspender/thegreatsuspender/issues/). For other enquiries you can email me at greatsuspender@gmail.com.
If you have suggestions or problems using the extension, please [submit a pull request](https://github.com/aciidic/thegreatsuspender/issues/).

**If you have lost tabs from your browser:** I have written a guide for how to recover your lost tabs [here](https://github.com/deanoemcke/thegreatsuspender/issues/526
**If you have lost tabs from your browser:** The original developer has written a guide for how to recover your lost tabs [here](https://github.com/deanoemcke/thegreatsuspender/issues/526
).

### Chrome Web Store

The Great Suspender is [available via the official Chrome Web Store](https://chrome.google.com/webstore/detail/the-great-suspender/klbibkeccnjlkjkiokjodocebajanakg).
This version of The Great Suspender is not available on the Chrome Web Store.


### You should install this extension from source

Please note that the webstore version may be behind the latest version here. That is because I try to keep webstore updates down to a minimum due to their [disruptive effect](https://github.com/greatsuspender/thegreatsuspender/issues/526).
1. Download the **[latest available version](https://github.com/aciidic/thegreatsuspender/releases)** and unarchive to your preferred location (whichever suits you).
2. Using **Google Chrome** browser, navigate to [chrome://extensions/](chrome://extensions/) and enable "Developer mode" in the upper right corner.

For more information on the permissions required for the extension, please refer to this gitHub issue: (https://github.com/greatsuspender/thegreatsuspender/issues/213)
![image](https://user-images.githubusercontent.com/1906321/113394317-db3df380-934c-11eb-9629-f31597bcbec6.png)

### Install as an extension from source
3. Click on "Load Unpacked" in top-left corner and select the `src` FOLDER from extracted data > click Open Folder
(Or you can try drag & drop the src folder in to your chrome://extensions window)

![image](https://user-images.githubusercontent.com/1906321/113394341-e5f88880-934c-11eb-864c-66c4a3672e38.png)

1. Download the **[latest available version](https://github.com/greatsuspender/thegreatsuspender/releases)** and unarchive to your preferred location (whichever suits you).
2. Using **Google Chrome** browser, navigate to chrome://extensions/ and enable "Developer mode" in the upper right corner.
3. Click on the <kbd>Load unpacked extension...</kbd> button.
4. Browse to the src directory of the unarchived folder and confirm.
4. Confirm The Great Suspender now appears in chrome://extensions AND in your chrome://policy

If you have completed the above steps, the "welcome" page will open indicating successful installation of the extension.

Be sure to unsuspend all suspended tabs before removing any other version of the extension or they will disappear forever!

### Build from github

### Enterprise/Windows Domain installation of extension .crx via Group Policy

1. Get extension .crx following steps above or download from [releases](https://github.com/aciidic/thegreatsuspender-notrack/releases)
2. Install Chrome admx/adml templates [from Google](https://support.google.com/chrome/a/answer/187202?hl=en) on a domain controller
3. Create new file `Update.xml` on network filestore or similar, and enable read permissions for all relevent domain users/groups
4. Populate `Update.xml` with code below
```
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='EXTENSION_ID'>
<updatecheck codebase='file://SERVER/SHARE/EXTENSIONS/thegreatsuspender-7.1.9-notrack.crx' version='7.1.9' />
</app>
</gupdate>
```
5. Modify `Update.xml` with correct values:
- `app appid=` you can find in chrome://extensions
- `codebase=` leads to extension .crx file. (SMB/network shared folder works fine) *Use forward slash not back slashes!*
- `version=` should be extension version shown in chrome://extensions
6. Open Group Policy Editor (gpedit.msc) on a domain controller.
8. Use either `Computer` or `User` policies, locate and enable the policy `Configure the list of force-installed apps and extensions`
- Located at `Policies/Administrative Templates/Google/Google Chrome/Extensions/`
7. Add the following (UNC path works well) to enforce automatic installation: `App IDs and update URLs to be force installed:`
- `EXTENSION_ID;\\SERVER\SHARE\PATH\TO\Update.xml`
8. Run `gpupdate.exe` on client machines after adjusting Group Policy enforcement & permissions
9. **Once installed, if you update the extension & update.xml, but Chrome does not install the new extension version, try disabling the specific Group Policy, run `gpupdate` on clients then re-enable the policy & run `gpupdate` again. This appears to be a Chrome issue.**


### Build from github (untested in this release)

Dependencies: openssl, npm.

Expand All @@ -48,16 +103,26 @@ The extension in crx format will be inside the build/crx/ directory. You can dra

### Integrating with another Chrome extension or app

This extension has a small external api to allow other extensions to request the suspension of a tab. See [this issue](https://github.com/greatsuspender/thegreatsuspender/issues/276) for more information. And please let me know about it so that I can try it out!
The old extension had a small external api to allow other extensions to request the suspension of a tab. See [this issue](https://github.com/greatsuspender/thegreatsuspender/issues/276) for more information.

### Windows Group Policies / Windows Registry configuration values

### Windows Group Policies
Since extension version 7.1.8 it is possible to set the configuration using the system registy, which can be applied via group policies on Microsoft Windows.
[More Info](https://github.com/greatsuspender/thegreatsuspender/issues/1174)

It is possible to force settings by defining group policies on Microsoft
Windows.
The whitelist consists of a list of domains seperated by a space character, *do not include http:// or https://* Here's an example:
`domain1.com www.domain2.com sub.domain3.com`

The whitelist is stored internally as a string, with one URL per line.
Configuration stored in registry can be either HKCU or HKLM at
`\Software\Policies\Google\Chrome\3rdparty\extensions\EXTENSION_ID\policy`

The following settings can be defined:
Replace the EXTENSION_ID with the correct value

- To enable function `(true)` use REG_DWORD set to 1
- To disable function `(false)` use REG_DWORD set to 0
- When using REG_SZ "quotes" are not required

*The following settings can be defined:*

* `SCREEN_CAPTURE` (string, default: '0')
* `SCREEN_CAPTURE_FORCE` (boolean, default: false)
Expand All @@ -75,11 +140,29 @@ The following settings can be defined:
* `IGNORE_CACHE` (boolean, default: false)
* `ADD_CONTEXT` (boolean, default: true)
* `SYNC_SETTINGS` (boolean, default: true)
* `ENABLE_CLEAN_SCREENCAPS` (boolean, default: false)
* `SUSPEND_TIME` (string (minutes), default: '60')
* `NO_NAG` (boolean, default: false)
* `WHITELIST` (string (one URL per line), default: '')
* `THEME` (string, default: 'light')


**Step by Step:**

*Note that config changes don't seem to apply until Chrome is restarted, sometimes requires closing/re-opening chrome for a second time*

1. Copy the extension ID from chrome://extensions
2. Create required registry keys (pick either HKLM or HKCU) obviously add your own extension ID, at:
`\Software\Policies\Google\Chrome\3rdparty\extensions\EXTENSION_ID\policy`
- Use REG_SZ for string config values
- Use REG_DWORD for boolean config (1 for true, 0 for false)
- Use REG_SZ for WHITELIST, split each domain with a space char. Extension doesn't care for www. but do not include http/s://
`domain1.com domain2.com www.domain3.com whatever.you.want.com`
3. **Restart Chrome at least once, if not twice**
4. Go to chrome://policy and click "Reload policies" in top left, you should see your configuration listed
![Config Example](https://i.imgur.com/Vr6P7xp.png)


### Contributing to this extension

Contributions are very welcome. Feel free to submit pull requests for new features and bug fixes. For new features, ideally you would raise an issue for the proposed change first so that we can discuss ideas. This will go a long way to ensuring your pull request is accepted.
Expand All @@ -93,3 +176,4 @@ This work is licensed under a GNU GENERAL PUBLIC LICENSE (v2)
This package uses the [html2canvas](https://github.com/niklasvh/html2canvas) library written by Niklas von Hertzen.
It also uses the indexedDb wrapper [db.js](https://github.com/aaronpowell/db.js) written by Aaron Powell.
Thank you also to [BrowserStack](https://www.browserstack.com) for providing free chrome testing tools.
Original source from [The Great Suspender v7.1.8](https://github.com/greatsuspender/thegreatsuspender)
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 9 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "thegreatsuspender",
"name": "thegreatsuspender-notrack",
"version": "0.0.0",
"description": "A chrome extension for suspending all tabs to free up memory",
"description": "A chrome extension for suspending all tabs to free up memory. Without analytics tracking.",
"main": "",
"scripts": {
"build": "grunt",
Expand All @@ -11,20 +11,23 @@
},
"repository": {
"type": "git",
"url": "git://github.com/greatsuspender/thegreatsuspender.git"
"url": "git://github.com/aciidic/thegreatsuspender.git"
},
"keywords": [
"chrome",
"extension",
"addon",
"memory",
"suspend",
"tab"
"tab",
"private",
"privacy",
"notrack"
],
"author": "deanoemcke",
"author": "aciidic",
"license": "GPLv2",
"bugs": {
"url": "https://github.com/greatsuspender/thegreatsuspender/issues"
"url": "https://github.com/aciidic/thegreatsuspender/issues"
},
"devDependencies": {
"eslint": "^4.19.1",
Expand Down
1 change: 1 addition & 0 deletions src/_locales/de/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"html_options_other_enable_context_menu_tooltip_line1": { "message": "Macht Einstellungen der Erweiterung im Rechtsklick-Kontextmenü einer Webseite verfügbar." },
"html_options_other_enable_context_menu_tooltip_line2": { "message": "Das ermöglicht den Zugriff auf umfangreichere Aktionen, die sonst" },
"html_options_other_enable_context_menu_tooltip_line3": { "message": "nicht in der Erweiterung zu finden sind." },
"html_options_other_enable_nonag": { "message": "Deaktivieren von Benachrichtigungs-Popups beim ersten Start und nach einem Update" },
"html_options_other_enable_sync": { "message": "Synchronisiere die Einstellungen mit deinem Chrome Profil" },
"html_options_other_enable_sync_tooltip_line1a": { "message": "Einstellungen der Erweiterung werden zu allen Chrome Browsern synchronisiert," },
"html_options_other_enable_sync_tooltip_line1b": { "message": "auf denen das gleiche Profil angemeldet ist." },
Expand Down
14 changes: 12 additions & 2 deletions src/_locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@
"html_history_recent_sessions": { "message": "Recent sessions" },
"html_history_saved_sessions": { "message": "Saved sessions" },
"html_history_import_session": { "message": "Import session" },
"html_history_migrate_tabs": { "message": "Migrate tabs" },
"html_history_migrate_old_id": { "message": "Old TGS Extension id" },
"html_notice_title": { "message": "Notice" },
"html_notice_important_notice": { "message": "Important notice from The Great Suspender" },
"html_options_title": { "message": "Settings" },
Expand Down Expand Up @@ -112,13 +114,12 @@
"html_options_other_enable_context_menu_tooltip_line1": { "message": "Add controls for this extension to the right-click menu of a web page." },
"html_options_other_enable_context_menu_tooltip_line2": { "message": "This will give you access to advanced suspending actions not available" },
"html_options_other_enable_context_menu_tooltip_line3": { "message": "elsewhere in the extension." },
"html_options_other_enable_nonag": { "message": "Disable notification tab popups on first run and after extension update" },
"html_options_other_enable_sync": { "message": "Sync settings with your Chrome profile" },
"html_options_other_enable_sync_tooltip_line1a": { "message": "Extension settings will be synchronised across all chrome browsers which are" },
"html_options_other_enable_sync_tooltip_line1b": { "message": "logged in with the same profile." },
"html_options_other_enable_sync_tooltip_line2": { "message": "This will also synchronise settings in incognito mode." },
"html_options_other_enable_sync_warning": { "message": "Turning this on will overwrite settings on all other browsers logged into the same Chrome profile" },
"html_options_tracking_opt_out": { "message": "Automatic deactivation of any kind of tracking" },
"html_options_tracking_opt_out_line1": { "message": "This option will disable tracking code, such as that from Google Analytics." },
"html_options_suspend_on_low_memory": { "message": "Instantly suspend when system memory gets very low" },
"html_options_suspend_on_low_memory_tooltip_line1": { "message": "This option will override Chrome's automatic tab discarding functionality." },
"html_options_suspend_on_low_memory_tooltip_line2": { "message": "If enabled, it will force a tab to suspend instead of being discarded by Chrome." },
Expand Down Expand Up @@ -230,6 +231,15 @@
"js_history_confirm_delete": { "message": "Are you sure you want to delete this session?" },
"js_history_confirm_session_overwrite": { "message": "There is already a saved session with this name. Overwrite existing session?" },
"js_history_import_fail": { "message": "Failed to load file. Ensure file is plain text and contains a single url per line." },
"js_history_migrate_fail": { "message": "Need 32-character extension id to migrate from" },
"js_history_migrate_success": {
"message": "Successfully migrated $TABCOUNT$ tabs",
"placeholders": {
"tabcount": {
"content": "$1"
}
}
},
"js_suspended_remove_from_whitelist": { "message": "Remove site from whitelist" },
"js_suspended_hotkey_to_reload": { "message": "Set keyboard shortcuts" },
"js_suspended_low_memory": { "message": "Tab suspended due to low system memory" },
Expand Down
1 change: 1 addition & 0 deletions src/_locales/pt_BR/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"html_options_other_enable_context_menu_tooltip_line1": { "message": "Adicione controles para esta extensão no menu do botão direito de uma página da web." },
"html_options_other_enable_context_menu_tooltip_line2": { "message": "Isso lhe dará acesso a ações avançadas de suspensão que não estão disponíveis" },
"html_options_other_enable_context_menu_tooltip_line3": { "message": "em outro lugar na extensão." },
"html_options_other_enable_nonag": { "message": "Desativar popups de notificação na primeira execução e após atualização" },
"html_options_other_enable_sync": { "message": "Sincronizar as configurações com seu perfil do Chrome" },
"html_options_other_enable_sync_tooltip_line1a": { "message": "As configurações de extensão serão sincronizadas em todos os navegadores Chrome que estiverem" },
"html_options_other_enable_sync_tooltip_line1b": { "message": "conectados com o mesmo perfil." },
Expand Down
Loading