잉여개발기 (SPDV) 2 yıl önce
ebeveyn
işleme
3d982e38fc

+ 3 - 23
app.py

@@ -257,6 +257,8 @@ if os.path.exists('custom.py'):
     from custom import custom_run
     custom_run('error', app)
 
+db_set_str = json.dumps(data_db_set)
+
 # Func
 # Func-inter_wiki
 app.route('/inter_wiki', defaults = { 'tool' : 'inter_wiki' })(filter_inter_wiki)
@@ -402,7 +404,7 @@ app.route('/w_rev/<int(signed = True):doc_rev>/<everything:name>')(view_read)
 app.route('/w_from/<everything:name>', defaults = { 'do_type' : 'from' })(view_read)
 app.route('/w/<everything:name>')(view_read)
 
-app.route('/random')(view_random)
+app.route('/random', defaults = { 'db_set' : db_set_str })(view_random)
 
 # Func-edit
 app.route('/edit/<everything:name>', methods = ['POST', 'GET'])(edit)
@@ -611,28 +613,6 @@ app.route('/setting/skin_set', methods = ['POST', 'GET'])(main_setting_skin_set)
 
 app.route('/easter_egg')(main_func_easter_egg)
 
-def main_easter_egg_go():
-    with get_db_connect() as conn:
-        print(platform.machine())
-        if platform.system() == 'Linux':
-            if platform.machine() in ["AMD64", "x86_64"]:
-                data = os.popen(os.path.join(".", "route_go", "bin", "main_easter_egg.amd64.bin")).read()
-            else:
-                data = os.popen(os.path.join(".", "route_go", "bin", "main_easter_egg.arm64.bin")).read()
-        else:
-            if platform.machine() in ["AMD64", "x86_64"]:
-                data = os.popen(os.path.join(".", "route_go", "bin", "main_easter_egg.amd64.exe")).read()
-            else:
-                data = os.popen(os.path.join(".", "route_go", "bin", "main_easter_egg.arm64.exe")).read()
-
-        return easy_minify(flask.render_template(skin_check(),
-            imp = ['Easter Egg', wiki_set(), wiki_custom(), wiki_css([0, 0])],
-            data = data,
-            menu = 0
-        ))
-
-app.route('/easter_egg_go')(main_easter_egg_go)
-
 # views -> view
 app.route('/view/<path:name>')(main_view)
 app.route('/views/<path:name>')(main_view)

+ 1 - 0
route/edit_revert.py

@@ -84,6 +84,7 @@ def edit_revert(name, num):
                             ''' + captcha_get() + ip_warning() + get_edit_text_bottom_check_box() + get_edit_text_bottom() + '''
                             <button type="submit">''' + load_lang('revert') + '''</button>
                         </form>
