rubyfu 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +96 -0
  3. data/Rakefile +1 -0
  4. data/_book/beginners.html +1299 -0
  5. data/_book/contribution.html +1350 -0
  6. data/_book/contributors/Ruby_Loves_Us.jpg +0 -0
  7. data/_book/contributors/index.html +1294 -0
  8. data/_book/contributors/todo.html +1293 -0
  9. data/_book/cover.jpg +0 -0
  10. data/_book/faqs/index.html +1308 -0
  11. data/_book/files/module03/dns_spoofing_dns-query.pcap +0 -0
  12. data/_book/files/module03/dns_spoofing_dns-req_res.pcap.pcapng +0 -0
  13. data/_book/files/module06/ftp.pcap +0 -0
  14. data/_book/files/module06/packets.pcap +0 -0
  15. data/_book/gitbook/app.js +25001 -0
  16. data/_book/gitbook/fonts/fontawesome/FontAwesome.otf +0 -0
  17. data/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot +0 -0
  18. data/_book/gitbook/fonts/fontawesome/fontawesome-webfont.svg +504 -0
  19. data/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf +0 -0
  20. data/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff +0 -0
  21. data/_book/gitbook/images/apple-touch-icon-precomposed-152.png +0 -0
  22. data/_book/gitbook/images/favicon.ico +0 -0
  23. data/_book/gitbook/plugins/gitbook-plugin-addcssjs/README.md +19 -0
  24. data/_book/gitbook/plugins/gitbook-plugin-addcssjs/index.js +57 -0
  25. data/_book/gitbook/plugins/gitbook-plugin-addcssjs/package.json +47 -0
  26. data/_book/gitbook/plugins/gitbook-plugin-anchors/plugin.css +26 -0
  27. data/_book/gitbook/plugins/gitbook-plugin-book-summary-scroll-position-saver/book-summary-scroll-position-saver.js +30 -0
  28. data/_book/gitbook/plugins/gitbook-plugin-expandable-chapters/expandable-chapters.css +28 -0
  29. data/_book/gitbook/plugins/gitbook-plugin-expandable-chapters/expandable-chapters.js +68 -0
  30. data/_book/gitbook/plugins/gitbook-plugin-fontsettings/buttons.js +151 -0
  31. data/_book/gitbook/plugins/gitbook-plugin-fontsettings/website.css +291 -0
  32. data/_book/gitbook/plugins/gitbook-plugin-highlight/ebook.css +131 -0
  33. data/_book/gitbook/plugins/gitbook-plugin-highlight/website.css +426 -0
  34. data/_book/gitbook/plugins/gitbook-plugin-search/lunr.min.js +7 -0
  35. data/_book/gitbook/plugins/gitbook-plugin-search/search.css +27 -0
  36. data/_book/gitbook/plugins/gitbook-plugin-search/search.js +135 -0
  37. data/_book/gitbook/plugins/gitbook-plugin-sharing/buttons.js +93 -0
  38. data/_book/gitbook/plugins/gitbook-plugin-splitter/splitter.css +22 -0
  39. data/_book/gitbook/plugins/gitbook-plugin-splitter/splitter.js +122 -0
  40. data/_book/gitbook/style.css +9 -0
  41. data/_book/googlec55db2d603c3da8b.html +1 -0
  42. data/_book/images/module02/Cryptography__wiringdiagram.png +0 -0
  43. data/_book/images/module02/packaging__ocra1.png +0 -0
  44. data/_book/images/module03/dns_spoofing_wireshark1.png +0 -0
  45. data/_book/images/module03/dns_spoofing_wireshark2.png +0 -0
  46. data/_book/images/module04/webfu__post_form1.png +0 -0
  47. data/_book/images/module04/webfu__proxy2.png +0 -0
  48. data/_book/images/module04/webfu__twitterAPI1.png +0 -0
  49. data/_book/images/module04/webfu__xmlrpc1.png +0 -0
  50. data/_book/images/module05/msf_template1.png +0 -0
  51. data/_book/images/module06/win-foren__winreg1.png +0 -0
  52. data/_book/images/other/Ruby_Loves_Us.jpg +0 -0
  53. data/_book/images/other/cover.jpg +0 -0
  54. data/_book/images/other/cover_small.jpg +0 -0
  55. data/_book/images/other/logo.png +0 -0
  56. data/_book/images/other/rubyfu.png +0 -0
  57. data/_book/images/other/rubyfu1.png +0 -0
  58. data/_book/images/other/rubyfu3.png +0 -0
  59. data/_book/images/other/rubyfu4.png +0 -0
  60. data/_book/images/other/rubyfu_.png +0 -0
  61. data/_book/index.html +1284 -0
  62. data/_book/module_0x1__basic_ruby_kung_fu/array.html +1297 -0
  63. data/_book/module_0x1__basic_ruby_kung_fu/conversion.html +1386 -0
  64. data/_book/module_0x1__basic_ruby_kung_fu/extraction.html +1346 -0
  65. data/_book/module_0x1__basic_ruby_kung_fu/index.html +1367 -0
  66. data/_book/module_0x1__basic_ruby_kung_fu/string.html +1451 -0
  67. data/_book/module_0x2__system_kung_fu/command_execution.html +1348 -0
  68. data/_book/module_0x2__system_kung_fu/cryptography.html +1396 -0
  69. data/_book/module_0x2__system_kung_fu/email.html +1352 -0
  70. data/_book/module_0x2__system_kung_fu/file_manipulation.html +1371 -0
  71. data/_book/module_0x2__system_kung_fu/index.html +1557 -0
  72. data/_book/module_0x2__system_kung_fu/ncatrb.html +1424 -0
  73. data/_book/module_0x2__system_kung_fu/packaging.md +1 -0
  74. data/_book/module_0x2__system_kung_fu/packaging__ocra1.png +0 -0
  75. data/_book/module_0x2__system_kung_fu/parsing_html,_xml,_json.html +1395 -0
  76. data/_book/module_0x2__system_kung_fu/rce_as_a_service.html +1336 -0
  77. data/_book/module_0x2__system_kung_fu/smtp_enumeration.html +1308 -0
  78. data/_book/module_0x2__system_kung_fu/system_shell.html +1299 -0
  79. data/_book/module_0x2__system_kung_fu/virustotal.html +1318 -0
  80. data/_book/module_0x3__network_kung_fu/Remote_shell.md +19 -0
  81. data/_book/module_0x3__network_kung_fu/arp_spoofing.html +1420 -0
  82. data/_book/module_0x3__network_kung_fu/dns.html +1315 -0
  83. data/_book/module_0x3__network_kung_fu/dns_bruteforce.md +49 -0
  84. data/_book/module_0x3__network_kung_fu/dns_enumeration.html +1371 -0
  85. data/_book/module_0x3__network_kung_fu/dns_spoofing.html +1694 -0
  86. data/_book/module_0x3__network_kung_fu/dns_spoofing_wireshark2.png +0 -0
  87. data/_book/module_0x3__network_kung_fu/ftp.html +1287 -0
  88. data/_book/module_0x3__network_kung_fu/index.html +1392 -0
  89. data/_book/module_0x3__network_kung_fu/network_scanning.html +1339 -0
  90. data/_book/module_0x3__network_kung_fu/network_traffic_analysis.html +1356 -0
  91. data/_book/module_0x3__network_kung_fu/nmap.html +1355 -0
  92. data/_book/module_0x3__network_kung_fu/oracle_tns_enum1.png +0 -0
  93. data/_book/module_0x3__network_kung_fu/packet_manipulation.html +1386 -0
  94. data/_book/module_0x3__network_kung_fu/ruby_socket.html +1553 -0
  95. data/_book/module_0x3__network_kung_fu/snmp_enumeration.html +1314 -0
  96. data/_book/module_0x3__network_kung_fu/ssh.html +1461 -0
  97. data/_book/module_0x3__network_kung_fu/ssid_finder.html +1324 -0
  98. data/_book/module_0x3__network_kung_fu/tns_enumeration.html +1505 -0
  99. data/_book/module_0x4__web_kung_fu/browser_manipulation.html +1630 -0
  100. data/_book/module_0x4__web_kung_fu/databases.html +1531 -0
  101. data/_book/module_0x4__web_kung_fu/extending_burpsuite.html +1303 -0
  102. data/_book/module_0x4__web_kung_fu/index.html +1536 -0
  103. data/_book/module_0x4__web_kung_fu/interacting_with_apis.html +1271 -0
  104. data/_book/module_0x4__web_kung_fu/ruby2javascript.html +1303 -0
  105. data/_book/module_0x4__web_kung_fu/sql_injection_scanner.html +1489 -0
  106. data/_book/module_0x4__web_kung_fu/twitter_api.html +1328 -0
  107. data/_book/module_0x4__web_kung_fu/web_servcies_and_apis.html +1291 -0
  108. data/_book/module_0x4__web_kung_fu/web_server_and_proxy.html +1370 -0
  109. data/_book/module_0x4__web_kung_fu/web_services.html +1394 -0
  110. data/_book/module_0x4__web_kung_fu/webfu__burp-ext1.png +0 -0
  111. data/_book/module_0x4__web_kung_fu/webfu__burp-ext2.png +0 -0
  112. data/_book/module_0x4__web_kung_fu/webfu__burp_setenv1.png +0 -0
  113. data/_book/module_0x4__web_kung_fu/webfu__proxy2.png +0 -0
  114. data/_book/module_0x4__web_kung_fu/webfu__twitterAPI1.png +0 -0
  115. data/_book/module_0x4__web_kung_fu/webfu__xmlrpc1.png +0 -0
  116. data/_book/module_0x4__web_kung_fu/wordpress_api.html +1543 -0
  117. data/_book/module_0x5__exploitation_kung_fu/MSF-struct.png +0 -0
  118. data/_book/module_0x5__exploitation_kung_fu/auxiliary_module.html +1870 -0
  119. data/_book/module_0x5__exploitation_kung_fu/exploit_module.html +1523 -0
  120. data/_book/module_0x5__exploitation_kung_fu/extensions.html +1466 -0
  121. data/_book/module_0x5__exploitation_kung_fu/fuzzer.html +1325 -0
  122. data/_book/module_0x5__exploitation_kung_fu/index.html +1319 -0
  123. data/_book/module_0x5__exploitation_kung_fu/metasm.html +1322 -0
  124. data/_book/module_0x5__exploitation_kung_fu/metasploit.html +1441 -0
  125. data/_book/module_0x5__exploitation_kung_fu/meterpreter.html +1327 -0
  126. data/_book/module_0x5__exploitation_kung_fu/meterpreter_scripting.html +1318 -0
  127. data/_book/module_0x5__exploitation_kung_fu/msf_meter_railgun1.png +0 -0
  128. data/_book/module_0x5__exploitation_kung_fu/msf_template1.png +0 -0
  129. data/_book/module_0x5__exploitation_kung_fu/railgun_api_extension.html +1300 -0
  130. data/_book/module_0x6__forensic/android_forensic.html +1356 -0
  131. data/_book/module_0x6__forensic/index.html +1332 -0
  132. data/_book/module_0x6__forensic/parsing_log_files.html +1375 -0
  133. data/_book/module_0x6__forensic/win-foren__winreg1.png +0 -0
  134. data/_book/module_0x6__forensic/windows_forensic.html +1289 -0
  135. data/_book/package.json +5 -0
  136. data/_book/references/index.html +1338 -0
  137. data/_book/required_gems.html +1342 -0
  138. data/_book/rubyfu_.png +0 -0
  139. data/_book/search_index.json +1 -0
  140. data/_book/styles/ebook.css +1 -0
  141. data/_book/styles/epub.css +1 -0
  142. data/_book/styles/header.js +5 -0
  143. data/_book/styles/mobi.css +1 -0
  144. data/_book/styles/pdf.css +1 -0
  145. data/_book/styles/website.css +41 -0
  146. data/bin/rubyfu +48 -0
  147. data/lib/rubyfu.rb +36 -0
  148. data/lib/rubyfu/browse.rb +35 -0
  149. data/lib/rubyfu/version.rb +3 -0
  150. data/lib/rubyfu/webserver.rb +30 -0
  151. metadata +210 -0
