2023-05-10 22:47:27 +09:00
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"os"
|
|
|
|
|
"strings"
|
|
|
|
|
"strconv"
|
|
|
|
|
|
2024-04-08 22:28:10 +09:00
|
|
|
|
"gitler.moe/suwako/hozonsite/src"
|
|
|
|
|
"gitler.moe/suwako/hozonsite/common"
|
|
|
|
|
)
|
2023-05-10 22:47:27 +09:00
|
|
|
|
|
2024-04-08 21:56:34 +09:00
|
|
|
|
func help() {
|
|
|
|
|
fmt.Println("使い方:")
|
|
|
|
|
fmt.Println(
|
2024-04-08 22:28:10 +09:00
|
|
|
|
common.GetSofname() + " -v :バージョンを表示",
|
|
|
|
|
)
|
|
|
|
|
fmt.Println(
|
|
|
|
|
common.GetSofname() +
|
2024-04-08 21:56:34 +09:00
|
|
|
|
" -s [ポート番号] :ポート番号でウェブサーバーを実行(デフォルト=9920)",
|
|
|
|
|
)
|
2024-04-08 22:28:10 +09:00
|
|
|
|
fmt.Println(
|
|
|
|
|
common.GetSofname() +
|
|
|
|
|
" -h :ヘルプを表示",
|
|
|
|
|
)
|
|
|
|
|
fmt.Println(
|
|
|
|
|
common.GetSofname() +
|
|
|
|
|
" <URL> :コマンドラインでウェブサイトを保存",
|
|
|
|
|
)
|
2023-05-10 22:47:27 +09:00
|
|
|
|
}
|
|
|
|
|
|
2024-04-08 22:28:10 +09:00
|
|
|
|
func saveurlcmd(url string, cnf src.Config) {
|
2024-04-08 21:56:34 +09:00
|
|
|
|
// 結局HTTPかHTTPSじゃないわね…
|
2024-04-08 22:28:10 +09:00
|
|
|
|
if !src.Checkprefix(url) {
|
2024-04-08 21:56:34 +09:00
|
|
|
|
fmt.Println("URLは不正です。終了…")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// パラメートルの文字(?、=等)を削除
|
2024-04-08 22:28:10 +09:00
|
|
|
|
eurl := src.Stripurl(url)
|
2024-04-08 21:56:34 +09:00
|
|
|
|
|
|
|
|
|
// 既に/usr/local/share/hozonsite/archiveに存在するかどうか
|
2024-04-08 22:28:10 +09:00
|
|
|
|
exist := src.Checkexist(eurl, cnf.Datapath)
|
2024-04-08 21:56:34 +09:00
|
|
|
|
|
|
|
|
|
// 既に存在したら、使う
|
|
|
|
|
var confirm string
|
|
|
|
|
|
|
|
|
|
// あ、既に存在する
|
|
|
|
|
if len(exist) > 0 {
|
|
|
|
|
fmt.Println("このページが既に保存されているみたいです。")
|
|
|
|
|
fmt.Println("本当に手続きましょうか? [y/N]")
|
|
|
|
|
|
|
|
|
|
// 既に存在するページのURLを表示
|
|
|
|
|
for _, ex := range exist {
|
2024-04-08 22:28:10 +09:00
|
|
|
|
fmt.Println(strings.Replace(ex, cnf.Datapath, cnf.Domain, 1))
|
2024-04-08 21:56:34 +09:00
|
|
|
|
}
|
|
|
|
|
fmt.Scanf("%s", &confirm)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 存在しない OR 「本当に手続きましょうか?」でYを入力した場合
|
|
|
|
|
if len(exist) == 0 || confirm == "y" || confirm == "Y" {
|
2024-04-08 22:28:10 +09:00
|
|
|
|
path := src.Mkdirs(eurl, cnf.Datapath)
|
2024-04-08 21:56:34 +09:00
|
|
|
|
// ページをダウンロード
|
2024-04-08 22:28:10 +09:00
|
|
|
|
src.Getpage(url, path)
|
2024-04-08 21:56:34 +09:00
|
|
|
|
// 色々の必須な編集
|
2024-04-08 22:28:10 +09:00
|
|
|
|
src.Scanpage(path, eurl, cnf.Datapath)
|
2024-04-08 21:56:34 +09:00
|
|
|
|
// 新しいURLを表示
|
2024-04-08 22:28:10 +09:00
|
|
|
|
fmt.Println(cnf.Domain + strings.Replace(path, cnf.Datapath, "", 1))
|
2024-04-08 21:56:34 +09:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
// コンフィグファイル
|
2024-04-08 22:28:10 +09:00
|
|
|
|
cnf, err := src.Getconf()
|
2023-07-17 02:00:40 +09:00
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
2024-04-08 21:56:34 +09:00
|
|
|
|
|
|
|
|
|
// コマンドラインのパラメートル
|
|
|
|
|
args := os.Args
|
|
|
|
|
|
2023-05-10 22:47:27 +09:00
|
|
|
|
if len(args) == 2 {
|
2024-04-08 21:56:34 +09:00
|
|
|
|
// バージョンを表示
|
|
|
|
|
if args[1] == "-v" {
|
2024-04-08 22:28:10 +09:00
|
|
|
|
fmt.Println(common.GetSofname() + "-" + common.GetVersion())
|
2023-05-10 22:47:27 +09:00
|
|
|
|
return
|
2023-06-27 13:48:35 +09:00
|
|
|
|
} else if args[1] == "-s" { // :9920でウェブサーバーを実行
|
2024-04-08 22:28:10 +09:00
|
|
|
|
src.Serv(cnf, 9920)
|
2023-06-27 13:48:35 +09:00
|
|
|
|
} else if args[1] == "-h" { // ヘルプを表示
|
2023-05-10 22:47:27 +09:00
|
|
|
|
help()
|
|
|
|
|
return
|
2024-04-08 21:56:34 +09:00
|
|
|
|
} else {
|
|
|
|
|
// コマンドラインでウェブサイトを保存
|
|
|
|
|
saveurlcmd(args[1], cnf)
|
|
|
|
|
return
|
2023-05-10 22:47:27 +09:00
|
|
|
|
}
|
2024-04-08 21:56:34 +09:00
|
|
|
|
} else if len(args) == 3 && args[1] == "-s" {
|
|
|
|
|
// 好みなポート番号でウェブサーバーを実行
|
|
|
|
|
// でも、数字じゃないかもしん
|
|
|
|
|
if port, err := strconv.Atoi(args[2]); err != nil {
|
2023-05-10 22:47:27 +09:00
|
|
|
|
fmt.Printf("%qは数字ではありません。\n", args[2])
|
|
|
|
|
return
|
2024-04-08 21:56:34 +09:00
|
|
|
|
} else {
|
|
|
|
|
// OK、実行しよ〜
|
2024-04-08 22:28:10 +09:00
|
|
|
|
src.Serv(cnf, port)
|
2023-05-10 22:47:27 +09:00
|
|
|
|
}
|
2024-04-08 21:56:34 +09:00
|
|
|
|
} else {
|
|
|
|
|
// パラメートルは不明の場合、ヘルプを表示
|
2023-05-10 22:47:27 +09:00
|
|
|
|
help()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|