diff --git a/.github/workflows/pages-deploy.yml b/.github/workflows/pages-deploy.yml index c33b2a6..cc28f99 100644 --- a/.github/workflows/pages-deploy.yml +++ b/.github/workflows/pages-deploy.yml @@ -42,7 +42,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.2 + ruby-version: 3.3 bundler-cache: true - name: Build site @@ -53,7 +53,7 @@ jobs: - name: Test site run: | bundle exec htmlproofer _site \ - \-\-disable-external=true \ + \-\-disable-external \ \-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" - name: Upload site artifact diff --git a/.gitignore b/.gitignore index cee9e12..7dd7cef 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ Gemfile.lock # Jekyll cache .jekyll-cache +.jekyll-metadata _site # RubyGems @@ -16,6 +17,11 @@ package-lock.json # IDE configurations .idea +.vscode/* +!.vscode/settings.json +!.vscode/extensions.json +!.vscode/tasks.json # Misc +_sass/vendors assets/js/dist diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..7f0fdb8 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,26 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Run Jekyll Server", + "type": "shell", + "command": "./tools/run.sh", + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": [], + "detail": "Runs the Jekyll server with live reload." + }, + { + "label": "Build Jekyll Site", + "type": "shell", + "command": "./tools/test.sh", + "group": { + "kind": "build" + }, + "problemMatcher": [], + "detail": "Build the Jekyll site for production." + } + ] +} diff --git a/Gemfile b/Gemfile index a3eebd6..4e36b61 100644 --- a/Gemfile +++ b/Gemfile @@ -2,10 +2,10 @@ source "https://rubygems.org" -gem "jekyll-theme-chirpy", "~> 6.2", ">= 6.5.5" +gem "jekyll-theme-chirpy", "~> 7.2", ">= 7.2.2" group :test do - gem "html-proofer", "~> 4.4" + gem "html-proofer", "~> 5.0", group: :test end # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem @@ -16,7 +16,7 @@ platforms :mingw, :x64_mingw, :mswin, :jruby do end # Performance-booster for watching directories on Windows -gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] +gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin] # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem # do not have a Java counterpart. diff --git a/README.md b/README.md index 1f4210b..dd3576b 100644 --- a/README.md +++ b/README.md @@ -1,81 +1,43 @@ -
+# Chirpy Starter - # Chirpy Jekyll Theme +[![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy)][gem]  +[![GitHub license](https://img.shields.io/github/license/cotes2020/chirpy-starter.svg?color=blue)][mit] - A minimal, responsive, and feature-rich Jekyll theme for technical writing. +When installing the [**Chirpy**][chirpy] theme through [RubyGems.org][gem], Jekyll can only read files in the folders +`_data`, `_layouts`, `_includes`, `_sass` and `assets`, as well as a small part of options of the `_config.yml` file +from the theme's gem. If you have ever installed this theme gem, you can use the command +`bundle info --path jekyll-theme-chirpy` to locate these files. - [![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?color=brightgreen)][gem]  - [![CI](https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml/badge.svg?branch=master&event=push)][ci]  - [![Codacy Badge](https://app.codacy.com/project/badge/Grade/4e556876a3c54d5e8f2d2857c4f43894)][codacy]  - [![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy.svg)][license]  - [![996.icu](https://img.shields.io/badge/link-996.icu-%23FF4D5B.svg)](https://996.icu) +The Jekyll team claims that this is to leave the ball in the user’s court, but this also results in users not being +able to enjoy the out-of-the-box experience when using feature-rich themes. - [**Live Demo** →][demo] +To fully use all the features of **Chirpy**, you need to copy the other critical files from the theme's gem to your +Jekyll site. The following is a list of targets: - [![Devices Mockup](https://chirpy-img.netlify.app/commons/devices-mockup.png)][demo] +```shell +. +├── _config.yml +├── _plugins +├── _tabs +└── index.html +``` -
+To save you time, and also in case you lose some files while copying, we extract those files/configurations of the +latest version of the **Chirpy** theme and the [CD][CD] workflow to here, so that you can start writing in minutes. -## Features +## Usage -- Dark / Light Theme Mode -- Localized UI language -- Pinned Posts on Home Page -- Hierarchical Categories -- Trending Tags -- Table of Contents -- Last Modified Date -- Syntax Highlighting -- Mathematical Expressions -- Mermaid Diagrams & Flowcharts -- Dark / Light Mode Images -- Embed Videos -- Disqus / Giscus / Utterances Comments -- Built-in Search -- Atom Feeds -- PWA -- Google Analytics / GoatCounter -- SEO & Performance Optimization - -## Documentation - -To learn how to use, develop, and upgrade the project, please refer to the [Wiki][wiki]. +Check out the [theme's docs](https://github.com/cotes2020/jekyll-theme-chirpy/wiki). ## Contributing -Contributions (_pull requests_, _issues_, and _discussions_) are what make the open-source community such an amazing place -to learn, inspire, and create. Any contributions you make are greatly appreciated. -For details, see the "[Contributing Guidelines][contribute-guide]". - -## Credits - -### Contributors - -Thanks to [all the contributors][contributors] involved in the development of the project! - -[![all-contributors](https://contrib.rocks/image?repo=cotes2020/jekyll-theme-chirpy&columns=16)][contributors] - —— Made with [contrib.rocks](https://contrib.rocks) - -### Third-Party Assets - -This project is built on the [Jekyll][jekyllrb] ecosystem and some [great libraries][lib], and is developed using [VS Code][vscode] as well as tools provided by [JetBrains][jetbrains] under a non-commercial open-source software license. - -The avatar and favicon for the project's website are from [ClipartMAX][clipartmax]. +This repository is automatically updated with new releases from the theme repository. If you encounter any issues or want to contribute to its improvement, please visit the [theme repository][chirpy] to provide feedback. ## License -This project is published under [MIT License][license]. +This work is published under [MIT][mit] License. [gem]: https://rubygems.org/gems/jekyll-theme-chirpy -[ci]: https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml?query=event%3Apush+branch%3Amaster -[codacy]: https://app.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade -[license]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE -[jekyllrb]: https://jekyllrb.com/ -[clipartmax]: https://www.clipartmax.com/middle/m2i8b1m2K9Z5m2K9_ant-clipart-childrens-ant-cute/ -[demo]: https://cotes2020.github.io/chirpy-demo/ -[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki -[contribute-guide]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md -[contributors]: https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors -[lib]: https://github.com/cotes2020/chirpy-static-assets -[vscode]: https://code.visualstudio.com/ -[jetbrains]: https://www.jetbrains.com/?from=jekyll-theme-chirpy \ No newline at end of file +[chirpy]: https://github.com/cotes2020/jekyll-theme-chirpy/ +[CD]: https://en.wikipedia.org/wiki/Continuous_deployment +[mit]: https://github.com/cotes2020/chirpy-starter/blob/master/LICENSE \ No newline at end of file diff --git a/_config.yml b/_config.yml index 7760c03..7a07dab 100644 --- a/_config.yml +++ b/_config.yml @@ -45,7 +45,14 @@ social: - https://www.facebook.com/RajuKottedi435 - https://www.linkedin.com/in/bangararajuk/ -google_site_verification: # fill in to your verification string +# Site Verification Settings +webmaster_verifications: + google: # fill in your Google verification code + bing: # fill in your Bing verification code + alexa: # fill in your Alexa verification code + yandex: # fill in your Yandex verification code + baidu: # fill in your Baidu verification code + facebook: # fill in your Facebook verification code # ↑ -------------------------- # The end of `jekyll-seo-tag` settings @@ -84,12 +91,12 @@ pageviews: # theme_mode: # [light | dark] -# The CDN endpoint for images. +# The CDN endpoint for media resources. # Notice that once it is assigned, the CDN url -# will be added to all image (site avatar & posts' images) paths starting with '/' +# will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/' # # e.g. 'https://cdn.com' -img_cdn: +cdn: # the avatar on sidebar, support local or CORS resources avatar: /assets/img/avatar.jpg @@ -102,7 +109,8 @@ social_preview_image: # string, local or CORS resources toc: true comments: - active: 'remark42' # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable +# Global switch for the post comment system. Keeping it empty means disabled. + provider: 'remark42' # [disqus | utterances | giscus] # The active options are as follows: # remark42 settings > https://remark42.com/ remark42: @@ -120,6 +128,7 @@ comments: category: category_id: mapping: # optional, default to 'pathname' + strict: # optional, default to '0' input_position: # optional, default to 'bottom' lang: # optional, default to the value of `site.lang` reactions_enabled: # optional, default to the value of `1` @@ -151,6 +160,7 @@ baseurl: "/blog" # ------------ The following options are not recommended to be modified ------------------ kramdown: + footnote_backlink: "↩︎" syntax_highlighter: rouge syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options css_class: highlight @@ -211,8 +221,9 @@ exclude: - tools - README.md - LICENSE + - purgecss.js - rollup.config.js - - package*.json + - "package*.json" - db_scripts - frontmatter.json diff --git a/_data/contact.yml b/_data/contact.yml index da4c60a..eed7eef 100644 --- a/_data/contact.yml +++ b/_data/contact.yml @@ -26,3 +26,15 @@ # - type: stack-overflow # icon: 'fab fa-stack-overflow' # url: '' # Fill with your stackoverflow homepage +# +# - type: bluesky +# icon: 'fa-brands fa-bluesky' +# url: '' # Fill with your Bluesky profile link +# +# - type: reddit +# icon: 'fa-brands fa-reddit' +# url: '' # Fill with your Reddit profile link +# +# - type: threads +# icon: 'fa-brands fa-threads' +# url: '' # Fill with your Threads profile link diff --git a/_data/share.yml b/_data/share.yml index ee8e6e8..fec389f 100644 --- a/_data/share.yml +++ b/_data/share.yml @@ -22,7 +22,7 @@ platforms: # # - type: Weibo # icon: "fab fa-weibo" - # link: "http://service.weibo.com/share/share.php?title=TITLE&url=URL" + # link: "https://service.weibo.com/share/share.php?title=TITLE&url=URL" # # - type: Mastodon # icon: "fa-brands fa-mastodon" @@ -35,4 +35,16 @@ platforms: # - label: fosstodon.org # link: "https://fosstodon.org/" # - label: photog.social - # link: "https://photog.social/" \ No newline at end of file + # link: "https://photog.social/" + # + # - type: Bluesky + # icon: "fa-brands fa-bluesky" + # link: "https://bsky.app/intent/compose?text=TITLE%20URL" + # + # - type: Reddit + # icon: "fa-brands fa-square-reddit" + # link: "https://www.reddit.com/submit?url=URL&title=TITLE" + # + # - type: Threads + # icon: "fa-brands fa-square-threads" + # link: "https://www.threads.net/intent/post?text=TITLE%20URL" \ No newline at end of file diff --git a/_drafts/2024-07-08-anatomy-of-a-csrf-attack.md b/_drafts/2024-07-08-anatomy-of-a-csrf-attack.md new file mode 100644 index 0000000..9d05e20 --- /dev/null +++ b/_drafts/2024-07-08-anatomy-of-a-csrf-attack.md @@ -0,0 +1,8 @@ +--- +title: Anatomy of a CSRF Attack +date: 2024-07-08 0:00:00 +5:30 +tags: + - csrf + - security +slug: anatomy-csrf-attack +--- diff --git a/_includes/comments.html b/_includes/comments.html index 8b9e1dc..2c2605a 100644 --- a/_includes/comments.html +++ b/_includes/comments.html @@ -1,5 +1,5 @@ -{% if page.comments and site.comments.active %} - {% capture path %}comments/{{ site.comments.active }}.html{% endcapture %} +{% if page.comments and site.comments.provider %} + {% capture path %}comments/{{ site.comments.provider }}.html{% endcapture %} {% include {{ path }} %} {% endif %} \ No newline at end of file diff --git a/_includes/head.html b/_includes/head.html index 330aa62..20fdf08 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -4,7 +4,7 @@ - + @@ -20,7 +20,7 @@ {% unless src contains '://' %} {%- capture img_url -%} - {% include img-url.html src=src img_path=page.img_path absolute=true %} + {% include media-url.html src=src subpath=page.media_subpath absolute=true %} {%- endcapture -%} {%- capture old_url -%}{{ src | absolute_url }}{%- endcapture -%} @@ -31,7 +31,7 @@ {% elsif site.social_preview_image %} {%- capture img_url -%} - {% include img-url.html src=site.social_preview_image absolute=true %} + {% include media-url.html src=site.social_preview_image absolute=true %} {%- endcapture -%} {%- capture og_image -%} @@ -59,34 +59,30 @@ {% include_cached favicons.html %} - {% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %} - - - {% else %} - {% for cdn in site.data.origin[type].cdns %} - - - {% endfor %} - - - {% endif %} - - - {% if jekyll.environment == 'production' and site.google_analytics.id != empty and site.google_analytics.id %} - - - - - - {% endif %} + + {% unless site.assets.self_host.enabled %} + {% for hint in site.data.origin.cors.resource_hints %} + {% for link in hint.links %} + + {% endfor %} + {% endfor %} + {% endunless %} - + {% unless jekyll.environment == 'production' %} + + {% endunless %} - + + + + + + + - + {% if site.toc and page.toc %} @@ -97,11 +93,11 @@ {% endif %} {% if page.layout == 'page' or page.layout == 'post' %} - - + + {% endif %} - + + + {% include js-selector.html lang=lang %} + + {% if jekyll.environment == 'production' %} + + {% if site.pwa.enabled %} + + {% endif %} + + + {% for analytics in site.analytics %} + {% capture str %}{{ analytics }}{% endcapture %} + {% assign platform = str | split: '{' | first %} + {% if site.analytics[platform].id and site.analytics[platform].id != empty %} + {% include analytics/{{ platform }}.html %} + {% endif %} + {% endfor %} + {% endif %} {% include metadata-hook.html %} \ No newline at end of file diff --git a/_includes/likes-views.html b/_includes/likes-views.html index 336310a..7688271 100644 --- a/_includes/likes-views.html +++ b/_includes/likes-views.html @@ -46,6 +46,10 @@ if(Number(views.innerText) !== NaN){ postDetails.views = Number(views.innerText); } + if(postDetails.modifiedDate === ""){ + postDetails.modifiedDate = postDetails.createdDate; + } + ajax(serviceUrl + "/CreatePost", "POST", postDetails) .then(function (result) { if(result != "N/A"){ diff --git a/_layouts/default.html b/_layouts/default.html index 19efb13..97fce9c 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -12,7 +12,7 @@ layout: compress {% endif %} - + {% include head.html %} @@ -40,7 +40,7 @@ layout: compress -