@@ -0,0 +1,19 @@
1
+ # gitbook-plugin-addcssjs
2
+ Plugin for gitbook for adding external css and js files to the git book.
3
+
4
+ ## How to use
5
+ - Add addcssjs plugin to your book.json:
6
+
7
+
8
+ "plugins": [
9
+ "addcssjs"
10
+ ]
11
+ - Add plugin configuration specifying css and js files to include:
12
+
13
+
14
+ "pluginsConfig": {
15
+ "addcssjs": {
16
+ "js": ["js/custom.js"],
17
+ "css": ["css/custom.css"]
18
+ }
19
+ }
@@ -0,0 +1,57 @@
1
+ module.exports = {
2
+ book: {
3
+ assets: ".",
4
+ html: {
5
+ "head:end": function(current) {
6
+ var BASE_PATH, config, jsArray, cssArray, elements, i;
7
+
8
+ BASE_PATH = current.basePath === "." ? "" : current.basePath + "/";
9
+
10
+ config = this.options.pluginsConfig.addcssjs || {js: [], css: []};
11
+ jsArray = config.js || [];
12
+ cssArray = config.css || [];
13
+ elements = "";
14
+
15
+ /**
16
+ * Creates a full path for the given file name
17
+ *
18
+ * @param {String} fileName
19
+ * @returns {string}
20
+ */
21
+ var createPath = function (fileName) {
22
+ return BASE_PATH + fileName.replace("../", "");
23
+ };
24
+
25
+ /**
26
+ * Generates a script element for the given file name
27
+ *
28
+ * @param {String} fileName
29
+ * @returns {string}
30
+ */
31
+ var generateScriptElement = function (fileName) {
32
+ return "<script type=\"text/javascript\" src=\"" + createPath(fileName) + "\"></script>"
33
+ };
34
+
35
+ /**
36
+ * Generates a link element for the given file name
37
+ *
38
+ * @param {String} fileName
39
+ * @returns {string}
40
+ */
41
+ var generateLinkElement = function (fileName) {
42
+ return "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + createPath(fileName) + "\">";
43
+ };
44
+
45
+ for (i = 0; i < jsArray.length; i++) {
46
+ elements += generateScriptElement(jsArray[i]);
47
+ }
48
+
49
+ for (i = 0; i < cssArray.length; i++) {
50
+ elements += generateLinkElement(cssArray[i]);
51
+ }
52
+
53
+ return elements;
54
+ }
55
+ }
56
+ }
57
+ };
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "gitbook-plugin-addcssjs",
3
+ "version": "1.0.1",
4
+ "description": "Adds external CSS and JS files to the gitbook",
5
+ "keywords": [
6
+ "CSS",
7
+ "JS",
8
+ "gitbook"
9
+ ],
10
+ "author": {
11
+ "name": "Olga Filipova",
12
+ "email": "chudaol@gmail.com"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/chudaol/gitbook-plugin-addcssjs"
17
+ },
18
+ "engines": {
19
+ "gitbook": ">1.x.x"
20
+ },
21
+ "license": "MIT",
22
+ "gitHead": "ca6b9326af68ed3092ecaa8c7d2f7b9597da89d4",
23
+ "bugs": {
24
+ "url": "https://github.com/chudaol/gitbook-plugin-addcssjs/issues"
25
+ },
26
+ "_id": "gitbook-plugin-addcssjs@1.0.1",
27
+ "scripts": {},
28
+ "_shasum": "a0dd4a5c969ac52e3e1663d656f172a4fa70490f",
29
+ "_from": "gitbook-plugin-addcssjs@1.0.1",
30
+ "_npmVersion": "1.4.21",
31
+ "_npmUser": {
32
+ "name": "chudaol",
33
+ "email": "chudaol@gmail.com"
34
+ },
35
+ "maintainers": [
36
+ {
37
+ "name": "chudaol",
38
+ "email": "chudaol@gmail.com"
39
+ }
40
+ ],
41
+ "dist": {
42
+ "shasum": "a0dd4a5c969ac52e3e1663d656f172a4fa70490f",
43
+ "tarball": "http://registry.npmjs.org/gitbook-plugin-addcssjs/-/gitbook-plugin-addcssjs-1.0.1.tgz"
44
+ },
45
+ "directories": {},
46
+ "_resolved": "https://registry.npmjs.org/gitbook-plugin-addcssjs/-/gitbook-plugin-addcssjs-1.0.1.tgz"
47
+ }
@@ -0,0 +1,26 @@
1
+
2
+ a.plugin-anchor {
3
+ color: inherit !important;
4
+ display: none;
5
+ margin-left: -30px;
6
+ padding-left: 40px;
7
+ cursor: pointer;
8
+ position: absolute;
9
+ top: 0;
10
+ left: 0;
11
+ bottom: 0;
12
+ }
13
+
14
+ a.plugin-anchor span {
15
+ margin-left: -25px;
16
+ font-size: 15px;
17
+ }
18
+
19
+ h1, h2, h3, h4, h5, h6 {
20
+ position: relative;
21
+ }
22
+
23
+ h1:hover a.plugin-anchor, h2:hover a.plugin-anchor, h3:hover a.plugin-anchor,
24
+ h4:hover a.plugin-anchor, h5:hover a.plugin-anchor, h6:hover a.plugin-anchor {
25
+ display: inline-block;
26
+ }
@@ -0,0 +1,30 @@
1
+ require(['gitbook', 'jQuery'], function (gitbook, $) {
2
+
3
+ if (!window.history.pushState || !window.sessionStorage) return;
4
+
5
+ var KEY_SCROLL_POSITION = 'book_summary_scroll_postion_saver';
6
+ var $summary;
7
+
8
+ bindChangePushState(function() {
9
+ window.sessionStorage.setItem(KEY_SCROLL_POSITION, $summary.scrollTop())
10
+ });
11
+
12
+ gitbook.events.bind('page.change', function () {
13
+ var savedScrollPosition
14
+ = Number(window.sessionStorage.getItem(KEY_SCROLL_POSITION), 10) || 0;
15
+
16
+ $summary = $('.book-summary .summary');
17
+
18
+ window.setTimeout(function() {
19
+ $summary.scrollTop(savedScrollPosition);
20
+ }, 50);
21
+ });
22
+
23
+ function bindChangePushState(cb) {
24
+ var pushState = window.history.pushState;
25
+ window.history.pushState = function (state) {
26
+ cb();
27
+ return pushState.apply(window.history, arguments);
28
+ }
29
+ }
30
+ });
@@ -0,0 +1,28 @@
1
+ .book .book-summary .chapter > .articles {
2
+ overflow: hidden;
3
+ max-height: 0px;
4
+ }
5
+
6
+ .book .book-summary .chapter.expanded > .articles {
7
+ max-height: 9999px;
8
+ }
9
+
10
+ .book .book-summary .exc-trigger {
11
+ position: absolute;
12
+ left: 12px;
13
+ top: 12px;
14
+ }
15
+
16
+ .book .book-summary ul.summary li a,
17
+ .book .book-summary ul.summary li span {
18
+ padding-left: 30px;
19
+ }
20
+
21
+ .book .book-summary .exc-trigger:before {
22
+ content: "\f054";
23
+ }
24
+
25
+ .book .book-summary .expanded > a .exc-trigger:before,
26
+ .book .book-summary .expanded > span .exc-trigger:before {
27
+ content: "\f078";
28
+ }
@@ -0,0 +1,68 @@
1
+ require(['gitbook', 'jQuery'], function(gitbook, $) {
2
+ var TOGGLE_CLASSNAME = 'expanded',
3
+ CHAPTER = '.chapter',
4
+ ARTICLES = '.articles',
5
+ TRIGGER_TEMPLATE = '<i class="exc-trigger fa"></i>',
6
+ LS_NAMESPACE = 'expChapters';
7
+ var init = function () {
8
+ // adding the trigger element to each ARTICLES parent and binding the event
9
+ $(ARTICLES)
10
+ .parent(CHAPTER)
11
+ .children('a')
12
+ .append(
13
+ $(TRIGGER_TEMPLATE)
14
+ .on('click', function(e) {
15
+ e.preventDefault();
16
+ e.stopPropagation();
17
+ toggle($(e.target).closest(CHAPTER));
18
+ })
19
+ );
20
+ expand(lsItem());
21
+ //expand current selected chapter with it's parents
22
+ var activeChapter = $(CHAPTER + '.active');
23
+ expand(activeChapter);
24
+ expand(activeChapter.parents(CHAPTER));
25
+
26
+
27
+ }
28
+ var toggle = function ($chapter) {
29
+ if ($chapter.hasClass('expanded')) {
30
+ collapse($chapter);
31
+ } else {
32
+ expand($chapter);
33
+ }
34
+ }
35
+ var collapse = function ($chapter) {
36
+ if ($chapter.length && $chapter.hasClass(TOGGLE_CLASSNAME)) {
37
+ $chapter.removeClass(TOGGLE_CLASSNAME);
38
+ lsItem($chapter);
39
+ }
40
+ }
41
+ var expand = function ($chapter) {
42
+ if ($chapter.length && !$chapter.hasClass(TOGGLE_CLASSNAME)) {
43
+ $chapter.addClass(TOGGLE_CLASSNAME);
44
+ lsItem($chapter);
45
+ }
46
+ }
47
+ var lsItem = function () {
48
+ var map = JSON.parse(localStorage.getItem(LS_NAMESPACE)) || {}
49
+ if (arguments.length) {
50
+ var $chapters = arguments[0];
51
+ $chapters.each(function (index, element) {
52
+ var level = $(this).data('level');
53
+ var value = $(this).hasClass(TOGGLE_CLASSNAME);
54
+ map[level] = value;
55
+ })
56
+ localStorage.setItem(LS_NAMESPACE, JSON.stringify(map));
57
+ } else {
58
+ return $(CHAPTER).map(function(index, element){
59
+ if (map[$(this).data('level')]) {
60
+ return this;
61
+ }
62
+ })
63
+ }
64
+ }
65
+ gitbook.events.bind('page.change', function() {
66
+ init()
67
+ });
68
+ });
@@ -0,0 +1,151 @@
1
+ require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) {
2
+ var fontState;
3
+
4
+ var THEMES = {
5
+ "white": 0,
6
+ "sepia": 1,
7
+ "night": 2
8
+ };
9
+
10
+ var FAMILY = {
11
+ "serif": 0,
12
+ "sans": 1
13
+ };
14
+
15
+ // Save current font settings
16
+ function saveFontSettings() {
17
+ gitbook.storage.set("fontState", fontState);
18
+ update();
19
+ }
20
+
21
+ // Increase font size
22
+ function enlargeFontSize(e) {
23
+ e.preventDefault();
24
+ if (fontState.size >= 4) return;
25
+
26
+ fontState.size++;
27
+ saveFontSettings();
28
+ };
29
+
30
+ // Decrease font size
31
+ function reduceFontSize(e) {
32
+ e.preventDefault();
33
+ if (fontState.size <= 0) return;
34
+
35
+ fontState.size--;
36
+ saveFontSettings();
37
+ };
38
+
39
+ // Change font family
40
+ function changeFontFamily(index, e) {
41
+ e.preventDefault();
42
+
43
+ fontState.family = index;
44
+ saveFontSettings();
45
+ };
46
+
47
+ // Change type of color
48
+ function changeColorTheme(index, e) {
49
+ e.preventDefault();
50
+
51
+ var $book = $(".book");
52
+
53
+ if (fontState.theme !== 0)
54
+ $book.removeClass("color-theme-"+fontState.theme);
55
+
56
+ fontState.theme = index;
57
+ if (fontState.theme !== 0)
58
+ $book.addClass("color-theme-"+fontState.theme);
59
+
60
+ saveFontSettings();
61
+ };
62
+
63
+ function update() {
64
+ var $book = gitbook.state.$book;
65
+
66
+ $(".font-settings .font-family-list li").removeClass("active");
67
+ $(".font-settings .font-family-list li:nth-child("+(fontState.family+1)+")").addClass("active");
68
+
69
+ $book[0].className = $book[0].className.replace(/\bfont-\S+/g, '');
70
+ $book.addClass("font-size-"+fontState.size);
71
+ $book.addClass("font-family-"+fontState.family);
72
+
73
+ if(fontState.theme !== 0) {
74
+ $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, '');
75
+ $book.addClass("color-theme-"+fontState.theme);
76
+ }
77
+ };
78
+
79
+ function init(config) {
80
+ var $bookBody, $book;
81
+
82
+ //Find DOM elements.
83
+ $book = gitbook.state.$book;
84
+ $bookBody = $book.find(".book-body");
85
+
86
+ // Instantiate font state object
87
+ fontState = gitbook.storage.get("fontState", {
88
+ size: config.size || 2,
89
+ family: FAMILY[config.family || "sans"],
90
+ theme: THEMES[config.theme || "white"]
91
+ });
92
+
93
+ update();
94
+ };
95
+
96
+
97
+ gitbook.events.bind("start", function(e, config) {
98
+ var opts = config.fontsettings;
99
+
100
+ // Create buttons in toolbar
101
+ gitbook.toolbar.createButton({
102
+ icon: 'fa fa-font',
103
+ label: 'Font Settings',
104
+ className: 'font-settings',
105
+ dropdown: [
106
+ [
107
+ {
108
+ text: 'A',
109
+ className: 'font-reduce',
110
+ onClick: reduceFontSize
111
+ },
112
+ {
113
+ text: 'A',
114
+ className: 'font-enlarge',
115
+ onClick: enlargeFontSize
116
+ }
117
+ ],
118
+ [
119
+ {
120
+ text: 'Serif',
121
+ onClick: _.partial(changeFontFamily, 0)
122
+ },
123
+ {
124
+ text: 'Sans',
125
+ onClick: _.partial(changeFontFamily, 1)
126
+ }
127
+ ],
128
+ [
129
+ {
130
+ text: 'White',
131
+ onClick: _.partial(changeColorTheme, 0)
132
+ },
133
+ {
134
+ text: 'Sepia',
135
+ onClick: _.partial(changeColorTheme, 1)
136
+ },
137
+ {
138
+ text: 'Night',
139
+ onClick: _.partial(changeColorTheme, 2)
140
+ }
141
+ ]
142
+ ]
143
+ });
144
+
145
+
146
+ // Init current settings
147
+ init(opts);
148
+ });
149
+ });
150
+
151
+
@@ -0,0 +1,291 @@
1
+ /*
2
+ * Theme 1
3
+ */
4
+ .color-theme-1 .dropdown-menu {
5
+ background-color: #111111;
6
+ border-color: #7e888b;
7
+ }
8
+ .color-theme-1 .dropdown-menu .dropdown-caret .caret-inner {
9
+ border-bottom: 9px solid #111111;
10
+ }
11
+ .color-theme-1 .dropdown-menu .buttons {
12
+ border-color: #7e888b;
13
+ }
14
+ .color-theme-1 .dropdown-menu .button {
15
+ color: #afa790;
16
+ }
17
+ .color-theme-1 .dropdown-menu .button:hover {
18
+ color: #73553c;
19
+ }
20
+ /*
21
+ * Theme 2
22
+ */
23
+ .color-theme-2 .dropdown-menu {
24
+ background-color: #2d3143;
25
+ border-color: #272a3a;
26
+ }
27
+ .color-theme-2 .dropdown-menu .dropdown-caret .caret-inner {
28
+ border-bottom: 9px solid #2d3143;
29
+ }
30
+ .color-theme-2 .dropdown-menu .buttons {
31
+ border-color: #272a3a;
32
+ }
33
+ .color-theme-2 .dropdown-menu .button {
34
+ color: #62677f;
35
+ }
36
+ .color-theme-2 .dropdown-menu .button:hover {
37
+ color: #f4f4f5;
38
+ }
39
+ .book .book-header .font-settings .font-enlarge {
40
+ line-height: 30px;
41
+ font-size: 1.4em;
42
+ }
43
+ .book .book-header .font-settings .font-reduce {
44
+ line-height: 30px;
45
+ font-size: 1em;
46
+ }
47
+ .book.color-theme-1 .book-body {
48
+ color: #704214;
49
+ background: #f3eacb;
50
+ }
51
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section {
52
+ background: #f3eacb;
53
+ }
54
+ .book.color-theme-2 .book-body {
55
+ color: #bdcadb;
56
+ background: #1c1f2b;
57
+ }
58
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section {
59
+ background: #1c1f2b;
60
+ }
61
+ .book.font-size-0 .book-body .page-inner section {
62
+ font-size: 1.2rem;
63
+ }
64
+ .book.font-size-1 .book-body .page-inner section {
65
+ font-size: 1.4rem;
66
+ }
67
+ .book.font-size-2 .book-body .page-inner section {
68
+ font-size: 1.6rem;
69
+ }
70
+ .book.font-size-3 .book-body .page-inner section {
71
+ font-size: 2.2rem;
72
+ }
73
+ .book.font-size-4 .book-body .page-inner section {
74
+ font-size: 4rem;
75
+ }
76
+ .book.font-family-0 {
77
+ font-family: Georgia, serif;
78
+ }
79
+ .book.font-family-1 {
80
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
81
+ }
82
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal {
83
+ color: #704214;
84
+ }
85
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a {
86
+ color: inherit;
87
+ }
88
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1,
89
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2,
90
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3,
91
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4,
92
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5,
93
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 {
94
+ color: inherit;
95
+ }
96
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1,
97
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 {
98
+ border-color: inherit;
99
+ }
100
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 {
101
+ color: inherit;
102
+ }
103
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr {
104
+ background-color: inherit;
105
+ }
106
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote {
107
+ border-color: inherit;
108
+ }
109
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre,
110
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code {
111
+ background: #fdf6e3;
112
+ color: #657b83;
113
+ border-color: #f8df9c;
114
+ }
115
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight {
116
+ background-color: inherit;
117
+ }
118
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th,
119
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td {
120
+ border-color: #f5d06c;
121
+ }
122
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr {
123
+ color: inherit;
124
+ background-color: #fdf6e3;
125
+ border-color: #444444;
126
+ }
127
+ .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) {
128
+ background-color: #fbeecb;
129
+ }
130
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal {
131
+ color: #bdcadb;
132
+ }
133
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a {
134
+ color: #3eb1d0;
135
+ }
136
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1,
137
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2,
138
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3,
139
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4,
140
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5,
141
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 {
142
+ color: #fffffa;
143
+ }
144
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1,
145
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 {
146
+ border-color: #373b4e;
147
+ }
148
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 {
149
+ color: #373b4e;
150
+ }
151
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr {
152
+ background-color: #373b4e;
153
+ }
154
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote {
155
+ border-color: #373b4e;
156
+ }
157
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre,
158
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code {
159
+ color: #9dbed8;
160
+ background: #2d3143;
161
+ border-color: #2d3143;
162
+ }
163
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight {
164
+ background-color: #282a39;
165
+ }
166
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th,
167
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td {
168
+ border-color: #3b3f54;
169
+ }
170
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr {
171
+ color: #b6c2d2;
172
+ background-color: #2d3143;
173
+ border-color: #3b3f54;
174
+ }
175
+ .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) {
176
+ background-color: #35394b;
177
+ }
178
+ .book.color-theme-1 .book-header {
179
+ color: #afa790;
180
+ background: transparent;
181
+ }
182
+ .book.color-theme-1 .book-header .btn {
183
+ color: #afa790;
184
+ }
185
+ .book.color-theme-1 .book-header .btn:hover {
186
+ color: #73553c;
187
+ background: none;
188
+ }
189
+ .book.color-theme-1 .book-header h1 {
190
+ color: #704214;
191
+ }
192
+ .book.color-theme-2 .book-header {
193
+ color: #7e888b;
194
+ background: transparent;
195
+ }
196
+ .book.color-theme-2 .book-header .btn {
197
+ color: #3b3f54;
198
+ }
199
+ .book.color-theme-2 .book-header .btn:hover {
200
+ color: #fffff5;
201
+ background: none;
202
+ }
203
+ .book.color-theme-2 .book-header h1 {
204
+ color: #bdcadb;
205
+ }
206
+ .book.color-theme-1 .book-body .navigation {
207
+ color: #afa790;
208
+ }
209
+ .book.color-theme-1 .book-body .navigation:hover {
210
+ color: #73553c;
211
+ }
212
+ .book.color-theme-2 .book-body .navigation {
213
+ color: #383f52;
214
+ }
215
+ .book.color-theme-2 .book-body .navigation:hover {
216
+ color: #fffff5;
217
+ }
218
+ /*
219
+ * Theme 1
220
+ */
221
+ .book.color-theme-1 .book-summary {
222
+ color: #afa790;
223
+ background: #111111;
224
+ border-right: 1px solid rgba(0, 0, 0, 0.07);
225
+ }
226
+ .book.color-theme-1 .book-summary .book-search {
227
+ background: transparent;
228
+ }
229
+ .book.color-theme-1 .book-summary .book-search input,
230
+ .book.color-theme-1 .book-summary .book-search input:focus {
231
+ border: 1px solid transparent;
232
+ }
233
+ .book.color-theme-1 .book-summary ul.summary li.divider {
234
+ background: #7e888b;
235
+ box-shadow: none;
236
+ }
237
+ .book.color-theme-1 .book-summary ul.summary li i.fa-check {
238
+ color: #33cc33;
239
+ }
240
+ .book.color-theme-1 .book-summary ul.summary li.done > a {
241
+ color: #877f6a;
242
+ }
243
+ .book.color-theme-1 .book-summary ul.summary li a,
244
+ .book.color-theme-1 .book-summary ul.summary li span {
245
+ color: #877f6a;
246
+ background: transparent;
247
+ font-weight: normal;
248
+ }
249
+ .book.color-theme-1 .book-summary ul.summary li.active > a,
250
+ .book.color-theme-1 .book-summary ul.summary li a:hover {
251
+ color: #704214;
252
+ background: transparent;
253
+ font-weight: normal;
254
+ }
255
+ /*
256
+ * Theme 2
257
+ */
258
+ .book.color-theme-2 .book-summary {
259
+ color: #bcc1d2;
260
+ background: #2d3143;
261
+ border-right: none;
262
+ }
263
+ .book.color-theme-2 .book-summary .book-search {
264
+ background: transparent;
265
+ }
266
+ .book.color-theme-2 .book-summary .book-search input,
267
+ .book.color-theme-2 .book-summary .book-search input:focus {
268
+ border: 1px solid transparent;
269
+ }
270
+ .book.color-theme-2 .book-summary ul.summary li.divider {
271
+ background: #272a3a;
272
+ box-shadow: none;
273
+ }
274
+ .book.color-theme-2 .book-summary ul.summary li i.fa-check {
275
+ color: #33cc33;
276
+ }
277
+ .book.color-theme-2 .book-summary ul.summary li.done > a {
278
+ color: #62687f;
279
+ }
280
+ .book.color-theme-2 .book-summary ul.summary li a,
281
+ .book.color-theme-2 .book-summary ul.summary li span {
282
+ color: #c1c6d7;
283
+ background: transparent;
284
+ font-weight: 600;
285
+ }
286
+ .book.color-theme-2 .book-summary ul.summary li.active > a,
287
+ .book.color-theme-2 .book-summary ul.summary li a:hover {
288
+ color: #f4f4f5;
289
+ background: #252737;
290
+ font-weight: 600;
291
+ }