Browse Source

simplified templates files; updated completion and generation; added bash completion for tests; TODO

tags/v2.1.0^0
Robin Thoni 8 years ago
parent
commit
fa2645ab10

+ 2
- 1
TODO View File

1
-site remove?
1
+site remove?
2
+add sitegen command to hooks' arguments ('./sitegen.py --config ./tests/sitegen.json')

+ 44
- 21
sitegen.py View File

133
                 domains.append(file[:-4])
133
                 domains.append(file[:-4])
134
         return domains
134
         return domains
135
 
135
 
136
-    def get_all_site_templates(self):
136
+    def get_all_site_confs(self):
137
         files = os.listdir(self.get_site_template_dir())
137
         files = os.listdir(self.get_site_template_dir())
138
         files.sort()
138
         files.sort()
139
         templates = []
139
         templates = []
142
                 templates.append(file[:-5])
142
                 templates.append(file[:-5])
143
         return templates
143
         return templates
144
 
144
 
145
+    def get_all_site_incs(self):
146
+        files = os.listdir(self.get_site_template_dir())
147
+        files.sort()
148
+        templates = []
149
+        for file in files:
150
+            if file.endswith(".include"):
151
+                templates.append(file[:-8])
152
+        return templates
153
+
145
     def get_all_sites(self):
154
     def get_all_sites(self):
146
         files = os.listdir(self.siteConfDir)
155
         files = os.listdir(self.siteConfDir)
147
         files.sort()
156
         files.sort()
165
             path.join(self.siteConfDir, domain + ".include")
174
             path.join(self.siteConfDir, domain + ".include")
166
         ]
175
         ]
167
 
176
 
168
-    def get_site_template_conf_files(self, template):
177
+    def get_site_template_conf_files(self, inc, conf):
169
         return [
178
         return [
170
-            path.join(self.get_site_template_dir(), template + ".conf"),
171
-            path.join(self.get_site_template_dir(), template + ".include")
179
+            path.join(self.get_site_template_dir(), conf + ".conf"),
180
+            path.join(self.get_site_template_dir(), inc + ".include")
172
         ]
181
         ]
173
 
182
 
174
     def get_site_dir(self, domain):
183
     def get_site_dir(self, domain):
180
                 return True
189
                 return True
181
         return False
190
         return False
182
 
191
 
183
-    def is_site_template_present(self, template):
184
-        for file in self.get_site_template_conf_files(template):
192
+    def is_site_template_present(self, inc, conf):
193
+        for file in self.get_site_template_conf_files(inc, conf):
185
             if path.isfile(file):
194
             if path.isfile(file):
186
                 return True
195
                 return True
187
         return False
196
         return False
249
         for domain in domains:
258
         for domain in domains:
250
             self.cert_renew(domain)
259
             self.cert_renew(domain)
251
 
260
 
252
-    def site_create(self, domain, template):
261
+    def site_create(self, domain, inc, conf):
253
         if self.is_site_present(domain):
262
         if self.is_site_present(domain):
254
             raise SiteGenException("Site is present", 1)
263
             raise SiteGenException("Site is present", 1)
255
-        if not self.is_site_template_present(template):
264
+        if not self.is_site_template_present(inc, conf):
256
             raise SiteGenException("Template is not present", 1)
265
             raise SiteGenException("Template is not present", 1)
257
 
266
 
258
         args = [domain, self.get_site_dir(domain)]
267
         args = [domain, self.get_site_dir(domain)]
259
-        conf_files = self.get_site_template_conf_files(template)
268
+        conf_files = self.get_site_template_conf_files(inc, conf)
260
         site_files = self.get_site_conf_files(domain)
269
         site_files = self.get_site_conf_files(domain)
261
         for f in conf_files:
270
         for f in conf_files:
262
             args.append(f)
271
             args.append(f)
296
         os.remove(self.get_hook_file(hook_type, hook_name, True))
305
         os.remove(self.get_hook_file(hook_type, hook_name, True))
297
 
306
 
298
 
307
 
299
-def parse_domain(domain):
300
-    site_template = "default"
308
+def parse_domain(domain, default_inc="default", default_conf="https"):
309
+    inc = default_inc
310
+    conf = default_conf
301
     if ":" in domain:
311
     if ":" in domain:
302
         split = domain.split(":")
312
         split = domain.split(":")
303
         domain = split[0]
313
         domain = split[0]
304
-        site_template = split[1]
305
-    return domain, site_template
314
+        inc = split[1]
315
+        if "." in inc:
316
+            split = inc.split(".")
317
+            inc = split[0]
318
+            conf = split[1]
319
+    return domain, inc, conf
306
 
320
 
307
 
321
 
308
 def parse_hook(hook):
322
 def parse_hook(hook):
328
     return site_gen.get_all_domains()
342
     return site_gen.get_all_domains()
329
 
343
 
330
 
344
 
331
-def site_template_completer(prefix, **kwargs):
345
+def site_conf_completer(prefix, **kwargs):
332
     site_gen = get_site_gen(prefix, **kwargs)
