Răsfoiți Sursa

파서 수정 및 버그 수정

2DU 9 ani în urmă
părinte
comite
ab8ed249c7
3 a modificat fișierele cu 64 adăugiri și 106 ștergeri
  1. 7 0
      app.py
  2. 1 1
      func.py
  3. 56 105
      mark.py

+ 7 - 0
app.py

@@ -421,6 +421,7 @@ def recent_changes():
                 title = rows[i]['title']
                 title = re.sub('<', '&lt;', title)
                 title = re.sub('>', '&gt;', title)
+                title = re.sub('"', '&quot;', title)
                 
                 m = re.search("\+", rows[i]['leng'])
                 n = re.search("\-", rows[i]['leng'])
@@ -519,6 +520,7 @@ def user_record(name = None, num = None):
                 title = rows[i]['title']
                 title = re.sub('<', '&lt;', title)
                 title = re.sub('>', '&gt;', title)
+                title = re.sub('"', '&quot;', title)
                 
                 m = re.search("\+", rows[i]['leng'])
                 n = re.search("\-", rows[i]['leng'])
@@ -754,10 +756,12 @@ def recent_discuss():
                 title = rows[i]['title']
                 title = re.sub('<', '&lt;', title)
                 title = re.sub('>', '&gt;', title)
+                title = re.sub('"', '&quot;', title)
                 
                 sub = rows[i]['sub']
                 sub = re.sub('<', '&lt;', sub)
                 sub = re.sub('>', '&gt;', sub)
+                sub = re.sub('"', '&quot;', sub)
                 
                 div += '<tr><td style="text-align: center;width:50%;"><a href="/topic/' + url_pas(rows[i]['title']) + '/sub/' + url_pas(rows[i]['sub']) + '">' + title + '</a> (' + sub + ')</td><td style="text-align: center;width:50%;">' + rows[i]['date'] + '</td></tr>'
                 
@@ -785,6 +789,7 @@ def blocklog(number = None):
                 why = rows[i]['why']
                 why = re.sub('<', '&lt;', why)
                 why = re.sub('>', '&gt;', why)
+                why = re.sub('"', '&quot;', why)
                 
                 b = re.search("^([0-9]{1,3}\.[0-9]{1,3})$", rows[i]['block'])
                 if(b):
@@ -2475,10 +2480,12 @@ def close_topic_list(name = None, num = None):
                 title = rows[i]['title']
                 title = re.sub('<', '&lt;', title)
                 title = re.sub('>', '&gt;', title)
+                title = re.sub('"', '&quot;', title)
 
                 sub = rows[i]['sub']
                 sub = re.sub('<', '&lt;', sub)
                 sub = re.sub('>', '&gt;', sub)
+                sub = re.sub('"', '&quot;', sub)
                     
                 if(ydmin == 1):
                     db_ex("select * from ban where block = '" + db_pas(rows[i]['ip']) + "'")

+ 1 - 1
func.py

@@ -211,7 +211,7 @@ def acl_check(ip, name):
         else:
             return(1)
     elif(n):
-        if(not admin_check() == 1):
+        if(not admin_check(None) == 1):
             return(1)
     else:
         b = re.search("^([0-9](?:[0-9]?[0-9]?)\.[0-9](?:[0-9]?[0-9]?))", ip)

+ 56 - 105
mark.py

@@ -30,6 +30,7 @@ def savemark(data):
     return(data)
 
 def html_pas(data, how):
+    data = re.sub("%phtml%(?P<in>(?:\/)?(?:a|div|span|embed|iframe)(?:\s[^%]*)?)%phtml%", "<\g<in>>", data)   
     while(True):
         if(how == 1):
             y = re.search("<((a|div|span|embed|iframe)(?:\s[^>]*))>", data)
@@ -40,7 +41,7 @@ def html_pas(data, how):
             b = y.groups()
 
             if(re.search("<(\/" + b[1] + ")>", data)):
