From michel.blais.qc at gmail.com Thu May 1 04:27:58 2025 From: michel.blais.qc at gmail.com (Michel Blais) Date: Wed, 30 Apr 2025 23:27:58 -0400 Subject: [ixpmanager] Assistance with Birdseye and HTTP 500 Error In-Reply-To: References: Message-ID: I've started back from 0 with birdseye, when extracting the file, I get a lot of the following errors. tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance' I've also tried to download the tar.bz file on my PC, extract it with 7zip and upload the extracted file with scp. Same result. So, I wanted to try installing birdseye from source with compose but when I run compose, I get the following error PHP Fatal error: Uncaught Error: Class "Normalizer" not found in /usr/share/php/Symfony/Component/String/AbstractUnicodeString.php:31 Stack trace: #0 /usr/share/php/Symfony/Component/Console/Helper/Helper.php(65): [constant expression]() #1 /usr/share/php/Symfony/Component/Console/Application.php(871): Symfony\Component\Console\Helper\Helper::width() #2 /usr/share/php/Symfony/Component/Console/Application.php(840): Symfony\Component\Console\Application->doRenderThrowable() #3 /usr/share/php/Symfony/Component/Console/Application.php(154): Symfony\Component\Console\Application->renderThrowable() #4 /usr/share/php/Symfony/Component/Console/Application.php(177): Symfony\Component\Console\Application->Symfony\Component\Console\{closure}() #5 /usr/share/php/Composer/Console/Application.php(141): Symfony\Component\Console\Application->run() #6 /usr/bin/composer(89): Composer\Console\Application->run() #7 {main} thrown in /usr/share/php/Symfony/Component/String/AbstractUnicodeString.php on line 31 I made sure php-intl is installed and I tried the following command with the same error in the end. composer require symfony/polyfill-intl-normalizer I'm not sure what I should do to fix this issue. I got no luck with birdseye 2.x so I will try birdseye 1.x Friday or this weekend to see if I get a different result. Le lun. 28 avr. 2025 ? 19:15, Michel Blais a ?crit : > Hi Barry, > > Thanks for your help. > > I didn't enable debugging in env files until your message but now it's > enabled. But, I can't figure out where the debug output is supposed to be > printed. > > I've sent curl queries for /api/status or index.php > > There is no new log file in storage/logs/, nor new entries in the file > from the 20th. > Nothing new in lighttpd log entries, both via journalctl than looking at > /var/log/lighttpd/error.log > I've searched the whole file system for log files and nothing was relevant. > Nothing in dmesg. > > I also tried to enable lighttpd CGI error log by > enabling server.breakagelog like specified in the following link but the > log file is empty after the curl query that generates the 500 error. > https://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_cgi > > Access log entries doesn't seem useful to figure out what is going on. > 192.168.240.9 ipv4.rs1.dm1a.2675pt.qix.ca - [28/Apr/2025:19:11:06 -0400] > "GET / HTTP/1.1" 500 1017 "-" "curl/8.5.0" > 192.168.240.9 ipv4.rs1.dm1a.2675pt.qix.ca - [28/Apr/2025:19:11:09 -0400] > "GET /index.php HTTP/1.1" 500 1017 "-" "curl/8.5.0" > 192.168.240.9 ipv4.rs1.dm1a.2675pt.qix.ca - [28/Apr/2025:19:11:12 -0400] > "GET /api/status HTTP/1.1" 404 341 "-" "curl/8.5.0" > > I may be wrong but, from my search, it seems like there is no way to have > lighttpd stdout redirected to a terminal or a file with lighttpd. > > Thanks again. > > Le dim. 27 avr. 2025 ? 10:21, Barry O'Donovan (INEX) < > barry.odonovan at inex.ie> a ?crit : > >> >> Hi Michel, >> >> Have you tried runnning with: >> >> APP_DEBUG=true >> >> in your env files? >> >> - Barry >> >> >> >> ------ Original Message ------ >> From "Michel Blais via ixpmanager" >> To "Barry O'Donovan (INEX)" >> Cc "Michel Blais" ; "INEX IXP Manager Users >> Mailing List" >> Date 26/04/2025 20:51:09 >> Subject Re: [ixpmanager] Assistance with Birdseye and HTTP 500 Error >> >> Finally, I can't figure out why I still get the 500 error. Help would be >> appreciated. Here is the debug info. >> >> I can't query the api. I get an error that it's not found. >> curl -v ipv4.rs1.dm1a.2675pt.qix.ca/api/status >> * Host ipv4.rs1.dm1a.2675pt.qix.ca:80 was resolved. >> * IPv6: (none) >> * IPv4: 192.168.240.31 >> * Trying 192.168.240.31:80... >> * Connected to ipv4.rs1.dm1a.2675pt.qix.ca (192.168.240.31) port 80 >> > GET /api/status HTTP/1.1 >> > Host: ipv4.rs1.dm1a.2675pt.qix.ca >> > User-Agent: curl/8.5.0 >> > Accept: */* >> > >> < HTTP/1.1 404 Not Found >> < Content-Type: text/html >> < Content-Length: 341 >> < Date: Sat, 26 Apr 2025 15:25:41 GMT >> < Server: lighttpd/1.4.69 >> < >> >> > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> >> >> >> 404 Not Found >> >> >>

