Browse Source

add gemlog news

main
yggverse 2 months ago
parent
commit
27660d2903
  1. 60
      news/bdoku-dokuwiki-satellite-for-gemini-protocol.gmi
  2. 12
      news/index.gmi
  3. 219
      news/release-gemini-php-0.1.0.gmi
  4. 26
      news/release-gemini-php-0.2.0.gmi
  5. 55
      news/release-gemini-php-0.3.0.gmi
  6. 36
      news/release-gemini-php-0.4.0.gmi
  7. 14
      news/release-gemini-php-0.4.1.gmi
  8. 36
      news/release-gemini-php-0.5.0.gmi
  9. 28
      news/release-gemini-php-0.6.0.gmi
  10. 35
      news/release-gemini-php-0.7.0.gmi
  11. 19
      news/yo-search-for-gemini-protocol.gmi

60
news/bdoku-dokuwiki-satellite-for-gemini-protocol.gmi

@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
# β-Doku is DokuWiki Satellite for Gemini Protocol
Allows to launch read-only DokuWiki proxy server
It is based on titan-II server, gemini-php to parse DokuWiki data folder, cache-php to save compiled pages in memory and Manticore for full-text search.
## Examples
=> gemini://betahowto.duckdns.org Clearnet instance of Yggdrasil Wiki (http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c])
=> gemini://[301:23b4:991a:634d::b] Yggdrasil mirror
=> gemini://betahowto.ygg Alfis DNS alias
## Install
```
wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
dpkg -i manticore-repo.noarch.deb
apt update
apt install git composer memcached manticore manticore-extra php-fpm php-memcached php-mysql php-mbstring
git clone https://github.com/YGGverse/bdoku.git
cd bdoku
composer update
```
## Setup
```
cd bdoku
mkdir host/127.0.0.1
cp example/config.json host/127.0.0.1/config.json
cd host/127.0.0.1
openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem -days 365 -nodes -subj "/CN=127.0.0.1"
```
## Launch
Before launch the server, copy or create alias of path/to/dokuwiki/data folder to bdoku/host/127.0.0.1 on example above.
On every start, previous memory cache will be cleaned and new search index created.
After data folder update, you need just to restart your server with systemd or another process manager.
When launching with systemd, just make sure that manticore server already running:
```
[Unit]
Wants=manticore.service
After=manticore.service
...
```
Then
```
php src/server.php 127.0.0.1
```
Open gemini://127.0.0.1 in your favorite Gemini browser!
## Links
=> https://github.com/YGGverse/bdoku β-Doku on GitHub

12
news/index.gmi

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
# YGGverse - News
=> release-gemini-php-0.7.0.gmi 2024-04-07 Release gemini-php 0.7.0
=> release-gemini-php-0.6.0.gmi 2024-04-06 Release gemini-php 0.6.0
=> release-gemini-php-0.5.0.gmi 2024-04-05 Release gemini-php 0.5.0
=> release-gemini-php-0.4.1.gmi 2024-04-05 Release gemini-php 0.4.1
=> release-gemini-php-0.4.0.gmi 2024-04-03 Release gemini-php 0.4.0
=> yo-search-for-gemini-protocol.gmi 2024-04-03 Yo! search branch for Gemini Protocol
=> release-gemini-php-0.3.0.gmi 2024-04-03 Release gemini-php 0.3.0
=> release-gemini-php-0.2.0.gmi 2024-04-02 Release gemini-php 0.2.0
=> release-gemini-php-0.1.0.gmi 2024-04-02 Release gemini-php 0.1.0
=> bdoku-dokuwiki-satellite-for-gemini-protocol.gmi 2024-01-30 β-Doku is DokuWiki Satellite for Gemini Protocol

219
news/release-gemini-php-0.1.0.gmi

