Skip to content

Commit e6547ea

Browse files
committed
feat: linux support
1 parent a4f8b69 commit e6547ea

File tree

5 files changed

+222
-63
lines changed

5 files changed

+222
-63
lines changed

tool/fe/fe_linux.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package fe
2+
3+
import (
4+
"bufio"
5+
"io"
6+
"log"
7+
"net/http"
8+
"os"
9+
"os/exec"
10+
)
11+
12+
const TargetDir = "FiddlerEverywhere"
13+
14+
func Download() {
15+
if s, err := os.Stat("cache/fe.AppImage"); err == nil && !s.IsDir() {
16+
log.Println("cache/fe.AppImage exists.")
17+
18+
err = os.Chmod("cache/fe.AppImage", 0755)
19+
if err != nil {
20+
log.Fatalln("Chmod fe.AppImage.tmp error", err)
21+
}
22+
return
23+
}
24+
file, err := os.Create("cache/fe.AppImage.tmp")
25+
if err != nil {
26+
log.Fatalln("Create file error:" + err.Error())
27+
}
28+
defer file.Close()
29+
30+
writer := bufio.NewWriter(file)
31+
client := http.Client{}
32+
resp, err := client.Get("https://api.getfiddler.com/linux/latest-linux")
33+
if err != nil {
34+
file.Close()
35+
log.Fatalln("Download EF error:" + err.Error())
36+
}
37+
defer resp.Body.Close()
38+
39+
fileSize, err := io.Copy(writer, resp.Body)
40+
41+
file.Close()
42+
if err != nil {
43+
log.Fatalln("Write file error:" + err.Error())
44+
}
45+
err = os.Rename("cache/fe.AppImage.tmp", "cache/fe.AppImage")
46+
if err != nil {
47+
log.Fatalln("Rename fe.AppImage.tmp error", err)
48+
}
49+
err = os.Chmod("cache/fe.AppImage", 0755)
50+
if err != nil {
51+
log.Fatalln("Chmod fe.AppImage.tmp error", err)
52+
}
53+
log.Println("Download end, file size:", fileSize)
54+
}
55+
56+
func Extract() {
57+
cmd := exec.Command("cache/fe.AppImage", "--appimage-extract")
58+
err := cmd.Run()
59+
if err != nil {
60+
log.Fatalln("AppImage extract error:", err)
61+
}
62+
os.RemoveAll("FiddlerEverywhere")
63+
err = os.Rename("squashfs-root", "FiddlerEverywhere")
64+
if err != nil {
65+
log.Fatalln("Rename squashfs error:", err)
66+
}
67+
}
File renamed without changes.

tool/patch/patch.go

Lines changed: 6 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
package patch
22

33
import (
4-
"bufio"
5-
"errors"
64
"io"
75
"log"
8-
"net/http"
96
"os"
10-
"sync"
117
)
128

