f.haeder.net

My contributions to Friendica

See this figure:
$ git log | grep "Author: "|grep -i roland --count
658
$


Hypolite: 3569
Heleucht: 6145

Only to name two here in the fediverse. There are surely much more.
#shell #grep #git contributions friendica
Here's the same page with graphs: https://github.com/friendica/friendica/graphs/contributors

But as usual with raw git figures, neither the commit number nor the line changed are meaningfully representing anything, and I'm not sure where you're going with this.
Thank you for the link.

Getting E_NOTICE on develop branch

I'm getting this error message when I click on the lock icon:

Notice: Undefined index: contact-id in /var/www/../addon/remote_permissions/remote_permissions.php on line 77
bug friendica php
Michael Vogel friendica (AP)
This addon is unsupported and is about to be removed in future versions of Friendica.
Okay, thank you. :-) But is there any (mostly "protocol-technical") reason?
Michael Vogel friendica (AP)
It cannot work that way.

Back with updated instance but wrong UTF?

I have successfully updated my instance to latest code and migrated to new config file. But as you can see, the UTF-8 is broken. What can I set here to fix it? The database says "utf8mb4_general_ci".
develop friendica
Can you check in src\Database\DBA.php what charset is actually used for the connection?
Tomorrow more, already 04:33 a.m. here. :-/
Sorry, busy and hot day today. Will attempt it this evening. :)
As configured $charset has value utf8mb4.
Do I have to run queries like this to fix it: UPDATE `item-content` SET `body`= REPLACE(`body`,'ö','?');?
Found a better one:
UPDATE
`item-content`

SET
`body` =
CASE
WHEN CONVERT(CAST(CONVERT(`body` USING latin1) AS BINARY) USING utf8) IS NULL THEN `body`
ELSE CONVERT(CAST(CONVERT(`body` USING latin1) AS BINARY) USING utf8)
END;

Source: stackoverflow
Careful with already converted data, like I had with contact table where all converted uni-code characters had been converted to question marks. I then had to re-fetch all these contacts over the "Advanced" tab, still there are some pending. GNUSocial allows me to refresh contacts through scripts. Maybe a good idea for Friendica as well?
While clicking on "re-fetch contact data" in the "Advanced" tab, I get these E_NOTICE with OStatus contacts:

Notice: Undefined index: body in /var/www/../src/Protocol/OStatus.php on line 1163
Notice: Undefined index: title in /var/www/../src/Protocol/OStatus.php on line 1916
Notice: Undefined index: guid in /var/www/../src/Protocol/OStatus.php on line 1925
Notice: Undefined index: tag in /var/www/../src/Model/Item.php on line 2787
Notice: Undefined index: tag in /var/www/../src/Model/Item.php on line 2796
Notice: Undefined index: attach in /var/www/../src/Protocol/OStatus.php on line 1372


Will prepare a PR for them.
Found a parser error in addons:
PHP Parse error: syntax error, unexpected '}', expecting end of file in ./addons/pumpio/pumpio.php on line 228

Parse error: syntax error, unexpected '}', expecting end of file in ./addons/pumpio/pumpio.php on line 228

Errors parsing ./addons/pumpio/pumpio.php
Branch pumpio/import-curly-braces created, PR is on it's way.
More errors while deleting an item:
Notice: Undefined index: remote in /var/www/../include/items.php on line 357
Notice: Undefined index: confirm in /var/www/../include/items.php on line 368
Notice: Undefined index: canceled in /var/www/../include/items.php on line 391

Yes, some of you may say that I can switch off E_NOTICE but that is causing more trouble than solving it. The best practice in my oppinion is, to get to the root of the cause and not supress errors and warnings.

Only a #fixed #bug is a good bug. :-)
Again, some "downtime" (errors) due to updating my develop branch to latest upstream (= main repository) changes.

Latest develop fails to run SQL update

@Friendica Developers I have an error while the db update was running, Friendica was sending me an email about it.
The friendica developers released update 1274 recently,
but when I tried to install it, something went terribly wrong.
This needs to be fixed soon and I can't do it alone. Please contact a
friendica developer if you can not help me on your own. My database might be invalid.
The error message is
Errors encountered performing database changes: ALTER IGNORE TABLE `item` DROP INDEX `contactid_allowcid_allowpid_denycid_denygid`, DROP INDEX `uid_authorlink`, ...