@ -0,0 +1,219 @@ @@ -0,0 +1,219 @@
# Release gemini-php 0.1.0
Initial release dedicated to β-Doku project
At this point, toolkit provides DokuWiki API for Gemini protocol
## Example
### Reader
Read DokuWiki and convert to Gemini
``` php
$reader = new \Yggverse\Gemini\Dokuwiki\Reader(
// optional regex rule set array
);
```
Get or change existing regex rule (or just skip by using build-in set)
``` php
echo $reader->setRule(
'/subject/ui',
'replacement'
);
```
Convert DokuWiki text to Gemini markup
As wiki has lot of inline links, to make converted document well-readable, this method does not replace links with new line => macros, but uses inline context: Name ( URL ).
This model useful with Reader::getLinks method, that for example appends all those related links to the document footer.
If you don't like this implementation, feel free to change it by Reader::setRule method!
``` php
echo $reader->toGemini(
file_get_contents(
'/host/data/pages/index.txt'
)
);
```
Get document title
``` php
$gemini = $reader->toGemini(
file_get_contents(
'/host/data/pages/index.txt'
)
);
echo $reader->getH1(
$gemini
);
```
Get document links
``` php
$gemini = $reader->toGemini(
file_get_contents(
'/host/data/pages/index.txt'
)
);
echo $reader->getLinks(
$gemini
);
```
### Filesystem
Provides methods for simple and secure interaction with DokuWiki file storage
``` php
$filesystem = new \Yggverse\Gemini\Dokuwiki\Filesystem(
'/host/data' // storage location
);
```
Return simple array of all files in storage
``` php
var_dump (
$filesystem->getList(
'hello:world'
)
);
```
Return all files under the storage folder in tree format
``` php
var_dump (
$filesystem->getTree(
'hello:world'
)
);
```
Return pages under the given data directory
``` php
var_dump (
$filesystem->getPagePathsByPath(
// absolute path to target data directory (e.g. Filesystem::getDirectoryPathByUri)
)
);
```
Return absolute path to stored page file
``` php
var_dump (
$filesystem->getPagePathByUri(
'hello:world'
)
);
```
Return page URI in dokuwiki:format
``` php
var_dump (
$filesystem->getPageUriByPath(
'/full/path/to/page.txt'
)
);
```
Return absolute path to stored media file
``` php
var_dump (
$filesystem->getMediaPathByUri(
'hello:world'
)
);
```
Return file MIME if path match storage item
``` php
var_dump (
$filesystem->getMimeByPath(
'/full/path/to/page.txt'
)
);
```
Return file content if path match storage item
``` php
var_dump (
$filesystem->getDataByPath(
'/full/path/to/page.txt'
)
);
```
Check path exist and match storage item
``` php
var_dump (
$filesystem->isPath(
'/full/path/to/page.txt'
)
);
```
### Helper
Useful methods to minify controller codebase
``` php
$helper = new \Yggverse\Gemini\Dokuwiki\Helper(
new \Yggverse\Gemini\Dokuwiki\Filesystem(),
new \Yggverse\Gemini\Dokuwiki\Reader()
);
```
Return simple array of children section links in Gemini format
``` php
var_dump (
$helper->getChildrenSectionLinksByUri(
'hello:world'
)
);
```
Return simple array of children page links in Gemini format
``` php
var_dump (
$helper->getChildrenPageLinksByUri(
'hello:world'
)
);
```
Return page link (that contain document name) in Gemini format
``` php
var_dump (
$helper->getPageLinkByPath(
$filesystem->getPagePathByUri(
'hello:world'
)
)
);
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.1.0 Download gemini-php 0.1.0
=> https://github.com/YGGverse/gemini-php#dokuwiki API documentation
=> bdoku-dokuwiki-satellite-for-gemini-protocol.gmi β-Doku is DokuWiki Satellite for Gemini Protocol

26
news/release-gemini-php-0.2.0.gmi

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
# Release gemini-php 0.2.0
Completed Request / Response Client
This API make TLS socket connection simpler for PHP apps based on Composer
## Example
``` php
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org:1965/index.gmi'
);
$response = new \Yggverse\Gemini\Client\Response(
$request->getResponse()
);
var_dump(
$response->getBody()
);
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.2.0 Download gemini-php 0.2.0
=> https://github.com/YGGverse/Yo/blob/gemini/src/cli/document/crawl.php Feature in Yo! Crawler branch for Gemini Protocol

55
news/release-gemini-php-0.3.0.gmi

