Browse Source

first commit

master
p220478 2 years ago
commit
84c2720ade
  1. 5
      .gitignore
  2. 35
      .travis.yml
  3. BIN
      0.1.1.tar.gz
  4. 26
      LICENSE
  5. 3
      MANIFEST.in
  6. 27
      README.md
  7. 21
      bootswatch.LICENSE
  8. 255
      conf.py
  9. 1
      docs/about.md
  10. 65
      docs/docker.md
  11. 45
      docs/drone.md
  12. 23
      docs/examples.md
  13. 11
      docs/git.md
  14. 213
      docs/index.md
  15. 243
      docs/index.md.1
  16. 443
      docs/kubernetes.md
  17. 10
      docs/rancher-err.md
  18. 4
      docs/rancher2.md
  19. BIN
      docs/screenshots/amelia.png
  20. BIN
      docs/screenshots/cerulean.png
  21. BIN
      docs/screenshots/cosmo.png
  22. BIN
      docs/screenshots/cyborg.png
  23. BIN
      docs/screenshots/flatly.png
  24. BIN
      docs/screenshots/journal.png
  25. BIN
      docs/screenshots/readable.png
  26. BIN
      docs/screenshots/simplex.png
  27. BIN
      docs/screenshots/slate.png
  28. BIN
      docs/screenshots/spacelab.png
  29. BIN
      docs/screenshots/united.png
  30. BIN
      docs/screenshots/yeti.png
  31. 4
      docs/sub-dir/sub-dir-2/sub-page-2.md
  32. 6
      docs/sub-dir/sub-page.md
  33. 6
      mkdocs-bootstrap/.gitignore
  34. 26
      mkdocs-bootstrap/LICENSE
  35. 3
      mkdocs-bootstrap/MANIFEST.in
  36. 0
      mkdocs-bootstrap/mkdocs_bootstrap/__init__.py
  37. 68
      mkdocs-bootstrap/mkdocs_bootstrap/base.html
  38. 9
      mkdocs-bootstrap/mkdocs_bootstrap/content.html
  39. 113
      mkdocs-bootstrap/mkdocs_bootstrap/css/base.css
  40. 7
      mkdocs-bootstrap/mkdocs_bootstrap/css/bootstrap-3.0.3.min.css
  41. 1338
      mkdocs-bootstrap/mkdocs_bootstrap/css/font-awesome-4.0.3.css
  42. 125
      mkdocs-bootstrap/mkdocs_bootstrap/css/highlight.css
  43. BIN
      mkdocs-bootstrap/mkdocs_bootstrap/fonts/fontawesome-webfont.eot
  44. 414
      mkdocs-bootstrap/mkdocs_bootstrap/fonts/fontawesome-webfont.svg
  45. BIN
      mkdocs-bootstrap/mkdocs_bootstrap/fonts/fontawesome-webfont.ttf
  46. BIN
      mkdocs-bootstrap/mkdocs_bootstrap/fonts/fontawesome-webfont.woff
  47. BIN
      mkdocs-bootstrap/mkdocs_bootstrap/img/favicon.ico
  48. 20
      mkdocs-bootstrap/mkdocs_bootstrap/js/base.js
  49. 7
      mkdocs-bootstrap/mkdocs_bootstrap/js/bootstrap-3.0.3.min.js
  50. 2
      mkdocs-bootstrap/mkdocs_bootstrap/js/highlight.pack.js
  51. 6
      mkdocs-bootstrap/mkdocs_bootstrap/js/jquery-1.10.2.min.js
  52. 69
      mkdocs-bootstrap/mkdocs_bootstrap/nav.html
  53. 10
      mkdocs-bootstrap/mkdocs_bootstrap/toc.html
  54. 22
      mkdocs-bootstrap/setup.py
  55. 26
      mkdocs.yml
  56. 24
      mkdocs.yml2
  57. 26
      mkdocs.yml~
  58. 0
      mkdocs_bootswatch/__init__.py
  59. 12
      mkdocs_bootswatch/amelia/404.html
  60. 0
      mkdocs_bootswatch/amelia/__init__.py
  61. 97
      mkdocs_bootswatch/amelia/base.html
  62. 9
      mkdocs_bootswatch/amelia/content.html
  63. 295
      mkdocs_bootswatch/amelia/css/base.css
  64. 1
      mkdocs_bootswatch/amelia/css/bootstrap-custom.min.css
  65. 4
      mkdocs_bootswatch/amelia/css/font-awesome-4.5.0.css
  66. 107
      mkdocs_bootswatch/amelia/css/highlight.css
  67. BIN
      mkdocs_bootswatch/amelia/fonts/FontAwesome.otf
  68. BIN
      mkdocs_bootswatch/amelia/fonts/fontawesome-webfont.eot
  69. 655
      mkdocs_bootswatch/amelia/fonts/fontawesome-webfont.svg
  70. BIN
      mkdocs_bootswatch/amelia/fonts/fontawesome-webfont.ttf
  71. BIN
      mkdocs_bootswatch/amelia/fonts/fontawesome-webfont.woff
  72. BIN
      mkdocs_bootswatch/amelia/fonts/fontawesome-webfont.woff2
  73. BIN
      mkdocs_bootswatch/amelia/img/favicon.ico
  74. 92
      mkdocs_bootswatch/amelia/js/base.js
  75. 7
      mkdocs_bootswatch/amelia/js/bootstrap-3.0.3.min.js
  76. 2
      mkdocs_bootswatch/amelia/js/highlight.pack.js
  77. 6
      mkdocs_bootswatch/amelia/js/jquery-1.10.2.min.js
  78. 41
      mkdocs_bootswatch/amelia/keyboard-modal.html
  79. 10
      mkdocs_bootswatch/amelia/main.html
  80. 7
      mkdocs_bootswatch/amelia/mkdocs_theme.yml
  81. 14
      mkdocs_bootswatch/amelia/nav-sub.html
  82. 103
      mkdocs_bootswatch/amelia/nav.html
  83. 24
      mkdocs_bootswatch/amelia/search-modal.html
  84. 10
      mkdocs_bootswatch/amelia/toc.html
  85. 12
      mkdocs_bootswatch/cerulean/404.html
  86. 0
      mkdocs_bootswatch/cerulean/__init__.py
  87. 97
      mkdocs_bootswatch/cerulean/base.html
  88. 9
      mkdocs_bootswatch/cerulean/content.html
  89. 293
      mkdocs_bootswatch/cerulean/css/base.css
  90. 1
      mkdocs_bootswatch/cerulean/css/bootstrap-custom.min.css
  91. 4
      mkdocs_bootswatch/cerulean/css/font-awesome-4.5.0.css
  92. 70
      mkdocs_bootswatch/cerulean/css/highlight.css
  93. BIN
      mkdocs_bootswatch/cerulean/fonts/FontAwesome.otf
  94. BIN
      mkdocs_bootswatch/cerulean/fonts/fontawesome-webfont.eot
  95. 655
      mkdocs_bootswatch/cerulean/fonts/fontawesome-webfont.svg
  96. BIN
      mkdocs_bootswatch/cerulean/fonts/fontawesome-webfont.ttf
  97. BIN
      mkdocs_bootswatch/cerulean/fonts/fontawesome-webfont.woff
  98. BIN
      mkdocs_bootswatch/cerulean/fonts/fontawesome-webfont.woff2
  99. BIN
      mkdocs_bootswatch/cerulean/img/favicon.ico
  100. 92
      mkdocs_bootswatch/cerulean/js/base.js