On console I get this error:
Error 1296 occurred during database update:
Got error 64 'Temp file write failure' from InnoDB


I'm now back at my old commit so the instance can work again.
@Friendica Developers bug develop friendica update
Editing a photo causes E_NOTICEs:

Notice: Undefined index: group_allow in /var/www/../mod/photos.php on line 356
Notice: Undefined index: contact_allow in /var/www/../mod/photos.php on line 357
Notice: Undefined index: group_deny in /var/www/../mod/photos.php on line 358
Notice: Undefined index: contact_deny in /var/www/../mod/photos.php on line 359
Another one when I view notifications:
Notice: Undefined index: verb in /var/www/../src/Core/NotificationsManager.php on line 276
Here, $it misses that element.

Friendica is overly happy with notifications

Wow, that was a lot notifications, about 300 I guess, pilled up my whole desktop:
Image/Photo
desktop-notification friendica
Fabio Friendica
"ARE YOU NOT NOTIFIED?"

Image/Photo

Needed to change item.body - domain parker found again

Today I ran this SQL on my #friendica database:
MariaDB [xxx]> UPDATE `item` SET `body`=REPLACE(`body`,'oracle.skilledtests.com','invalid-domain') WHERE `body` LIKE '%skilledtests.com%s';
Query OK, 94 rows affected (1 min 1.45 sec)
Rows matched: 94  Changed: 94  Warnings: 0

MariaDB [xxx]>

Normally I try to avoid such "hacky" things as they may hurt the application. But here I made an exception. Sadly, #ErkanYilmaz stepped down and left #question bot and the famous #fediverse grou left to death. Now it seems also the domain is gone. His decision but as you can see here, a "domain-shark" (someone hunting with automated scripts for left and popular domains) took it over and parked it.

I ask you not to always stay with us, your decision and I respect it. But please consider to ask someone here to take over the domain and delink it from all other nodes or else, "thanks" to the #page-ranking by #googlle it still has an attractive rank and sure such people will give everything to grab it and put it on sale with for-money generated "content" (#fake-content ) on it.

So, the other administrators, please repeat above query for any parked (given up) domain you can find.
#friendica #ErkanYilmaz #question #fediverse #page-ranking #googlle #fake-content friendica old-owner-leaving skilledtests.com sql
#mindblown some shady registrar tries to get .invalid in their TLD list ...

Problem with http-bind to XMPP server

I have xmpp-based chat enabled on this site where I currently have some trouble with. You can reach it here: https://f.haeder.net/http-bind

The upstream server behind it runs at 127.0.0.1:5280 and is configured as followed:
ejabberd.cfg
{5280, ejabberd_http, [captcha, http_put, http_poll, http_bind]}
and ...
ejabberd.yml
port: 5280
ip: "127.0.0.1"
module: ejabberd_http
request_handlers:
"/websocket": ejabberd_http_ws
## "/pub/archive": mod_http_fileserver
web_admin: true
http_bind: true
## register: true
captcha: true
tls: true
certfile: "/etc/ejabberd/ejabberd.pem"


In /var/log/ejabberd/error.log I see tons of these messages:
2018-05-13 xx:xx:xx.xxx [critical]<0.2508.0>@extauth:loop:142 extauth script has exitted abruptly with reason 'normal'
chat ejabberd friendica xmpp
Process is clearly listening:
# netstat -lnp |grep 5280
tcp 0 0 127.0.0.1:5280 0.0.0.0:* LISTEN xxx/beam.smp
#
In my #apache2.4 configuration file I have this:

<IfModule mod_proxy.c>
<IfModule mod_proxy_http.c>
ProxyPass /http-bind http://127.0.0.1:5280/http-bind retry=0
</IfModule>
</IfModule>
Ah, if I call that URL with lynx, nothing returns, but with https something returns! Here is the bug!
FIXED!!! I had to set tls: false, restart ejabberd, then apache. #fixed
#TIL If you restart apache first, it won't work as ejabberd must be listening already when apache builds the proxy chain (which makes sense again). And yeah, having TLS on 127.0.0.1 makes no sense. ;-)