+                        <hr class="main_hr">
                         ''' + preview,
                 menu = [['history/' + url_pas(name), load_lang('history')], ['recent_changes', load_lang('recent_change')]]
             ))

+ 16 - 1
route/main_func_easter_egg.py

@@ -11,4 +11,19 @@ def main_func_easter_egg():
                 curs.execute(db_change('insert into user_set (name, id, data) values ("get_🥚", ?, "Y")'), [ip])
                 conn.commit()
     
-        return redirect('/easter_egg_go')
+        if platform.system() == 'Linux':
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = os.popen(os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.bin")).read()
+            else:
+                data = os.popen(os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.bin")).read()
+        else:
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = os.popen(os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.exe")).read()
+            else:
+                data = os.popen(os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.exe")).read()
+
+        return easy_minify(flask.render_template(skin_check(),
+            imp = ['Easter Egg', wiki_set(), wiki_custom(), wiki_css([0, 0])],
+            data = data,
+            menu = 0
+        ))

+ 14 - 8
route/view_random.py

@@ -1,13 +1,19 @@
 from .tool.func import *
 
-def view_random():
+def view_random(db_set):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
-        curs.execute(db_change("" + \
-            "select title from data " + \
-            "where title not like 'user:%' and title not like 'category:%' and title not like 'file:%' " + \
-            "order by random() limit 1" + \
-        ""))
-        data = curs.fetchall()
-        return redirect('/w/' + url_pas(data[0][0])) if data else redirect()
+        if platform.system() == 'Linux':
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.bin"), db_set], stdout=subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.bin"), db_set], stdout=subprocess.PIPE).communicate()[0]
+        else:
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.exe"), db_set], stdout=subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.exe"), db_set], stdout=subprocess.PIPE).communicate()[0]
+
+        print(sys._getframe().f_code.co_name, data.decode('utf8'))
+        return redirect('/w/' + url_pas(data.decode('utf8')))

BIN
route_go/bin/main_easter_egg.amd64.bin


BIN
route_go/bin/main_easter_egg.amd64.exe


BIN
route_go/bin/main_easter_egg.arm64.bin


BIN
route_go/bin/main_easter_egg.arm64.exe


BIN
route_go/bin/view_random.amd64.bin


BIN
route_go/bin/view_random.amd64.exe


BIN
route_go/bin/view_random.arm64.bin


BIN
route_go/bin/view_random.arm64.exe


+ 8 - 0
route_go/go.mod

@@ -0,0 +1,8 @@
+module opennamu/golang
+
+go 1.20
+
+require (
+	github.com/go-sql-driver/mysql v1.7.1
+	github.com/mattn/go-sqlite3 v1.14.17
+)

+ 4 - 0
route_go/go.sum

@@ -0,0 +1,4 @@
+github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
+github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
+github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM=
+github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=

+ 1 - 1
route_go/main_easter_egg.go

@@ -33,5 +33,5 @@ func main() {
 	}
 	select_str := select_list[rand.Intn(len(select_list)-1)]
 
-	fmt.Println("<iframe width=\"640\" height=\"360\" src=\"https://www.youtube.com/embed/" + select_str + "\" frameborder=\"0\" allowfullscreen></iframe>")
+	fmt.Print("<iframe width=\"640\" height=\"360\" src=\"https://www.youtube.com/embed/" + select_str + "\" frameborder=\"0\" allowfullscreen></iframe>")
 }

+ 39 - 0
route_go/tool/db_connect.go

@@ -0,0 +1,39 @@
+package tool
+
+import (
+	"database/sql"
+	"fmt"
+	"strings"
+
+	_ "github.com/go-sql-driver/mysql"
+	_ "github.com/mattn/go-sqlite3"
+)
+
+func DB_connect(db_set map[string]string) *sql.DB {
+	if db_set["type"] == "sqlite" {
+		db, err := sql.Open("sqlite3", db_set["name"]+".db")
+		if err != nil {
+			fmt.Println(err)
+			return nil
+		}
+
+		return db
+	} else {
+		db, err := sql.Open("mysql", db_set["mysql_user"]+":"+db_set["mysql_pw"]+"@tcp("+db_set["mysql_host"]+":"+db_set["mysql_port"]+")/"+db_set["name"])
+		if err != nil {
+			fmt.Println(err)
+			return nil
+		}
+
+		return db
+	}
+}
+
+func DB_change(db_set map[string]string, data string) string {
+	if db_set["type"] == "mysql" {
+		data = strings.Replace(data, "random()", "rand()", -1)
+		data = strings.Replace(data, "collate nocase", "collate utf8mb4_general_ci", -1)
+	}
+
+	return data
+}

+ 22 - 0
route_go/tool/linux_amd64.sh

@@ -0,0 +1,22 @@
+echo "file_name : "
+read file_name
+
+export GOOS=linux
+export GOARCH=amd64
+go build $file_name.go
+mv $file_name ../bin/$file_name.amd64.bin
+
+export GOOS=linux
+export GOARCH=arm64
+go build $file_name.go
+mv $file_name ../bin/$file_name.arm64.bin
+
+export GOOS=windows
+export GOARCH=amd64
+go build $file_name.go
+mv $file_name.exe ../bin/$file_name.amd64.exe
+
+export GOOS=windows
+export GOARCH=arm64
+go build $file_name.go
+mv $file_name.exe ../bin/$file_name.arm64.exe

+ 31 - 0
route_go/view_random.go

@@ -0,0 +1,31 @@
+package main
+
+import (
+	"encoding/json"
+	"fmt"
+	"os"
+
+	"opennamu/golang/tool"
+)
+
+func main() {
+	call_arg := os.Args[1:]
+	db_set := map[string]string{}
+
+	json.Unmarshal([]byte(call_arg[0]), &db_set)
+
+	db := tool.DB_connect(db_set)
+	if db == nil {
+		return
+	}
+	defer db.Close()
+
+	var title string
+	err := db.QueryRow(tool.DB_change(db_set, "select title from data where title not like 'user:%' and title not like 'category:%' and title not like 'file:%' order by random() limit 1")).Scan(&title)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	fmt.Print(title)
+}