5
.gitignore

@ -0,0 +1,5 @@
*.pyc
dist/
mkdocs_bootswatch.egg-info/
site/
.tox

35
.travis.yml

@ -0,0 +1,35 @@
sudo: false
language: python
matrix:
fast_finish: true
include:
- python: 2.7
env: TOXENV=py27
- python: 3.3
env: TOXENV=py33
- python: 3.4
env: TOXENV=py34
- python: 3.5
env: TOXENV=py35
install:
- pip install tox
script:
- git clean -f -d -x
- tox
deploy:
provider: pypi
user: mkdocsdeploy
distributions: sdist bdist_wheel
password:
secure: 0HsKViPmpI13uG1wEeIQ6fRvdX4x1XZNufzQgMyhEDKj0Shuw5q7xt+KAuAULBpNbOZj1XzgdCmWxC6fZq2K5/Lm3aHZc2ZXDEhfVkIC8kCGCbPE/Ziq82CA2iyOWSdkLRdssaYebKeZy0qi41Y8Xxag7xGHo/atoUPL5Aegp6KBDJ6Q4160zyAmegy3XFR47m/43fyH5CoUlJf72Qf5/mhIVE0HqG/pYs8jpXX4I0ICJLmlx8UQNdAu2ikd1316XwTdl+VwRzZTfUpJtaN0vldGJ5cQKFU7Iil7jiPUuB5WVzZqYC87Y9/9XCwhwXAWQCt+AjDrhaFEaU0koDgUreIUE3xOBu7NeUqRZuR9aGbQgLvTcoLL6NcWVEJi9qtOynWPgVCjNUU/RyiNTXtPwGBjaeU5ZN7cUukLjaKwCNxglyj/kOo2AwlK9x54FdxCfCs07hjmoBHhQyHSTk+Lk/w6xAxI7pWOvM+oacUQaToWgq6FBnua5VfYVe92MECNCDB6Ua2DRsW3QZtLnQz6MQaJCBv3nIVw1QhQUWwHohfxidgq8F5wleEf2Bd+vTKXGFD0uTDzP6NKuc26cbm3nIJt5u8hCd/Sdc+gf+fP3N7fIgG0grmt6bbb8u5MiOBvKwfQjgFiN9Xt3KGwWQowpOfUfYOD23sWX0nxnaLaAJA=
on:
tags: true
repo: mkdocs/mkdocs-bootswatch
condition: "$TOXENV = py35"
after_deploy:
- git config user.name "Dougal Matthews"
- git config user.email "dougal@dougalmatthews.com"
- git remote add gh-token "https://${GH_TOKEN}@github.com/mkdocs/mkdocs-bootswatch.git";
- git fetch gh-token && git fetch gh-token gh-pages:gh-pages;
- pip install mkdocs -U;
- mkdocs gh-deploy -v --clean --remote-name gh-token;

BIN
0.1.1.tar.gz

26
LICENSE

@ -0,0 +1,26 @@
Copyright © 2015, Dougal Matthews. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

3
MANIFEST.in

@ -0,0 +1,3 @@
recursive-include mkdocs_bootswatch *.ico *.js *.css *.png *.html *.eot *.svg *.ttf *.woff
recursive-exclude * __pycache__
recursive-exclude * *.py[co]

27
README.md

