<% val you = Init.getUserId (); val yourname = Init.getUserName (); val nodeNum = case $"node" of "" => 6 | node => Web.stoi node; val nodeName = Init.nodeName nodeNum; val uname = case $"uname" of "" => yourname | uname => uname; val socks = Sec.socketPerms {node = nodeNum, uname = uname}; val tpe = Sec.isTpe {node = nodeNum, uname = uname}; val cron = Sec.cronAllowed {node = nodeNum, uname = uname}; ref showNormal = true; @header [("title", ["Security settings"])]; if $"cmd" = "socks" then showNormal := false; val socks = $"socks"; %>Are you sure you want to request that socket permissions for <% Web.html uname %> on <% Web.html nodeName %> be changed to <% Web.html socks %>?
">Yes, place the request!<% elseif $"cmd" = "socks2" then val id = Sec.Req.add {usr = you, node = nodeNum, data = String.concat [uname, ": change socket permissions to ", $"socks"], msg = $"msg"}; if not (Sec.Req.notifyNew id) then %>

Error sending e-mail notification

<% end %>

Request added

<% elseif $"cmd" = "tpe" then showNormal := false; val tpe = iff $"tpe" = "yes" then "on" else "off"; %>Are you sure you want to request that trusted-path-executables-only for <% Web.html uname %> on <% Web.html nodeName %> be turned <% tpe %>?
">Yes, place the request!<% elseif $"cmd" = "tpe2" then val id = Sec.Req.add {usr = you, node = nodeNum, data = String.concat [uname, ": turn tpe ", $"tpe"], msg = $"msg"}; if not (Sec.Req.notifyNew id) then %>

Error sending e-mail notification

<% end %>

Request added

<% elseif $"cmd" = "cron" then showNormal := false; val cron = iff $"cron" = "yes" then "enabled" else "disabled"; %>Are you sure you want to request that cron permissions for <% Web.html uname %> on <% Web.html nodeName %> be <% cron %>?
">Yes, place the request!<% elseif $"cmd" = "cron2" then val cron = iff $"cron" = "enabled" then "enable" else "disable"; val id = Sec.Req.add {usr = you, node = nodeNum, data = String.concat [uname, ": ", cron, " cron access"], msg = $"msg"}; if not (Sec.Req.notifyNew id) then %>

Error sending e-mail notification

<% end %>

Request added

<% elseif $"cmd" = "rule" then showNormal := false; val rule = $"rule"; if Sec.validRule rule then %>Are you sure you want to request the firewall rule <% Web.html uname %> <% Web.html rule %> on <% Web.html nodeName %>?
">Yes, place the request!<% else %>"<% Web.html rule %>" is not a valid firewall rule! Please reread the instructions, and remember to leave off the initial username portion.<% end elseif $"cmd" = "rule2" then val rule = $"rule"; if Sec.validRule rule then val id = Sec.Req.add {usr = you, node = nodeNum, data = String.concat ["Add firewall rule \"", nodeName, " ", uname, " ", rule, "\""], msg = $"msg"}; if not (Sec.Req.notifyNew id) then %>

Error sending e-mail notification

<% end %>

Request added

<% else %>"<% Web.html rule %>" is not a valid firewall rule! Please reread the instructions, and remember to leave off the initial username portion.<% end elseif $"modRule" <> "" then showNormal := false; val oldRule = $"modRule"; val rule = $"rule" if oldRule = rule then %>You didn't modify the textbox for this rule before clicking the button, so there is no request to be made.<% else %>Are you sure you want to request that firewall rule <% Web.html uname %> <% Web.html oldRule %> be replaced by <% Web.html uname %> <% Web.html rule %> on <% Web.html nodeName %>?
">Yes, place the request!<% end elseif $"modRule2" <> "" then val id = Sec.Req.add {usr = you, node = nodeNum, data = String.concat ["Change firewall rule \"", uname, " ", $"modRule2", "\" to \"", uname, " ", $"rule", "\""], msg = $"msg"}; if not (Sec.Req.notifyNew id) then %>

Error sending e-mail notification

<% end %>

Request added

<% elseif $"delRule" <> "" then showNormal := false; val oldRule = $"delRule"; %>Are you sure you want to request that firewall rule <% Web.html uname %> <% Web.html oldRule %> on <% Web.html nodeName %> be deleted?
">Yes, place the request!<% elseif $"delRule2" <> "" then val id = Sec.Req.add {usr = you, node = nodeNum, data = String.concat ["Delete firewall rule \"", uname, " ", $"delRule2", "\""], msg = $"msg"}; if not (Sec.Req.notifyNew id) then %>

Error sending e-mail notification

<% end %>

Request added

<% elseif $"cmd" = "open" then showNormal := false; Group.requireGroupName "server"; %>

Open requests

List all requests<% foreach (name, req) in Sec.Req.listOpen () do %>


By: <% name %>
Time: <% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)
Node: <% Web.html (Init.nodeName (#node req)) %>
Request: <% #data req %>
Msg: <% Web.html (#msg req) %>

[Modify] [Delete]
<% end elseif $"cmd" = "list" then showNormal := false; Group.requireGroupName "server" %>

All requests

<% foreach (name, req) in Sec.Req.list () do %>


By: <% name %>
Time: <% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)
Node: <% Web.html (Init.nodeName (#node req)) %>
Request: <% #data req %>
Reason: <% Web.html (#msg req) %>

[Modify] [Delete] <% end elseif $"mod" <> "" then showNormal := false; Group.requireGroupName "server"; val id = Web.stoi ($"mod"); val req = Sec.Req.lookup id; val user = Init.lookupUser (#usr req) %>

Handle request

Requestor: <% #name user %>
Time: <% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)
Status:
Node:
Request:
Message:
<% elseif $"save" <> "" then showNormal := false; Group.requireGroupName "server"; val id = Web.stoi ($"save"); val req = Sec.Req.lookup id; val oldStatus = #status req; val newStatus = Sec.Req.statusFromInt (Web.stoi ($"status")); Sec.Req.modify {req with node = nodeNum, data = $"req", msg = $"msg", status = newStatus}; if not (Sec.Req.notifyMod {old = oldStatus, new = newStatus, changer = Init.getUserName(), req = id}) then %>

Error sending e-mail notification

<% end %>

Request modified

Back to: open requests, all requests <% elseif $"del" <> "" then showNormal := false; Group.requireGroupName "server"; val id = Web.stoi ($"del"); val req = Sec.Req.lookup id; val user = Init.lookupUser (#usr req) %>

Are you sure you want to delete request by <% #name user %> for "<% #data req %>" on <% Web.html (Init.nodeName (#node req)) %>?

Yes, I'm sure! <% elseif $"del2" <> "" then showNormal := false; Group.requireGroupName "server"; val id = Web.stoi ($"del2"); Sec.Req.delete id %>

Request deleted

Back to: open requests, all requests <% end; if showNormal then @secnormal [("uname", [uname]), ("nodeNum", [Int.toString nodeNum])]; end %> <% @footer[] %>