initial
This commit is contained in:
commit
bb80e8f66f
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
welhproxy
|
85
welhproxy.go
Normal file
85
welhproxy.go
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type WELHProxy struct {
|
||||||
|
Listen string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *WELHProxy) String() string {
|
||||||
|
return p.Listen
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *WELHProxy) fetchSite(_ http.ResponseWriter, r *http.Request) (url string, err error) {
|
||||||
|
req, err := http.NewRequestWithContext(r.Context(), "GET", "https://welh.radio12345.com/openfire.ajax.php?radio_id=1172158", nil)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
getResp, err := http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
getResp.Body.Close()
|
||||||
|
req, err = http.NewRequestWithContext(r.Context(), "GET", "https://welh.radio12345.com/", nil)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
getResp, err = http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer getResp.Body.Close()
|
||||||
|
|
||||||
|
if getResp.StatusCode < 300 && getResp.StatusCode >= 200 {
|
||||||
|
s := bufio.NewScanner(getResp.Body)
|
||||||
|
for s.Scan() {
|
||||||
|
t := strings.TrimSpace(s.Text())
|
||||||
|
if strings.Contains(t, `<div style="display:none" id="urladdress">`) {
|
||||||
|
if !s.Scan() {
|
||||||
|
return "", errors.New("scan")
|
||||||
|
}
|
||||||
|
return strings.TrimSpace(strings.ReplaceAll(s.Text(), "</div>", "")), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "", fmt.Errorf("could not find stream URL")
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", fmt.Errorf("failed to get url: %+v", getResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *WELHProxy) handle(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Println(r)
|
||||||
|
url, err := p.fetchSite(w, r)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
http.Redirect(w, r, url, http.StatusFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *WELHProxy) Go() {
|
||||||
|
http.HandleFunc("/", p.handle)
|
||||||
|
log.Fatal(http.ListenAndServe(p.Listen, nil))
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewWELHProxy(addr string) *WELHProxy {
|
||||||
|
return &WELHProxy{
|
||||||
|
Listen: addr,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
server := NewWELHProxy(":8534")
|
||||||
|
log.Printf("welhproxy starting on %s", server)
|
||||||
|
server.Go()
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user