]> git.r.bdr.sh - rbdr/ngx_http_office_hours_filter_module/blob - README.md
Fix bug with negative minutes
[rbdr/ngx_http_office_hours_filter_module] / README.md
1 # Nginx Office Hours
2
3 A victory for the server's labor rights: An nginx module that allows you to serve your content only during office hours.
4
5 ## Using the directive
6
7 The `office_hours` directive expects a list of time ranges separated by
8 spaces. The first range will be used as the default, and the rest will
9 be read from right to left, ending with *sunday*
10
11 ### Example 1: Open 24 hours
12
13 Don't use this directive.
14
15 ### Example 2: Open every day from 08:30 AM to 7:00 PM
16
17 ```
18 office_hours 8:30-19;
19 ```
20
21 Some things worth noting here: the format of time ranges uses 24 hour
22 style, so no pesky AMs or PMs. Likewise, minutes are optional. Finally,
23 note that since only one range was defined, this is applied to all days
24 of the week. Another noteworthy
25
26 ### Example 3: Open every day from 08:30 AM to 7:00 PM, but closed sundays
27
28 ```
29 office_hours 8:30-19 closed;
30 ```
31
32 Two important things here: first notice that the closed keyword
33 specifies that the server is closed on a specific day; second, notice
34 how the last element is used for sunday, while the first one still
35 applies to Monday-Saturday.
36
37 ### Example 4: Open weekdays from 08:30 AM to 7:00 PM, Saturdays 10:00 AM to 4:00 PM, closed on sundays
38
39 ```
40 office_hours 8:30-19 10-16 closed;
41 ```
42
43 Now hopefully you can see the pattern: The first time range applies to
44 Monday-Friday, next one to Saturday and last one to Sunday.
45
46 ### Example 5: Open weekdays from 08:30 AM to 7:00 PM, closed on thursdays, reduced hours on weekends.
47
48 ```
49 office_hours 8:30-19 closed 8:30-19 10-16 10-16;
50 ```
51
52 Since we had to specify from Thursday, we have to explicitly set the
53 values for Friday, Saturday and Sunday.
54
55 ### Example 6: Closed every day.
56
57 Uninstall nginx.
58
59 ## What you will need to get started
60
61 I'm still not sure! I'm learning how to build this nginx module, so I'll
62 figure it out as I go and add it here.
63
64 * [astyle][astyle]: Used to format the code
65 * An `nginx` [source distribution][nginx] to compile the code.
66
67 ## Building the module
68
69 You can build this module as a dynamic module. From the `nginx` source
70 directory run:
71
72 ```
73 ./configure --add-dynamic-module=/path/to/ngx_http_office_hours_filter_module
74 make
75 ```
76
77 For more information check the [nginx docs][nginx-module-docs]
78
79 ## Installing git hooks
80
81 This repo contains a pre-commit git hook so indent will run before every
82 commit. Run `make setup_hooks` to install it.
83
84 ## Further Improvements
85
86 * Add support for timezones (currently only GMT)
87 * Add support for public holidays
88 * Add support to respect the time zone of the visitor and not just the
89 server
90 * Add support for double shifts in the same day
91
92 [astyle]: http://astyle.sourceforge.net
93 [nginx]: https://nginx.org/en/download.html
94 [nginx-module-docs]: https://www.nginx.com/resources/wiki/extending/