diff options
45 files changed, 903 insertions, 16 deletions
@@ -1,4 +1,4 @@ -home/ +Home/ etc/ .err-logs/ kst/ diff --git a/programs/TestApp.bup/Contents/Resources/resources_here.txt b/Programs/Enchat.bup/Contents/Info.meta index 8d1c8b6..8d1c8b6 100644 --- a/programs/TestApp.bup/Contents/Resources/resources_here.txt +++ b/Programs/Enchat.bup/Contents/Info.meta diff --git a/programs/TestApp.bup/Contents/bits-UI/testapp.lua b/Programs/Enchat.bup/Contents/Resources/resources_here.txt index 8d1c8b6..8d1c8b6 100644 --- a/programs/TestApp.bup/Contents/bits-UI/testapp.lua +++ b/Programs/Enchat.bup/Contents/Resources/resources_here.txt diff --git a/programs/enchat3.lua b/Programs/Enchat.bup/Contents/bits-UI/enchat3.lua index b66549e..b66549e 100644 --- a/programs/enchat3.lua +++ b/Programs/Enchat.bup/Contents/bits-UI/enchat3.lua diff --git a/Programs/Firewolf.bup/Contents/Info.meta b/Programs/Firewolf.bup/Contents/Info.meta new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/Firewolf.bup/Contents/Info.meta @@ -0,0 +1 @@ + diff --git a/Programs/Firewolf.bup/Contents/Resources/resources_here.txt b/Programs/Firewolf.bup/Contents/Resources/resources_here.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/Firewolf.bup/Contents/Resources/resources_here.txt @@ -0,0 +1 @@ + diff --git a/programs/firewolf.lua b/Programs/Firewolf.bup/Contents/bits-UI/firewolf.lua index d1ba857..d1ba857 100644 --- a/programs/firewolf.lua +++ b/Programs/Firewolf.bup/Contents/bits-UI/firewolf.lua diff --git a/Programs/Ink.bup/Contents/Info.meta b/Programs/Ink.bup/Contents/Info.meta new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/Ink.bup/Contents/Info.meta @@ -0,0 +1 @@ + diff --git a/Programs/Ink.bup/Contents/Resources/resources_here.txt b/Programs/Ink.bup/Contents/Resources/resources_here.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/Ink.bup/Contents/Resources/resources_here.txt @@ -0,0 +1 @@ + diff --git a/programs/ink.lua b/Programs/Ink.bup/Contents/bits-UI/ink.lua index 49f6119..49f6119 100644 --- a/programs/ink.lua +++ b/Programs/Ink.bup/Contents/bits-UI/ink.lua diff --git a/Programs/Krist Wallet.bup/Contents/Info.meta b/Programs/Krist Wallet.bup/Contents/Info.meta new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/Krist Wallet.bup/Contents/Info.meta @@ -0,0 +1 @@ + diff --git a/Programs/Krist Wallet.bup/Contents/Resources/resources_here.txt b/Programs/Krist Wallet.bup/Contents/Resources/resources_here.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/Krist Wallet.bup/Contents/Resources/resources_here.txt @@ -0,0 +1 @@ + diff --git a/programs/kristwallet.lua b/Programs/Krist Wallet.bup/Contents/bits-UI/kristwallet.lua index cafd59a..cafd59a 100644 --- a/programs/kristwallet.lua +++ b/Programs/Krist Wallet.bup/Contents/bits-UI/kristwallet.lua diff --git a/Programs/LuaIDE.bup/Contents/Info.meta b/Programs/LuaIDE.bup/Contents/Info.meta new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/LuaIDE.bup/Contents/Info.meta @@ -0,0 +1 @@ + diff --git a/Programs/LuaIDE.bup/Contents/Resources/resources_here.txt b/Programs/LuaIDE.bup/Contents/Resources/resources_here.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/LuaIDE.bup/Contents/Resources/resources_here.txt @@ -0,0 +1 @@ + diff --git a/programs/luaide.lua b/Programs/LuaIDE.bup/Contents/bits-UI/luaide.lua index 5e06e6b..5e06e6b 100644 --- a/programs/luaide.lua +++ b/Programs/LuaIDE.bup/Contents/bits-UI/luaide.lua diff --git a/Programs/Mouse Browser.bup/Contents/Info.meta b/Programs/Mouse Browser.bup/Contents/Info.meta new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/Mouse Browser.bup/Contents/Info.meta @@ -0,0 +1 @@ + diff --git a/Programs/Mouse Browser.bup/Contents/Resources/resources_here.txt b/Programs/Mouse Browser.bup/Contents/Resources/resources_here.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/Mouse Browser.bup/Contents/Resources/resources_here.txt @@ -0,0 +1 @@ + diff --git a/programs/mouse.cfg b/Programs/Mouse Browser.bup/Contents/bits-UI/mouse.cfg index d549589..d549589 100644 --- a/programs/mouse.cfg +++ b/Programs/Mouse Browser.bup/Contents/bits-UI/mouse.cfg diff --git a/programs/mousebrowser.lua b/Programs/Mouse Browser.bup/Contents/bits-UI/mousebrowser.lua index 6757273..6757273 100644 --- a/programs/mousebrowser.lua +++ b/Programs/Mouse Browser.bup/Contents/bits-UI/mousebrowser.lua diff --git a/Programs/NPaintPro.bup/Contents/Info.meta b/Programs/NPaintPro.bup/Contents/Info.meta new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/NPaintPro.bup/Contents/Info.meta @@ -0,0 +1 @@ + diff --git a/Programs/NPaintPro.bup/Contents/Resources/resources_here.txt b/Programs/NPaintPro.bup/Contents/Resources/resources_here.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Programs/NPaintPro.bup/Contents/Resources/resources_here.txt @@ -0,0 +1 @@ + diff --git a/programs/npaintpro.lua b/Programs/NPaintPro.bup/Contents/bits-UI/npaintpro.lua index 56f7ef0..56f7ef0 100644 --- a/programs/npaintpro.lua +++ b/Programs/NPaintPro.bup/Contents/bits-UI/npaintpro.lua diff --git a/System/apis/flib.lua b/System/apis/flib.lua new file mode 100644 index 0000000..c3b7150 --- /dev/null +++ b/System/apis/flib.lua @@ -0,0 +1,124 @@ +--[[ + fLib by NDFJay +]]-- +function exists(path) + local file = assert(io.open(path, "r")) + if file ~= nil then + file:close() + return true + end + + return false +end + +function getTable(path) + if exists(path) then + local file = io.open(path, "r") + local lines = {} + local i = 1 + local line = file:read("*l") + while line ~= nil do + lines[i] = line + line = file:read("*l") + i = i + 1 + end + file:close() + return lines + end + return {} +end + +function getLine(path, n) + if exists(path) then + local lines = getTable(path) + return lines[n] + end + return "" +end + +function getText(path) + if exists(path) then + local file = assert(io.open(path, "r")) + return file:read("*a") + end + return "" +end + +function fappend(path, text) + local file = assert(io.open(path, "a")) + file:write(text.."\n") + file:close() +end + +function fwrite(path, text) + local file = assert(io.open(path, "w")) + file:write(text) + file:close() +end + +function fwriteAtStart(path, text) + local _text = getText(path) + fwrite(path, text.."\n".._text) +end + +function fwriteFromTable(path, t) + local text = "" + for _, line in pairs(t) do + text = text..line.."\n" + end + fwrite(path, text) +end + +function fappendFromTable(path, t) + local text = "" + for _, line in pairs(t) do + text = text..line.."\n" + end + fappend(path, text) +end + +function fwriteAtStartFromTable(path, t) + local text = "" + for _, line in pairs(t) do + text = text..line.."\n" + end + fwriteAtStart(path, text) +end + +function replaceLine(path, n, text) + local lines = getTable(path) + lines[n] = text + fwriteFromTable(path, lines) +end + +function getName(path) + if exists(path) then + local lastSlashPos = 1 + for i = 1, path:len() do + if path:sub(i, i) == "/" then + lastSlashPos = i + end + end + + return path:sub(lastSlashPos + 1) + end + return "" +end + +function getPath(path) + if exists(path) then + local lastSlashPos = 1 + for i = 1, path:len() do + if path:sub(i, i) == "/" then + lastSlashPos = i + end + end + + return path:sub(1, lastSlashPos) + end + return "" +end + +function fremove(path) + os.remove(path) +end
\ No newline at end of file diff --git a/System/apis/json.lua b/System/apis/json.lua new file mode 100644 index 0000000..3bef482 --- /dev/null +++ b/System/apis/json.lua @@ -0,0 +1,209 @@ +------------------------------------------------------------------ utils +local controls = {["\n"]="\\n", ["\r"]="\\r", ["\t"]="\\t", ["\b"]="\\b", ["\f"]="\\f", ["\""]="\\\"", ["\\"]="\\\\"} + +local function isArray(t) + local max = 0 + for k,v in pairs(t) do + if type(k) ~= "number" then + return false + elseif k > max then + max = k + end + end + return max == #t +end + +local whites = {['\n']=true; ['\r']=true; ['\t']=true; [' ']=true; [',']=true; [':']=true} +function removeWhite(str) + while whites[str:sub(1, 1)] do + str = str:sub(2) + end + return str +end + +------------------------------------------------------------------ encoding + +local function encodeCommon(val, pretty, tabLevel, tTracking) + local str = "" + + -- Tabbing util + local function tab(s) + str = str .. ("\t"):rep(tabLevel) .. s + end + + local function arrEncoding(val, bracket, closeBracket, iterator, loopFunc) + str = str .. bracket + if pretty then + str = str .. "\n" + tabLevel = tabLevel + 1 + end + for k,v in iterator(val) do + tab("") + loopFunc(k,v) + str = str .. "," + if pretty then str = str .. "\n" end + end + if pretty then + tabLevel = tabLevel - 1 + end + if str:sub(-2) == ",\n" then + str = str:sub(1, -3) .. "\n" + elseif str:sub(-1) == "," then + str = str:sub(1, -2) + end + tab(closeBracket) + end + + -- Table encoding + if type(val) == "table" then + assert(not tTracking[val], "Cannot encode a table holding itself recursively") + tTracking[val] = true + if isArray(val) then + arrEncoding(val, "[", "]", ipairs, function(k,v) + str = str .. encodeCommon(v, pretty, tabLevel, tTracking) + end) + else + arrEncoding(val, "{", "}", pairs, function(k,v) + assert(type(k) == "string", "JSON object keys must be strings", 2) + str = str .. encodeCommon(k, pretty, tabLevel, tTracking) + str = str .. (pretty and ": " or ":") .. encodeCommon(v, pretty, tabLevel, tTracking) + end) + end + -- String encoding + elseif type(val) == "string" then + str = '"' .. val:gsub("[%c\"\\]", controls) .. '"' + -- Number encoding + elseif type(val) == "number" or type(val) == "boolean" then + str = tostring(val) + else + error("JSON only supports arrays, objects, numbers, booleans, and strings", 2) + end + return str +end + +function encode(val) + return encodeCommon(val, false, 0, {}) +end + +function encodePretty(val) + return encodeCommon(val, true, 0, {}) +end + +------------------------------------------------------------------ decoding + +local decodeControls = {} +for k,v in pairs(controls) do + decodeControls[v] = k +end + +function parseBoolean(str) + if str:sub(1, 4) == "true" then + return true, removeWhite(str:sub(5)) + else + return false, removeWhite(str:sub(6)) + end +end + +function parseNull(str) + return nil, removeWhite(str:sub(5)) +end + +local numChars = {['e']=true; ['E']=true; ['+']=true; ['-']=true; ['.']=true} +function parseNumber(str) + local i = 1 + while numChars[str:sub(i, i)] or tonumber(str:sub(i, i)) do + i = i + 1 + end + local val = tonumber(str:sub(1, i - 1)) + str = removeWhite(str:sub(i)) + return val, str +end + +function parseString(str) + str = str:sub(2) + local s = "" + while str:sub(1,1) ~= "\"" do + local next = str:sub(1,1) + str = str:sub(2) + assert(next ~= "\n", "Unclosed string") + + if next == "\\" then + local escape = str:sub(1,1) + str = str:sub(2) + + next = assert(decodeControls[next..escape], "Invalid escape character") + end + + s = s .. next + end + return s, removeWhite(str:sub(2)) +end + +function parseArray(str) + str = removeWhite(str:sub(2)) + + local val = {} + local i = 1 + while str:sub(1, 1) ~= "]" do + local v = nil + v, str = parseValue(str) + val[i] = v + i = i + 1 + str = removeWhite(str) + end + str = removeWhite(str:sub(2)) + return val, str +end + +function parseObject(str) + str = removeWhite(str:sub(2)) + + local val = {} + while str:sub(1, 1) ~= "}" do + local k, v = nil, nil + k, v, str = parseMember(str) + val[k] = v + str = removeWhite(str) + end + str = removeWhite(str:sub(2)) + return val, str +end + +function parseMember(str) + local k = nil + k, str = parseValue(str) + local val = nil + val, str = parseValue(str) + return k, val, str +end + +function parseValue(str) + local fchar = str:sub(1, 1) + if fchar == "{" then + return parseObject(str) + elseif fchar == "[" then + return parseArray(str) + elseif tonumber(fchar) ~= nil or numChars[fchar] then + return parseNumber(str) + elseif str:sub(1, 4) == "true" or str:sub(1, 5) == "false" then + return parseBoolean(str) + elseif fchar == "\"" then + return parseString(str) + elseif str:sub(1, 4) == "null" then + return parseNull(str) + end + return nil +end + +function decode(str) + str = removeWhite(str) + t = parseValue(str) + return t +end + +function decodeFromFile(path) + local file = assert(fs.open(path, "r")) + local decoded = decode(file.readAll()) + file.close() + return decoded +end
\ No newline at end of file diff --git a/System/apis/sha256.lua b/System/apis/sha256.lua new file mode 100644 index 0000000..5842c8d --- /dev/null +++ b/System/apis/sha256.lua @@ -0,0 +1,204 @@ +-- SHA-256, HMAC and PBKDF2 functions in ComputerCraft +-- By Anavrins +-- For help and details, you can PM me on the CC forums +-- http://www.computercraft.info/forums2/index.php?/user/12870-anavrins +-- You may use this code in your projects without asking me, as long as credit is given + +-- Pastebin: https://pastebin.com/6UV4qfNF +-- Usage: https://pastebin.com/q2SQ7eRg +-- Last update: May 13, 2019 + +local mod32 = 2^32 +local band = bit32 and bit32.band or bit.band +local bnot = bit32 and bit32.bnot or bit.bnot +local bxor = bit32 and bit32.bxor or bit.bxor +local blshift = bit32 and bit32.lshift or bit.blshift +local upack = unpack + +local function rrotate(n, b) + local s = n/(2^b) + local f = s%1 + return (s-f) + f*mod32 +end + local function brshift(int, by) -- Thanks bit32 for bad rshift + local s = int / (2^by) + return s - s%1 +end + +local H = { + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19, +} + +local K = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, +} + +local function counter(incr) + local t1, t2 = 0, 0 + if 0xFFFFFFFF - t1 < incr then + t2 = t2 + 1 + t1 = incr - (0xFFFFFFFF - t1) - 1 + else t1 = t1 + incr + end + return t2, t1 +end + +local function BE_toInt(bs, i) + return blshift((bs[i] or 0), 24) + blshift((bs[i+1] or 0), 16) + blshift((bs[i+2] or 0), 8) + (bs[i+3] or 0) +end + +local function preprocess(data) + local len = #data + local proc = {} + data[#data+1] = 0x80 + while #data%64~=56 do data[#data+1] = 0 end + local blocks = math.ceil(#data/64) + for i = 1, blocks do + proc[i] = {} + for j = 1, 16 do + proc[i][j] = BE_toInt(data, 1+((i-1)*64)+((j-1)*4)) + end + end + proc[blocks][15], proc[blocks][16] = counter(len*8) + return proc +end + +local function digestblock(w, C) + for j = 17, 64 do + local v = w[j-15] + local s0 = bxor(bxor(rrotate(w[j-15], 7), rrotate(w[j-15], 18)), brshift(w[j-15], 3)) + local s1 = bxor(bxor(rrotate(w[j-2], 17), rrotate(w[j-2], 19)), brshift(w[j-2], 10)) + w[j] = (w[j-16] + s0 + w[j-7] + s1)%mod32 + end + local a, b, c, d, e, f, g, h = upack(C) + for j = 1, 64 do + local S1 = bxor(bxor(rrotate(e, 6), rrotate(e, 11)), rrotate(e, 25)) + local ch = bxor(band(e, f), band(bnot(e), g)) + local temp1 = (h + S1 + ch + K[j] + w[j])%mod32 + local S0 = bxor(bxor(rrotate(a, 2), rrotate(a, 13)), rrotate(a, 22)) + local maj = bxor(bxor(band(a, b), band(a, c)), band(b, c)) + local temp2 = (S0 + maj)%mod32 + h, g, f, e, d, c, b, a = g, f, e, (d+temp1)%mod32, c, b, a, (temp1+temp2)%mod32 + end + C[1] = (C[1] + a)%mod32 + C[2] = (C[2] + b)%mod32 + C[3] = (C[3] + c)%mod32 + C[4] = (C[4] + d)%mod32 + C[5] = (C[5] + e)%mod32 + C[6] = (C[6] + f)%mod32 + C[7] = (C[7] + g)%mod32 + C[8] = (C[8] + h)%mod32 + return C +end + +local mt = { + __tostring = function(a) return string.char(unpack(a)) end, + __index = { + toHex = function(self, s) return ("%02x"):rep(#self):format(unpack(self)) end, + isEqual = function(self, t) + if type(t) ~= "table" then return false end + if #self ~= #t then return false end + local ret = 0 + for i = 1, #self do + ret = bit32.bor(ret, bxor(self[i], t[i])) + end + return ret == 0 + end + } +} + + function toBytes(t, n) + local b = {} + for i = 1, n do + b[(i-1)*4+1] = band(brshift(t[i], 24), 0xFF) + b[(i-1)*4+2] = band(brshift(t[i], 16), 0xFF) + b[(i-1)*4+3] = band(brshift(t[i], 8), 0xFF) + b[(i-1)*4+4] = band(t[i], 0xFF) + end + return setmetatable(b, mt) +end + + function digest(data) + local data = data or "" + data = type(data) == "table" and {upack(data)} or {tostring(data):byte(1,-1)} + + data = preprocess(data) + local C = {upack(H)} + for i = 1, #data do C = digestblock(data[i], C) end + return toBytes(C, 8) +end + + function hmac(data, key) + local data = type(data) == "table" and {upack(data)} or {tostring(data):byte(1,-1)} + local key = type(key) == "table" and {upack(key)} or {tostring(key):byte(1,-1)} + + local blocksize = 64 + + key = #key > blocksize and digest(key) or key + + local ipad = {} + local opad = {} + local padded_key = {} + + for i = 1, blocksize do + ipad[i] = bxor(0x36, key[i] or 0) + opad[i] = bxor(0x5C, key[i] or 0) + end + + for i = 1, #data do + ipad[blocksize+i] = data[i] + end + + ipad = digest(ipad) + + for i = 1, blocksize do + padded_key[i] = opad[i] + padded_key[blocksize+i] = ipad[i] + end + + return digest(padded_key) +end + + function pbkdf2(pass, salt, iter, dklen) + local salt = type(salt) == "table" and salt or {tostring(salt):byte(1,-1)} + local hashlen = 32 + local dklen = dklen or 32 + local block = 1 + local out = {} + + while dklen > 0 do + local ikey = {} + local isalt = {upack(salt)} + local clen = dklen > hashlen and hashlen or dklen + + isalt[#isalt+1] = band(brshift(block, 24), 0xFF) + isalt[#isalt+1] = band(brshift(block, 16), 0xFF) + isalt[#isalt+1] = band(brshift(block, 8), 0xFF) + isalt[#isalt+1] = band(block, 0xFF) + + for j = 1, iter do + isalt = hmac(isalt, pass) + for k = 1, clen do ikey[k] = bxor(isalt[k], ikey[k] or 0) end + if j % 200 == 0 then os.queueEvent("PBKDF2", j) coroutine.yield("PBKDF2") end + end + dklen = dklen - clen + block = block+1 + for k = 1, clen do out[#out+1] = ikey[k] end + end + + return setmetatable(out, mt) +end + +return { + digest = digest, + hmac = hmac, + pbkdf2 = pbkdf2, +}
\ No newline at end of file diff --git a/System/bits-UI.exists b/System/bits-UI.exists new file mode 100644 index 0000000..b85a3bf --- /dev/null +++ b/System/bits-UI.exists @@ -0,0 +1,2 @@ +DO NOT DELETE THIS FILE. +This file is required for the updater. diff --git a/System/boot.lua b/System/boot.lua new file mode 100644 index 0000000..ef11d60 --- /dev/null +++ b/System/boot.lua @@ -0,0 +1,86 @@ +--[[ + bits-UI Boot: A boot script for bits-UI. + Copyright (C) 2020 Alee14 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +]]-- + +local version = "1.0 Alpha 2" +local desktop = "/system/desktop.lua" + +term.clear() +term.setCursorPos(1,1) + +print("Starting up bits-UI ".. version .."...") +sleep(1) + +if term.isColor() then + term.setTextColor(colors.green) + print("[OK] Advanced Computer is detected...") +else + print("[ERROR] You need a advanced computer in order to make the UI functional...") + sleep(3) + os.shutdown() +end + +sleep(1) + +if fs.exists(desktop) then + term.setTextColor(colors.green) + print("[OK] Desktop has been found...") +else + term.setTextColor(colors.red) + print("[ERROR] Desktop cannot be found...") + sleep(2) + os.shutdown() +end + +sleep(1) + +if fs.exists("/home") then + term.setTextColor(colors.green) + print("[OK] Home has been found...") +else + fs.makeDir("/Home") + term.setTextColor(colors.green) + print("[OK] Home directory has been created...") +end + +if fs.exists("/etc") then + term.setTextColor(colors.green) + print("[OK] Etc has been found...") +else + fs.makeDir("/etc") + term.setTextColor(colors.green) + print("[OK] Etc directory has been created...") +end + +sleep(1) + +if fs.exists("/home/.config") then + term.setTextColor(colors.green) + print("[OK] Config has been found...") +else + config = io.open("/home/.config", "w") + config:close() + term.setTextColor(colors.blue) + print("[INFO] Config has not been found!") + print("[INFO] You will be sent to the post installation setup...") + sleep(2) + shell.run("/system/post-setup.lua") +end + +sleep(1) +term.setTextColor(colors.green) +print("[DONE] Boot sequence has been completed...") +term.setTextColor(colors.white) +sleep(1) +shell.run(desktop)
\ No newline at end of file diff --git a/System/desktop.lua b/System/desktop.lua new file mode 100644 index 0000000..fe6cbb6 --- /dev/null +++ b/System/desktop.lua @@ -0,0 +1,54 @@ +--[[ + bits-UI Desktop: A Desktop for bits-UI + Copyright (C) 2020 Alee14 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +]]-- + +os.loadAPI("/system/apis/flib.lua") +local backgroundColour = 32768 +local backgroundImage = "/home/.background" +local panelColour = 8192 +local appTitle = "[Apps]" + +function drawPanel() + local time = os.time() + local formattedTime = textutils.formatTime(time, false) + term.setCursorPos(1,1) + term.setBackgroundColor(panelColour) + term.setTextColor(1) + term.clearLine() + term.setCursorPos(2, 1) + print(appTitle) + term.setCursorPos(44, 1) + print(formattedTime) + end + +function drawDesktop() + term.setBackgroundColor(backgroundColour) + term.clear() + bground = paintutils.loadImage(backgroundImage) + paintutils.drawImage(bground,1,1) + drawPanel() +end +--[[ + if fs.exists("/programs") then +end +]] + +-- Initialize Desktop + +drawDesktop() + +while true do +local event, button, X, Y = os.pullEventRaw() +drawDesktop() +end
\ No newline at end of file diff --git a/System/login.lua b/System/login.lua new file mode 100644 index 0000000..03647ed --- /dev/null +++ b/System/login.lua @@ -0,0 +1 @@ +-- Not available on this build!
\ No newline at end of file diff --git a/System/post-setup.lua b/System/post-setup.lua new file mode 100644 index 0000000..18f289f --- /dev/null +++ b/System/post-setup.lua @@ -0,0 +1,64 @@ +--[[ + bits-UI Setup: Post installation setup for bits-UI + Copyright (C) 2020 Alee14 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +]]-- +os.loadAPI("/system/apis/sha256.lua") +os.loadAPI("/system/apis/json.lua") +local config = "/home/.config" + +term.clear() +term.setCursorPos(1,1) +term.setTextColor(colors.white) + +print("Welcome to the bits-UI Post Setup!") +sleep(2) +print("Please enter your password.") +--print("(Don't set your real password in servers.)") + +local passPath = "/etc/passwd.pwd" +if fs.exists(passPath) then + print("[INFO] Password file exists! Skipping.") + sleep(2) +else + local passwd = read(" ") + local insertPasswd = fs.open(passPath, "a") + local hashedString = sha256.pbkdf2(passwd, 2, 32):toHex() + insertPasswd.writeLine(hashedString) + insertPasswd.close() + print("Thanks, I will save that.") +end +sleep(3) +term.clear() +term.setCursorPos(1,1) +term.setTextColor(colors.white) +print("Copying files to local user.") + +fs.makeDir("/home/Documents") +fs.makeDir("/home/Downloads") +fs.makeDir("/home/Pictures") + +if fs.exists("/system/skel/README.txt") then + shell.run("copy", "/system/skel/README.txt", "/home/Documents") +else + print("[ERROR] Unable to find README.txt...") +end + +if fs.exists("/system/skel/.background") then + shell.run("copy", "/system/skel/.background", "/home") +else + print("[ERROR] Unable to find the background...") +end +sleep(1) +print("Finished copying files.") +sleep(2) +shell.run("/system/desktop.lua")
\ No newline at end of file diff --git a/System/recovery/main.lua b/System/recovery/main.lua new file mode 100644 index 0000000..10fbe18 --- /dev/null +++ b/System/recovery/main.lua @@ -0,0 +1,29 @@ +--[[ + bits-UI Recovery Script: A script that's going to show you to either reset the computer or transfer files. + Copyright (C) 2020 Alee14 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +]]-- +term.clear() +term.setCursorPos(1,1) +term.setTextColor(colors.white) +print("Welcome to the bits-UI recovery mode!") +sleep(2) +print("Do you want to either reset or transfer?") +local input = read(); +if input == "reset" then + shell.run("/system/recovery/reset.lua") +elseif input == "transfer" then + shell.run("/system/recovery/transfer.lua") +else + os.reboot() +end
\ No newline at end of file diff --git a/System/recovery/reset.lua b/System/recovery/reset.lua new file mode 100644 index 0000000..a8c8cf1 --- /dev/null +++ b/System/recovery/reset.lua @@ -0,0 +1,36 @@ +--[[ + bits-UI Reset Script: A script that will wipe the system to the default factory settings. + Copyright (C) 2020 Alee14 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +]]-- +function clear() + term.clear() + term.setCursorPos(1,1) + term.setTextColor(colors.white) +end +clear() +print("Are you sure you want to reset bits-UI? (y/n)") +local input = read() +if input == "y" then + print("Erasing all user stored data...") + fs.delete("/home") + fs.delete("/etc/passwd.pwd") + sleep(2) + print("Erased all data...") + sleep(2) + print("Rebooting...") + sleep(3) + os.reboot() +else + os.reboot() +end
\ No newline at end of file diff --git a/System/recovery/transfer.lua b/System/recovery/transfer.lua new file mode 100644 index 0000000..b1b98f1 --- /dev/null +++ b/System/recovery/transfer.lua @@ -0,0 +1,29 @@ +--[[
+ bits-UI Transfer Script: A script that will transfer files from one system to the other.
+ Copyright (C) 2020 Alee14
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+]]--
+term.clear()
+term.setCursorPos(1,1)
+term.setTextColor(colors.white)
+print("Welcome to the bits-UI transfer!")
+sleep(2)
+if fs.exists("/disk") then
+ shell.run("copy", "/home", "/disk")
+ shell.run("copy", "/etc/passwd.pwd", "/disk")
+else
+ print("You need a floppy disk to copy over data.")
+ print("Transfer has been halted.")
+ sleep(2)
+ os.reboot()
+end
\ No newline at end of file diff --git a/System/skel/.background b/System/skel/.background new file mode 100644 index 0000000..d67433b --- /dev/null +++ b/System/skel/.background @@ -0,0 +1,13 @@ + + + 77777777777777777777 + 7ffffffffffffffffff7 + 7ff000fffffffffffff7 + 7ffffffffffffffffff7 + 7ffffffffffffffffff7 + 7ffffffffffffffffff7 + 7ffffffffffffffffff7 + 7ffffffffffffffffff7 + 7ffffffffffffffffff7 + 7ffffffffffffffffff7 + 77777777777777777777 diff --git a/System/skel/README.txt b/System/skel/README.txt new file mode 100644 index 0000000..e7c2cf4 --- /dev/null +++ b/System/skel/README.txt @@ -0,0 +1,7 @@ +Thanks for downloading bits-UI! + +Please note that this project is in very early development and there might not be as much features as you'll expect but in future builds will be more! + +Oh yeah! Feel free to contribute to this project by the following link! + +Source Code: https://github.com/aleeproductions/bits-UI diff --git a/System/update.lua b/System/update.lua new file mode 100644 index 0000000..3e04931 --- /dev/null +++ b/System/update.lua @@ -0,0 +1,31 @@ +--[[ + bits-UI Update: A boot loader for bits-UI + Copyright (C) 2020 Alee14 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +]]-- +local gitMode = false +if fs.exists("/.git") then + gitMode = true +else + gitMode = false +end +if gitMode == true then + print("NOTICE: Git mode is set to true!\n\nWhich means that you cannot update, you must use Git to update.\n") + print("Args: \"git pull\"") + sleep(2) + os.reboot() +else +print("Running the updater...") +sleep(1) +shell.run("pastebin", "run", "7XY80hfG") +end diff --git a/programs/enchat3.shortcut b/programs/enchat3.shortcut deleted file mode 100644 index 39180dd..0000000 --- a/programs/enchat3.shortcut +++ /dev/null @@ -1,2 +0,0 @@ -name: Enchat -shortcut: /programs/enchat3.lua
\ No newline at end of file diff --git a/programs/firewolf.shortcut b/programs/firewolf.shortcut deleted file mode 100644 index 6d20982..0000000 --- a/programs/firewolf.shortcut +++ /dev/null @@ -1,2 +0,0 @@ -name: FireWolf -shortcut: /programs/firewolf.lua
\ No newline at end of file diff --git a/programs/ink.shortcut b/programs/ink.shortcut deleted file mode 100644 index a8b8d12..0000000 --- a/programs/ink.shortcut +++ /dev/null @@ -1,2 +0,0 @@ -name: Ink -shortcut: /programs/ink.lua
\ No newline at end of file diff --git a/programs/kristwallet.shortcut b/programs/kristwallet.shortcut deleted file mode 100644 index 51fb94c..0000000 --- a/programs/kristwallet.shortcut +++ /dev/null @@ -1,2 +0,0 @@ -name: Krist Wallet -shortcut: /programs/kristwallet.lua
\ No newline at end of file diff --git a/programs/luaide.shortcut b/programs/luaide.shortcut deleted file mode 100644 index fe073a7..0000000 --- a/programs/luaide.shortcut +++ /dev/null @@ -1,2 +0,0 @@ -name: LuaIDE -shortcut: /programs/luaide.lua
\ No newline at end of file diff --git a/programs/mousebrowser.shortcut b/programs/mousebrowser.shortcut deleted file mode 100644 index a3713ab..0000000 --- a/programs/mousebrowser.shortcut +++ /dev/null @@ -1,2 +0,0 @@ -name: File Browser -shortcut: /programs/mousebrowser.lua
\ No newline at end of file diff --git a/programs/npaintpro.shortcut b/programs/npaintpro.shortcut deleted file mode 100644 index 51a827a..0000000 --- a/programs/npaintpro.shortcut +++ /dev/null @@ -1,2 +0,0 @@ -name: NPaintPro -shortcut: /programs/npaintpro.lua
\ No newline at end of file diff --git a/system/boot.lua b/system/boot.lua index 4777ede..ef11d60 100644 --- a/system/boot.lua +++ b/system/boot.lua @@ -49,7 +49,7 @@ if fs.exists("/home") then term.setTextColor(colors.green) print("[OK] Home has been found...") else - fs.makeDir("/home") + fs.makeDir("/Home") term.setTextColor(colors.green) print("[OK] Home directory has been created...") end |