@ -0,0 +1,27 @@
# MkDocs Bootswatch Themes
See the documentation for more details:
http://mkdocs.github.io/mkdocs-bootswatch/
[![PyPI Downloads][pypi-dl-image]][pypi-dl-link]
[![PyPI Version][pypi-v-image]][pypi-v-link]
[![Build Status][travis-image]][travis-link]
[pypi-dl-image]: https://img.shields.io/pypi/dm/mkdocs-bootswatch.svg
[pypi-dl-link]: https://pypi.python.org/pypi/mkdocs-bootswatch
[pypi-v-image]: https://img.shields.io/pypi/v/mkdocs-bootswatch.svg
[pypi-v-link]: https://pypi.python.org/pypi/mkdocs-bootswatch
[travis-image]: https://img.shields.io/travis/mkdocs/mkdocs-bootswatch/master.svg
[travis-link]: https://travis-ci.org/mkdocs/mkdocs-bootswatch
## Contributing
Any contributions should make changes to the files in the `src` directory. Files
in the `src/_base` directory are common to all themes and any files in the
`src/<theme name>` directory are specific to `<theme name>`.
After the `src` files are updated, run the command `python setup.py gen_themes`,
which will update the compiled themes in the `mkdocs_bootswatch` directory. When
preparing a patch (pull request), be sure to include the changes in both the
`src` directory and the `mkdocs_bootswatch` directory.

21
bootswatch.LICENSE

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2013 Thomas Park
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

255
conf.py

@ -0,0 +1,255 @@
# -*- coding: utf-8 -*-
#
# Sphinx RTD theme demo documentation build configuration file, created by
# sphinx-quickstart on Sun Nov 3 11:56:36 2013.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
sys.path.append(os.path.abspath('.'))
sys.path.append(os.path.abspath('./test_py_module'))
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.mathjax',
'sphinx.ext.viewcode',
]
# Math
mathjax_path = "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Read The Docs'
copyright = u'2017, Read The Docs'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '0.2.1'
# The full version, including alpha/beta/rc tags.
release = '0.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
html_theme_options = {
# 'sticky_navigation': True # Set to False to disable the sticky nav while scrolling.
# 'logo_only': True, # if we have a html_logo below, this shows /only/ the logo with no title text
}
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = ["../.."]
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
#html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'SphinxRTDthemedemodoc'
# -- Options for LaTeX output --------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'SphinxRTDthemedemo.tex', u'Sphinx RTD theme demo Documentation',
u'Dave Snider', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'sphinxrtdthemedemo', u'Sphinx RTD theme demo Documentation',
[u'Dave Snider'], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output ------------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'SphinxRTDthemedemo', u'Sphinx RTD theme demo Documentation',
u'Dave Snider', 'SphinxRTDthemedemo', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'

1
docs/about.md

@ -0,0 +1 @@
### What

65
docs/docker.md

@ -0,0 +1,65 @@
## Docker@RUG
Vraag een API aan via webhosting.cit@rug.nl voor toegang tot de docker test omgeving.
#Docker run debug
```
$ docker run --rm -it -p "":80 registry.webhosting.rug.nl/username/name:latest
```
# Download composer :
````
Linux :
https://releases.rancher.com/compose/v0.12.5/rancher-compose-linux-amd64-v0.12.5.tar.gz
Windows :
https://releases.rancher.com/compose/v0.12.5/rancher-compose-windows-386-v0.12.5.zip
Mac OS X :
https://releases.rancher.com/compose/v0.12.5/rancher-compose-darwin-amd64-v0.12.5.tar.gz
````
# Download cli :
````
Linux :
https://releases.rancher.com/cli/v0.6.3/rancher-linux-amd64-v0.6.3.tar.gz
Windows :
https://releases.rancher.com/cli/v0.6.3/rancher-windows-386-v0.6.3.zip
Mac OS X :
https://releases.rancher.com/cli/v0.6.3/rancher-darwin-amd64-v0.6.3.tar.gz
````
#Connect by cli :
````
tar xvzf rancher-linux-amd64-v0.6.3.tar.gz
cd rancher-v0.6.3
./rancher --url https://webhost12.service.rug.nl:8080/v1 --access-key 12345678 --secret-key zeergeheim --env 111 --host dcktest001 docker cmd
create alias :
echo "rcl=~/directory/rancher-v0.6.3/rancher --url https://webhost12.service.rug.nl:8080/v1 --access-key 12345678 --secret-key zeergeheim --env 111" > .bashrc
. bashrc
rcl --host dcktest00{1,2} docker cmd
````
## Registry
<a href="https://registry.webhosting.rug.nl" target="_blank">https://registry.webhosting.rug.nl</a>
login private registry
```
$ docker login registry.webhosting.rug.nl
```
# Build tag push
````
$ cd docker-build-directory
$ docker build -t name .
$ docker tag name:latest registry.webhosting.rug.nl/username/name:latest
$ docker push registry.webhosting.rug.nl/username/name:latest
````

45
docs/drone.md

@ -0,0 +1,45 @@
### Drone is a Continuous Delivery platform built on Docker
URL : <a href="https://drone.webhosting.rug.nl" target="_blank">https://drone.webhosting.rug.nl</a>
```
login with you're git credentials -> https://git.webhosting.rug.nl
```
#### Howto build
````
choose a repository from GIT
Enter the build
Go to the menu and add the secrets en registry
example :
docker_username = test
docker_password = secret
````
#### example drone.yml
````
cat > .drone.yml <<EOF
pipeline:
publish:
image: plugins/docker
secrets: [ docker_username, docker_password ]
registry: registry.webhosting.rug.nl
repo: registry.webhosting.rug.nl/webhosting/debian-web5
file: Dockerfile
tag:
- latest
notify:
image: drillster/drone-email
host: mail-server
port: 25
skip_verify: true
from: drone@example.org
recipients: [ to@example.org ]
recipients_only: true
when:
status: [ success, changed, failure ]
EOF
````

