@@ -69,6 +69,67 @@ async function injectEuropress() {
69
69
} ) ;
70
70
}
71
71
72
+ chrome . webRequest . onBeforeSendHeaders . addListener (
73
+ function ( details ) {
74
+ const url = new URL ( details . url ) ;
75
+ const isTargetHost = url . hostname . includes ( "europresse.com" ) || url . hostname . includes ( "eureka.cc" ) ;
76
+ const isTargetPath = url . pathname . startsWith ( "/access/httpref/default.aspx" ) ;
77
+
78
+ if ( isTargetHost && isTargetPath ) {
79
+ return new Promise ( ( resolve ) => {
80
+ chrome . storage . local . get (
81
+ [ "ophirofox_request_type" , "ophirofox_readPDF_request" , "ophirofox_settings" ] ,
82
+ function ( data ) {
83
+ const hasRequestType = data . ophirofox_request_type !== undefined ;
84
+ const hasReadPDFRequest = data . ophirofox_readPDF_request !== undefined ;
85
+ const hasConsumable = hasRequestType || hasReadPDFRequest ;
86
+ if ( hasConsumable ) {
87
+ let referer = null ;
88
+ if ( data . ophirofox_settings ) {
89
+ try {
90
+ const settings = typeof data . ophirofox_settings === 'string'
91
+ ? JSON . parse ( data . ophirofox_settings )
92
+ : data . ophirofox_settings ;
93
+ const partner_name = settings . partner_name ;
94
+ const manifest = chrome . runtime . getManifest ( ) ;
95
+ const partners = manifest . browser_specific_settings . ophirofox_metadata . partners ;
96
+ const partner = partners . find ( p => p . name === partner_name ) ;
97
+
98
+ if ( partner && partner . AUTH_URL ) {
99
+ const authUrl = new URL ( partner . AUTH_URL ) ;
100
+ referer = `${ authUrl . protocol } //${ authUrl . hostname } ` ;
101
+ }
102
+ } catch ( err ) {
103
+ console . error ( "Erreur lors de la détermination du referer:" , err ) ;
104
+ }
105
+ }
106
+
107
+ // Si un referer est déterminé, modifions l'en-têt
108
+ if ( referer ) {
109
+ // Chercher l'en-tête Referer existant ou en ajouter un nouveau
110
+ let refererHeader = details . requestHeaders . find ( header => header . name . toLowerCase ( ) === "referer" ) ;
111
+
112
+ if ( refererHeader ) {
113
+ refererHeader . value = referer ;
114
+ } else {
115
+ details . requestHeaders . push ( { name : "Referer" , value : referer } ) ;
116
+ }
117
+ console . log ( `Referer modifié pour ${ details . url } : ${ referer } ` ) ;
118
+ }
119
+ } else {
120
+ console . log ( "Aucun consommable trouvé, referer non modifié" ) ;
121
+ }
122
+ resolve ( { requestHeaders : details . requestHeaders } ) ;
123
+ }
124
+ ) ;
125
+ } ) ;
126
+ }
127
+ return { requestHeaders : details . requestHeaders } ;
128
+ } ,
129
+ { urls : [ "*://*.europresse.com/*" , "*://*.eureka.cc/*" ] } ,
130
+ [ "blocking" , "requestHeaders" ]
131
+ ) ;
132
+
72
133
// update injection on permission change
73
134
chrome . permissions . onAdded . addListener ( injectEuropress ) ;
74
135
chrome . permissions . onRemoved . addListener ( injectEuropress ) ;
0 commit comments