changed default user agent to "Firefox" to fix google/youtube pages not working

This commit is contained in:
partisan 2025-05-11 09:03:08 +02:00
parent b8bac12e7e
commit 52633a0b3e
3 changed files with 85 additions and 80 deletions

View file

@ -65,6 +65,7 @@ Here are the details of each parameter used in the patching system:
1. **`standard`:** Standard patching type that follows the `+` (add) and `-` (remove) syntax.
- Used for general file modifications.
- Supports multi-line block matching: the entire `-` block must be present to be replaced by the `+` block.
- **Example:**
```patch
i: /browser/branding/official/configure.sh
@ -73,6 +74,21 @@ Here are the details of each parameter used in the patching system:
-MOZ_APP_DISPLAYNAME=Firefox
+MOZ_APP_DISPLAYNAME=Spitfire
```
- **Multi-line example:**
```patch
-project_flag(
- env="MOZ_APP_UA_NAME",
- default="",
- nargs=1,
- help="application name in the User Agent string",
-)
+project_flag(
+ env="MOZ_APP_UA_NAME",
+ default="Firefox",
+ nargs=1,
+ help="application name in the User Agent string",
+)
```
Note: *Type will fallback to t:standard when no type is specified.*
2. **`pref`:** Indicates that the patch is modifying preference settings (e.g., Firefox `prefs.js`).

View file

@ -0,0 +1,16 @@
t: standard
i: /toolkit/moz.configure
o: /toolkit/moz.configure
-project_flag(
- env="MOZ_APP_UA_NAME",
- default="",
- nargs=1,
- help="Application name in the User Agent string",
-)
+project_flag(
+ env="MOZ_APP_UA_NAME",
+ default="Firefox",
+ nargs=1,
+ help="application name in the User Agent string",
+)

View file

@ -1,102 +1,75 @@
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// applyStandardModifications handles `standard` type patches
func applyStandardModifications(targetFilePath string, modifications []string) error {
fmt.Printf("Applying standard modifications to file: %s\n", targetFilePath)
// Open the target file for reading and writing
file, err := os.OpenFile(targetFilePath, os.O_RDWR, 0644)
func applyStandardModifications(filePath string, modifications []string) error {
contentBytes, err := os.ReadFile(filePath)
if err != nil {
return fmt.Errorf("failed to open target file '%s': %v", targetFilePath, err)
return fmt.Errorf("failed to read file: %v", err)
}
defer file.Close()
lines := strings.Split(string(contentBytes), "\n")
scanner := bufio.NewScanner(file)
targetLines := []string{}
// Read all lines from the target file
for scanner.Scan() {
targetLines = append(targetLines, scanner.Text())
}
if err := scanner.Err(); err != nil {
return fmt.Errorf("failed to read target file '%s': %v", targetFilePath, err)
var delBlock []string
var addBlock []string
var patchBlocks []struct {
del []string
add []string
}
modifiedLines := map[string]bool{}
modMap := parseModifications(modifications)
// Group lines into delete and add blocks
for _, line := range modifications {
if strings.HasPrefix(line, "-") {
delBlock = append(delBlock, strings.TrimPrefix(line, "-"))
} else if strings.HasPrefix(line, "+") {
addBlock = append(addBlock, strings.TrimPrefix(line, "+"))
} else if line == "" && len(delBlock) > 0 {
patchBlocks = append(patchBlocks, struct {
del []string
add []string
}{append([]string{}, delBlock...), append([]string{}, addBlock...)})
delBlock = nil
addBlock = nil
}
}
if len(delBlock) > 0 || len(addBlock) > 0 {
patchBlocks = append(patchBlocks, struct {
del []string
add []string
}{delBlock, addBlock})
}
var updatedContent strings.Builder
// Apply modifications to the target lines
for _, line := range targetLines {
lineModified := false
for key, mod := range modMap {
if strings.Contains(line, key) && !modifiedLines[key] {
fmt.Printf("Replacing line in file '%s': %s -> %s\n", targetFilePath, line, mod)
updatedContent.WriteString(mod + "\n")
modifiedLines[key] = true
lineModified = true
// Apply each block
for _, patch := range patchBlocks {
matchIndex := -1
for i := 0; i <= len(lines)-len(patch.del); i++ {
matched := true
for j := range patch.del {
if strings.TrimSpace(lines[i+j]) != strings.TrimSpace(patch.del[j]) {
matched = false
break
}
}
if matched {
matchIndex = i
break
}
}
// Write the original line if no modification matches
if !lineModified {
updatedContent.WriteString(line + "\n")
if matchIndex == -1 {
return fmt.Errorf("patch block not found in file: %v", patch.del)
}
// Replace matched block
newLines := append([]string{}, lines[:matchIndex]...)
newLines = append(newLines, patch.add...)
newLines = append(newLines, lines[matchIndex+len(patch.del):]...)
lines = newLines
}
// Append any remaining modifications that were not applied
for key, mod := range modMap {
if !modifiedLines[key] {
fmt.Printf("Adding new line to file '%s': %s\n", targetFilePath, mod)
updatedContent.WriteString(mod + "\n")
}
}
// Truncate and rewrite the file with updated content
if err := file.Truncate(0); err != nil {
return fmt.Errorf("failed to truncate file '%s': %v", targetFilePath, err)
}
if _, err := file.Seek(0, 0); err != nil {
return fmt.Errorf("failed to reset file pointer for '%s': %v", targetFilePath, err)
}
if _, err := file.WriteString(updatedContent.String()); err != nil {
return fmt.Errorf("failed to write updated content to file '%s': %v", targetFilePath, err)
}
fmt.Printf("Standard modifications successfully applied to file: %s\n", targetFilePath)
return nil
}
// parseModifications converts a list of modification strings into a map for processing
func parseModifications(modifications []string) map[string]string {
modMap := map[string]string{}
for _, mod := range modifications {
if strings.HasPrefix(mod, "+") || strings.HasPrefix(mod, "-") {
trimmed := strings.TrimSpace(strings.TrimPrefix(mod, "+"))
trimmed = strings.TrimPrefix(trimmed, "-")
key := extractKey(trimmed)
modMap[key] = trimmed
}
}
return modMap
}
// extractKey extracts the key from a modification string
func extractKey(line string) string {
start := strings.Index(line, "(")
end := strings.LastIndex(line, ")")
if start > 0 && end > start {
return strings.TrimSpace(line[start+1 : end])
}
return line // Fallback: return the full line
// Write updated file
return os.WriteFile(filePath, []byte(strings.Join(lines, "\n")), 0644)
}