Files
achmad 405df4ed66 chore: register all newly ported sources in main.go and checklist
Adds 67 missing en/ imports to main.go and marks their checkboxes
in the phase4 checklist.
2026-05-15 00:00:03 +07:00

293 lines
9.3 KiB
Go
Executable File

package main
import (
"context"
"encoding/json"
"fmt"
"log"
"net/http"
"goyomi/internal/config"
"goyomi/internal/db"
_ "goyomi/internal/registry"
_ "goyomi/sources/all/ahottie"
_ "goyomi/sources/all/akuma"
_ "goyomi/sources/all/allporncomicsco"
_ "goyomi/sources/all/asmhentai"
_ "goyomi/sources/all/baobua"
_ "goyomi/sources/all/beauty3600000"
_ "goyomi/sources/all/buondua"
_ "goyomi/sources/all/comicfury"
_ "goyomi/sources/all/comicgrowl"
_ "goyomi/sources/all/comicklive"
_ "goyomi/sources/all/comikey"
_ "goyomi/sources/all/comicsvalley"
_ "goyomi/sources/all/commitstrip"
_ "goyomi/sources/all/coomer"
_ "goyomi/sources/all/elitebabes"
_ "goyomi/sources/all/femjoyhunter"
_ "goyomi/sources/all/ftvhunter"
_ "goyomi/sources/all/joymiihub"
_ "goyomi/sources/all/mangacrazy"
_ "goyomi/sources/all/metarthunter"
_ "goyomi/sources/all/playmatehunter"
_ "goyomi/sources/all/xarthunter"
_ "goyomi/sources/all/hentaihand"
_ "goyomi/sources/all/kemono"
_ "goyomi/sources/all/mangataro"
_ "goyomi/sources/en/bakkin"
_ "goyomi/sources/en/divascans"
_ "goyomi/sources/en/guya"
_ "goyomi/sources/en/hijalascans"
_ "goyomi/sources/en/kaizenscan"
_ "goyomi/sources/en/kewnscans"
_ "goyomi/sources/en/lunatoons"
_ "goyomi/sources/en/mistscans"
_ "goyomi/sources/en/necroscans"
_ "goyomi/sources/en/nyanukafe"
_ "goyomi/sources/en/nyxscans"
_ "goyomi/sources/en/orionscans"
_ "goyomi/sources/en/renascans"
_ "goyomi/sources/en/sanascans"
_ "goyomi/sources/en/sirenscans"
_ "goyomi/sources/en/vanillascans"
_ "goyomi/sources/en/aquamanga"
_ "goyomi/sources/en/arenascans"
_ "goyomi/sources/en/artlapsa"
_ "goyomi/sources/en/cocomic"
_ "goyomi/sources/en/comicsland"
_ "goyomi/sources/en/crowscans"
_ "goyomi/sources/en/dankefurslesen"
_ "goyomi/sources/en/elftoon"
_ "goyomi/sources/en/gakamangas"
_ "goyomi/sources/en/galaxydegenscans"
_ "goyomi/sources/en/grimscans"
_ "goyomi/sources/en/hachirumi"
_ "goyomi/sources/en/harimanga"
_ "goyomi/sources/en/hentai4free"
_ "goyomi/sources/en/jinmangas"
_ "goyomi/sources/en/kaliscanme"
_ "goyomi/sources/en/kingofshojo"
_ "goyomi/sources/en/kissmangain"
_ "goyomi/sources/en/kunmanga"
_ "goyomi/sources/en/lhtranslation"
_ "goyomi/sources/en/mahouirexnohentaikarte"
_ "goyomi/sources/en/manga18x"
_ "goyomi/sources/en/mangagg"
_ "goyomi/sources/en/mangahe"
_ "goyomi/sources/en/mangahentai"
_ "goyomi/sources/en/mangakiss"
_ "goyomi/sources/en/mangamaniacs"
_ "goyomi/sources/en/manhwaclan"
_ "goyomi/sources/en/manhwalover"
_ "goyomi/sources/en/manhwareads"
_ "goyomi/sources/en/manhwatop"
_ "goyomi/sources/en/manhwax"
_ "goyomi/sources/en/mgjinx"
_ "goyomi/sources/en/milftoon"
_ "goyomi/sources/en/octopusmanga"
_ "goyomi/sources/en/pawmanga"
_ "goyomi/sources/en/ravenscans"
_ "goyomi/sources/en/ritharscans"
_ "goyomi/sources/en/rosesquadscans"
_ "goyomi/sources/en/ryumanga"
_ "goyomi/sources/en/tcbscansunoriginal"
_ "goyomi/sources/en/toonilyme"
_ "goyomi/sources/en/toonitube"
_ "goyomi/sources/en/topmanhua"
_ "goyomi/sources/en/writerscans"
_ "goyomi/sources/en/yaoihub"
_ "goyomi/sources/en/yaoiscan"
_ "goyomi/sources/en/zinmanga"
_ "goyomi/sources/en/zinmanga"
_ "goyomi/sources/en/tritiniascans"
_ "goyomi/sources/en/webtoonscan"
_ "goyomi/sources/en/whalemanga"
_ "goyomi/sources/en/beehentai"
_ "goyomi/sources/en/boratscans"
_ "goyomi/sources/en/boxmanhwa"
_ "goyomi/sources/en/bunmanga"
_ "goyomi/sources/en/cucumbermanga"
_ "goyomi/sources/en/decadencescans"
_ "goyomi/sources/en/kaliscancom"
_ "goyomi/sources/en/kaliscanio"
_ "goyomi/sources/en/linkmanga"
_ "goyomi/sources/en/mangabuddy"
_ "goyomi/sources/en/mangabuddyme"
_ "goyomi/sources/en/mangacute"
_ "goyomi/sources/en/mangadrama"
_ "goyomi/sources/en/mangafab"
_ "goyomi/sources/en/mangaforest"
_ "goyomi/sources/en/mangamonk"
_ "goyomi/sources/en/mangapuma"
_ "goyomi/sources/en/mangasaga"
_ "goyomi/sources/en/mangaspin"
_ "goyomi/sources/en/mangasushi"
_ "goyomi/sources/en/mangaxyz"
_ "goyomi/sources/en/manhuafast"
_ "goyomi/sources/en/manhuahot"
_ "goyomi/sources/en/manhuanow"
_ "goyomi/sources/en/manhuaplus"
_ "goyomi/sources/en/manhuasite"
_ "goyomi/sources/en/sleepytranslations"
_ "goyomi/sources/en/spmanhwa"
_ "goyomi/sources/en/mangahereonl"
_ "goyomi/sources/en/mangahubio"
_ "goyomi/sources/en/mangakakalotfun"
_ "goyomi/sources/en/mangafoxfun"
_ "goyomi/sources/en/manganel"
_ "goyomi/sources/en/mangaonlinefun"
_ "goyomi/sources/en/mangaowlio"
_ "goyomi/sources/en/mangapandaonl"
_ "goyomi/sources/en/mangaread"
_ "goyomi/sources/en/mangareadersite"
_ "goyomi/sources/en/mangareadorg"
_ "goyomi/sources/en/mangatoday"
_ "goyomi/sources/en/onemangaco"
_ "goyomi/sources/en/onemangainfo"
_ "goyomi/sources/en/readattackontitanshingekinokyojinmanga"
_ "goyomi/sources/en/readberserkmanga"
_ "goyomi/sources/en/readblackclovermangaonline"
_ "goyomi/sources/en/readbokunoheroacademiamyheroacademiamanga"
_ "goyomi/sources/en/readchainsawmanmangaonline"
_ "goyomi/sources/en/readfairytailedenszeromangaonline"
_ "goyomi/sources/en/readhaikyuumangaonline"
_ "goyomi/sources/en/readjujutsukaisenmangaonline"
_ "goyomi/sources/en/readkingdommangaonline"
_ "goyomi/sources/en/readnanatsunotaizai7deadlysinsmangaonline"
_ "goyomi/sources/en/readnarutoborutosamurai8mangaonline"
_ "goyomi/sources/en/readonepiecemangaonline"
_ "goyomi/sources/en/readonepunchmanmangaonlinetwo"
_ "goyomi/sources/en/readsololevelingmangamanhwaonline"
_ "goyomi/sources/en/readtokyoghoulretokyoghoulmangaonline"
_ "goyomi/sources/all/hniscantrad"
_ "goyomi/sources/en/monochromescans"
_ "goyomi/sources/en/assortedscans"
_ "goyomi/sources/en/eightmuses"
_ "goyomi/sources/en/arcrelight"
_ "goyomi/sources/en/baektoons"
_ "goyomi/sources/en/epicmanga"
_ "goyomi/sources/en/ero18x"
_ "goyomi/sources/en/erisscans"
_ "goyomi/sources/en/evilflowers"
_ "goyomi/sources/en/fablescans"
_ "goyomi/sources/en/allporncomicio"
_ "goyomi/sources/en/anisascans"
_ "goyomi/sources/en/apcomics"
_ "goyomi/sources/en/deathtollscans"
_ "goyomi/sources/en/dragontea"
_ "goyomi/sources/en/eighteenporncomic"
_ "goyomi/sources/en/galaxymanga"
_ "goyomi/sources/en/gingertoon"
_ "goyomi/sources/en/hentaisco"
_ "goyomi/sources/en/hentaixcomic"
_ "goyomi/sources/en/hentaixyuri"
_ "goyomi/sources/en/ksgroupscans"
_ "goyomi/sources/en/lagoonscans"
_ "goyomi/sources/en/luascans"
_ "goyomi/sources/en/manga18club"
_ "goyomi/sources/en/mangaclash"
_ "goyomi/sources/en/mangadia"
_ "goyomi/sources/en/mangafree"
_ "goyomi/sources/en/mangagofun"
_ "goyomi/sources/en/mangaka"
_ "goyomi/sources/en/mangatellers"
_ "goyomi/sources/en/mangatrend"
_ "goyomi/sources/en/mangatx"
_ "goyomi/sources/en/manhuafastnet"
_ "goyomi/sources/en/manhuanext"
_ "goyomi/sources/en/manhuaplusorg"
_ "goyomi/sources/en/manhuaus"
_ "goyomi/sources/en/manhuazonghe"
_ "goyomi/sources/en/manhwa18org"
_ "goyomi/sources/en/manhwa68"
_ "goyomi/sources/en/manhwaclan"
_ "goyomi/sources/en/manhwacomics"
_ "goyomi/sources/en/manhwaden"
_ "goyomi/sources/en/manhwaget"
_ "goyomi/sources/en/manhwahub"
_ "goyomi/sources/en/manhwajoy"
_ "goyomi/sources/en/manhwamanhua"
_ "goyomi/sources/en/milftoon"
_ "goyomi/sources/en/nikatoons"
_ "goyomi/sources/en/novel24h"
_ "goyomi/sources/en/novelcrow"
_ "goyomi/sources/en/noxenscans"
_ "goyomi/sources/en/orchisasia"
_ "goyomi/sources/en/petrotechsociety"
_ "goyomi/sources/en/pmscans"
_ "goyomi/sources/en/rizzcomicunoriginal"
_ "goyomi/sources/en/shibamanga"
_ "goyomi/sources/en/skymanga"
_ "goyomi/sources/en/spmanhwa"
_ "goyomi/sources/en/toon18"
_ "goyomi/sources/en/toongod"
_ "goyomi/sources/en/toonizy"
_ "goyomi/sources/en/topmanhuanet"
_ "goyomi/sources/en/tritiniascans"
_ "goyomi/sources/en/vyvymangaorg"
_ "goyomi/sources/en/wearehunger"
_ "goyomi/sources/en/webdexscans"
_ "goyomi/sources/en/webtoonscan"
_ "goyomi/sources/en/whalemanga"
_ "goyomi/sources/en/woopread"
_ "goyomi/sources/en/wuxiaworld"
_ "goyomi/sources/en/yaoiscan"
_ "goyomi/sources/en/zinmanganet"
)
func main() {
cfg := config.Load()
ctx := context.Background()
database, err := db.Open(ctx)
if err != nil {
log.Fatalf("db: %v", err)
}
defer database.Close()
// Initialize config manager
config.InitConfigManager(database.Queries)
mux := http.NewServeMux()
mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "ok")
})
// Config endpoints
mux.HandleFunc("/api/config/flaresolverr", handleFlareSolverrConfig)
log.Printf("listening on %s", cfg.Addr)
if err := http.ListenAndServe(cfg.Addr, mux); err != nil {
log.Fatal(err)
}
}
func handleFlareSolverrConfig(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
switch r.Method {
case "GET":
enabled := config.IsFlareSolverrProxyEnabled()
json.NewEncoder(w).Encode(map[string]bool{"flaresolverr_proxy": enabled})
case "POST":
var req struct {
Enabled bool `json:"enabled"`
}
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
http.Error(w, "invalid request", http.StatusBadRequest)
return
}
if err := config.SetFlareSolverrProxyEnabled(ctx, req.Enabled); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
json.NewEncoder(w).Encode(map[string]bool{"flaresolverr_proxy": req.Enabled})
default:
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
}
}