1 <% @header [("title", ["SSL certificate permission requests"])];
3 val admin = Group.inGroupName "server";
7 val domain = $"domain";
11 %><h3>Please fill in a path to a certificate.</h3><%
12 elseif not (ChooseDomain.yourDomain {user = Init.getUserName (), domain = domain}) then
13 %><h3>You don't have permissions on domain <tt><% Web.html domain %></tt>.</h3><%
15 %>Are you sure you want to ask for permissions on an SSL certificate
16 <li> at <tt><% Web.html cert %></tt>,</li>
17 <li> for domain <tt><% domain %></tt>?</li>
18 <a href="?cmd=request&cert=<% Web.html cert %>&domain=<% Web.html domain %>&msg=<% Web.urlEncode msg %>">Yes, I want to request that.</a><%
20 elseif $"cmd" = "request" then
22 val domain = $"domain";
26 %><h3>Please fill in a path to a certificate.</h3><%
27 elseif not (ChooseDomain.yourDomain {user = Init.getUserName (), domain = domain}) then
28 %><h3>You don't have permissions on domain <tt><% Web.html domain %></tt>.</h3><%
30 val text = "/afs/hcoop.net/common/etc/scripts/ca-install "
31 ^ Init.getUserName () ^ " "
35 val id = Cert.add (Init.getUserId (), text, msg);
36 if not (Cert.notifyNew id) then
37 %><h3>Error sending e-mail notification</h3><%
39 %><h3>Request added</h3><%
41 elseif $"cmd" = "open" then
42 %><h3>Open requests</h3>
43 <a href="?cmd=list">List all requests</a><%
45 foreach (name, req) in Cert.listOpen () do %>
47 <table class="blanks">
48 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
49 <tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
50 <tr> <td>Request:</td> <td><tt><% #data req %></tt></td> </tr>
51 <tr> <td>Reason:</td> <td><% Web.html (#msg req) %></td> </tr>
56 <a href="?mod=<% #id req %>">[Modify]</a>
57 <a href="?del=<% #id req %>">[Delete]</a><br>
62 elseif $"cmd" = "list" then
63 %><h3>All requests</h3><%
65 foreach (name, req) in Cert.list () do %>
67 <table class="blanks">
68 <tr> <td>By:</td> <td><a href="user?id=<% #usr req %>"><% name %></a></td> </tr>
69 <tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
70 <tr> <td>Request:</td> <td><tt><% #data req %></tt></td> </tr>
71 <tr> <td>Reason:</td> <td><% Web.html (#msg req) %></td> </tr>
76 <a href="?mod=<% #id req %>">[Modify]</a>
77 <a href="?del=<% #id req %>">[Delete]</a>
82 elseif $"mod" <> "" then
83 Group.requireGroupName "server";
84 val id = Web.stoi ($"mod");
85 val req = Cert.lookup id;
86 val user = Init.lookupUser (#usr req) %>
87 <h3>Handle request</h3>
90 <input type="hidden" name="save" value="<% id %>">
91 <table class="blanks">
92 <tr> <td>Requestor:</td> <td><a href="user?id=<% #usr req %>"><% #name user %></a></td> </tr>
93 <tr> <td>Time:</td> <td><% #stamp req %> (<% Util.diffFromNow (#stamp req) %> ago)</td> </tr>
94 <tr> <td>Status:</td> <td><select name="status">
95 <option value="0"<% if #status req = Cert.NEW then %> selected<% end %>>New</option>
96 <option value="1"<% if #status req = Cert.INSTALLED then %> selected<% end %>>Installed</option>
97 <option value="2"<% if #status req = Cert.REJECTED then %> selected<% end %>>Rejected</option>
99 <tr> <td>Request:</td> <td><input name="req" size="60" value="<% Web.html (#data req) %>"></td> </tr>
100 <tr> <td>Message:</td> <td><textarea name="msg" rows="10" cols="80" wrap="soft"><% Web.html (#msg req) %></textarea></td> </tr>
101 <tr> <td><input type="submit" value="Save"></td> </tr>
105 <% elseif $"save" <> "" then
106 Group.requireGroupName "server";
107 val id = Web.stoi ($"save");
108 val req = Cert.lookup id;
109 val oldStatus = #status req;
110 val newStatus = Cert.statusFromInt (Web.stoi ($"status"));
111 Cert.modify {req with data = $"req", msg = $"msg", status = newStatus};
112 if not (Cert.notifyMod (oldStatus, newStatus, Init.getUserName(), id)) then
113 %><h3>Error sending e-mail notification</h3><%
115 %><h3>Request modified</h3>
116 Back to: <a href="?cmd=open">open requests</a>, <a href="?cmd=list">all requests</a>
118 <% elseif $"del" <> "" then
119 Group.requireGroupName "server";
120 val id = Web.stoi ($"del");
121 val req = Cert.lookup id;
122 val user = Init.lookupUser (#usr req)
123 %><h3>Are you sure you want to delete request by <% #name user %> for <tt><% #data req %></tt>?</h3>
124 <a href="?del2=<% id %>">Yes, I'm sure!</a>
126 <% elseif $"del2" <> "" then
127 Group.requireGroupName "server";
128 val id = Web.stoi ($"del2");
130 %><h3>Request deleted</b><h3>
131 Back to: <a href="?cmd=open">open requests</a>, <a href="?cmd=list">all requests</a>
135 <h3>Request installation of an SSL certificate</h3>
137 <p>Use this form to request Domtool permissions to use an SSL certificate. Give the location of your certificate/key (<tt>.pem</tt>) file within <tt>/afs/hcoop.net</tt>.</p>
139 <p>If you want your certificate authenticated by chaining through HCoop's root certificate, then <a href="sign">get it signed</a> before submitting this form.</p>
141 <p>Note that you can't use SSL certificates very well over HTTPS without an IP address assigned to your web virtual host. You can request one separately on <a href="ip">the IP address request page</a>.</p>
143 <p>The <a href="http://wiki.hcoop.net/MemberManual/ServingWebsites/SslCert">instructions on our wiki for creating SSL certificates</a> may be helpful.</p>
146 <input type="hidden" name="new" value="1">
147 <table class="blanks">
148 <tr> <td>Domain:</td> <td><% @chooseDomain[] %></td> </tr>
149 <tr> <td>OpenSSL certificate:</td> <td><input name="cert" size="60"></td> </tr>
150 <tr> <td>Additional comments:</td> <td><textarea name="msg" rows="5" cols="80" wrap="soft"></textarea></td> </tr>
151 <tr> <td><input type="submit" value="Request"></td> </tr>