23
docs/examples.md

@ -0,0 +1,23 @@
title: Examples
# Theme Examples
This page is full of examples so you can see how this theme renders different
aspects of the documentation.
## Code highlighting
Here is a Python code block.
```python
a,b = 0,1
def fib():
global a,b
while True:
a,b = b, a+b
yield a
```
This is an example of inline code: `f = fib()` and `f.next()`.
You can also use inline code as a link: [`index.md`](index.md)

11
docs/git.md

@ -0,0 +1,11 @@
#info
URL <a href="https://git.webhosting.rug.nl" target="_blank">https://git.webhosting.rug.nl</a>
set environment
```
$ account@ssh.webhosting.rug.nl
$ git config --global user.name "My Username"
$ git config --global user.email "email@rug.nl"
```

213
docs/index.md

@ -0,0 +1,213 @@
[![Docker Hub](https://img.shields.io/badge/docker-ready-blue.svg)](https://hub.docker.com/r/pengbai/docker-mkdocs/)
# RUG WEBHOSTING
* Docker domain hosting
* 5+ GB website space ( fair use policy )
* PHP support (Linux/Apache variant)
* ASP support (Windows/IIS variant)
The following options are available at an extra charge:
* expansion of web space (in consultation with CIT)
* e-mail addresses
* domain registration (.nl, .com, .org, .eu, etc.).
Since 2017 every new hosting domain is automatically a docker environment.
There's still a active connection between the old shared environment and the new one.
## HTTPS
The whole webhosting environment is behind several loadbalancers, force ssl does not work out of the box.
Because the internal communication between the loadbalancers (lb) and webservers are plain http.
If you force a website without the correct headers, the application will stay in a loop and fail.
The answer is simple , the webserver doesn't know that the request is secure! only the loadbalancer knows.
If we do a htaccess override, actually were telling the webserver , redirect once, if the Header HTTP:X-SSL-Enabled is true, don't do anything! otherwise redirect to https.
### Examples
standard
```
client http (80) <-> http (80) -> http (80) -> website (80)
```
or both
```
client https (443) <--> (443) -> http (80) -> website(80)
```
force https
```
client http (80) <-> force redirect https (443) -> http (80) -> website (80)
```
htaccess Override
```
# auto redirect to ssl, only for webhosting.rug.nl domains or with own certificates
<IfModule mod_rewrite.c>
RewriteEngine On
RequestHeader set HTTP:X-SSL-Enabled "true"
RewriteCond %{HTTP:X-SSL-Enabled} !true
RewriteRule (.*) https://domain.webhosting.rug.nl/$1 [R,L]
</IfModule>
```
wordpress https
```
Add the following to the wp-config.php
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'X-SSL-Enabled') != 'true') {
$_SERVER['HTTPS']='on';
}
If you get mixed content warnings, in the default theme.
edit the file : wp-content/themes/twentyseventeen/assets/images/svg-icons.svg
and replace http to https
old xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
new xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink">
```
## SSH
SSH provides a secure channel over an unsecured network in a client-server architecture, connecting an SSH client application with an SSH server.
Common applications include remote command-line login and remote command execution, but any network service can be secured with SSH.
Example Connection
```
ssh f-number@ssh.webhosting.rug.nl
```
Example Tunnel
```
ssh -L 8080:IP:80 f-number@ssh.webhosting.rug.nl -N 1
```
WEB
This only works with Two Factor Authentication
```
https://ssh.webhosting.rug.nl
```
Two factor auth
```
Put two files inside you're homedir/.ssh folder
mobile_number and email_address
$ cat ~/.ssh/mobile_number
0612345678
$ cat ~/.ssh/email_address
email@rug.nl
```
Aps
```
filezilla
putty
wincp
ducky
ssh
```
## MYSQL
PHPmyAdmin
```
https://mysql.webhosting.rug.nl
```
CLI dump database
```
$ ssh account@ssh.webhosting.rug.nl
$ mysqldump --host mysql01.service.rug.nl -u account -p -D database \
| gzip -c | > ~/backup/database.sql.gz
```
CLI restore database
```
$ ssh account@ssh.webhosting.rug.nl
$ gunzip < ~/backup/database.sql.gz | mysql --host mysql01.service.rug.nl \
-u account -p database > ~/backup/database.sql
```
CLI optimize database
```
$ ssh account@ssh.webhosting.rug.nl
$ mysqloptimze --host mysql01.service.rug.nl -u account -p -D database
```
CLI enter database
```
$ ssh account@ssh.webhosting.rug.nl
$ mysql --host mysql01.service.rug.nl -u account -p
```
CLI remote access database
```
$ ssh -L 3306:mysql01.service.rug.nl:3306 account@ssh.webhosting.rug.nl -N 1
$ mysql --host localhost -u account -p
```
## POSTGRES
phpPgAdmin
<a href="https://psql.webhosting.rug.nl" target="_blank">https://psql.webhosting.rug.nl</a>
## PHP
$ cat ~\site\.htaccess
Override upload filesize
```
<IfModule mod_php5.c>
php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 200
php_value max_input_time 200
</IfModule>
```
Override memory limit
```
<IfModule mod_php5.c>
php_value memory_limit 64M
</IfModule>
```
Access
```
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^129\.125\.
RewriteCond %{REMOTE_ADDR} !^77\.43\.20\.
RewriteCond %{REMOTE_ADDR} !^10\.9\.
RewriteRule ^(.*)$ - [R=403,L]
```

243
docs/index.md.1

@ -0,0 +1,243 @@
[![Docker Hub](https://img.shields.io/badge/docker-ready-blue.svg)](https://hub.docker.com/r/pengbai/docker-mkdocs/)
# RUG WEBHOSTING
* Docker domain hosting
* 5+ GB website space ( fair use policy )
* PHP support (Linux/Apache variant)
* ASP support (Windows/IIS variant)
The following options are available at an extra charge:
* expansion of web space (in consultation with CIT)
* e-mail addresses
* domain registration (.nl, .com, .org, .eu, etc.).
Since 2017 every new hosting domain is automatically a docker environment.
There's still a active connection between the old shared environment and the new one.
## HTTPS
The whole webhosting environment is behind several loadbalancers, force ssl does not work out of the box.
Because the internal communication between the loadbalancers (lb) and webservers are plain http.
If you force a website without the correct headers, the application will stay in a loop and fail.
The answer is simple , the webserver doesn't know that the request is secure! only the loadbalancer knows.
If we do a htaccess override, actually were telling the webserver , redirect once, if the Header HTTP:X-SSL-Enabled is true, don't do anything! otherwise redirect to https.
### Examples
standard
```
client http (80) <-> http (80) -> http (80) -> website (80)
```
or both
```
client https (443) <--> (443) -> http (80) -> website(80)
```
force https
```
client http (80) <-> force redirect https (443) -> http (80) -> website (80)
```
htaccess Override
```
# auto redirect to ssl, only for webhosting.rug.nl domains or with own certificates
<IfModule mod_rewrite.c>
RewriteEngine On
RequestHeader set HTTP:X-SSL-Enabled "true"
RewriteCond %{HTTP:X-SSL-Enabled} !true
RewriteRule (.*) https://domain.webhosting.rug.nl/$1 [R,L]
</IfModule>
```
wordpress https
```
Download the plugin simple ssl and enable https
Do not force an https override by htaccess!
```
## SSH
SSH provides a secure channel over an unsecured network in a client-server architecture, connecting an SSH client application with an SSH server.
Common applications include remote command-line login and remote command execution, but any network service can be secured with SSH.
Example Connection
```
ssh f-number@ssh.webhosting.rug.nl
```
Example Tunnel
```
ssh -L 8080:IP:80 f-number@ssh.webhosting.rug.nl -N 1
```
WEB
This only works with Two Factor Authentication
```
https://ssh.webhosting.rug.nl
```
Two factor auth
```
Put two files inside you're homedir/.ssh folder
mobile_number and email_address
$ cat ~/.ssh/mobile_number
0612345678
$ cat ~/.ssh/email_address
email@rug.nl
```
Aps
```
filezilla
putty
wincp
ducky
ssh
```
## MYSQL
PHPmyAdmin
```
https://mysql.webhosting.rug.nl
```
CLI dump database
```
$ ssh account@ssh.webhosting.rug.nl
$ mysqldump --host mysql01.service.rug.nl -u account -p -D database \
| gzip -c | > ~/backup/database.sql.gz
```
CLI restore database
```
$ ssh account@ssh.webhosting.rug.nl
$ gunzip < ~/backup/database.sql.gz | mysql --host mysql01.service.rug.nl \
-u account -p database > ~/backup/database.sql
```
CLI optimize database
```
$ ssh account@ssh.webhosting.rug.nl
$ mysqloptimze --host mysql01.service.rug.nl -u account -p -D database
```
CLI enter database
```
$ ssh account@ssh.webhosting.rug.nl
$ mysql --host mysql01.service.rug.nl -u account -p
```
CLI remote access database
```
$ ssh -L 3306:mysql01.service.rug.nl:3306 account@ssh.webhosting.rug.nl -N 1
$ mysql --host localhost -u account -p
```
## POSTGRES
phpPgAdmin
<a href="https://psql.webhosting.rug.nl" target="_blank">https://psql.webhosting.rug.nl</a>
## PHP
$ cat ~\site\.htaccess
Override upload filesize
```
<IfModule mod_php5.c>
php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 200
php_value max_input_time 200
</IfModule>
```
Override memory limit
```
<IfModule mod_php5.c>
php_value memory_limit 64M
</IfModule>
```
Access
```
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^129\.125\.
RewriteCond %{REMOTE_ADDR} !^77\.43\.20\.
RewriteCond %{REMOTE_ADDR} !^10\.9\.
RewriteRule ^(.*)$ - [R=403,L]
```
## GIT
URL
<a href="https://git.webhosting.rug.nl" target="_blank">https://git.webhosting.rug.nl</a>
set environment
```
$ account@ssh.webhosting.rug.nl
$ git config --global user.name "My Username"
$ git config --global user.email "email@rug.nl"
```
## DOCKER
REGISTRY URL
<a href="https://registry.webhosting.rug.nl" target="_blank">https://registry.webhosting.rug.nl</a>
login private registry
```
$ docker login registry.webhosting.rug.nl
```
create tag push
```
$ cd docker-build-directory
$ docker build -t name .
$ docker tag name:latest registry.webhosting.rug.nl/username/name:latest
$ docker push registry.webhosting.rug.nl/username/name:latest
```
docker run debug
```
$ docker run --rm -it -p "":80 registry.webhosting.rug.nl/username/name:latest
```

443
docs/kubernetes.md

@ -0,0 +1,443 @@
# KUBERNETES@RUG
## Access
Vraag een API aan via webhosting.cit@rug.nl voor toegang tot de kubernetes test omgeving.
````
cat > .kube/config <<EOF
apiVersion: v1
kind: Config
clusters:
- name: "example"
cluster:
server: "https://example.rug.nl:1234"
api-version: v1
users:
- name: "user-test"
user:
token: "user-example:asdkfljfiwejlakjkdlasdakljdiwqdjiqw&$"
contexts:
- name: "example"
context:
user: "user-example"
cluster: "example"
current-context: "example"
EOF
````
## Ingress Controller (edit)
Steps :
````
kubectl --namespace=<namespace> get ingress
kubectl --namespace=<namespace> get ingress | grep <name>
kubectl edit --namespace=<namespace> ingress <name>
Adjust some values :
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 10m
nginx.ingress.kubernetes.io/proxy-connect-timeout: "120"
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
save/quit
````
## Ingress WhiteList
````
kubectl edit ingress ....
# add annotation
nginx.ingress.kubernetes.io/whitelist-source-range = "1.1.1.1/24"
````
## Ingress Basic Auth
````
htpasswd -c passfile foo
kubectl create secret generic basic-auth --from-file=passfile
````
check secret
````
kubectl get secret basic-auth -o yaml
````
edit ingress
````
kubectl edit ingress example
metadata:
name: ingress-with-auth
annotations:
# type of authentication
nginx.ingress.kubernetes.io/auth-type: basic
# name of the secret that contains the user/password definitions
nginx.ingress.kubernetes.io/auth-secret: basic-auth
# message to display with an appropriate context why the authentication is required
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - foo'
````
## Edit Deployment
Steps :
````
kubectl --namespace=<namespace> get deployments
kubectl --namespace=<namespace> get deployment | grep <name>
kubectl edit --namespace=<namespace> deployments <name>
Adjust some values :
hostAliases:
- hostnames:
- example.com
ip: 127.0.0.1
save/quit
````
## Register SSL test environment ( only with public IP )
Register SSL with letsencrypt-issuer
````
cat > nginx.yml <<EOF
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: example-rug-nl
namespace: default
spec:
secretName: letsencrypt-issuer-tls
issuerRef:
name: letsencrypt-issuer
dnsNames:
- example.rug.nl
acme:
config:
- http01:
ingress: nginx
domains:
- example.rug.nl
EOF
````
kubectl apply -f nginx.yml
## Simple deployment
````
cat > simple.yml <<EOF
metadata:
name: nginx-service-example-rug-nl
spec:
replicas: 1
selector:
k8s-app: nginx-service-example-rug-nl
template:
metadata:
labels:
k8s-app: nginx-service-example-rug-nl
spec:
terminationGracePeriodSeconds: 60
containers:
- name: nginx-service-example-rug-nl
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: host-based-ingress
spec:
rules:
- host: example.rug.nl
http:
paths:
- backend:
serviceName: nginx-service-example-rug-nl
servicePort: 80
EOF
````
kubectl -f simple.yml
## PersistentVolume
````
cat > pv.yml <<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
name: user
labels:
name: nfs4
spec:
storageClassName: nfs-class
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
server: 1.2.3.4
path: /
EOF
````
kubectl apply -f pv.yml
## PersistentVolumeClaim
````
cat > pvc.yml <<EOF
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: user
spec:
storageClassName: nfs-class
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
EOF
````
kubectl apply -f pvc.yaml
## Service
````
cat > service.yml <<EOF
apiVersion: v1
kind: Service
metadata:
name: service-name
labels:
app: service-name
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: service-name
EOF
````
kubectl apply -f service.yml
## Deployment
````
cat > deploy.yml <<EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: example
labels:
app: example
spec:
replicas: 1
selector:
matchLabels:
app: example
minReadySeconds: 10
template:
metadata:
labels:
app: example
version: v0.2
spec:
terminationGracePeriodSeconds: 60
containers:
- name: example
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
protocol: TCP
env:
- name: WEBSERVER
value: NGINX
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 80
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 2
successThreshold: 2
timeoutSeconds: 2
tty: true
volumeMounts:
- mountPath: /var/www
name: user
dnsPolicy: ClusterFirst
hostAliases:
- hostnames:
- example.rug.nl
ip: 127.0.0.1
imagePullSecrets:
- name: registry
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
volumes:
- name: user
persistentVolumeClaim:
claimName: user
EOF
````
kubectl apply -f deploy.yml
## HTTPS
````
cat > https.yml <<EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/ssl-redirect: "true"
name: example
namespace: default
spec:
rules:
- host: example.rug.nl
http:
paths:
- backend:
serviceName: example
servicePort: 80
tls:
- secretName: letsencrypt-issuer-tls
hosts:
- example.rug.nl
EOF
````
kubectl -f apply https.yml
## Ingress annotations
### redirect SSL
````
nginx.ingress.kubernetes.io/server-snippet =
if ($http_x_ssl_enabled != "true") {
rewrite ^ https://$host$request_uri? permanent;
}
````
### Ingress app root
Set application root to /wp
````
nginx.ingress.kubernetes.io/app-root = /wp
````
### Ingress app root force https
Set application root to /wp
````
nginx.ingress.kubernetes.io/app-root = /wp
nginx.ingress.kubernetes.io/force-ssl-redirect = true
````
## Cheat sheet
````
### cluster
kubectl get services # List all services
kubectl get pods # List all pods
kubectl get nodes -w # Watch nodes continuously
kubectl version # Get version information
kubectl cluster-info # Get cluster information
kubectl config view # Get the configuration
kubectl describe node <node> # Output information about a node
### pod and container
kubectl get pods # List the current pods
kubectl describe pod <name> # Describe pod <name>
kubectl get rc # List the replication controllers
kubectl get rc --namespace="<namespace>" # List the replication controllers in <namespace>
kubectl describe rc <name> # Describe replication controller <name>
kubectl get svc # List the services
kubectl describe svc <name> # Describe service <name>
### interacting
kubectl run <name> --image=<image-name> # Launch a pod called <name>
# using image <image-name>
kubectl create -f <manifest.yaml> # Create a service described
# in <manifest.yaml>
kubectl scale --replicas=<count> rc <name> # Scale replication controller
# <name> to <count> instances
kubectl expose rc <name> --port=<external> --target-port=<internal> # Map port <external> to
# port <internal> on replication
# controller <name>
### stopping
kubectl delete pod <name> # Delete pod <name>
kubectl delete rc <name> # Delete replication controller <name>
kubectl delete svc <name> # Delete service <name>
kubectl drain <n> --delete-local-data --force --ignore-daemonsets # Stop all pods on <n>
kubectl delete node <name>
### administration
kubeadm init # Initialize your master node
kubeadm join --token <token> <master-ip>:<master-port> # Join a node to your Kubernetes cluster
kubectl create namespace <namespace> # Create namespace <name>
kubectl taint nodes --all node-role.kubernetes.io/master- # Allow Kubernetes master nodes to run pods
kubeadm reset # Reset current state
kubectl get secrets
````

10
docs/rancher-err.md

@ -0,0 +1,10 @@
# Api Server
````
Failed to communicate with API server: Get https:///api/v1/componentstatuses?timeout=30s: waiting for cluster agent to connect :
ssh to the node and remove k8s_agent_cattle-node-agent
docker ps | grep -i agent
docker rmi $ID
````

4
docs/rancher2.md

@ -0,0 +1,4 @@
# Rancher
````
````

BIN
docs/screenshots/amelia.png

After

Width: 1037  |  Height: 567  |  Size: 67 KiB

BIN
docs/screenshots/cerulean.png

After

Width: 1037  |  Height: 567  |  Size: 64 KiB

BIN
docs/screenshots/cosmo.png

After

Width: 1037  |  Height: 567  |  Size: 74 KiB

BIN
docs/screenshots/cyborg.png

After

Width: 1037  |  Height: 567  |  Size: 64 KiB

BIN
docs/screenshots/flatly.png

After

Width: 1037  |  Height: 567  |  Size: 75 KiB

BIN
docs/screenshots/journal.png

After

Width: 1037  |  Height: 567  |  Size: 64 KiB

BIN
docs/screenshots/readable.png

After

Width: 1037  |  Height: 567  |  Size: 69 KiB

BIN
docs/screenshots/simplex.png

After

Width: 1037  |  Height: 567  |  Size: 60 KiB

BIN
docs/screenshots/slate.png

After

Width: 1037  |  Height: 567  |  Size: 72 KiB

BIN
docs/screenshots/spacelab.png

After

Width: 1037  |  Height: 567  |  Size: 71 KiB

BIN
docs/screenshots/united.png

After

Width: 1037  |  Height: 567  |  Size: 60 KiB

BIN
docs/screenshots/yeti.png

After

Width: 1037  |  Height: 567  |  Size: 72 KiB

4
docs/sub-dir/sub-dir-2/sub-page-2.md

@ -0,0 +1,4 @@
# Sub Page 2
This page is simply here to demonstrate multiple levels of navigation in the
theme.

6
docs/sub-dir/sub-page.md

@ -0,0 +1,6 @@
title: Sub page
# Sub Page 1
This page is simply here to demonstrate multiple levels of navigation in the
theme.

6
mkdocs-bootstrap/.gitignore

@ -0,0 +1,6 @@
dist/
htmlcov/
.tox/
mkdocs_bootstrap.egg-info/
*.pyc
.coverage

26
mkdocs-bootstrap/LICENSE

@ -0,0 +1,26 @@
Copyright © 2015, Dougal Matthews. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

3
mkdocs-bootstrap/MANIFEST.in

@ -0,0 +1,3 @@
recursive-include mkdocs_bootstrap *.ico *.js *.css *.png *.html *.eot *.svg *.ttf *.woff
recursive-exclude * __pycache__
recursive-exclude * *.py[co]

0
mkdocs-bootstrap/mkdocs_bootstrap/__init__.py

68
mkdocs-bootstrap/mkdocs_bootstrap/base.html

@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% if page_description %}<meta name="description" content="{{ page_description }}">{% endif %}
{% if site_author %}<meta name="author" content="{{ site_author }}">{% endif %}
{% if canonical_url %}<link rel="canonical" href="{{ canonical_url }}">{% endif %}
{% if favicon %}<link rel="shortcut icon" href="{{ favicon }}">
{% else %}<link rel="shortcut icon" href="{{ base_url }}/img/favicon.ico">{% endif %}
<title>{% if page_title %}{{ page_title }} - {% endif %}{{ site_name }}</title>
<link href="{{ base_url }}/css/bootstrap-3.0.3.min.css" rel="stylesheet">
<link href="{{ base_url }}/css/font-awesome-4.0.3.css" rel="stylesheet">
<link rel="stylesheet" href="{{ base_url }}/css/highlight.css">
<link href="{{ base_url }}/css/base.css" rel="stylesheet">
{%- for path in extra_css %}
<link href="{{ path }}" rel="stylesheet">
{%- endfor %}
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
{% if google_analytics %}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '{{ google_analytics[0] }}', '{{ google_analytics[1] }}');
ga('send', 'pageview');
</script>
{% endif %}
</head>
<body>
{% include "nav.html" %}
<div class="container">
<div class="col-md-3">{% include "toc.html" %}</div>
<div class="col-md-9" role="main">{% include "content.html" %}</div>
</div>
<footer class="col-md-12">
<hr>
{% if copyright %}
<center>{{ copyright }}</center>
{% endif %}
<center>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</center>
</footer>
<script src="{{ base_url }}/js/jquery-1.10.2.min.js"></script>
<script src="{{ base_url }}/js/bootstrap-3.0.3.min.js"></script>
<script src="{{ base_url }}/js/highlight.pack.js"></script>
<script src="{{ base_url }}/js/base.js"></script>
{%- for path in extra_javascript %}
<script src="{{ path }}"></script>
{%- endfor %}
</body>
</html>

9
mkdocs-bootstrap/mkdocs_bootstrap/content.html

@ -0,0 +1,9 @@
{% if meta.source %}
<div class="source-links">
{% for filename in meta.source %}
<span class="label label-primary">{{ filename }}</span>
{% endfor %}
</div>
{% endif %}
{{ content }}

113
mkdocs-bootstrap/mkdocs_bootstrap/css/base.css

@ -0,0 +1,113 @@
body {
padding-top: 70px;
}
h1[id]:before, h2[id]:before, h3[id]:before, h4[id]:before, h5[id]:before, h6[id]:before {
content: "";
display: block;
margin-top: -75px;
height: 75px;
}
ul.nav li.main {
font-weight: bold;
}
div.col-md-3 {
padding-left: 0;
}
div.col-md-9 {
padding-bottom: 100px;
}
div.source-links {
float: right;
}
/*
* Side navigation
*
* Scrollspy and affixed enhanced navigation to highlight sections and secondary
* sections of docs content.
*/
/* By default it's not affixed in mobile views, so undo that */
.bs-sidebar.affix {
position: static;
}
.bs-sidebar.well {
padding: 0;
}
/* First level of nav */
.bs-sidenav {
margin-top: 30px;
margin-bottom: 30px;
padding-top: 10px;
padding-bottom: 10px;
border-radius: 5px;
}
/* All levels of nav */
.bs-sidebar .nav > li > a {
display: block;
padding: 5px 20px;
z-index: 1;
}
.bs-sidebar .nav > li > a:hover,
.bs-sidebar .nav > li > a:focus {
text-decoration: none;
border-right: 1px solid;
}
.bs-sidebar .nav > .active > a,
.bs-sidebar .nav > .active:hover > a,
.bs-sidebar .nav > .active:focus > a {
font-weight: bold;
background-color: transparent;
border-right: 1px solid;
}
/* Nav: second level (shown on .active) */
.bs-sidebar .nav .nav {
display: none; /* Hide by default, but at >768px, show it */
margin-bottom: 8px;
}
.bs-sidebar .nav .nav > li > a {
padding-top: 3px;
padding-bottom: 3px;
padding-left: 30px;
font-size: 90%;
}
/* Show and affix the side nav when space allows it */
@media (min-width: 992px) {
.bs-sidebar .nav > .active > ul {
display: block;
}
/* Widen the fixed sidebar */
.bs-sidebar.affix,
.bs-sidebar.affix-bottom {
width: 213px;
}
.bs-sidebar.affix {
position: fixed; /* Undo the static from mobile first approach */
top: 80px;
}
.bs-sidebar.affix-bottom {
position: absolute; /* Undo the static from mobile first approach */
}
.bs-sidebar.affix-bottom .bs-sidenav,
.bs-sidebar.affix .bs-sidenav {
margin-top: 0;
margin-bottom: 0;
}
}
@media (min-width: 1200px) {
/* Widen the fixed sidebar again */
.bs-sidebar.affix-bottom,
.bs-sidebar.affix {
width: 263px;
}
}

7
mkdocs-bootstrap/mkdocs_bootstrap/css/bootstrap-3.0.3.min.css
File diff suppressed because it is too large
View File

1338
mkdocs-bootstrap/mkdocs_bootstrap/css/font-awesome-4.0.3.css
File diff suppressed because it is too large
View File

125
mkdocs-bootstrap/mkdocs_bootstrap/css/highlight.css

@ -0,0 +1,125 @@
/*
This is the GitHub theme for highlight.js
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
color: #333;
-webkit-text-size-adjust: none;
}
.hljs-comment,
.diff .hljs-header,
.hljs-javadoc {
color: #998;
font-style: italic;
}
.hljs-keyword,
.css .rule .hljs-keyword,
.hljs-winutils,
.nginx .hl