Well, #shit-happens

Buggy federation?

Dann machst du Musik? Welche Style? @Steffen K9 ????


This comment has not reached him but he does follow me. #federation-bug #friendica
#federation-bug #friendica @Steffen K9 devlop federation friendica
PHP Fatal error: Uncaught TypeError: Argument 2 passed to statusnet_cron() must be of the type array, null given, called in /var/www/../src/Core/Addon.php on line 246 and defined in /var/www/../addon/statusnet/statusnet.php:727
Ops!
I have now tweaked some settings, the worker queue is now dropping almost constantly. I have found out that ./bin/daemon.php continues only every 5 minutes with next cycle. Plus worker_fetch_limit was only on 1 which I have now increased to 100. Also worker_queues is now 20 as @Michael Vogel suggested. Plus fastlane is enabled.

These settings have improved worker performance and it is now on the job. :-) In addition to that I enabled "my" implemented redis cache driver and set config_adapter to preload.

So here is my .htconfig.php (relevant lines only):
// Pre-load configuration
$a->config['system']['config_adapter'] = 'preload';

// Worker settings
$a->config['system']['worker_queues'] = 20;
$a->config['system']['worker_fetch_limit'] = 100;
$a->config['system']['worker_fastlane'] = true;

And always keep logfile + intense debugging on low-profile! All instructions being executed count in and drop performance for each request being sent to your instance.

E_NOTICE in .htconfig.php ?

Hi @Friendica Developers I'm getting this error on my instance (this):

PHP Notice:  Use of undefined constant REGISTER_CLOSED - assumed 'REGISTER_CLOSED' in /var/www/../.htconfig.php on line 38
PHP Stack trace:
PHP   1. {main}() /var/www/../bin/daemon.php:0
PHP   2. include() /var/www/../bin/daemon.php:41


I get this every time I start or stop the daemon (as you can see in backtrace).
@Friendica Developers develop friendica update
Okay, it always starts and stops, just a bit annoying.

Update of develop branch

Dear @Friendica Developers I have now updated to latest develop code and rebased my branch. There have always been a scripts/dbstructure.php around. How do I now update? The offline documentation does not provide any information about this.
@Friendica Developers develop friendica update
And I got this on ./bin/console dbstructure update:

ALTER IGNORE TABLE `gserver` MODIFY `register_policy` tinyint NOT NULL DEFAULT 0 COMMENT '', MODIFY `registered-users` int unsigned NOT NULL DEFAULT 0 COMMENT '', MODIFY `network` char(4) NOT NULL DEFAULT '' COMMENT '', ADD `relay-subscribe` boolean NOT NULL DEFAULT '0' COMMENT 'Has the server subscribed to the relay system', ADD `relay-scope` varchar(10) NOT NULL DEFAULT '' COMMENT 'The scope of messages that the server wants to get', COMMENT = 'Global servers';

Error 1060 occurred during database update:
Duplicate column name 'relay-subscribe'


You may want to split this combined SQL statement into single statements then at least all the other parts will work.
This SQL query was automatically generated by the DBStructure::update process that compares your current database schema with the target Friendica current schema. Basically, the script concluded that your gserver table was missing a column and tried to add it back again. I'm not sure why it doesn't see the current column though. This would be a question for @Michael Vogel, he created the DB update routine.
Have done it here. I have also updated my instance again because of the #bug with user accounts.
#bug

My friendica directory

Gettings these warnings a lot:

Warning: mysqli::close(): Couldn't fetch mysqli in /var/www/../htdocs/include/dba.php on line 100

Call Stack:
0.0005 346776 1. {main}() /var/www/../htdocs/include/cron_sync.php:0
0.0149 486640 2. run_pulling_job() /var/www/../htdocs/include/cron_sync.php:93
0.0899 567136 3. pull_worker() /var/www/../htdocs/include/sync.php:406
0.0927 578144 4. dba->__destruct() /var/www/../htdocs/include/sync.php:350
0.0927 578144 5. mysqli->close() /var/www/../htdocs/include/dba.php:100