-                xss_test = re.search('src=(?:"|\')(http(s)?:\/\/([^\/]*)\/(?:[^"\']*))(?:"|\')', b[0])
+                xss_test = re.search('src=(?:"|\')?(http(s)?:\/\/([^\/]*)\/(?:[^"\' ]*))(?:"|\')?', b[0])
                 
                 if(xss_test):
                     check = xss_test.groups()
@@ -56,14 +57,14 @@ def html_pas(data, how):
 
                 try:
                     if(not check[1] == None):
-                        data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", "%shtml%" + a + "%ehtml%", data, 1)
-                        data = re.sub("<\/" + b[1] + ">", "%shtml%/" + b[1] + "%ehtml%", data, 1)
+                        data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", "%phtml%" + a + "%phtml%", data, 1)
+                        data = re.sub("<\/" + b[1] + ">", "%phtml%/" + b[1] + "%phtml%", data, 1)
                     else:
                         data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", "[[" + check[0] + "]]", data, 1)
                         data = re.sub("<\/" + b[1] + ">", "", data, 1)
                 except:
-                    data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", "%shtml%" + a + "%ehtml%", data, 1)
-                    data = re.sub("<\/" + b[1] + ">", "%shtml%/" + b[1] + "%ehtml%", data, 1)
+                    data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", "%phtml%" + a + "%phtml%", data, 1)
+                    data = re.sub("<\/" + b[1] + ">", "%phtml%/" + b[1] + "%phtml%", data, 1)
             else:
                 data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", '&lt;' + b[0] + '&gt;', data, 1)
                 
@@ -75,9 +76,8 @@ def html_pas(data, how):
     data = re.sub('>', '&gt;', data)
     data = re.sub('"', '&quot;', data)
     
-    data = re.sub("%shtml%(?P<in>(?:\/)?(?:a|div|span|embed|iframe)(?:\s[^%]*)?)%ehtml%", "<\g<in>>", data)
+    data = re.sub("%phtml%(?P<in>(?:\/)?(?:a|div|span|embed|iframe)(?:\s[^%]*)?)%phtml%", "<\g<in>>", data)
     data = re.sub('#.#', '"', data)
-    
     return(data)
     
 def mid_pas(data, fol_num, include):
@@ -186,15 +186,12 @@ def mid_pas(data, fol_num, include):
             mid_data = re.sub('<span style="color:(?:#)?(?P<in>[^"]*)">', "{{{#\g<in> ", mid_data)
             mid_data = re.sub('<span style="background:(?:#)?(?P<in>[^"]*)">', "{{{@\g<in> ", mid_data)
             mid_data = re.sub('<div style="(?P<in>[^"]*)">', "{{{#!wiki style=&quot;\g<in>&quot;\n", mid_data)
-            mid_data = re.sub("(?P<in>.)", "<span>\g<in></span>", mid_data)
+            mid_data = re.sub("(?P<in>.)", "<nowiki>\g<in></nowiki>", mid_data)
             
             data = com.sub(mid_data, data, 1)
         else:
             break
             
-    data = re.sub("<span>&</span><span>l</span><span>t</span><span>;</span>", "<span>&lt;</span>", data)
-    data = re.sub("<span>&</span><span>g</span><span>t</span><span>;</span>", "<span>&gt;</span>", data)
-            
     return((data, fol_num))
 
 def backlink_plus(name, link, backtype):
@@ -272,7 +269,7 @@ def namumark(title, data):
                             else:
                                 break       
 
-                    data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", '\n#nobr#<div>' + in_data + '</div>\n#nobr#', data, 1)
+                    data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", '\n<nobr><div>' + in_data + '</div>\n<nobr>', data, 1)
                 else:
                     data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", "<a class=\"not_thing\" href=\"" + url_pas(results[0]) + "\">" + results[0] + "</a>", data, 1)
         else:
@@ -384,7 +381,7 @@ def namumark(title, data):
                 else:
                     span = ''
 
-            rtoc = rtoc + span + '<a href="#s-' + toc + '">' + toc + '</a>. ' + result[1] + '<br>'
+            rtoc += span + '<a href="#s-' + toc + '">' + toc + '</a>. ' + result[1] + '<br>'
 
             c = re.sub(" $", "", result[1])
             d = c