@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
# Release gemini-php 0.3.0
Version 0.3.0 is here!
Includes new classes for object-oriented work with gemtext (text/gemini)
## Example
``` php
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org'
);
$response = new \Yggverse\Gemini\Client\Response(
$request->getResponse()
);
$body = new \Yggverse\Gemini\Gemtext\Body(
$response->getBody()
);
var_dump(
$body->getH2()
);
foreach ($body->getLinks() as $line)
{
$link = new \Yggverse\Gemini\Gemtext\Link(
$line
);
var_dump(
$link->getAddress()
);
var_dump(
$link->getAlt()
);
var_dump(
$link->getDate(
$timestamp // get unix time from this variable
)
);
var_dump(
$timestamp
);
}
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.3.0 Download gemini-php 0.3.0
=> https://github.com/YGGverse/gemini-php?tab=readme-ov-file#gemtext Gemtext API methods

36
news/release-gemini-php-0.4.0.gmi

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
# Release gemini-php 0.4.0
Includes Body::findLinks method to grab clickable links from Gemtext
## Example
``` php
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org'
);
$response = new \Yggverse\Gemini\Client\Response(
$request->getResponse()
);
$body = new \Yggverse\Gemini\Gemtext\Body(
$response->getBody()
);
var_dump(
$body->findLinks() // returns array of gemini links
);
var_dump(
$body->findLinks('http') // returns array of http links
);
```
## Other
* add response setters
* reduce default chunk size
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.4.0 Download gemini-php 0.4.0

14
news/release-gemini-php-0.4.1.gmi

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
# Release gemini-php 0.4.1
Correction release
* allow nullable $length attribute
* remove chunk settings
* remove custom length value
* allow nullable response init
* fix macros name
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.4.1 Download gemini-php 0.4.1
=> release-gemini-php-0.4.0.gmi Major version details

36
news/release-gemini-php-0.5.0.gmi

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
# Release gemini-php 0.5.0
Implemented Body::skipTags filter
## Example
``` php
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org'
);
$response = new \Yggverse\Gemini\Client\Response(
$request->getResponse()
);
$body = new \Yggverse\Gemini\Gemtext\Body(
$response->getBody()
);
var_dump(
$body->skipTags() // strip all tags
);
var_dump(
$body->skipTags(
[ // strip 1- and 2- level headers only
"##",
"###"
]
)
);
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.5.0 Download gemini-php 0.5.0

28
news/release-gemini-php-0.6.0.gmi

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
# Release gemini-php 0.6.0
Add stream context options support
## Example
``` php
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org',
'68.133.1.71' // make direct request to the resolved host
);
$request->setOptions(
[
'ssl' =>
[
'peer_name' => 'yggverse.cities.yesterweb.org', // SNI
'verify_peer' => false,
'verify_peer_name' => false
]
]
);
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.6.0 Download gemini-php 0.6.0
=> https://github.com/YGGverse/net-php Network Resolver in PHP 8

35
news/release-gemini-php-0.7.0.gmi

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
# Release gemini-php 0.7.0
Client::Request method now supports resolved host as optional argument!
This feature useful to
* reduce traffic usage
* increase page loading time by DNS results cache in memory
* alternative networks resolvers, isolated of system
Update dedicated to the Yo! crawler project
=> https://github.com/YGGverse/Yo/tree/gemini
## Example
``` php
$request = new \Yggverse\Gemini\Client\Request(
'gemini://yggverse.cities.yesterweb.org:1965/index.gmi' // target URL
'68.133.1.71' // resolved IP, skip to use system-wide resolver
);
```
Alternatively, use setResolvedHost method of Request object before getResponse
``` php
$request->setResolvedHost(
'68.133.1.71'
)
```
## Links
=> https://github.com/YGGverse/gemini-php/releases/tag/0.7.0 Download gemini-php 0.7.0
=> https://github.com/YGGverse/net-php Network Resolver in PHP 8

19
news/yo-search-for-gemini-protocol.gmi

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
# Yo! search for Gemini Protocol
Just created Yo! branch oriented for Gemini space
=> https://github.com/YGGverse/Yo/tree/gemini
At this moment under development, we hope to launch online crawler soon.
Yo! is the super thin client-server crawler based on Manticore full-text search server.
It written in PHP 8 / Composer, includes flexible settings, page history snaps, CLI tools for administration and simple JS-less UI (in original build)
Probably, Gemini interface will be implemented using Titan-II server fork with better IPv6 support (as we're from Yggdrasil)
=> https://github.com/YGGverse/titan-II
Also, working on gemini-php library as the dependency:
=> https://github.com/YGGverse/gemini-php
Loading…
Cancel
Save