Anyone knows what is wrong? And I had to fix .htaccess file for Apache 2.4 (Require all denied is the correct one).
directory friendica sync
And the #federation is targeted by escort services ... :-( I have now blocked 4 accounts.
Completed a PR for .htaccess file thing: https://github.com/friendica/dir/pull/46
Thanks for the PR! Not sure what it is about in the mysqli error.
Accounts that have censored=1 activated (blocked?) should not be touched by cron_sync.php as this would unlock them again.
Also I noticed that these accounts flooded the tags table with their "SEO keywords".

Asynchronous loading of JavaScript and CSS files in Friendica?

@Friendica Developers what do you think? It mostly involves adding the attribute async="" to the tags.
@Friendica Developers async css friendica javascript
The console will tell you which parts are missing next time you encounter the issue though.
The problem is mitigated by the fact only you reported it so far. ????

Friendica verwechselbar mit FB?

Ich wurde hier #aufarbeit angesprochen, ob ich [bold]hier[/bold] auf #Facebook unterwegs sei ... Ja, ist verwechselbar, wenn man sehr ungenau hinsieht. Vielleicht hat er sich an dem Favicon festgeklammert?

Naja, nicht als Kritik oder FB-Bashing verstehen, was damit auch nicht beabsichtigt ist, ich weis sehr wohl, dass Friendica != Facebook ist, da es eine freie Alternative ist.

Ich finde es halt etwas bedenklich. Ich musste nachkorrigieren und sagen, dass es nicht FB, sondern Friendica ist. Mal schauen, vielleicht wechsel ich das Theme? Sieht es wirklich so verwandt mit FB aus? Finde nicht, hier ist vieles weiss und grau, bei FB weiss und blau.
#aufarbeit #Facebook facebook friendica verwechselung
Hier #vier . Ich schalte mal #frio frei und gucke, wie es aussieht. Etwas FB konnte ich bei meiner Frau "zwangsweise" sehen (sie ist dort wegen der Familie auf den #Philippinen viel unterwegs, dort gibt es FB kostenlos, (fast) der Rest kostet Aufschlag, 2-Lane-Internet ist dort schon angekommen ... :-( )

XMPP addon does no longer connect to ejabberd

@Friendica Support I had always a working XMPP instance on my friendica instance. Now it doesn't connect. I have enabled debug log in .htaconfig file but nothing is written there.

With pstree I can only see beam.smp with 18 beam.smp threads but no ejabberd_auth.php sub process which did happen before. strace tells me that it tries to read from 0 (stdin) so it seems to wait for input. Access rights and correct user/group are set (0700, ejabberd.ejabberd according to documentation). Yet still it isn't starting.

Any ideas what might cause this?
@Friendica Support addon ejabberd friendica jabber xmpp
Have you changed the path to ejabberd_auth.php? It moved to "scripts".
No, I still have it in include but it did work before. Sure, I need to find some time for updating my instance ...
Then try at first a regular XMPP client to see where the problem is.
As I said, only beam.smp is visible in pstree view, no forked auth_ejabberd.php.
You are on the develop branch. When have you updated your system? Several weeks ago the script moved.
And no, it is not working. Not even a single debug message in ejabberd.log.
Okay, I have always updated ejabberd.cfg but ejabberd.yml is used. No wonder that auth_ejabberd.php was never loaded. Now it is loaded but still the same. I'll digg deeper for this ...
Please check via an external client.
Tried it with #gajim, no change. :-(
Somehow it listens only on IPv6 requests, which I surely not do (not now).
Okay, the private key part in ejabberd.pem was missing. Now I can connect and even with SSL.
Still nothing on friendica's side. It looks like no connect is going through. http-bind is available at https://f.haeder.net/http-bind and returns a 503?
Have a look at your system logfile (/var/log/user.log). There you should see some lines for "auth_ejabberd".
I have found out that ejabberd's http-bin was listening not on 127.0.0.1:5280 but instead on public IP. Maybe misconfiguration, still I'm getting a 502 on pointing my browser to https://f.haeder.net/http-bind

http-bind settings and listener

<IfModule mod_proxy.c>
<IfModule mod_proxy_http.c>
ProxyPass /http-bind http://127.0.0.1:5280/http-bind retry=0
</IfModule>
</IfModule>


And:

# netstat -lnp|grep 5280
tcp 0 0 127.0.0.1:5280 0.0.0.0:* LISTEN xxxxx/beam.smp
#
apache24 bosh ejabberd http-bind

Hacking friendica code with trailing/leading white-spaces

When editing #Friendica code, I use a local commit hook, finding leading and trailing white-spaces. The hook itself is GIT's default pre-commit hook plus a few extra lines:

# Find bad scripts
./util/typo.php

# PHPUnit
if [ -x ./vendor/bin/phpunit ]
then
./vendor/bin/phpunit || exit 255
fi


So, please don't wonder when I touch "the whole file". Then I have just changed DOS -> Uni* line-break (CRLF to LF) as it was being detected as trailing white-space characters.
#Friendica code friendica white-space
js/country.js is indented with space and tabs, I fix that to tabs now. Plus I have fixed some JS warnings due to missing semicolon.
I would also recommend to start with #cache-busting which means, adding version numbers to JS/CSS files (and URLs).
Browsers (even #Firefox #Quantum) tend not to download CSS/JS when they have downloaded it already. This forces your users to press CTRL+F5 (under Firefox at least). The fix is to include a version number in the URL and always increment it when you change something.

Examples: /js/main.js?v=1.0.0 or /css/default.css?v=1.0.0

Static files normally ignore parameters so this is safe to do so. When you change that file, just increment the last patch number until you want it (I prefer to increment from 1.0.9 to 1.1.0 but that is up to the community (you should come up with a versioning convention). #cache-busting
Na, #quantum should be the correct hashtag. #bug

Fatal error: Call to a member function escape() on null

@Friendica Developers I get the following error after I updated to latest develop code:

Fatal error: Uncaught Error: Call to a member function escape() on null in /../friendica/include/dba.php on line 1104
Error: Call to a member function escape() on null in /../friendica/include/dba.php on line 1104

Call Stack:
 0.0036 371800 1. {main}() /../friendica/include/dbstructure.php:0
 0.0533 938728 2. dbstructure_run(array(2), long) /../friendica/include/dbstructure.php:1827
 0.0651 1037352 3. update_structure(true, true, ???, ???) /../friendica/include/dbstructure.php:1783
 0.0654 1038120 4. Friendica\Core\Config::set(string(6), string(11), long) /../friendica/include/dbstructure.php:207
 0.0655 1040408 5. dba::update(string(6), array(1), array(2), true) /../friendica/src/Core/Config.php:167

Variables in local scope (#5):
 $array_element = *uninitialized*
 $array_key = *uninitialized*
 $condition = array ('cat' => 'system', 'k' => 'maintenance')
 $condition_string = *uninitialized*
 $content = *uninitialized*
 $do_insert = *uninitialized*
 $do_update = *uninitialized*
 $fieldname = *uninitialized*
 $fields = array ('v' => '1')
 $old_fields = TRUE
 $params = *uninitialized*
 $params1 = *uninitialized*
 $params2 = *uninitialized*
 $sql = *uninitialized*
 $table = 'config'
 $values = *uninitialized*


Any idea how to fix this? Did I miss something to update on my .htconfig.php file?
@Friendica Developers code fatal-error friendica
I cannot reproduce, but have created some possible workaround: https://github.com/friendica/friendica/pull/3776
That error seem to be fixed but now only CREATE statements are being processed, nothing else. I have fixed all my parser errors which were caused by missing curly braces.
Added a late code-review pointing out some stuff that should be rewritten:

"dba" is now static by annando · Pull Request #3778 · friendica/friendica

Sorry, no progress here. Maybe next weekend, as I have 3 additional more days no work! #atwork
Re-tested it. And seems to be fixed. Need more testing at home before I update this instance.
@roland @heluecht btw danke für den Screenshot vom Psytrance Forum ;)

Friendica on a widescreen

THis is how the #vier (I guess?) theme looks like on a wide-screen: A lot empty, unused space ...
#vier 16x9 friendica theme widescreen
That's cool, you can't comfortably scan more than about 600-700 pixels of text width at a regular 72 px/inch resolution anyway.
Tobias friendica
You should add ads :-)
Ha ha ha ... ;-)
Okay, so this is clearly intended then.
It was not really intended but it is hard to change because vier does have many fixed width values in the css. I tried to fix it 2 years ago but after some months of work I came to the conclusion that fixing this issue would mean to rewrite more than half of vier. So it was a lot easier to start a new theme from scratch.
This was the beginning of Frio
Ah, yeah. Thank you for explaining it in detail. Now I can understand it better, I would properly do the same. Maybe one day, someone can do a #vier-fullsize theme ...
I'm not unhappy, don't worry. ;-)
I'm not sure what do you expect, multiple columns or a single unreadable line of text per post? ????

