From 95f0b26384fc11ffd7b9b6f784ad11b65e987111 Mon Sep 17 00:00:00 2001 From: Roland Whitehead <4478022+qururoland@users.noreply.github.com> Date: Thu, 18 Apr 2019 14:24:45 +0100 Subject: Added QIS Added entry for Quru Image Server under Photo and Video Galleries --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index de27c98a..6431bcaf 100644 --- a/README.md +++ b/README.md @@ -1096,6 +1096,7 @@ See also [awesome-sysadmin#metric--metric-collection](https://github.com/n1trux/ - [Photoshow](http://www.photoshow-gallery.com/) - Responsive Web Gallery. ([Source Code](https://github.com/thibaud-rohmer/PhotoShow)) `GPL-3.0` `PHP` - [Piwigo](http://piwigo.org/) - Photo gallery software for the web, built by an active community of users and developers. ([Demo](http://piwigo.org/demo/), [Source Code](https://github.com/Piwigo/Piwigo)) `GPL-2.0` `PHP` - [Plumi](http://blog.plumi.org/) - Create your own sophisticated video-sharing site. ([Source Code](https://github.com/plumi/plumi.app)) `GPL-2.0` `Python` +- [QIS](https://quruimageserver.com/) - High performance dynamically resizing image server offering directory based access control cropping, rotation, color management and other tools. ([Demo](https://quruimageserver.com), [Source Code](https://github.com/quru/qis)) `AGPL-3.0` `Python` `JavaScript` - [sigal](https://github.com/saimn/sigal) - Yet another simple static gallery generator. `MIT` `Python` - [UberGallery](http://www.ubergallery.net) - UberGallery is an easy to use, simple to manage, web photo gallery. UberGallery does not require a database and supports JPEG, GIF and PNG file types. Simply upload your images and UberGallery will automatically generate thumbnails and output HTML. ([Source Code](https://github.com/UberGallery/UberGallery)) `MIT` `PHP` - [Videobin](http://videobin.org/code) - Simple video upload and sharing service with transcoding. ([Demo](http://videobin.org/), [Source Code](https://r-w-x.org/videobin.git)) `GPL-3.0` `Python` -- cgit v1.2.3 From 54099e752ba7887e0533ea3c8f5258361627a110 Mon Sep 17 00:00:00 2001 From: Roland Whitehead <4478022+qururoland@users.noreply.github.com> Date: Thu, 18 Apr 2019 14:27:08 +0100 Subject: CHange QIS to Quru Image Server (full name) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6431bcaf..8c9a2d97 100644 --- a/README.md +++ b/README.md @@ -1096,7 +1096,7 @@ See also [awesome-sysadmin#metric--metric-collection](https://github.com/n1trux/ - [Photoshow](http://www.photoshow-gallery.com/) - Responsive Web Gallery. ([Source Code](https://github.com/thibaud-rohmer/PhotoShow)) `GPL-3.0` `PHP` - [Piwigo](http://piwigo.org/) - Photo gallery software for the web, built by an active community of users and developers. ([Demo](http://piwigo.org/demo/), [Source Code](https://github.com/Piwigo/Piwigo)) `GPL-2.0` `PHP` - [Plumi](http://blog.plumi.org/) - Create your own sophisticated video-sharing site. ([Source Code](https://github.com/plumi/plumi.app)) `GPL-2.0` `Python` -- [QIS](https://quruimageserver.com/) - High performance dynamically resizing image server offering directory based access control cropping, rotation, color management and other tools. ([Demo](https://quruimageserver.com), [Source Code](https://github.com/quru/qis)) `AGPL-3.0` `Python` `JavaScript` +- [Quru Image Server](https://quruimageserver.com/) - High performance dynamically resizing image server offering directory based access control cropping, rotation, color management and other tools. ([Demo](https://quruimageserver.com), [Source Code](https://github.com/quru/qis)) `AGPL-3.0` `Python` `JavaScript` - [sigal](https://github.com/saimn/sigal) - Yet another simple static gallery generator. `MIT` `Python` - [UberGallery](http://www.ubergallery.net) - UberGallery is an easy to use, simple to manage, web photo gallery. UberGallery does not require a database and supports JPEG, GIF and PNG file types. Simply upload your images and UberGallery will automatically generate thumbnails and output HTML. ([Source Code](https://github.com/UberGallery/UberGallery)) `MIT` `PHP` - [Videobin](http://videobin.org/code) - Simple video upload and sharing service with transcoding. ([Demo](http://videobin.org/), [Source Code](https://r-w-x.org/videobin.git)) `GPL-3.0` `Python` -- cgit v1.2.3 From 94e8de8bdda04a1b52bb2df97b627a05e03d803e Mon Sep 17 00:00:00 2001 From: charsi Date: Tue, 14 May 2019 19:28:57 -0700 Subject: Add DecSync #1691 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 445dcf25..606c5ec8 100644 --- a/README.md +++ b/README.md @@ -242,6 +242,7 @@ _CalDAV or CardDAV servers_ - [CalendarServer](https://www.calendarserver.org/) - Apple, Inc.'s standards-compliant server implementing the CalDAV and CardDAV protocols shipped with macOS Server. ([Source Code](https://github.com/apple/ccs-calendarserver)) `Apache-2.0` `Python` - [calypso](https://keithp.com/calypso/) - Python-based CalDAV and CardDAV server, forked from Radicale. ([Source Code](https://keithp.com/git/calypso.git)) `GPL-3.0` `Python` - [DAViCal](https://www.davical.org/) - Server for calendar sharing (CalDAV) that uses a PostgreSQL database as a data store. ([Source Code](https://gitlab.com/davical-project/davical)) `GPL-2.0` `PHP` +- [DecSync CC](https://f-droid.org/packages/org.decsync.cc/) - Serverless contacts, calendar synchronization using your own file syncing method i.e Syncthing, Nextcloud etc ([Source Code](https://github.com/39aldo39/DecSyncCC)) `GPL-3.0` `Kotlin` - [EteSync Server](https://www.etesync.com) - End-to-end encrypted and journaled personal information server supporting calendar and contact data, offering its own clients. ([Source Code](https://github.com/etesync/server-skeleton)) `AGPL-3.0` `Python/Django` - [Radicale](http://radicale.org/) - Simple calendar and contact server with extremely low administrative overhead. ([Source Code](https://github.com/Kozea/Radicale)) `GPL-3.0` `Python` - [SabreDAV](http://sabre.io/) - Open source CardDAV, CalDAV, and WebDAV framework and server. ([Source Code](https://github.com/sabre-io/dav)) `MIT` `PHP` -- cgit v1.2.3 From 987ba7dd8807dc83b6c751ae09a59535e2554faf Mon Sep 17 00:00:00 2001 From: Roland Whitehead <4478022+qururoland@users.noreply.github.com> Date: Sun, 19 May 2019 09:54:40 +0100 Subject: Remove `Javascript` from Quru Image Server --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c9a2d97..1d2db98a 100644 --- a/README.md +++ b/README.md @@ -1096,7 +1096,7 @@ See also [awesome-sysadmin#metric--metric-collection](https://github.com/n1trux/ - [Photoshow](http://www.photoshow-gallery.com/) - Responsive Web Gallery. ([Source Code](https://github.com/thibaud-rohmer/PhotoShow)) `GPL-3.0` `PHP` - [Piwigo](http://piwigo.org/) - Photo gallery software for the web, built by an active community of users and developers. ([Demo](http://piwigo.org/demo/), [Source Code](https://github.com/Piwigo/Piwigo)) `GPL-2.0` `PHP` - [Plumi](http://blog.plumi.org/) - Create your own sophisticated video-sharing site. ([Source Code](https://github.com/plumi/plumi.app)) `GPL-2.0` `Python` -- [Quru Image Server](https://quruimageserver.com/) - High performance dynamically resizing image server offering directory based access control cropping, rotation, color management and other tools. ([Demo](https://quruimageserver.com), [Source Code](https://github.com/quru/qis)) `AGPL-3.0` `Python` `JavaScript` +- [Quru Image Server](https://quruimageserver.com/) - High performance dynamically resizing image server offering directory based access control cropping, rotation, color management and other tools. ([Demo](https://quruimageserver.com), [Source Code](https://github.com/quru/qis)) `AGPL-3.0` `Python` - [sigal](https://github.com/saimn/sigal) - Yet another simple static gallery generator. `MIT` `Python` - [UberGallery](http://www.ubergallery.net) - UberGallery is an easy to use, simple to manage, web photo gallery. UberGallery does not require a database and supports JPEG, GIF and PNG file types. Simply upload your images and UberGallery will automatically generate thumbnails and output HTML. ([Source Code](https://github.com/UberGallery/UberGallery)) `MIT` `PHP` - [Videobin](http://videobin.org/code) - Simple video upload and sharing service with transcoding. ([Demo](http://videobin.org/), [Source Code](https://r-w-x.org/videobin.git)) `GPL-3.0` `Python` -- cgit v1.2.3 From cb1d2bfe2fbe251db35782c56c8f97da2fb58df2 Mon Sep 17 00:00:00 2001 From: Dave Lockwood <1261876+deamos@users.noreply.github.com> Date: Sun, 19 May 2019 17:51:27 -0400 Subject: Add Open Streaming Platform --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 451272bc..a92c7af8 100644 --- a/README.md +++ b/README.md @@ -890,6 +890,7 @@ See also , Date: Mon, 20 May 2019 19:40:06 +0200 Subject: move tests-related files to a tests/ directory --- .travis.yml | 6 ++-- Dangerfile | 39 -------------------------- test.js | 85 -------------------------------------------------------- tests/Dangerfile | 39 ++++++++++++++++++++++++++ tests/test.js | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 127 insertions(+), 127 deletions(-) delete mode 100644 Dangerfile delete mode 100644 test.js create mode 100644 tests/Dangerfile create mode 100644 tests/test.js diff --git a/.travis.yml b/.travis.yml index 9267efe1..3881cdab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,12 +9,12 @@ before_install: - gem install danger before_script: - + script: - git diff master.. --unified=0 README.md | grep --perl-regexp --only-matching --silent "(?<=^\+).*" >> temp.md || (exit 0) - - node test.js temp.md + - node tests/test.js temp.md - awesome_bot temp.md --allow-redirect || (exit 0) - - danger --verbose + - danger --dangerfile tests/Dangerfile --verbose notifications: email: false diff --git a/Dangerfile b/Dangerfile deleted file mode 100644 index 115931df..00000000 --- a/Dangerfile +++ /dev/null @@ -1,39 +0,0 @@ -# Danger CI configuration file -# https://danger.systems/guides/getting_started.html - -# Check for changes to README.md -has_readme_changes = git.modified_files.include?("README.md") - -# Ensure there is a summary for a pull request -fail 'Please provide a summary in the Pull Request description' if github.pr_body.length < 5 - -# Warn if PR guideline boxes are not checked. -warn 'Please check PR guidelines and check the boxes.' if github.pr_body.include? '- [ ]' - -# Warn if pull request is not updated -warn 'Please provide a descriptive title for the Pull Request' if github.pr_title.include? 'Update README.md' - -# Warn when there are merge commits in the diff -warn 'Please rebase to get rid of the merge commits in this Pull Request' if git.commits.any? { |c| c.message =~ /^Merge branch 'master'/ } - -# Check links -if has_readme_changes - require 'json' - results = File.read 'ab-results-temp.md-markdown-table.json' - j = JSON.parse results - if j['error']==true - warn j['title'] - markdown j['message'] - end -end - -# Check syntax -if has_readme_changes - require 'json' - syntaxresults = File.read 'syntaxcheck.json' - sj = JSON.parse syntaxresults - if sj['error']==true - fail sj['title'] - markdown sj['message'] - end -end diff --git a/test.js b/test.js deleted file mode 100644 index 94e7798c..00000000 --- a/test.js +++ /dev/null @@ -1,85 +0,0 @@ -// Accepts input of any filename, ie. node test.js README.md - -const fs = require('fs'); - -let log = '{\n'; -let issuelog = ' "message": "#### Syntax Issues\\n\\n Name | Entry\\n----|----------------------\\n'; - -const file = fs.readFileSync(process.argv[2], 'utf8'); // Reads argv into var file - -function entryFilter(md) { // Function to find lines with entries - const linepatt = /^\s{0,2}-\s\[.*`/; - return linepatt.test(md); -} - -function split(text) { // Function to split lines into array - return text.split(/\r?\n/); -} - -function findPattern(text) { // Test entries against 8 patterns. If matches pattern returns true - const nodnospatt = /^\s{0,2}-\s\[.*?\]\(.*?\) - .{0,249}?\. `.*?` `.*?`/; // Regex for entries with no demo and no source code - const slpatt = /^\s{0,2}-\s\[.*?\]\(.*?\) - .{0,249}?\. \(\[Demo\b\]\(.*?\), \[Source Code\b\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with demo and source code - const nodpatt = /^\s{0,2}-\s\[.*?\]\(.*?\) - .{0,249}?\. \(\[Source Code\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with no demo - const nospatt = /^\s{0,2}-\s\[.*?\]\(.*?\) - .{0,249}?\. \(\[Demo\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with no source code - const pnodnospatt = /^\s{0,2}-\s\[.*?\]\(.*?\) `⚠` - .{0,249}?\. `.*?` `.*?`/; // Regex for entries with proprietary with no demo and no source code - const pslpatt = /^\s{0,2}-\s\[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Demo\b\]\(.*?\), \[Source Code\b\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with demo and source code - const pnodpatt = /^\s{0,2}-\s\[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Source Code\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with no demo - const pnospatt = /^\s{0,2}-\s\[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Demo\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with no source code - if (nodnospatt.test(text) === true) { - return true; - } else if (slpatt.test(text) === true) { - return true; - } else if (nodpatt.test(text) === true) { - return true; - } else if (nospatt.test(text) === true) { - return true; - } else if (pnodnospatt.test(text) === true) { - return true; - } else if (pslpatt.test(text) === true) { - return true; - } else if (pnodpatt.test(text) === true) { - return true; - } else if (pnospatt.test(text) === true) { - return true; - } - return false; -} - -function entryErrorCheck(md) { - const namepatt = /^\s{0,2}-\s\[(.*?)\]/; // regex pattern to find name of entryArray - const entries = split(md); // Inserts each line into the entries array - let totalFail = 0; - let totalPass = 0; - let total = 0; - const entryArray = []; - for (let i = 0, len = entries.length; i < len; i += 1) { // Loop to create array of objects - entryArray[i] = new Object; - entryArray[i].raw = entries[i]; - if (entryFilter(entries[i]) === true) { // filter out lines that don't with * [) - total += 1; - entryArray[i].name = namepatt.exec(entries[i])[1]; // Parses name of entry - entryArray[i].pass = findPattern(entries[i]); // Tests against known patterns - if (entryArray[i].pass === true) { // If entry passes increment totalPass counter - totalPass += 1; - } else { - console.log(`${entryArray[i].name} Failed.`); // If entry fails increment totalFail counter and append error to issuelog - // entryArray[i].error = findError(entries[i]) //WIP - totalFail += 1; - issuelog += `${entryArray[i].name} | ${entries[i]} \\n`; - } - } - } - if (totalFail > 0) { // Logs # passed & failed to console, and failures to syntaxcheck.json - console.log(`${totalFail} Failed, ${totalPass} Passed, of ${total}`); - log += ` "error": true,\n "title": "Found ${totalFail} entries with syntax error(s).",\n`; - fs.writeFileSync('syntaxcheck.json', `${log} ${issuelog} "\n}`); - process.exit(1); - } else { // Logs # of entries passed to console and error: false to syntaxcheck.json - console.log(`${totalFail} Failed, ${totalPass} Passed, of ${total} \n`); - log += ' "error": false\n}'; - fs.writeFileSync('syntaxcheck.json', log); - process.exit(0); - } -} - -entryErrorCheck(file); diff --git a/tests/Dangerfile b/tests/Dangerfile new file mode 100644 index 00000000..115931df --- /dev/null +++ b/tests/Dangerfile @@ -0,0 +1,39 @@ +# Danger CI configuration file +# https://danger.systems/guides/getting_started.html + +# Check for changes to README.md +has_readme_changes = git.modified_files.include?("README.md") + +# Ensure there is a summary for a pull request +fail 'Please provide a summary in the Pull Request description' if github.pr_body.length < 5 + +# Warn if PR guideline boxes are not checked. +warn 'Please check PR guidelines and check the boxes.' if github.pr_body.include? '- [ ]' + +# Warn if pull request is not updated +warn 'Please provide a descriptive title for the Pull Request' if github.pr_title.include? 'Update README.md' + +# Warn when there are merge commits in the diff +warn 'Please rebase to get rid of the merge commits in this Pull Request' if git.commits.any? { |c| c.message =~ /^Merge branch 'master'/ } + +# Check links +if has_readme_changes + require 'json' + results = File.read 'ab-results-temp.md-markdown-table.json' + j = JSON.parse results + if j['error']==true + warn j['title'] + markdown j['message'] + end +end + +# Check syntax +if has_readme_changes + require 'json' + syntaxresults = File.read 'syntaxcheck.json' + sj = JSON.parse syntaxresults + if sj['error']==true + fail sj['title'] + markdown sj['message'] + end +end diff --git a/tests/test.js b/tests/test.js new file mode 100644 index 00000000..94e7798c --- /dev/null +++ b/tests/test.js @@ -0,0 +1,85 @@ +// Accepts input of any filename, ie. node test.js README.md + +const fs = require('fs'); + +let log = '{\n'; +let issuelog = ' "message": "#### Syntax Issues\\n\\n Name | Entry\\n----|----------------------\\n'; + +const file = fs.readFileSync(process.argv[2], 'utf8'); // Reads argv into var file + +function entryFilter(md) { // Function to find lines with entries + const linepatt = /^\s{0,2}-\s\[.*`/; + return linepatt.test(md); +} + +function split(text) { // Function to split lines into array + return text.split(/\r?\n/); +} + +function findPattern(text) { // Test entries against 8 patterns. If matches pattern returns true + const nodnospatt = /^\s{0,2}-\s\[.*?\]\(.*?\) - .{0,249}?\. `.*?` `.*?`/; // Regex for entries with no demo and no source code + const slpatt = /^\s{0,2}-\s\[.*?\]\(.*?\) - .{0,249}?\. \(\[Demo\b\]\(.*?\), \[Source Code\b\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with demo and source code + const nodpatt = /^\s{0,2}-\s\[.*?\]\(.*?\) - .{0,249}?\. \(\[Source Code\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with no demo + const nospatt = /^\s{0,2}-\s\[.*?\]\(.*?\) - .{0,249}?\. \(\[Demo\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with no source code + const pnodnospatt = /^\s{0,2}-\s\[.*?\]\(.*?\) `⚠` - .{0,249}?\. `.*?` `.*?`/; // Regex for entries with proprietary with no demo and no source code + const pslpatt = /^\s{0,2}-\s\[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Demo\b\]\(.*?\), \[Source Code\b\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with demo and source code + const pnodpatt = /^\s{0,2}-\s\[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Source Code\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with no demo + const pnospatt = /^\s{0,2}-\s\[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Demo\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with no source code + if (nodnospatt.test(text) === true) { + return true; + } else if (slpatt.test(text) === true) { + return true; + } else if (nodpatt.test(text) === true) { + return true; + } else if (nospatt.test(text) === true) { + return true; + } else if (pnodnospatt.test(text) === true) { + return true; + } else if (pslpatt.test(text) === true) { + return true; + } else if (pnodpatt.test(text) === true) { + return true; + } else if (pnospatt.test(text) === true) { + return true; + } + return false; +} + +function entryErrorCheck(md) { + const namepatt = /^\s{0,2}-\s\[(.*?)\]/; // regex pattern to find name of entryArray + const entries = split(md); // Inserts each line into the entries array + let totalFail = 0; + let totalPass = 0; + let total = 0; + const entryArray = []; + for (let i = 0, len = entries.length; i < len; i += 1) { // Loop to create array of objects + entryArray[i] = new Object; + entryArray[i].raw = entries[i]; + if (entryFilter(entries[i]) === true) { // filter out lines that don't with * [) + total += 1; + entryArray[i].name = namepatt.exec(entries[i])[1]; // Parses name of entry + entryArray[i].pass = findPattern(entries[i]); // Tests against known patterns + if (entryArray[i].pass === true) { // If entry passes increment totalPass counter + totalPass += 1; + } else { + console.log(`${entryArray[i].name} Failed.`); // If entry fails increment totalFail counter and append error to issuelog + // entryArray[i].error = findError(entries[i]) //WIP + totalFail += 1; + issuelog += `${entryArray[i].name} | ${entries[i]} \\n`; + } + } + } + if (totalFail > 0) { // Logs # passed & failed to console, and failures to syntaxcheck.json + console.log(`${totalFail} Failed, ${totalPass} Passed, of ${total}`); + log += ` "error": true,\n "title": "Found ${totalFail} entries with syntax error(s).",\n`; + fs.writeFileSync('syntaxcheck.json', `${log} ${issuelog} "\n}`); + process.exit(1); + } else { // Logs # of entries passed to console and error: false to syntaxcheck.json + console.log(`${totalFail} Failed, ${totalPass} Passed, of ${total} \n`); + log += ' "error": false\n}'; + fs.writeFileSync('syntaxcheck.json', log); + process.exit(0); + } +} + +entryErrorCheck(file); -- cgit v1.2.3 From 9bb5fb870ad595c9044146ac816d0b5b7446e236 Mon Sep 17 00:00:00 2001 From: nodiscc Date: Mon, 20 May 2019 19:40:24 +0200 Subject: remove unused "join chat" image --- .github/join-chat.svg | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .github/join-chat.svg diff --git a/.github/join-chat.svg b/.github/join-chat.svg deleted file mode 100644 index 7faac520..00000000 --- a/.github/join-chat.svg +++ /dev/null @@ -1 +0,0 @@ -Rocket.ChatRocket.ChatJOIN CHATJOIN CHAT \ No newline at end of file -- cgit v1.2.3 From 9b803f3dea978629a2959af07a2d68851e485e32 Mon Sep 17 00:00:00 2001 From: nodiscc Date: Mon, 20 May 2019 19:40:43 +0200 Subject: add a python script to check last commit dates of github repositories listed in README.md --- tests/check-github-commit-dates.py | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 tests/check-github-commit-dates.py diff --git a/tests/check-github-commit-dates.py b/tests/check-github-commit-dates.py new file mode 100755 index 00000000..f148bac2 --- /dev/null +++ b/tests/check-github-commit-dates.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +""" A script to find github repo links and last commit dates in a markdown file + +Requirements: + - python3 github module (sudo apt install python3-github on Debian) + - A personal access token (https://github.com/settings/tokens) + +Usage: + - Run awesome_bot --allow-redirect -f README.md beforehand to detect any error(4xx, 5xx) that would + cause the script to abort + - Github API calls are limited to 5000 requests/hour https://developer.github.com/v3/#rate-limiting + - Put the token in your environment variables: + export GITHUB_TOKEN=18c45f8d8d556492d1d877998a5b311b368a76e4 + - The output is unsorted, just pipe it through 'sort' or paste it in your editor and sort from there + - Put the script in your crontab or run it from time to time. It doesn't make sense to add this + script to the CI job that runs every time something is pushed. + - To detect no-commit related activity (repo metadata changes, wiki edits, ...), replace pushed_at + with updated_at + +""" + +from github import Github +import sys +import time +import re +import os + +__author__ = "nodiscc" +__copyright__ = "Copyright 2019, nodiscc" +__credits__ = ["https://github.com/kickball/awesome-selfhosted"] +__license__ = "MIT" +__version__ = "1.0" +__maintainer__ = "nodiscc" +__email__ = "nodiscc@gmail.com" +__status__ = "Production" + +############################################################################### + +access_token = os.environ['GITHUB_TOKEN'] + +""" find all URLs of the form https://github.com/owner/repo """ +with open('README.md', 'r') as readme: + data = readme.read() + project_urls = re.findall('https://github.com/[A-z]*/[A-z|0-9|\-|_|\.]+', data) + +urls = sorted(set(project_urls)) + +""" Uncomment this to debug the list of matched URLs """ +# print(str(urls)) +# exit(0) + +""" login to github API """ +g = Github(access_token) + +""" load project metadata, output last commit date and URL """ +for url in urls: + project = re.sub('https://github.com/', '', url) + repo = g.get_repo(project) + print(str(repo.pushed_at) + ' https://github.com/' + project) -- cgit v1.2.3 From 55358488cef9ffb7f8d8bd655253462966efa0d6 Mon Sep 17 00:00:00 2001 From: PrplHaz4 Date: Mon, 20 May 2019 13:43:42 -0400 Subject: Update link and license for ShinobiCE Code moved to gitlab, license has changed from GPL-2.0 to GPL-3.0 + AGPL-3.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 451272bc..8c5e32bc 100644 --- a/README.md +++ b/README.md @@ -892,7 +892,7 @@ See also , Date: Mon, 20 May 2019 19:48:03 +0200 Subject: tests: fix danger command line --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3881cdab..68a3f44a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ script: - git diff master.. --unified=0 README.md | grep --perl-regexp --only-matching --silent "(?<=^\+).*" >> temp.md || (exit 0) - node tests/test.js temp.md - awesome_bot temp.md --allow-redirect || (exit 0) - - danger --dangerfile tests/Dangerfile --verbose + - danger --dangerfile=tests/Dangerfile --verbose notifications: email: false -- cgit v1.2.3 From 691e0e02bff5afc09ecc75d3c272a64f3b1f5ecf Mon Sep 17 00:00:00 2001 From: PrplHaz4 Date: Mon, 20 May 2019 15:28:50 -0400 Subject: combine license tags --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c5e32bc..78065ed4 100644 --- a/README.md +++ b/README.md @@ -892,7 +892,7 @@ See also , Date: Tue, 21 May 2019 08:51:02 -0400 Subject: fixed license syntax --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 78065ed4..8f97a7bb 100644 --- a/README.md +++ b/README.md @@ -892,7 +892,7 @@ See also , Date: Thu, 23 May 2019 19:27:23 +0200 Subject: Add KISSS --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1b160874..9bdadb2f 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ _Web Analytics_ - [Fathom Analytics](https://usefathom.com) - Simple & trustworthy website analytics. ([Source Code](https://github.com/usefathom/fathom)) `MIT` `Go` - [GoAccess](http://goaccess.io/) - Real-time web log analyzer and interactive viewer that runs in a terminal. ([Source Code](https://github.com/allinurl/goaccess)) `GPL-2.0` `C` - [Hastic](https://hastic.io) - Hackable time series pattern recognition tool with UI for Grafana. ([Source Code](https://github.com/hastic)) `Apache-2.0` `Python/Nodejs` +- [KISSS](https://kis3.dev) - Very minimalistic (KISS) website statistics tool. ([Source Code](https://github.com/kis3/kis3)) `MIT` `Go` - [Matomo](https://matomo.org/) - Leading open-source analytics platform that gives you more than just powerful analytics, formerly known as Piwik. ([Source Code](https://github.com/matomo-org/)) `GPL-3.0` `PHP` - [Open Web Analytics](http://www.openwebanalytics.com/) - Google Analytics and Piwik alternative. ([Source Code](https://github.com/padams/Open-Web-Analytics)) `GPL-2.0` `PHP` - [Rakam](https://rakam.io/) - Custom analytics platform that allows you to create your own analytics services. Integrate with any data source (web, mobile, IoT etc.), analyze data with SQL and create dashboards. ([Source Code](https://github.com/rakam-io/rakam)) `Apache-2.0` `Java` -- cgit v1.2.3 From c5fd0aac68060e52673c17fe71fa290b4d6bc114 Mon Sep 17 00:00:00 2001 From: nodiscc Date: Sun, 26 May 2019 15:44:27 +0200 Subject: remove seeks (unmaintained) - last update is from 2014 https://github.com/beniz/seeks/branches - The website domain seeks-project.info is parked Ref https://github.com/Kickball/awesome-selfhosted/issues/1013 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e808b084..afa37811 100644 --- a/README.md +++ b/README.md @@ -1164,7 +1164,6 @@ See also _[Monitoring](#monitoring)_ - [Ambar](https://ambar.cloud) - Document Search Engine (OCR, Store & Search). ([Demo](https://app.ambar.cloud/), [Source Code](https://github.com/RD17/ambar)) `MIT` `Nodejs/Python` - [Gigablast](http://www.gigablast.com/) - open source search engine. ([Source Code](https://github.com/gigablast/open-source-search-engine)) `Apache-2.0` `C++` -- [Seeks](https://beniz.github.io/seeks/) - Web search proxy and collaborative distributed tool for websearch. ([Source Code](https://github.com/beniz/seeks)) `AGPL-3.0` `C++` - [Searx](https://asciimoo.github.io/searx/) - Privacy-respecting, hackable metasearch engine. ([Demo](https://searx.me/), [Source Code](https://github.com/asciimoo/searx)) `AGPL-3.0` `Python` - [Yacy](http://yacy.net/en/index.html) - Peer based, decentralized search engine server. ([Demo](http://search.yacy.net/), [Source Code](https://github.com/yacy/yacy_search_server)) `GPL-2.0` `Java` -- cgit v1.2.3 From e8bdb92d5770a15ba4207fedf83217ce6476afc2 Mon Sep 17 00:00:00 2001 From: nodiscc Date: Sun, 26 May 2019 15:46:49 +0200 Subject: remove coordino (unmaintained): - last update is from 2015 https://github.com/Datawalke/Coordino/branches - the website https://coordino.com points to a cpanel error page - many old, unanswered issues on https://github.com/Datawalke/Coordino/issues Ref https://github.com/Kickball/awesome-selfhosted/issues/1013 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index afa37811..7fd01000 100644 --- a/README.md +++ b/README.md @@ -1304,7 +1304,6 @@ See https://staticsitegenerators.net and https://www.staticgen.com - [Bugzilla](https://www.bugzilla.org/) - General-purpose bugtracker and testing tool originally developed and used by the Mozilla project. `MPL-2.0` `Perl` - [Bumpy Booby](http://bumpy-booby.derivoile.fr/) - Simple, responsive and highly customizable PHP bug tracking system. ([Source Code](https://github.com/piero-la-lune/Bumpy-Booby)) `MIT` `PHP` - [Cerb](http://www.cerberusweb.com/) - Group-based e-mail management project. ([Source Code](https://github.com/wgm/cerb)) `DPL` `PHP` -- [Coordino](http://coordino.com/) - Open Source question and answer system on top of CakePHP. ([Source Code](https://github.com/Datawalke/Coordino)) `MIT` `PHP` - [Deskulu](https://github.com/Taskulu/deskulu) - Opensource helpdesk and ticketing system based on Drupal 7. ([Demo](https://help.taskulu.com)) `GPL-2.0` `PHP` - [DiamanteDesk](http://diamantedesk.com/) - DiamanteDesk is FREE Open Source easy-to-use help-desk solution. ([Demo](http://diamantedesk.com/demo/), [Source Code](https://github.com/eltrino/diamantedesk-application)) `OSL-3.0` `PHP` - [Flyspray](http://www.flyspray.org/) - Uncomplicated, web-based bug tracking system. ([Source Code](https://github.com/Flyspray/flyspray)) `GPL-2.0` `PHP` -- cgit v1.2.3 From 99415acfecb7df80ee39c7abf65b57a666c019f5 Mon Sep 17 00:00:00 2001 From: nodiscc Date: Sun, 26 May 2019 15:49:35 +0200 Subject: remove flumotion (unmaintained): - last update is from 2015 https://github.com/Flumotion/flumotion/branches - last website news/releases http://www.flumotion.net/ are from 2015 - requires an outdated version of gstreamer (0.10 series) Ref. https://github.com/Kickball/awesome-selfhosted/issues/1013 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7fd01000..e5ddd20d 100644 --- a/README.md +++ b/README.md @@ -844,7 +844,6 @@ See also , Date: Sun, 26 May 2019 15:51:57 +0200 Subject: remove phaste (unmaintained): - project is marked as archived - last update is from 2015 https://github.com/FoxDev/Phaste/branches Ref. https://github.com/Kickball/awesome-selfhosted/issues/1013 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e5ddd20d..52560182 100644 --- a/README.md +++ b/README.md @@ -1043,7 +1043,6 @@ See https://github.com/n1trux/awesome-sysadmin#monitoring and https://github.com - [Pastebin](https://github.com/ewhal/Pastebin) - Modern self-hosted pastebin service with a restful API. `MIT` `Go` - [pb](https://github.com/ptpb/pb) - Lightweight pastebin (and url shortener) built using flask. ([Demo](https://ptpb.pw/)) `GPL-3.0` `Python` - [pbnh](https://github.com/bhanderson/pbnh) - Pastebin inspired from project pb and hastebin, with an API and a SQL-based backend. `MIT` `Python` -- [Phaste](https://pste.pw) - Phalcon-based, MySQL pastebin application with privacy-respecting Piwik integration and syntax highlighting. ([Source Code](https://github.com/FoxDev/Phaste)) `AGPL-3.0` `PHP` - [PrivateBin](https://privatebin.info/) - PrivateBin is a minimalist, opensource online pastebin/discussion board where the server has zero knowledge of hosted data. ([Demo](https://privatebin.net/), [Source Code](https://github.com/PrivateBin/PrivateBin)) `Zlib` `PHP` - [SharpPaste](https://github.com/phonicmouse/SharpPaste) - Cross-platform C# pastebin with client-side AES-256 encryption that just works. ([Demo](https://sharppaste.nl/)) `MIT` `C#/NancyFX` - [Snibox](https://snibox.github.io/) - Code snippets manager with attractive tag-oriented interface. ([Demo](https://snibox-demo.herokuapp.com/), [Source Code](https://github.com/snibox/snibox)) `MIT` `Ruby` -- cgit v1.2.3 From f383256168fdbadbb9fd6e6bca0a7f266e49d88e Mon Sep 17 00:00:00 2001 From: charsi Date: Tue, 28 May 2019 10:07:30 -0700 Subject: Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 606c5ec8..c63b058f 100644 --- a/README.md +++ b/README.md @@ -242,7 +242,7 @@ _CalDAV or CardDAV servers_ - [CalendarServer](https://www.calendarserver.org/) - Apple, Inc.'s standards-compliant server implementing the CalDAV and CardDAV protocols shipped with macOS Server. ([Source Code](https://github.com/apple/ccs-calendarserver)) `Apache-2.0` `Python` - [calypso](https://keithp.com/calypso/) - Python-based CalDAV and CardDAV server, forked from Radicale. ([Source Code](https://keithp.com/git/calypso.git)) `GPL-3.0` `Python` - [DAViCal](https://www.davical.org/) - Server for calendar sharing (CalDAV) that uses a PostgreSQL database as a data store. ([Source Code](https://gitlab.com/davical-project/davical)) `GPL-2.0` `PHP` -- [DecSync CC](https://f-droid.org/packages/org.decsync.cc/) - Serverless contacts, calendar synchronization using your own file syncing method i.e Syncthing, Nextcloud etc ([Source Code](https://github.com/39aldo39/DecSyncCC)) `GPL-3.0` `Kotlin` +- [DecSync CC](https://f-droid.org/packages/org.decsync.cc/) - Serverless contacts, calendar synchronization using your own file syncing method i.e Syncthing, Nextcloud etc. ([Source Code](https://github.com/39aldo39/DecSyncCC)) `GPL-3.0` `Kotlin` - [EteSync Server](https://www.etesync.com) - End-to-end encrypted and journaled personal information server supporting calendar and contact data, offering its own clients. ([Source Code](https://github.com/etesync/server-skeleton)) `AGPL-3.0` `Python/Django` - [Radicale](http://radicale.org/) - Simple calendar and contact server with extremely low administrative overhead. ([Source Code](https://github.com/Kozea/Radicale)) `GPL-3.0` `Python` - [SabreDAV](http://sabre.io/) - Open source CardDAV, CalDAV, and WebDAV framework and server. ([Source Code](https://github.com/sabre-io/dav)) `MIT` `PHP` -- cgit v1.2.3 From 1e64c112144fff2fd2c03835655e0ba00a206570 Mon Sep 17 00:00:00 2001 From: nodiscc Date: Thu, 30 May 2019 22:55:38 +0200 Subject: remove wheatbin (unmaintained, never was) - Was Forked from Kanboard in 2015 - No actual work was done after the fork, only doc/branding updates - See https://github.com/wheatbin/wheatbin/commits/master?before=779a14497464d39f11af88547cb89317901e427b+105 - Last issue report from 2017 https://github.com/wheatbin/wheatbin/issues - Kanboard is is still active https://github.com/kanboard/kanboard and listed here --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 52560182..aa0f1571 100644 --- a/README.md +++ b/README.md @@ -1290,7 +1290,6 @@ See https://staticsitegenerators.net and https://www.staticgen.com - [Tracks](http://www.getontracks.org/) - Web-based application to help you implement David Allen’s [Getting Things Done™](https://en.wikipedia.org/wiki/Getting_Things_Done) methodology. ([Source Code](https://github.com/TracksApp/tracks)) `GPL-2.0` `Ruby` - [Volition](https://www.usevolition.com) - Opinionated open-source task management. ([Demo](https://www.usevolition.com/today/new?guest=true), [Source Code](https://github.com/garrettqmartin8/volition)) `MIT` `Ruby` - [Wekan](https://wekan.github.io/) - Open-source Trello-like kanban. ([Demo](https://oasis.sandstorm.io/appdemo/m86q05rdvj14yvn78ghaxynqz7u2svw6rnttptxx49g1785cdv1h), [Source Code](https://github.com/wekan/wekan)) `MIT` `Nodejs` -- [Wheatbin](http://wheatbin.com/) - Project management software that combines Kanban methodology with the Law of the Harvest. ([Source Code](https://github.com/wheatbin/wheatbin)) `MIT` `PHP` ## Ticketing -- cgit v1.2.3