404 Not Found

>> >> >> * Connection #0 to host ipv4.rs1.dm1a.2675pt.qix.ca left intact >> >> But I can query test.php >> curl ipv4.rs1.dm1a.2675pt.qix.ca/test.php >> ===================== >> WORKING >> ===================== >> >> index.php return a error 500 >> curl ipv4.rs1.dm1a.2675pt.qix.ca/index.php >> >> >> >> >> >> An Error Occurred: Internal Server Error >> >> >> >> >>
>>

Oops! An Error Occurred

>>

The server returned a "500 Internal Server Error".

>> >>

>> Something is broken. Please let us know what you were doing when >> this error occurred. >> We will fix it as soon as possible. Sorry for any inconvenience >> caused. >>

>>
>> >> >> >> Here is the birdseye version >> cat /opt/birdseye/version.php >> > >> $_ENV['BIRDSEYE_API_VERSION'] = '2.1.0'; >> >> And the PHP version >> php --version >> PHP 8.3.20 (cli) (built: Apr 14 2025 18:44:12) (NTS) >> >> The wrapper work fine for both IPv4 and IPv6 daemon >> sudo -u www-data /usr/bin/sudo /opt/birdseye/bin/birdc -2 -s >> /var/run/bird/bird-rs1-dm1a-2675pt-ipv4.ctl "show status" >> BIRD 2.17 ready. >> Access restricted >> BIRD 2.17 >> Router ID is 149.112.119.253 >> Hostname is rs1.dm1a.2675pt >> Current server time is 2025-04-26 11:36:08 >> Last reboot on 2025-04-14 19:08:00 >> Last reconfiguration on 2025-04-26 11:30:01 >> Daemon is up and running >> sudo -u www-data /usr/bin/sudo /opt/birdseye/bin/birdc -2 -s >> /var/run/bird/bird-rs1-dm1a-2675pt-ipv6.ctl "show status" >> BIRD 2.17 ready. >> Access restricted >> BIRD 2.17 >> Router ID is 149.112.119.253 >> Hostname is rs1.dm1a.2675pt >> Current server time is 2025-04-26 11:36:12 >> Last reboot on 2025-04-14 19:08:00 >> Last reconfiguration on 2025-04-26 11:30:01 >> Daemon is up and running >> >> Her is the environnements config >> cat /srv/birdseye/*env | egrep -v '(^#)|(^\s*$)' >> >> BIRDC="/usr/bin/sudo /opt/birdseye/bin/birdc -2 -s >> /var/run/bird/bird-rs1-dm1a-2675pt-ipv4.ctl" >> >> CACHE_DRIVER=file >> >> LOOKING_GLASS_ENABLED=true >> >> BIRDC="/usr/bin/sudo /opt/birdseye/bin/birdc -2 -s >> /var/run/bird/bird-rs1-dm1a-2675pt-ipv6.ctl" >> >> CACHE_DRIVER=file >> >> LOOKING_GLASS_ENABLED=true >> >> The RS config from the DB >> >> mysql> SELECT * FROM routers WHERE id = 3\G >> >> *************************** 1. row *************************** >> >> id: 3 >> >> pair_id: NULL >> >> vlan_id: 1 >> >> handle: rs1-dm1a-2675pt-ipv6 >> >> protocol: 6 >> >> type: 1 >> >> name: RS1 - 2675pt - PVE NET1 - IPv6 >> >> shortname: RS1 - 2675pt - IPv6 >> >> router_id: 149.112.119.253 >> >> peering_ip: 2602:f777::253 >> >> asn: 15037 >> >> software: 6 >> >> mgmt_host: rs1.dm1a.2675pt.qix.ca >> >> api: https://ipv6.rs1.dm1a.2675pt.qix.ca/api >> >> api_type: 1 >> >> lg_access: 0 >> >> quarantine: 0 >> >> bgp_lc: 1 >> >> template: api/v4/router/server/bird2/standard >> >> skip_md5: 0 >> >> last_update_started: 2025-04-26 12:45:01 >> >> last_updated: 2025-04-26 12:45:01 >> >> pause_updates: 0 >> >> rpki: 0 >> >> software_version: 2.17 >> >> operating_system: Debian >> >> operating_system_version: 12 >> >> rfc1997_passthru: 1 >> >> created_at: 2025-04-13 15:02:33 >> >> updated_at: 2025-04-26 12:45:01 >> >> 1 row in set (0.00 sec) >> >> >> mysql> SELECT * FROM routers WHERE id = 1\G >> >> *************************** 1. row *************************** >> >> id: 1 >> >> pair_id: NULL >> >> vlan_id: 1 >> >> handle: rs1-dm1a-2675pt-ipv4 >> >> protocol: 4 >> >> type: 1 >> >> name: RS1 - 2675pt - PVE NET1 - IPv4 >> >> shortname: RS1 - 2675pt - IPv4 >> >> router_id: 149.112.119.253 >> >> peering_ip: 149.112.119.253 >> >> asn: 15037 >> >> software: 6 >> >> mgmt_host: rs1.dm1a.2675pt.qix.ca >> >> api: https://ipv4.rs1.dm1a.2675pt.qix.ca/api >> >> api_type: 1 >> >> lg_access: 0 >> >> quarantine: 0 >> >> bgp_lc: 1 >> >> template: api/v4/router/server/bird2/standard >> >> skip_md5: 0 >> >> last_update_started: 2025-04-26 12:45:01 >> >> last_updated: 2025-04-26 12:45:01 >> >> pause_updates: 0 >> >> rpki: 0 >> >> software_version: 2.17 >> >> operating_system: Debian >> >> operating_system_version: 12 >> >> rfc1997_passthru: 1 >> >> created_at: 2025-04-10 03:27:54 >> >> updated_at: 2025-04-26 12:45:01 >> >> 1 row in set (0.00 sec) >> >> No log entries on storage when the error 500 happen. >> >> root at rs1:/opt/birdseye# ls -la storage/logs/ >> >> total 12 >> >> drwxr-xr-x 2 www-data www-data 4096 Apr 20 08:09 . >> >> drwxr-xr-x 5 www-data www-data 4096 Apr 20 08:09 .. >> >> -rw-r--r-- 1 www-data www-data 1778 Apr 20 08:10 lumen-2025-04-20.log >> >> Lighttpd log entries. DEPRECATED entries comes from using the inex config >> but I don't have those error with the default debian config. I have the >> same 500 error with both config. >> >> 2025-04-20 09:54:56: (server.c.2078) server stopped by UID = 0 PID = 1 >> >> 2025-04-20 09:54:57: (server.c.1704) server started (lighttpd/1.4.69) >> >> 2025-04-24 19:24:33: (server.c.2078) server stopped by UID = 0 PID = 1 >> >> 2025-04-24 19:24:33: (server.c.1704) server started (lighttpd/1.4.69) >> >> 2025-04-24 21:20:15: (server.c.2078) server stopped by UID = 0 PID = 1 >> >> 2025-04-24 21:20:16: (server.c.1704) server started (lighttpd/1.4.69) >> >> 2025-04-26 09:22:31: (server.c.2078) server stopped by UID = 0 PID = 1 >> >> 2025-04-26 09:22:31: (server.c.1704) server started (lighttpd/1.4.69) >> >> 2025-04-26 14:55:32: (server.c.2078) server stopped by UID = 0 PID = 1 >> >> 2025-04-26 14:55:32: (server.c.1704) server started (lighttpd/1.4.69) >> >> 2025-04-26 14:55:32: (mod_deflate.c.736) DEPRECATED: compress.filetype >> replaced with deflate.mimetypes >> >> 2025-04-26 14:55:32: (mod_deflate.c.799) DEPRECATED: compress.cache-dir >> replaced with deflate.cache-dir >> >> 2025-04-26 14:56:38: (server.c.2078) server stopped by UID = 0 PID = 1 >> >> 2025-04-26 14:56:39: (server.c.1704) server started (lighttpd/1.4.69) >> >> Same via "journalctl -t lighttpd" >> >> Apr 19 10:52:51 rs1.dm1a.2675pt lighttpd[60354]: include >> "/etc/lighttpd/conf-enabled/*.conf" >> >> Apr 26 14:55:32 rs1.dm1a.2675pt lighttpd[1006655]: WARNING: >> include-conf-enabled.pl is deprecated and slated for removal. >> >> Apr 26 14:55:32 rs1.dm1a.2675pt lighttpd[1006655]: Replace in >> lighttpd.conf with: >> >> Apr 26 14:55:32 rs1.dm1a.2675pt lighttpd[1006655]: include >> "/etc/lighttpd/conf-enabled/*.conf" >> >> Apr 26 14:55:32 rs1.dm1a.2675pt lighttpd[1006650]: 2025-04-26 14:55:32: >> (mod_deflate.c.736) DEPRECATED: compress.filetype replaced with deflate.mim >> > >> >> Apr 26 14:55:32 rs1.dm1a.2675pt lighttpd[1006650]: 2025-04-26 14:55:32: >> (mod_deflate.c.799) DEPRECATED: compress.cache-dir replaced with >> deflate.ca> >> >> Apr 26 14:55:32 rs1.dm1a.2675pt lighttpd[1006661]: WARNING: >> include-conf-enabled.pl is deprecated and slated for removal. >> >> Apr 26 14:55:32 rs1.dm1a.2675pt lighttpd[1006661]: Replace in >> lighttpd.conf with: >> >> Apr 26 14:55:32 rs1.dm1a.2675pt lighttpd[1006661]: include >> "/etc/lighttpd/conf-enabled/*.conf" >> >> The lighttpd config file >> >> server.modules = ( >> >> "mod_indexfile", >> >> "mod_access", >> >> "mod_alias", >> >> "mod_redirect", >> >> ) >> >> >> server.document-root = "/opt/birdseye/public" >> >> server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) >> >> server.errorlog = "/var/log/lighttpd/error.log" >> >> server.pid-file = "/run/lighttpd.pid" >> >> server.username = "www-data" >> >> server.groupname = "www-data" >> >> server.port = 80 >> >> server.bind ="192.168.240.31" >> >> >> # features >> >> # >> https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_feature-flagsDetails >> >> server.feature-flags += ("server.h2proto" => "enable") >> >> server.feature-flags += ("server.h2c" => "enable") >> >> server.feature-flags += ("server.graceful-shutdown-timeout" => 5) >> >> #server.feature-flags += ("server.graceful-restart-bg" => "enable") >> >> >> # strict parsing and normalization of URL for consistency and security >> >> # >> https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_http-parseoptsDetails >> >> # (might need to explicitly set "url-path-2f-decode" = "disable" >> >> # if a specific application is encoding URLs inside url-path) >> >> server.http-parseopts = ( >> >> "header-strict" => "enable",# default >> >> "host-strict" => "enable",# default >> >> "host-normalize" => "enable",# default >> >> "url-normalize-unreserved"=> "enable",# recommended highly >> >> "url-normalize-required" => "enable",# recommended >> >> "url-ctrls-reject" => "enable",# recommended >> >> "url-path-2f-decode" => "enable",# recommended highly (unless >> breaks app) >> >> #"url-path-2f-reject" => "enable", >> >> "url-path-dotseg-remove" => "enable",# recommended highly (unless >> breaks app) >> >> #"url-path-dotseg-reject" => "enable", >> >> #"url-query-20-plus" => "enable",# consistency in query string >> >> ) >> >> >> index-file.names = ( "index.php", "index.html" ) >> >> url.access-deny = ( "~", ".inc" ) >> >> static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) >> >> >> # default listening port for IPv6 falls back to the IPv4 port >> >> include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port >> >> include_shell "/usr/share/lighttpd/create-mime.conf.pl" >> >> include "/etc/lighttpd/conf-enabled/*.conf" >> >> >> #server.compat-module-load = "disable" >> >> server.modules += ( >> >> "mod_dirlisting", >> >> "mod_staticfile", >> >> ) >> >> I also tried this one based on the inex config. Both with same 500 error. >> >> # Sample Bird's Eye Lighttpd config - just added a small amount to >> >> # the standard Lighttpd configuration. >> >> >> server.modules = ( >> >> "mod_access", >> >> "mod_alias", >> >> #"mod_compress", >> >> "mod_deflate", >> >> "mod_redirect", >> >> "mod_rewrite", >> >> ) >> >> >> server.document-root = "/opt/birdseye/public" >> >> server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) >> >> server.errorlog = "/var/log/lighttpd/error.log" >> >> server.pid-file = "/var/run/lighttpd.pid" >> >> server.username = "www-data" >> >> server.groupname = "www-data" >> >> server.port = 80 >> >> server.bind = "192.168.240.31" >> >> >> index-file.names = ( "index.php", "index.html", >> "index.lighttpd.html" ) >> >> url.access-deny = ( "~", ".inc" ) >> >> static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) >> >> >> compress.cache-dir = "/var/cache/lighttpd/compress/" >> >> compress.filetype = ( "application/javascript", "text/css", >> "text/html", "text/plain" ) >> >> >> # default listening port for IPv6 falls back to the IPv4 port >> >> ## Use ipv6 if available >> >> #include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port >> >> include_shell "/usr/share/lighttpd/create-mime.conf.pl" >> >> include_shell "/usr/share/lighttpd/include-conf-enabled.pl" >> >> >> url.redirect = () >> >> url.rewrite-once = ( >> >> "^/(css|img|js|fonts)/.*\.(jpg|jpeg|gif|png|swf|avi|mpg|mpeg|mp3|flv|ico|css|js|woff|ttf)$" >> => "$0", >> >> "^/(favicon\.ico|robots\.txt|sitemap\.xml)$" => "$0", >> >> "^/test\.php$" => "$0", >> >> "^/[^\?]*(\?.*)?$" => "/index.php/$1" >> >> ) >> >> And I added a symbolic link from /srv/birdseye pointing to /opt/birdseye >> just in case the path used by inex could still be somewhere in the config >> files. >> >> Thanks >> >> Le sam. 26 avr. 2025 ? 08:26, Michel Blais a >> ?crit : >> >>> Thanks Barry, >>> >>> I was confused between the binary and the wrapper since they both have >>> the same name and are both in a directory called bin. >>> >>> Thanks for pointing that out. I still get an error 500 but I will try to >>> figure it out with the debugging documentation and if I can't figure it >>> out, write back with all the needed information indicated in the doc. >>> >>> Thanks again. >>> >>> Le jeu. 24 avr. 2025 ? 07:01, Barry O'Donovan (INEX) < >>> barry.odonovan at inex.ie> a ?crit : >>> >>>> >>>> Hi Michel, >>>> >>>> >I'm new to IXP manager and would need help with birdseye. >>>> Welcome! >>>> >>>> Did you see the debugging section at: >>>> >>>> https://docs.ixpmanager.org/latest/features/looking-glass/#debugging >>>> >>>> And can you run through this providing the output along the way? >>>> >>>> Other notes: >>>> >>>> >>>> >Initially tried version 2.0 with PHP 8.2 from the Debian repository >>>> >>>> This should probably have worked? But: >>>> >>>> >Then installed PHP 8.3 from the sury.org repository and tried >>>> Birdseye >>>> >2.1 >>>> >Also tried PHP 8.4 briefly but encountered many deprecated warnings in >>>> >the Lighttpd logs, so I reverted to 8.3 >>>> >>>> 2.1 is a better choice; depreciation warnings can be ignored (and >>>> turned >>>> off). >>>> >>>> >My .env file for the route server looks like this: >>>> >cat birdseye-rs1-cabId-dcName-ipv4.env >>>> >IRDC="/usr/bin/sudo /usr/local/sbin/birdc -s >>>> >/var/run/bird/bird-rs1-cabId-dcName-ipv4.ctl" >>>> Why are you calling birdc directly? You should be using the wrapper >>>> script (or a modified version of it if necessary) as supplied in the >>>> Birdseye bin/ directory. This ensures birdc is run in restricted >>>> (read-only) mode. >>>> >>>> (Preumably you cut the ?B? from the start of the above line when >>>> pasting >>>> also). >>>> >>>> >>>> >The www-data user is able to successfully run Bird commands via the >>>> >CLI: >>>> >su -l www-data -s /bin/bash >>>> >/usr/bin/sudo /usr/local/sbin/birdc -s >>>> >/var/run/bird/bird-rs1-cabId-dcName-ipv4.ctl "show status? >>>> >>>> You need to do this with the wrapper script. >>>> >>>> >but I had to remove the "-2" because this option doesn't seem to be >>>> >supported anymore in bird 2.17. >>>> >>>> -2 is not a bircd parameter but a wrapper script parameter: >>>> >>>> # parameter $1: either -4 or -6 to chose between birdc and birdc6, or >>>> -2 >>>> for Bird v2 >>>> >>>> - Barry >>>> >>> >>> >>> -- >>> Cordialement, / With regards, >>> >>> Michel Blais >>> >>> >> >> -- >> Cordialement, / With regards, >> >> Michel Blais >> >> > > -- > Cordialement, / With regards, > > Michel Blais > > -- Cordialement, / With regards, Michel Blais -------------- next part -------------- An HTML attachment was scrubbed... URL: