]>
Commit | Line | Data |
---|---|---|
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 | ## Adding more information | |
60 | ||
61 | This plugin also provides an `office_hours_additional_information` directive | |
62 | that lets you add informative HTML to the page that shows when outside | |
63 | office hours. | |
64 | ||
65 | ``` | |
66 | office_hours_additional_information "<h1>Additional Information></h1> | |
67 | <p>Please do not email us asking to open the website 24/7. Send all complaints to friendship.quest/@ruben</p>" | |
68 | ``` | |
69 | ||
70 | ## What you will need to get started | |
71 | ||
72 | * [astyle][astyle]: Used to format the code | |
73 | * An `nginx` [source distribution][nginx] to compile the code. | |
74 | * A way to compile `nginx`. Check out [their guide][nginx-guide]! | |
75 | ||
76 | ## Building the module | |
77 | ||
78 | You can build office hours as a dynamic module. From the `nginx` source | |
79 | directory run: | |
80 | ||
81 | ``` | |
82 | ./configure --add-dynamic-module=/path/to/ngx_http_office_hours_filter_module | |
83 | make | |
84 | ``` | |
85 | ||
86 | For more information check the [nginx docs][nginx-module-docs] | |
87 | ||
88 | ## Installing git hooks | |
89 | ||
90 | This repo contains a pre-commit git hook so indent will run before every | |
91 | commit. Run `make setup_hooks` to install it. | |
92 | ||
93 | ## Further Improvements | |
94 | ||
95 | * Add support for double shifts in the same day | |
96 | * Add support for serving custom HTML when server is closed | |
97 | * Add support for timezones (currently only GMT) | |
98 | * Add support for public holidays | |
99 | * Add support to respect the time zone of the visitor and not just the | |
100 | server | |
101 | ||
102 | [astyle]: http://astyle.sourceforge.net | |
103 | [nginx]: https://nginx.org/en/download.html | |
104 | [nginx-guide]: https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/#sources | |
105 | [nginx-module-docs]: https://www.nginx.com/resources/wiki/extending/ |