comparison src/admin/add.html.luan @ 10:a7187a447835

restrict repo names
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 12 Jul 2022 19:40:50 -0600
parents a09d8bcdc0f9
children b14073ab9d07
comparison
equal deleted inserted replaced
9:338ab58d91f2 10:a7187a447835
1 local Luan = require "luan:Luan.luan" 1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error 2 local error = Luan.error
3 local String = require "luan:String.luan" 3 local String = require "luan:String.luan"
4 local to_lower = String.lower or error() 4 local matches = String.matches or error()
5 local Io = require "luan:Io.luan" 5 local Io = require "luan:Io.luan"
6 local Http = require "luan:http/Http.luan" 6 local Http = require "luan:http/Http.luan"
7 local Shared = require "site:/lib/Shared.luan" 7 local Shared = require "site:/lib/Shared.luan"
8 local head = Shared.head or error() 8 local head = Shared.head or error()
9 local header = Shared.admin_header or error() 9 local header = Shared.admin_header or error()
14 14
15 15
16 local function handle() 16 local function handle()
17 local user = get_user() 17 local user = get_user()
18 local repo_name = Http.request.parameters.repo or error() 18 local repo_name = Http.request.parameters.repo or error()
19 repo_name = to_lower(repo_name) 19 matches( repo_name, "^[a-z0-9_][a-z0-9_-]*$" ) or error "invalid regex name"
20 if repo_name=="_all" or repo_name=="_private" then 20 if repo_name=="_all" or repo_name=="_private" then
21 return [[<p error>Invalid rep name</p>]] 21 return [[<p error>Invalid rep name</p>]]
22 end 22 end
23 local raw_config = get_raw_config() 23 local raw_config = get_raw_config()
24 if raw_config.repos[repo_name] ~= nil then 24 if raw_config.repos[repo_name] ~= nil then