346
     site_gen = get_site_gen(prefix, **kwargs)
333
-    return site_gen.get_all_site_templates()
347
+    return site_gen.get_all_site_confs()
348
+
349
+
350
+def site_inc_completer(prefix, **kwargs):
351
+    site_gen = get_site_gen(prefix, **kwargs)
352
+    return site_gen.get_all_site_incs()
334
 
353
 
335
 
354
 
336
 def site_create_completer(prefix, **kwargs):
355
 def site_create_completer(prefix, **kwargs):
337
-    if ":" in prefix:
338
-        domain, template = parse_domain(prefix)
339
-        templates = site_template_completer(prefix, **kwargs)
340
-        return [domain + ":" + elt for elt in templates]
356
+    domain, inc, conf = parse_domain(prefix, None, None)
357
+    if inc is not None:
358
+        if conf is not None:
359
+            templates = site_conf_completer(prefix, **kwargs)
360
+            return [domain + ":" + inc + "." + elt for elt in templates]
361
+        else:
362
+            templates = site_inc_completer(prefix, **kwargs)
363
+            return [domain + ":" + elt for elt in templates]
341
 
364
 
342
     return domain_completer(prefix, **kwargs)
365
     return domain_completer(prefix, **kwargs)
343
 
366
 
404
                 site_gen.cert_enddate(args.cert_enddate)
427
                 site_gen.cert_enddate(args.cert_enddate)
405
 
428
 
406
         elif args.site_create is not None:
429
         elif args.site_create is not None:
407
-            domain, site_template = parse_domain(args.site_create)
408
-            site_gen.site_create(domain, site_template)
430
+            domain, inc, conf = parse_domain(args.site_create)
431
+            site_gen.site_create(domain, inc, conf)
409
 
432
 
410
         elif args.hook_enable is not None:
433
         elif args.hook_enable is not None:
411
             hook_type, hook_name = parse_hook(args.hook_enable)
434
             hook_type, hook_name = parse_hook(args.hook_enable)

+ 0
- 1
sitegen/templates/default.conf View File

1
-https.conf

+ 0
- 1
sitegen/templates/default.include View File

1
-https.include

+ 3
- 0
sitegen/templates/default.include View File

1
+ServerName %%HOST%%
2
+DocumentRoot %%ROOT%%
3
+ServerAlias %%HOST%%

+ 0
- 1
sitegen/templates/docker.http.conf View File

1
-http.conf

+ 0
- 1
sitegen/templates/docker.http.include View File

1
-docker.https.include

+ 0
- 1
sitegen/templates/docker.https.conf View File

1
-https.conf

sitegen/templates/docker.https.include → sitegen/templates/docker.include View File


+ 0
- 1
sitegen/templates/http.include View File

1
-https.include

+ 0
- 3
sitegen/templates/https.include View File

1
-ServerName %%HOST%%
2
-DocumentRoot %%ROOT%%
3
-ServerAlias %%HOST%%

+ 0
- 1
sitegen/templates/laravel.http.conf View File

1
-http.conf

+ 0
- 1
sitegen/templates/laravel.https.conf View File

1
-https.conf

+ 0
- 1
sitegen/templates/laravel.https.include View File

1
-laravel.http.include

sitegen/templates/laravel.http.include → sitegen/templates/laravel.include View File


+ 0
- 1
sitegen/templates/reverse.http.conf View File

1
-http.conf

+ 0
- 1
sitegen/templates/reverse.https.conf View File

1
-https.conf

sitegen/templates/reverse.http.include → sitegen/templates/reverse.include View File


+ 3
- 0
sitegen/templates/rhttp.conf View File

1
+<VirtualHost %%HOST%%:80>
2
+    Include sites-available/%%HOST%%.include
3
+</VirtualHost>

+ 19
- 0
sitegen/templates/rhttps.conf View File

1
+<IfModule mod_ssl.c>
2
+    <VirtualHost %%HOST%%:80>
3
+        ServerName %%HOST%%
4
+        Redirect permanent / https://%%HOST%%/
5
+    </VirtualHost>
6
+    <VirtualHost %%HOST%%:443>
7
+        Include sites-available/%%HOST%%.include
8
+
9
+        SSLEngine on
10
+        SSLCertificateFile /etc/ssl/private/%%HOST%%.crt
11
+        SSLCertificateKeyFile /etc/ssl/private/%%HOST%%.key
12
+        SSLCertificateChainFile /etc/ssl/private/%%HOST%%-chain.crt
13
+    </VirtualHost>
14
+</IfModule>
15
+<IfModule !mod_ssl.c>
16
+    <VirtualHost %%HOST%%:80>
17
+        Include sites-available/%%HOST%%.include
18
+    </VirtualHost>
19
+</IfModule>

sitegen/templates/reverse.https.include → sitegen/templates/sreverse.include View File


+ 3
- 0
tests/sitegen.completion View File

1
+#!/usr/bin/env bash
2
+
3
+eval "$(register-python-argcomplete ./sitegen.py)"

Loading…
Cancel
Save