@@ -415,7 +412,7 @@ def namumark(title, data):
                     else:
                         red = 'class="not_thing"'
                         
-                    category = category + '<a ' + red + ' href="/w/' + url_pas(g[0]) + '">' + re.sub("분류:", "", g[0]) + '</a>'
+                    category += '<a ' + red + ' href="/w/' + url_pas(g[0]) + '">' + re.sub("분류:", "", g[0]) + '</a>'
                 else:
                     db_ex("select title from data where title = '" + db_pas(g[0]) + "'")
                     exists = db_get()
@@ -424,7 +421,7 @@ def namumark(title, data):
                     else:
                         red = 'class="not_thing"'
                         
-                    category = category + ' / ' + '<a ' + red + ' href="/w/' + url_pas(g[0]) + '">' + re.sub("분류:", "", g[0]) + '</a>'
+                    category += ' / ' + '<a ' + red + ' href="/w/' + url_pas(g[0]) + '">' + re.sub("분류:", "", g[0]) + '</a>'
             
             data = re.sub("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", '', data, 1)
         else:
@@ -517,104 +514,57 @@ def namumark(title, data):
             break
      
     data = re.sub("\[\[(?::(?P<in>(?:분류|파일):(?:(?:(?!\]\]).)*)))\]\]", "[[\g<in>]]", data)
-            
+                
     while(True):
         m = re.search("\[\[(((?!\]\]).)*)\]\]", data)
         if(m):
             result = m.groups()
-            a = re.search("((?:(?!\|).)*)\|(.*)", result[0])
-            if(a):
-                results = a.groups()
-                aa = re.search("^(.*)(#(?:.*))$", results[0])
-                if(aa):
-                    g = results[1]
-                    results = aa.groups()
-                    b = re.search("^http(?:s)?:\/\/", results[0])
-                    if(b):
-                        data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a class="out_link" href="' + results[0] + results[1] + '">' + g + '</a>', data, 1)
-                    else:
-                        if(results[0] == title):
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<b>' + g + '</b>', data, 1)
-                        else:
-                            db_ex("select title from data where title = '" + db_pas(results[0]) + "'")
-                            y = db_get()
-                            if(y):
-                                clas = ''
-                            else:
-                                clas = 'not_thing'
-                                
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a title="' + results[0] + results[1] + '" class="' + clas + '" href="/w/' + url_pas(results[0]) + results[1] + '">' + g + '</a>', data, 1)
-                            
-                            backlink_plus(title, results[0], '')
+            rep = result[0]
+            rep = re.sub("\\\#", "<sharp>", rep)
+            a = re.search("^((?:(?!\|).)*)(?:\|(.*))?$", rep)
+            
+            results = a.groups()
+            
+            aa = re.search("^([^#]*)(#(?:.*))?$", results[0])
+            if(results[1]):
+                g = re.sub("<sharp>", "#", results[1])
+            else:
+                g = re.sub("<sharp>", "#", results[0])
+            
+            results = aa.groups()
+            
+            if(not results[1]):
+                sharp = ''
+            else:
+                sharp = results[1]
+                
+            b = re.search("^http(?:s)?:\/\/", results[0])
+            if(b):
+                c = re.search("(?:\.[Jj][Pp][Gg]|\.[Pp][Nn][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg])", results[0])
+                if(c):
+                    img = results[0]
+                    img = re.sub("\.(?P<in>[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])", "#\g<in>#", img)
+                    
+                    data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a class="out_link" href="' + img + sharp + '">' + g + '</a>', data, 1)
                 else:
