Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
lovasoa authored Aug 17, 2023
2 parents df47225 + e4ec4a4 commit c79e640
Show file tree
Hide file tree
Showing 39 changed files with 682 additions and 339 deletions.
41 changes: 13 additions & 28 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:
name: Build and publish the extension
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
node-version: '20'
- run: npm install --global web-ext
- id: version
run: echo version=$(jq -r ".version + \".$(($(date +%s)/100000)).$(($(date +%s)%65535))\"" < manifest.json) >> $GITHUB_OUTPUT
Expand All @@ -30,34 +30,19 @@ jobs:
WEB_EXT_API_KEY: ${{ secrets.AMO_JWT_ISSUER }}
WEB_EXT_API_SECRET: ${{ secrets.AMO_JWT_SECRET }}
- run: ls -lah ./web-ext-artifacts
- id: filename
run: echo filename=$(echo $PWD/web-ext-artifacts/*xpi) >> $GITHUB_OUTPUT
- name: Create Release
id: create_release
uses: actions/create-release@v1
- run: cp $PWD/web-ext-artifacts/*xpi ../ophirofox.xpi
- run: ../update-manifest.py | tee /tmp/update_manifest.json
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Release
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ steps.version.outputs.version }}
release_name: Release ${{ steps.version.outputs.version }}
name: Release ${{ steps.version.outputs.version }}
draft: false
prerelease: false
- name: Upload the xpi file as a release asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ steps.filename.outputs.filename }}
asset_name: ophirofox.xpi
asset_content_type: application/zip
- run: ../update-manifest.py | tee /tmp/update_manifest.json
- name: Upload the extension's update manifest
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: /tmp/update_manifest.json
asset_name: update_manifest.json
asset_content_type: application/json
files: |
ophirofox.xpi
/tmp/update_manifest.json
19 changes: 13 additions & 6 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Sign webextension
name: "Construction de l'extension"
on: [pull_request]

defaults:
Expand All @@ -8,12 +8,19 @@ defaults:
jobs:
check:
name: web-ext lint and build
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '14'
node-version: '20'
- run: npm install --global web-ext
- run: web-ext lint --self-hosted --warnings-as-errors
- run: web-ext build
- run: web-ext build
- uses: actions/upload-artifact@v3
id: upload
with:
name: ophirofox.zip
path: ophirofox/web-ext-artifacts/*.zip
if-no-files-found: error

76 changes: 57 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,29 +16,54 @@ d'être redirigé automatiquement vers une page de recherche europresse qui cont
## Partenaires Europresse supportés

L'extension fonctionne avec les portails universitaires suivants :
- [**Europresse Bibliothèque nationale de France**](https://bnf.idm.oclc.org/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=bnf)
- [**Europresse ENS Lyon**](https://acces.bibliotheque-diderot.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=ENSLYONT_1),
- [**Europresse ENS Ulm PSL**](http://proxy.rubens.ens.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=PSLT_1),
- [**Europresse ENSAM (Arts et Métiers)**](http://rp1.ensam.eu/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=AML),
- [**Europresse Université Paris-Saclay**](https://proxy.scd.u-psud.fr/login?url=http://nouveau.europresse.com/access/ip/default.aspx?un=U031535T_9),
- [**Europresse INSA Lyon**](https://docelec.insa-lyon.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=INSAT_3)
- [**Europresse Bibliothèque nationale de France**](https://bnf.idm.oclc.org/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=bnf)
- [**Europresse Université Côte d'Azur**](http://proxy.unice.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=U032557T_1)
- [**Europresse Université Paris 1 Panthéon-Sorbonne**](http://ezpaarse.univ-paris1.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=SORBONNET_1),
- [**Europresse Université Paris Cité**](https://ezproxy.u-paris.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=UNIVPARIS)
- [**Europresse Université Paris-Saclay**](https://ezproxy.universite-paris-saclay.fr/login?url=http://nouveau.europresse.com/access/ip/default.aspx?un=U031535T_9),
- [**Europresse Université d'Aix-Marseille**](https://lama.univ-amu.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=U031032T_1)
- [**Europresse Université d'Artois**](http://ezproxy.univ-artois.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=littoralT_1)
- [**Europresse Université de Bordeaux Montaigne**](https://www.ezproxy.u-bordeaux-montaigne.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=UNIVMONTAIGNET_1)
- [**Europresse Université de Bordeaux**](https://docelec.u-bordeaux.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=UNIVBORDEAUXT_1)
- [**Europresse Université de Montpellier**](https://ezpum.scdi-montpellier.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=MontpellierT_1)
- [**Europresse Université de Franche-Comté**](http://scd1.univ-fcomte.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=FCOMTET_1)
- [**Europresse Université de Grenoble**](https://sid2nomade-2.grenet.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=grenobleT_1)
- [**Europresse Université de Haute-Alsace**](https://scd-proxy.uha.fr/login?url=http://nouveau.europresse.com/access/ip/default.aspx?un=ALSACET_1)
- [**Europresse Université de Montpellier**](https://ezpum.scdi-montpellier.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=MontpellierT_1)
- [**Europresse Université de Pau et des pays de l'Adour**](https://nouveau-europresse-com.rproxy.univ-pau.fr/access/ip/default.aspx?un=uppaT_2)
- [**Europresse Université PSL**](https://portail.psl.eu/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=PSLT_1)
- [**Europresse Université du Mans**](https://login.doc-elec.univ-lemans.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=U031524T_1)

Ou directement via le site Europresse.
Ou directement via le site Europresse.

## Sites supportés
- [Le Monde](https://www.lemonde.fr/)

### Presse nationale
- [L'Humanité](https://www.humanite.fr)
- [La Croix](https://www.la-croix.com)
- [Le Figaro](https://www.lefigaro.fr/)
- [Le Monde Diplomatique](https://www.www.monde-diplomatique.fr)
- [Le Monde](https://www.lemonde.fr/)
- [Le Point](https://www.lepoint.fr)
- [Libération](https://www.liberation.fr/)
- [Le Monde Diplomatique](https://www.monde-diplomatique.fr)
- [La Croix](https://www.la-croix.com)
- [Courrier international](https://www.courrierinternational.com)
- [L'Humanité](https://www.humanite.fr)

### Presse régionale
- [La Dépêche du Midi](https://www.ladepeche.fr/)
- [La Montagne](https://www.lamontagne.fr)
- [Le Point](https://www.lepoint.fr)
- [La Provence](https://www.laprovence.com/)
- [La Voix du Nord](https://www.lavoixdunord.fr/)
- [Le Parisien](https://www.leparisien.fr/)
- [Ouest France](https://www.ouest-france.fr/)
- [Sud Ouest](https://www.sudouest.fr/)

### Presse étrangère
- [Courrier international](https://www.courrierinternational.com)
- [La Libre Belgique](https://www.lalibre.be/)
- [Le Soir (Belgique)](https://www.lesoir.be)
- [Le Temps (Suisse)](https://www.letemps.ch/)

Vous pouvez proposer d'autres sites en ouvrant une [demande sur github](https://github.com/lovasoa/ophirofox/issues)

Expand All @@ -61,18 +86,31 @@ ophirofox est [présent sur le Chrome Webstore](https://chrome.google.com/websto

<img width="624" alt="image" src="https://user-images.githubusercontent.com/552629/94343918-dbff7100-001b-11eb-86e4-df66e15bc6f6.png">

# Comment cela fonctionne
# Comment ajouter un nouveau partenaire Europresse

L'extension injecte un script dans toutes les pages du monde.fr pour détecter les articles payants.
Lorsqu'un article est détecté, l'extension lui ajoute un lien intitulé *Lire sur Europresse* qui pointe vers
[`http://proxy.rubens.ens.fr/login?url=https://nouveau.europresse.com/Search/Reading?ophirofox_source=`](http://proxy.rubens.ens.fr/login?url=https://nouveau.europresse.com/Search/Reading?ophirofox_source=),
suivi de l'adresse de la page du monde originale.
Si votre établissement a un portail Europresse, vous pouvez facilement ajouter son support à cette extension.

Lorsque l'utilisateur se retrouve sur [la page de connexion à europresse](https://nouveau-europresse-com.proxy.rubens.ens.fr/Login/), dont l'utilisateur n'a pas les identifiants,
l'extension modifie la page pour simplement afficher les mots *Authentification*, et charge en arrière plan la page [`https://proxy.rubens.ens.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=PSLT_1`](https://proxy.rubens.ens.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=PSLT_1) qui permet de s'identifier sans mot de passe, puis recharge la page.
1. Créez un compte sur [github](https://github.com).
2. Sur github, ouvrez [le fichier `manifest.json` de l'extension](https://github.com/lovasoa/ophirofox/blob/master/ophirofox/manifest.json).
3. Cliquez sur le crayon pour éditer le fichier.
4. Ajoutez votre université à la liste des partenaires Europresse supportés, en suivant le modèle des autres universités.
- Dans la section qui contient toutes les URLs au format `https://nouveau-europresse-com.proxy.univ-xyz.fr/Search/Reading*`, ajoutez une ligne avec l'URL du proxy europresse de votre université.
- Dans la section qui contient tous les objets au format
`{ "name": "Université XYZ", "AUTH_URL": "https://proxy.univ-xyz.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=CODE_UNIVERSITE" }`
, ajoutez un objet avec le nom de votre université et l'URL de son lien de connexion europresse. Vous pouvez trouver l'URL de connexion en vous connectant à votre portail d'université, puis en faisant un clic droit sur le lien de connexion à Europresse et en choisissant *Copier l'adresse du lien*. Conservez l'ordre alphabétique des universités.
5. Cliquez sur *Propose file change*.
6. Indiquez le nom de votre université dans le champ *Propose file change*.
7. Cliquez sur *Create pull request*.

Quand l'utilisateur se retrouve enfin sur la page d'accueil d'Europresse, l'extension utilise la variable `ophirofox_source` définie initialement pour extraire les mots du titre de l'article,
et lancer une recherche europresse.
# Comment cela fonctionne

1. L'extension injecte un script dans toutes les pages des journaux supportés pour détecter les articles payants.
Lorsqu'un article est détecté, l'extension lui ajoute un lien intitulé *Lire sur Europresse* qui pointe vers
la page de connexion europresse de l'université sélectionnée par l'utilisateur.
Lorsque l'utilisateur clique sur le lien, le titre de l'article est extrait de la page actuelle,
et conservée dans l'espace de stockage local de l'extension pour être réutilisé ensuite.
2. Quand l'utilisateur se retrouve sur la page d'accueil d'Europresse, après s'être connecté, l'extension utilise le titre stocké à l'étape précédente pour lancer une recherche europresse. Le titre est ensuite tout de suite supprimé de l'espace de stockage local.
3. Lorsque l'utilisateur ouvre l'article, l'extension supprime l'horrible surlignage jaune qui est ajouté par défaut par Europresse.

# License

Expand Down
128 changes: 16 additions & 112 deletions ophirofox/content_scripts/config.js
Original file line number Diff line number Diff line change
@@ -1,89 +1,4 @@
const ophirofox_config_list = [
{
name: "ULM",
domains: ["ens.fr"],
LOGIN_URL: "http://proxy.rubens.ens.fr/login",
// URL à charger pour pouvoir se logger sans mot de passe
AUTH_URL:
"https://proxy.rubens.ens.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=PSLT_1",
},
{
name: "ENSAM",
domains: ["ensam.eu"],
LOGIN_URL: "http://rp1.ensam.eu/login",
AUTH_URL:
"https://rp1.ensam.eu/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=AML",
},
{
name: "Université Paris-Saclay",
domains: ["universite-paris-saclay.fr"],
LOGIN_URL: "https://proxy.scd.u-psud.fr/login",
AUTH_URL:
"https://proxy.scd.u-psud.fr/login?url=http://nouveau.europresse.com/access/ip/default.aspx?un=U031535T_9",
},
{
name: "INSA Lyon",
domains: ["insa-lyon.fr"],
LOGIN_URL: "https://docelec.insa-lyon.fr/login",
AUTH_URL:
"https://docelec.insa-lyon.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=INSAT_3",
},
{
name: "BNF",
domains: ["bnf.fr"],
LOGIN_URL: "https://bnf.idm.oclc.org/login",
AUTH_URL:
"https://bnf.idm.oclc.org/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=U032999T_1",
},
{
name: "Université Grenoble-Alpes",
domains: ["grenet.fr"],
LOGIN_URL: "https://sid2nomade-2.grenet.fr/login",
AUTH_URL:
"https://sid2nomade-2.grenet.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=grenobleT_1",
},
{
name: "Université de Montpellier",
domains: ["scdi-montpellier.fr"],
LOGIN_URL: "https://ezpum.scdi-montpellier.fr/login",
AUTH_URL:
"https://ezpum.scdi-montpellier.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=MontpellierT_1",
},
{
name: "Université Bordeaux Montaigne",
domains: ["u-bordeaux-montaigne.fr"],
LOGIN_URL: "https://www.ezproxy.u-bordeaux-montaigne.fr/login",
AUTH_URL:
"https://www.ezproxy.u-bordeaux-montaigne.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=UNIVMONTAIGNET_1",
},
{
name: "Université de Bordeaux",
domains: ["u-bordeaux.fr"],
LOGIN_URL: "https://docelec.u-bordeaux.fr/login",
AUTH_URL:
"https://docelec.u-bordeaux.fr/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=UNIVBORDEAUXT_1",
},
{
name: "Université PSL",
domains: ["psl.eu"],
LOGIN_URL: "https://portail.psl.eu/login",
AUTH_URL: "https://portail.psl.eu/login?url=https://nouveau.europresse.com/access/ip/default.aspx?un=PSLT_1"
},
{
name: "Pas d'intermédiaire",
domains: ["europresse.com"],
LOGIN_URL: null,
AUTH_URL: "https://nouveau.europresse.com/Login",
}
];

/**
* Get the config for a given domain
* @param {string} domain
*/
function getOphirofoxConfigByDomain(domain) {
return ophirofox_config_list.find(({ domains }) => domains.includes(domain));
}
const ophirofox_config_list = chrome.runtime.getManifest().browser_specific_settings.ophirofox_metadata.partners;

/**
* Get the config with the given name
Expand All @@ -94,7 +9,7 @@ function getOphirofoxConfigByName(search_name) {
}

const DEFAULT_SETTINGS = {
partner_name: "ULM",
partner_name: "BNF",
};

const OPHIROFOX_SETTINGS_KEY = "ophirofox_settings";
Expand Down Expand Up @@ -133,10 +48,6 @@ async function setSettings(settings) {

async function getOphirofoxConfig() {
const url = new URL(window.location);
const domain = url.host.split(".").slice(-2).join(".");
// Si la page actuelle est spécifique à une configuration, alors on l'utilise
const domain_match = getOphirofoxConfigByDomain(domain);
if (domain_match) return domain_match;
try {
const { partner_name } = await getSettings();
const name_match = getOphirofoxConfigByName(partner_name);
Expand All @@ -153,28 +64,21 @@ async function getOphirofoxConfig() {
const ophirofox_config = getOphirofoxConfig();

/**
* Crée un lien vers une recherche europresse pré-remplie avec les termes de recherche passés en argument
* Crée un lien vers Europresse avec les keywords donnés
* @param {string} keywords
* @returns {URL}
* @returns {Promise<HTMLAnchorElement>}
*/
async function makeOphirofoxReadingLink(keywords) {
const target_url = new URL("https://nouveau.europresse.com/Search/Reading");
target_url.searchParams.set("ophirofox_source", window.location);
target_url.searchParams.set("ophirofox_keywords", keywords);
const config = await ophirofox_config;
if (config.LOGIN_URL) {
return new URL(`${config.LOGIN_URL}?url=${target_url}`);
} else {
return target_url;
async function ophirofoxEuropresseLink(keywords) {
keywords = keywords ? keywords.trim() : document.querySelector("h1").textContent;
const a = document.createElement("a");
a.textContent = "Lire sur Europresse";
a.className = "ophirofox-europresse";
a.onclick = function (evt) {
evt.preventDefault();
chrome.storage.local.set({ "ophirofox_keywords": keywords }, () => {
ophirofox_config.then(({ AUTH_URL }) => window.location = AUTH_URL);
});
}
}

if (window.location.protocol.includes("extension")) {
window.ophirofox_config_exports = {
ophirofox_config_list,
ophirofox_config,
makeOphirofoxReadingLink,
getSettings,
setSettings,
};
ophirofox_config.then(({ AUTH_URL }) => { a.href = AUTH_URL });
return a;
}
1 change: 0 additions & 1 deletion ophirofox/content_scripts/courrier-international.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
.ophirofox-europresse {
margin-left: 10px;
background-color: #FFDF00;
}
15 changes: 2 additions & 13 deletions ophirofox/content_scripts/courrier-international.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,6 @@
async function makeEuropresseUrl() {
const keywords = extractKeywords();
return await makeOphirofoxReadingLink(keywords);
}

function extractKeywords() {
return document.querySelector("h1").textContent;
}

async function createLink() {
const a = document.createElement("a");
a.href = await makeEuropresseUrl(new URL(window.location));
a.textContent = "Lire sur Europresse";
a.className = "info-reserved ophirofox-europresse";
const a = await ophirofoxEuropresseLink();
a.classList.add("info-reserved");
return a;
}

Expand Down
13 changes: 0 additions & 13 deletions ophirofox/content_scripts/europresse_login.js

This file was deleted.

Loading

0 comments on commit c79e640

Please sign in to comment.