139
func Apply() {
@@ -28,7 +24,7 @@ func Apply() {
2824
if err != nil {
2925
log.Fatalln("Move server/index.js to main.js error:", err)
3026
}
31-
mainFile, err := os.OpenFile("FiddlerEverywhere/resources/app/out/main.js", os.O_APPEND, 0644)
27+
mainFile, err := os.OpenFile("FiddlerEverywhere/resources/app/out/main.js", os.O_APPEND|os.O_WRONLY, 0644)
3228
if err != nil {
3329
log.Fatalln("Open main.js file error:", err)
3430
}
@@ -39,66 +35,13 @@ func Apply() {
3935
log.Fatalln("Open main.original.js file error:", err)
4036
}
4137
defer originalFile.Close()
42-
io.Copy(mainFile, originalFile)
4338

44-
os.Remove("FiddlerEverywhere/fiddler.dll")
45-
fiddlerFileDst, err := os.Create("FiddlerEverywhere/fiddler.dll")
39+
log.Println("Append main.js")
40+
_, err = io.Copy(mainFile, originalFile)
4641
if err != nil {
47-
log.Fatalln("Open FiddlerEverywhere/fiddler.dll file error:", err)
48-
}
49-
defer fiddlerFileDst.Close()
50-
fiddlerFileSrc, err := os.Open("cache/fiddler.dll")
51-
if err != nil {
52-
log.Fatalln("Open cache/fiddler.dll file error:", err)
53-
}
54-
defer fiddlerFileSrc.Close()
55-
io.Copy(fiddlerFileDst, fiddlerFileSrc)
56-
log.Println("Apply end.")
57-
}
58-
59-
func Download(sg *sync.WaitGroup) {
60-
_, err := os.Stat("cache")
61-
if err != nil {
62-
if errors.Is(err, os.ErrNotExist) {
63-
// 不存在
64-
err := os.Mkdir("cache", 0755)
65-
if err != nil {
66-
log.Fatalln("Create dir error:", err)
67-
} else {
68-
log.Println("Create dir ok.")
69-
}
70-
} else {
71-
log.Fatalln("Check cache dir error:", err)
72-
}
73-
}
74-
if s, err := os.Stat("cache/fiddler.dll"); err == nil && !s.IsDir() {
75-
log.Println("cache/fiddler.dll exists.")
76-
return
77-
}
78-
file, err := os.Create("cache/fiddler.dll.tmp")
79-
if err != nil {
80-
log.Fatalln("Create file error:" + err.Error())
42+
log.Fatalln("Append main.js error:", err)
8143
}
8244

83-
writer := bufio.NewWriter(file)
84-
client := http.Client{}
85-
resp, err := client.Get("https://github.com/project-yui/Yui-patch/releases/download/v1.1.3/yui-fiddler-win32-x86_64-v1.1.3.dll")
86-
if err != nil {
87-
file.Close()
88-
log.Fatalln("Download fiddler.dll error:" + err.Error())
89-
}
90-
defer resp.Body.Close()
91-
92-
fileSize, err := io.Copy(writer, resp.Body)
93-
94-
file.Close()
95-
if err != nil {
96-
log.Fatalln("Write file error:" + err.Error())
97-
}
98-
err = os.Rename("cache/fiddler.dll.tmp", "cache/fiddler.dll")
99-
if err != nil {
100-
log.Fatalln("Rename fiddler.dll.tmp error", err)
101-
}
102-
log.Println("Download end, file size:", fileSize)
103-
sg.Done()
45+
replaceFiddler()
46+
log.Println("Apply end.")
10447
}

tool/patch/patch_linux.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package patch
2+
3+
import (
4+
"bufio"
5+
"errors"
6+
"io"
7+
"log"
8+
"net/http"
9+
"os"
10+
"sync"
11+
)
12+
13+
func Download(sg *sync.WaitGroup) {
14+
_, err := os.Stat("cache")
15+
if err != nil {
16+
if errors.Is(err, os.ErrNotExist) {
17+
// 不存在
18+
err := os.Mkdir("cache", 0755)
19+
if err != nil {
20+
log.Fatalln("Create dir error:", err)
21+
} else {
22+
log.Println("Create dir ok.")
23+
}
24+
} else {
25+
log.Fatalln("Check cache dir error:", err)
26+
}
27+
}
28+
if s, err := os.Stat("cache/fiddler.so"); err == nil && !s.IsDir() {
29+
log.Println("cache/fiddler.so exists.")
30+
sg.Done()
31+
return
32+
}
33+
file, err := os.Create("cache/fiddler.so.tmp")
34+
if err != nil {
35+
log.Fatalln("Create file error:" + err.Error())
36+
}
37+
38+
writer := bufio.NewWriter(file)
39+
client := http.Client{}
40+
resp, err := client.Get("https://github.com/project-yui/Yui-patch/releases/download/v1.1.3/yui-libfiddler-linux-x86_64-v1.1.3.so")
41+
if err != nil {
42+
file.Close()
43+
log.Fatalln("Download fiddler.so error:" + err.Error())
44+
}
45+
defer resp.Body.Close()
46+
47+
fileSize, err := io.Copy(writer, resp.Body)
48+
49+
file.Close()
50+
if err != nil {
51+
log.Fatalln("Write file error:" + err.Error())
52+
}
53+
err = os.Rename("cache/fiddler.so.tmp", "cache/fiddler.so")
54+
if err != nil {
55+
log.Fatalln("Rename fiddler.so.tmp error", err)
56+
}
57+
log.Println("Download end, file size:", fileSize)
58+
sg.Done()
59+
}
60+
61+
func replaceFiddler() {
62+
63+
os.Remove("FiddlerEverywhere/libfiddler.so")
64+
fiddlerFileDst, err := os.Create("FiddlerEverywhere/libfiddler.so")
65+
if err != nil {
66+
log.Fatalln("Open FiddlerEverywhere/libfiddler.so file error:", err)
67+
}
68+
defer fiddlerFileDst.Close()
69+
fiddlerFileSrc, err := os.Open("cache/fiddler.so")
70+
if err != nil {
71+
log.Fatalln("Open cache/fiddler.so file error:", err)
72+
}
73+
defer fiddlerFileSrc.Close()
74+
io.Copy(fiddlerFileDst, fiddlerFileSrc)
75+
}

tool/patch/patch_windows.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package patch
2+
3+
import (
4+
"bufio"
5+
"errors"
6+
"io"
7+
"log"
8+
"net/http"
9+
"os"
10+
"sync"
11+
)
12+
13+
func Download(sg *sync.WaitGroup) {
14+
_, err := os.Stat("cache")
15+
if err != nil {
16+
if errors.Is(err, os.ErrNotExist) {
17+
// 不存在
18+
err := os.Mkdir("cache", 0755)
19+
if err != nil {
20+
log.Fatalln("Create dir error:", err)
21+
} else {
22+
log.Println("Create dir ok.")
23+
}
24+
} else {
25+
log.Fatalln("Check cache dir error:", err)
26+
}
27+
}
28+
if s, err := os.Stat("cache/fiddler.dll"); err == nil && !s.IsDir() {
29+
log.Println("cache/fiddler.dll exists.")
30+
sg.Done()
31+
return
32+
}
33+
file, err := os.Create("cache/fiddler.dll.tmp")
34+
if err != nil {
35+
log.Fatalln("Create file error:" + err.Error())
36+
}
37+
38+
writer := bufio.NewWriter(file)
39+
client := http.Client{}
40+
resp, err := client.Get("https://github.com/project-yui/Yui-patch/releases/download/v1.1.3/yui-fiddler-win32-x86_64-v1.1.3.dll")
41+
if err != nil {
42+
file.Close()
43+
log.Fatalln("Download fiddler.dll error:" + err.Error())
44+
}
45+
defer resp.Body.Close()
46+
47+
fileSize, err := io.Copy(writer, resp.Body)
48+
49+
file.Close()
50+
if err != nil {
51+
log.Fatalln("Write file error:" + err.Error())
52+
}
53+
err = os.Rename("cache/fiddler.dll.tmp", "cache/fiddler.dll")
54+
if err != nil {
55+
log.Fatalln("Rename fiddler.dll.tmp error", err)
56+
}
57+
log.Println("Download end, file size:", fileSize)
58+
sg.Done()
59+
}
60+
func replaceFiddler() {
61+
62+
os.Remove("FiddlerEverywhere/fiddler.dll")
63+
fiddlerFileDst, err := os.Create("FiddlerEverywhere/fiddler.dll")
64+
if err != nil {
65+
log.Fatalln("Open FiddlerEverywhere/fiddler.dll file error:", err)
66+
}
67+
defer fiddlerFileDst.Close()
68+
fiddlerFileSrc, err := os.Open("cache/fiddler.dll")
69+
if err != nil {
70+
log.Fatalln("Open cache/fiddler.dll file error:", err)
71+
}
72+
defer fiddlerFileSrc.Close()
73+
io.Copy(fiddlerFileDst, fiddlerFileSrc)
74+
}

0 commit comments

Comments
 (0)