-                    b = re.search("^http(?:s)?:\/\/", results[0])
-                    if(b):
-                        c = re.search("(?:\.[Jj][Pp][Gg]|\.[Pp][Nn][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg])", results[0])
-                        if(c):
-                            img = results[0]
-                            img = re.sub("\.(?P<in>[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])", "#\g<in>#", img)
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a class="out_link" href="' + img + '">' + results[1] + '</a>', data, 1)
-                        else:
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a class="out_link" href="' + results[0] + '">' + results[1] + '</a>', data, 1)
-                    else:
-                        if(results[0] == title):
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<b>' + results[1] + '</b>', data, 1)
-                        else:
-                            db_ex("select title from data where title = '" + db_pas(results[0]) + "'")
-                            y = db_get()
-                            if(y):
-                                clas = ''
-                            else:
-                                clas = 'not_thing'
-
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a title="' + results[0] + '" class="' + clas + '" href="/w/' + url_pas(results[0]) + '">' + results[1] + '</a>', data, 1)
-
-                            backlink_plus(title, results[0], '')
+                    data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a class="out_link" href="' + results[0] + sharp + '">' + g + '</a>', data, 1)
             else:
-                aa = re.search("^(.*)(#(?:.*))$", result[0])
-                if(aa):
-                    result = aa.groups()
-                    b = re.search("^http(?:s)?:\/\/", result[0])
-                    if(b):
-                        data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a class="out_link" href="' + result[0] + result[1] + '">' + result[0] + result[1] + '</a>', data, 1)
-                    else:
-                        if(result[0] == title):
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<b>' + result[0] + result[1] + '</b>', data, 1)
-                        else:
-                            db_ex("select title from data where title = '" + db_pas(result[0]) + "'")
-                            y = db_get()
-                            if(y):
-                                clas = ''
-                            else:
-                                clas = 'not_thing'
-
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a href="/w/' + url_pas(result[0]) + result[1] + '" class="' + clas + '">' + result[0] + result[1] + '</a>', data, 1)
-                            
-                            backlink_plus(title, result[0], '')
+                if(results[0] == title):
+                    data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<b>' + g + '</b>', data, 1)
                 else:
-                    b = re.search("^http(?:s)?:\/\/", result[0])
-                    if(b):
-                        c = re.search("(?:\.[Jj][Pp][Gg]|\.[Pp][Nn][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg])", result[0])
-                        if(c):
-                            img = result[0]
-                            img = re.sub("\.(?P<in>[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])", "#\g<in>#", img)
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a class="out_link" href="' + img + '">' + img + '</a>', data, 1)
-                        else:
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a class="out_link" href="' + result[0] + '">' + result[0] + '</a>', data, 1)
+                    db_ex("select title from data where title = '" + db_pas(results[0]) + "'")
+                    y = db_get()
+                    if(y):
+                        clas = ''
                     else:
-                        if(result[0] == title):
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<b>' + result[0] + '</b>', data, 1)
-                        else:
-                            db_ex("select title from data where title = '" + db_pas(result[0]) + "'")
-                            y = db_get()
-                            if(y):
-                                clas = ''
-                            else:
-                                clas = 'not_thing'
+                        clas = 'not_thing'
+                    
+                    print(results[0])
+                    nosharp = re.sub("<sharp>", "#", results[0])
+                    print(nosharp)
+                    data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a title="' + re.sub('#', '\#', nosharp) + sharp + '" class="' + clas + '" href="/w/' + url_pas(nosharp) + sharp + '">' + g + '</a>', data, 1)
 
-                            data = re.sub('\[\[(((?!\]\]).)*)\]\]', '<a href="/w/' + url_pas(result[0]) + '" class="' + clas + '">' + result[0] + '</a>', data, 1)
-                            
-                            backlink_plus(title, result[0], '')
+                    backlink_plus(title, results[0], '')
         else:
             break
             
@@ -1085,7 +1035,8 @@ def namumark(title, data):
         else:
             break
     
-    data = re.sub("(\n#nobr#|#nobr#\n|#nobr#)", "", data)
+    data = re.sub("(\n<nobr>|<nobr>\n|<nobr>)", "", data)
+    data = re.sub("<nowiki>(?P<in>.)<\/nowiki>", "\g<in>", data)
 
     data = re.sub('<\/blockquote>((\r)?\n){2}<blockquote>', '</blockquote><br><blockquote>', data)
     data = re.sub('\n', '<br>', data)