Coding convention rewrites 2-5-2 of 2-14-2

PR request 3469 is out which contains changes towards a Friendica-wide coding-convention. As requested earlier, I have splitted my 119 (!) files large PR into several small to make it easier for the reviewers (not to review tons of changes but small chunks then).

So as you (dear users) can see, #Friendica is being rewritten in many directions. No new stuff but more clear code where I hope to have later an even more clear code (better understandable by humans, a computer can read any badly formatted code as long as it is valid).

@Friendica Developers

Edit: Here is the link to the PR: https://github.com/friendica/friendica/pull/3469
#Friendica @Friendica Developers code coding-convention friendica php
PR 3473 is up: https://github.com/friendica/friendica/pull/3473 split 6 of 14 of 2nd wave.
Added some changes to include/text.php, in the start of the PR I just rebased the branch towards upstream/develop.
3588 is out and waits for a CR (with fixes).
I ran php util/typo.php again and it failed ????
:D I hope we can also solve that issue with ./vendor/ directory then. Because looked globally (PHP community) most projects using composer install will ignore it because it is considered as "build" (locally recreated) directory.
What is the issue with vendor?
It should be ignored entirely and not committed as it will be rebuild by composer install. If that is to hard/impossible for some users, then they should download pre-built "binary" packages (including vendor).
This is the end goal, however it is a gradual process. For now I believe we don't have a good enough routine to offer a pre-built archive of the latest version of Friendica, also not all the people using the dev branch are aware about the extra steps required to build the dependencies. I'm voluntarily not in the loop anymore so I couldn't give you a timetable, but I believe it is on track to remove vendor from version control eventually.
Sorry, had not continued on it. Maybe when time allows it. And then I have to rebase a lot.

Friendica + WebDAV/$API = Nextcloud-Ready?

What do you think?, especially those @Friendica Developers ? Is it possible to rewrite #Friendica to have some "wrapper class" for storing pictures/movies locally (default) or remotely on a #WebDAV share like with Nextcloud?

Or does #Nextcloud have an other API for file storage/retrieval than WebDAV? Would be cool to not have pictures stored on so many places. Sure you need then a "WebDAV browser" where you can easily select your files you want to link here (including music files and videos, of course).
#Friendica #WebDAV #Nextcloud @Friendica Developers api friendica nextcloud webdav
Abstracting storing files, like:

- LocaStorage (stores files on local directory
- WebDavStorage (stores files on any WebDAV, let's make a simple WUI here for NextCloud/OwnCloud configuration to encourage people using it)
- SftpStorage (stores files over an SFTP link)
- FooStorage (stores files the foo-way)

And many more. So how to procede?
If one has a path for storage, you can let the OS figure out what it is.

eg, Friendica looks in a directory called /storage

This can literally be a directory called /storage...or you can add an fstab entry to add an arbitrary type of remote file system mounted at /storage.

New directory online, but ...

I have just finished setting up a new directory for #Friendica: https://dir.haeder.net/

It pulls from http://dir.friendica.com/ and http://dir.friendi.ca/ and it is secured with #LetsEncrypt :-)
#Friendica #LetsEncrypt directory forum friendica user
... but I think it needs some overworking, at least fixing that E_NOTICE in initial page and then those nasty CHMOD rights. I have already forked it and will fix it now.
Later posts Earlier posts