website utils: add base64 decoder
authorMartin Herkt <lachs0r@srsfckn.biz>
Fri, 8 Mar 2013 12:58:02 +0000 (8 13:58 +0100)
committerToni Gundogdu <legatvs@gmail.com>
Fri, 8 Mar 2013 16:59:30 +0000 (8 18:59 +0200)
Signed-off-by: Martin Herkt <lachs0r@srsfckn.biz>
share/lua/website/quvi/util.lua

index 5927d1c..b6ec2f1 100644 (file)
@@ -46,6 +46,36 @@ function M.slash_unescape (s)
     return s
 end
 
+function M.base64_decode(s)
+    local itbl='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+
+    s = s:gsub('[^' .. itbl .. '=]', '')
+
+    return (s:gsub('.', function(x)
+        local r = ''
+
+        if (x ~= '=') then
+            local f = (itbl:find(x) - 1)
+
+            for i = 6, 1, -1 do
+                r = r .. (f % 2 ^ i - f % 2 ^ (i - 1) > 0 and '1' or '0')
+            end
+        end
+
+        return r;
+    end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
+        local c = 0
+
+        if (#x == 8) then
+            for i = 1, 8 do
+                c = c + (x:sub(i, i) == '1' and 2 ^ (8 - i) or 0)
+            end
+        end
+
+        return string.char(c)
+    end))
+end
+
 -- handles
 --  Check whether a website script can "handle" the specified URL
 -- Params: