mirror of
https://github.com/Open-Argon/isotope-server.git
synced 2026-10-28 09:43:51 +00:00
Update environment variable handling and cookie
retrieval
This commit is contained in:
1 parent
e3a7c23cff
commit
c99b940068
15 files changed
+73
-73
No files matched your search
@@ -1,8 +1,8 @@
|
||||
let url = env.get("URL","https://isotope.wbell.dev")
|
||||
let url = env.get_value("URL","https://isotope.wbell.dev")
|
||||
term.log("URL: "+url)
|
||||
let domain = env.get("domain","isotope.wbell.dev")
|
||||
let domain = env.get_value("domain","isotope.wbell.dev")
|
||||
term.log("domain: "+domain)
|
||||
let port = number(env.get("PORT", 7030))
|
||||
let port = number(env.get_value("PORT", 7030))
|
||||
term.log("port: "+port)
|
||||
|
||||
let env_keys = env.keys()
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
[{"Name":"bleach.ar","Version":"1.0.0","URL":"https://isotope.wbell.dev/isotope-download?name=bleach.ar\u0026version=1.0.0","Remote":"isotope.wbell.dev"},{"Name":"shlex.ar","Version":"1.0.1","URL":"https://isotope.wbell.dev/isotope-download?version=1.0.1\u0026name=shlex.ar","Remote":"isotope.wbell.dev"},{"Name":"neon.ar","Version":"beta1.0.2","URL":"https://isotope.wbell.dev/isotope-download?name=neon.ar\u0026version=beta1.0.2","Remote":"isotope.wbell.dev"},{"Name":"url.ar","Version":"1.0.1","URL":"https://isotope.wbell.dev/isotope-download?name=url.ar\u0026version=1.0.1","Remote":"isotope.wbell.dev"},{"Name":"http.ar","Version":"1.1.0","URL":"https://isotope.wbell.dev/isotope-download?name=http.ar\u0026version=1.1.0","Remote":"isotope.wbell.dev"}]
|
||||
[{"Name":"bleach.ar","Version":"1.0.0","URL":"https://isotope.wbell.dev/isotope-download?version=1.0.0\u0026name=bleach.ar","Remote":"isotope.wbell.dev"},{"Name":"shlex.ar","Version":"1.0.1","URL":"https://isotope.wbell.dev/isotope-download?name=shlex.ar\u0026version=1.0.1","Remote":"isotope.wbell.dev"},{"Name":"neon.ar","Version":"beta1.0.2","URL":"https://isotope.wbell.dev/isotope-download?version=beta1.0.2\u0026name=neon.ar","Remote":"isotope.wbell.dev"},{"Name":"url.ar","Version":"1.0.1","URL":"https://isotope.wbell.dev/isotope-download?name=url.ar\u0026version=1.0.1","Remote":"isotope.wbell.dev"},{"Name":"http.ar","Version":"1.1.0","URL":"https://isotope.wbell.dev/isotope-download?name=http.ar\u0026version=1.1.0","Remote":"isotope.wbell.dev"}]
|
||||
@@ -13,6 +13,6 @@ let navbar(acc) = do
|
||||
return '<div class="navbar"><a href="/"><div class="logo"></div></a><div class="links">'+links.join("")+'</div></div>'
|
||||
|
||||
let middleware(req,res) = do
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
res.templateValues.navbar = navbar(acc)
|
||||
res.next()
|
||||
@@ -3,22 +3,22 @@ import "config" as *
|
||||
import "database" as *
|
||||
|
||||
let download(req, res) = do
|
||||
let name = req.query.get("name", null)
|
||||
let version = req.query.get("version", "latest")
|
||||
let package = packages.get(name)
|
||||
let name = req.query.get_value("name", null)
|
||||
let version = req.query.get_value("version", "latest")
|
||||
let package = packages.get_value(name)
|
||||
if (package == null) do
|
||||
res.code = 404
|
||||
res.send("Package not found")
|
||||
return
|
||||
let currentVersion = package.versions.get(version)
|
||||
let currentVersion = package.versions.get_value(version)
|
||||
forever do
|
||||
let redirect = currentVersion.get("redirect")
|
||||
let redirect = currentVersion.get_value("redirect")
|
||||
if (redirect) do
|
||||
currentVersion = package.versions.get(redirect)
|
||||
currentVersion = package.versions.get_value(redirect)
|
||||
continue
|
||||
break
|
||||
let filename = currentVersion.get("filename")
|
||||
let filename = currentVersion.get_value("filename")
|
||||
let p = path.join([program.cwd, "data","packages", name, filename])
|
||||
package.downloads = package.get("downloads", 0) + 1
|
||||
package.downloads = package.get_value("downloads", 0) + 1
|
||||
res.sendFile(p)
|
||||
app.get("/isotope-download", download)
|
||||
@@ -3,23 +3,23 @@ import "randstr" as *
|
||||
import "database" as *
|
||||
|
||||
let push(req, res) = do
|
||||
let name = req.formdata.get("name", null)
|
||||
let name = req.formdata.get_value("name", null)
|
||||
if (name == null) do
|
||||
res.code = 400
|
||||
res.send("Missing name")
|
||||
return
|
||||
let version = req.formdata.get("version", null)
|
||||
let version = req.formdata.get_value("version", null)
|
||||
if (version == null) do
|
||||
res.code = 400
|
||||
res.send("Missing version")
|
||||
return
|
||||
let file = req.files.file
|
||||
let latest = req.formdata.latest
|
||||
let package = packages.get(name)
|
||||
let package = packages.get_value(name)
|
||||
if (package == null) do
|
||||
res.code = 404
|
||||
return res.send("Package not found")
|
||||
let acc = account.getByToken(req.headers.get("isotope-auth", ""))
|
||||
let acc = account.getByToken(req.headers.get_value("isotope-auth", ""))
|
||||
if (acc == null) do
|
||||
res.code = 403
|
||||
return res.send("You are not logged in")
|
||||
@@ -28,7 +28,7 @@ let push(req, res) = do
|
||||
return res.send("You are not the owner of this package")
|
||||
if ("order" not in package) package.order = {}
|
||||
if (package.versions.keys().length == 0) latest = "true"
|
||||
let currentVersion = package.versions.get(version)
|
||||
let currentVersion = package.versions.get_value(version)
|
||||
let directory = path.join([program.cwd, "data", "packages", name])
|
||||
if (currentVersion == null) do
|
||||
currentVersion = {name:name, version:version}
|
||||
|
||||
@@ -4,21 +4,21 @@ import "database" as *
|
||||
import "url.ar" as urllib
|
||||
|
||||
let search(req, res) = do
|
||||
let name = req.query.get("name", null)
|
||||
let version = req.query.get("version", "latest")
|
||||
let package = packages.get(name)
|
||||
let name = req.query.get_value("name", null)
|
||||
let version = req.query.get_value("version", "latest")
|
||||
let package = packages.get_value(name)
|
||||
if (package == null) do
|
||||
res.code = 404
|
||||
res.send("Package not found")
|
||||
return
|
||||
let currentVersion = package.versions.get(version)
|
||||
let currentVersion = package.versions.get_value(version)
|
||||
forever do
|
||||
let redirect = currentVersion.get("redirect")
|
||||
let redirect = currentVersion.get_value("redirect")
|
||||
if (redirect) do
|
||||
currentVersion = package.versions.get(redirect)
|
||||
currentVersion = package.versions.get_value(redirect)
|
||||
continue
|
||||
break
|
||||
let filename = currentVersion.get("filename")
|
||||
let filename = currentVersion.get_value("filename")
|
||||
let URL = config.url+"/isotope-download?"+urllib.queryStr({name:currentVersion.name, version:currentVersion.version})
|
||||
res.json({Name: currentVersion.name, Version: currentVersion.version, URL:URL })
|
||||
app.get("/isotope-search", search)
|
||||
@@ -3,7 +3,7 @@ import "database" as *
|
||||
import "url.ar" as url
|
||||
|
||||
let accountpage(req, res) = do
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
if (not acc) return res.redirect("/login?"+url.queryStr({to:req.path}))
|
||||
res.renderTemplate("account.html", {username:acc.username, email:acc.email})
|
||||
app.get("/account", accountpage)
|
||||
@@ -5,7 +5,7 @@ import "shlex.ar" as shlex
|
||||
import "config" as config
|
||||
|
||||
let accountpage(req, res) = do
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
term.log(acc)
|
||||
if (not acc) return res.redirect("/login?"+url.queryStr({to:"/account"}))
|
||||
let token = account.makeToken(acc)
|
||||
|
||||
@@ -2,14 +2,14 @@ import "server" as *
|
||||
import "database" as *
|
||||
|
||||
let login(req, res) = do
|
||||
let redirect = req.query.get("to", "/")
|
||||
let redirect = req.query.get_value("to", "/")
|
||||
if (redirect == "/login") redirect = "/"
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
if (acc) do
|
||||
return res.redirect(redirect)
|
||||
else if (req.method == "POST") do
|
||||
let user = req.formdata.get("user")
|
||||
let password = req.formdata.get("password")
|
||||
let user = req.formdata.get_value("user")
|
||||
let password = req.formdata.get_value("password")
|
||||
let errResp(err) = res.renderTemplate("login.html", {errorMsg:err, user:user})
|
||||
if (not user) return errResp("Missing user")
|
||||
else if (not password) return errResp("Missing password")
|
||||
|
||||
@@ -2,9 +2,9 @@ import "server" as *
|
||||
import "database" as *
|
||||
|
||||
let logout(req, res) = do
|
||||
let redirect = req.query.get("to", "/login")
|
||||
let redirect = req.query.get_value("to", "/login")
|
||||
if (redirect == "/logout") redirect = "/login"
|
||||
term.log(account.deleteToken(req.cookies.get("token", "")))
|
||||
term.log(account.deleteToken(req.cookies.get_value("token", "")))
|
||||
res.deleteCookie("token")
|
||||
res.redirect(redirect)
|
||||
app.get("/logout", logout)
|
||||
@@ -2,15 +2,15 @@ import "server" as *
|
||||
import "database" as *
|
||||
|
||||
let register(req, res) = do
|
||||
let redirect = req.query.get("to", "/")
|
||||
let redirect = req.query.get_value("to", "/")
|
||||
if (redirect == "/register") redirect = "/"
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
if (acc) do
|
||||
return res.redirect(redirect)
|
||||
else if (req.method == "POST") do
|
||||
let username = req.formdata.get("username")
|
||||
let email = req.formdata.get("email")
|
||||
let password = req.formdata.get("password")
|
||||
let username = req.formdata.get_value("username")
|
||||
let email = req.formdata.get_value("email")
|
||||
let password = req.formdata.get_value("password")
|
||||
let errResp(err) = res.renderTemplate("register.html", {errorMsg:err, username:username, email:email})
|
||||
if (not username) return errResp("Missing username")
|
||||
else if (not email) return errResp("Missing email")
|
||||
|
||||
@@ -7,18 +7,18 @@ import "render" as render
|
||||
import "commaNumbers" as *
|
||||
|
||||
let package(req, res) = do
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let name = req.query.get("name")
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
let name = req.query.get_value("name")
|
||||
if (not name) do
|
||||
res.code = 404
|
||||
res.renderTemplate("404.html", {})
|
||||
return
|
||||
|
||||
let version = req.query.get("version", "latest")
|
||||
let version = req.query.get_value("version", "latest")
|
||||
let commandName = name
|
||||
if (version != "latest") commandName += "@"+version
|
||||
let command = shlex.join(["isotope", "install", commandName])
|
||||
let package = packages.get(name)
|
||||
let package = packages.get_value(name)
|
||||
if (package == null && version == "latest") do
|
||||
package = {versions:{}, order:{}, name:name}
|
||||
else if (package == null) do
|
||||
@@ -35,7 +35,7 @@ let package(req, res) = do
|
||||
let versions = []
|
||||
let keys = package.versions.keys()
|
||||
keys.sort()
|
||||
keys.sort(true, (v) = package.order.get(v, 0))
|
||||
keys.sort(true, (v) = package.order.get_value(v, 0))
|
||||
for (i from 0 to keys.length) do
|
||||
let versioni = keys[i]
|
||||
let URL = "/package?"+url.queryStr({name:name, version:versioni})
|
||||
@@ -44,6 +44,6 @@ let package(req, res) = do
|
||||
else html = "<a href='"+URL+"'>"+bleach.clean(name+"@"+versioni)+"</a>"
|
||||
if (versioni == "latest") versions.insert(0, html)
|
||||
else versions.append(html)
|
||||
let author = account.getById(package.get("owner")) || {username:"Unknown", id:""}
|
||||
res.renderTemplate("package.html", {name:name, description: package.get("description", ""), 'short-description': package.get("short-description", ""), 'downloads': commaSeperatedNumber(package.get("downloads", 0)), keywords:package.get("keywords", []).join(', '), repository:package.get("repository", "https://github.com/"), license: package.get("license", "Unspecified"), author: author.username, authorPage: '/author?'+url.queryStr({id:author.id}), version:version, versions:versions.join(""), command:command, commandComma:command.replace("'", "\\'")})
|
||||
let author = account.getById(package.get_value("owner")) || {username:"Unknown", id:""}
|
||||
res.renderTemplate("package.html", {name:name, description: package.get_value("description", ""), 'short-description': package.get_value("short-description", ""), 'downloads': commaSeperatedNumber(package.get_value("downloads", 0)), keywords:package.get_value("keywords", []).join(', '), repository:package.get_value("repository", "https://github.com/"), license: package.get_value("license", "Unspecified"), author: author.username, authorPage: '/author?'+url.queryStr({id:author.id}), version:version, versions:versions.join(""), command:command, commandComma:command.replace("'", "\\'")})
|
||||
app.get("/package", package)
|
||||
@@ -3,17 +3,17 @@ import "database" as *
|
||||
import "url.ar" as url
|
||||
|
||||
let newPackage(req, res) = do
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
if (req.method == "POST") do
|
||||
if (not acc) return res.redirect("/login?"+url.queryStr({to:req.path+"?"+url.queryStr(req.formdata)}))
|
||||
let name = req.formdata.get("name", "")
|
||||
let shortDescription = req.formdata.get("short-description", "")
|
||||
let description = req.formdata.get("description", "")
|
||||
let license = req.formdata.get("license", "")
|
||||
let repository = req.formdata.get("repository", "")
|
||||
let keywords = req.formdata.get("keywords", "")
|
||||
let name = req.formdata.get_value("name", "")
|
||||
let shortDescription = req.formdata.get_value("short-description", "")
|
||||
let description = req.formdata.get_value("description", "")
|
||||
let license = req.formdata.get_value("license", "")
|
||||
let repository = req.formdata.get_value("repository", "")
|
||||
let keywords = req.formdata.get_value("keywords", "")
|
||||
let errResp(err) = res.renderTemplate("createPackage.html", {name:name, "short-description":shortDescription, description:description, license:license, repository:repository, keywords:keywords, error:err})
|
||||
let package = packages.get(name)
|
||||
let package = packages.get_value(name)
|
||||
if (package != null) do
|
||||
errResp("Package already exists")
|
||||
return
|
||||
@@ -49,11 +49,11 @@ let newPackage(req, res) = do
|
||||
makeChange()
|
||||
return res.redirect("/package?"+url.queryStr({name:name}))
|
||||
let values = {}
|
||||
values.name = req.query.get("name", "")
|
||||
values["short-description"] = req.query.get("short-description", "")
|
||||
values.description = req.query.get("description", "")
|
||||
values.license = req.query.get("license", "")
|
||||
values.repository = req.query.get("repository", "")
|
||||
values.keywords = req.query.get("keywords", "")
|
||||
values.name = req.query.get_value("name", "")
|
||||
values["short-description"] = req.query.get_value("short-description", "")
|
||||
values.description = req.query.get_value("description", "")
|
||||
values.license = req.query.get_value("license", "")
|
||||
values.repository = req.query.get_value("repository", "")
|
||||
values.keywords = req.query.get_value("keywords", "")
|
||||
res.renderTemplate("createPackage.html", values)
|
||||
app.all("/package/create", newPackage)
|
||||
@@ -3,22 +3,22 @@ import "database" as *
|
||||
import "url.ar" as url
|
||||
|
||||
let editPackage(req, res) = do
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
if (not acc) return res.redirect("/login?"+url.queryStr({to:req.path+"?"+url.queryStr(req.formdata)}))
|
||||
let name = req.query.get("name", "")
|
||||
let pkg = packages.get(name)
|
||||
let name = req.query.get_value("name", "")
|
||||
let pkg = packages.get_value(name)
|
||||
if ((not pkg) || pkg.owner != acc.id) do
|
||||
res.code = 404
|
||||
res.renderTemplate("404.html", {})
|
||||
return
|
||||
if (req.method == "POST") do
|
||||
let shortDescription = req.formdata.get("short-description", "")
|
||||
let description = req.formdata.get("description", "")
|
||||
let license = req.formdata.get("license", "")
|
||||
let repository = req.formdata.get("repository", "")
|
||||
let keywords = req.formdata.get("keywords", "")
|
||||
let shortDescription = req.formdata.get_value("short-description", "")
|
||||
let description = req.formdata.get_value("description", "")
|
||||
let license = req.formdata.get_value("license", "")
|
||||
let repository = req.formdata.get_value("repository", "")
|
||||
let keywords = req.formdata.get_value("keywords", "")
|
||||
let errResp(err) = res.renderTemplate("editPackage.html", {name:name, "short-description":shortDescription, description:description, license:license, repository:repository, keywords:keywords, error:err})
|
||||
let package = packages.get(name)
|
||||
let package = packages.get_value(name)
|
||||
if (package == null) do
|
||||
errResp("Package does not exist")
|
||||
return
|
||||
|
||||
@@ -5,8 +5,8 @@ import "bleach.ar" as bleach
|
||||
import "render" as renderer
|
||||
|
||||
let search(req, res) = do
|
||||
let acc = account.getByToken(req.cookies.get("token", ""))
|
||||
let query = req.query.get("q", "")
|
||||
let acc = account.getByToken(req.cookies.get_value("token", ""))
|
||||
let query = req.query.get_value("q", "")
|
||||
let lowerQuery = query.lower()
|
||||
let keys = packages.keys()
|
||||
keys.sort()
|
||||
@@ -16,16 +16,16 @@ let search(req, res) = do
|
||||
for (i from 0 to keys.length) do
|
||||
let name = keys[i]
|
||||
let package = packages[name]
|
||||
let element() = "<a href='/package?"+url.queryStr({name:name})+"'><h1>"+bleach.clean(name)+"</h1><p>"+bleach.clean(package.get("short-description",""))+"</p></a>"
|
||||
let element() = "<a href='/package?"+url.queryStr({name:name})+"'><h1>"+bleach.clean(name)+"</h1><p>"+bleach.clean(package.get_value("short-description",""))+"</p></a>"
|
||||
if (lowerQuery in name.lower()) do
|
||||
namedSearch.append(element())
|
||||
results += 1
|
||||
continue
|
||||
else if (lowerQuery in package.get("description", "").lower()) do
|
||||
else if (lowerQuery in package.get_value("description", "").lower()) do
|
||||
descriptionSearch.append(element())
|
||||
results += 1
|
||||
continue
|
||||
let keywords = package.get("keywords", [])
|
||||
let keywords = package.get_value("keywords", [])
|
||||
for (j from 0 to keywords.length) do
|
||||
let keyword = keywords[j].strip()
|
||||
if (keyword.lower() in lowerQuery) do
|
||||
|
||||
Reference in new issue
Block a user