Difference between revisions of "Programming language cook book"

From Review or Discard at Will
Jump to: navigation, search
(Debian 9: add Disk partitioning: MS-DOS and GPT)
 
(20 intermediate revisions by the same user not shown)
Line 36: Line 36:
 
===Resources===
 
===Resources===
 
* [https://www.mediawiki.org/wiki/Manual:Short_URL Short URLs] at Mediwiki
 
* [https://www.mediawiki.org/wiki/Manual:Short_URL Short URLs] at Mediwiki
 +
===utility===
 +
<source lang=bash>
 +
# VirtualHost configuration:
 +
apachectl -S
 +
# Check .conf syntax
 +
apachectl configtest
 +
# What modules loaded?
 +
httpd -M
 +
apachectl -M
 +
</source>
 +
 
===Redirect site root to wiki===
 
===Redirect site root to wiki===
 
This works to redirect to www.somedomain.tld from www.somedomain.tld/w - basically to point the root to your wiki as home / first page.  
 
This works to redirect to www.somedomain.tld from www.somedomain.tld/w - basically to point the root to your wiki as home / first page.  
Line 66: Line 77:
 
</VirtualHost>
 
</VirtualHost>
 
</source>
 
</source>
 +
 +
==Mediawiki==
 +
 +
 +
 
===Visual Editor===
 
===Visual Editor===
 +
====parsoid====
 +
install start stop status
 +
<source lang=bash>
 +
[root@myhost parsoid]#  systemctl daemon-reload  # Do this if when you make changes to a service file
 +
[root@myhost parsoid]#  systemctl start parsoid  # start
 +
[root@myhost parsoid]#  systemctl status parsoid # check status
 +
[root@myhost parsoid]#  systemctl enable parsoid # start parsoid on boot
 +
</source>
 +
systemd service file.
 +
<source lang="xml">
 +
[Unit]
 +
Description=Mediawiki Parsoid web service on node.js
 +
Documentation=http://www.mediawiki.org/wiki/Parsoid
 +
Wants=local-fs.target network.target
 +
After=local-fs.target network.target
 +
 +
[Install]
 +
WantedBy=multi-user.target
 +
 +
[Service]
 +
Type=simple
 +
User=nobody
 +
Group=nobody
 +
WorkingDirectory=/opt/parsoid
 +
EnvironmentFile=-/etc/parsoid/parsoid.env
 +
ExecStart=/usr/bin/node /opt/parsoid/bin/server.js
 +
KillMode=process
 +
Restart=on-success
 +
PrivateTmp=true
 +
StandardOutput=syslog
 +
</source>
 +
 
====stunnel====
 
====stunnel====
 +
<source lang="bash">
 +
# groupadd -g 51 stunnel
 +
# useradd -c "stunnel Daemon" -d /var/run/stunnel -g stunnel -s /bin/false -u 51 stunnel
 +
</source>
 +
 
/etc/stunnel/stunnel.conf
 
/etc/stunnel/stunnel.conf
 
<source lang="xml">
 
<source lang="xml">
cert = /etc/letsencrypt/live/redacted.com/fullchain.pem
+
cert = /etc/letsencrypt/live/redacted/fullchain.pem
key = /etc/letsencrypt/live/redacted.com/privkey.pem
+
key = /etc/letsencrypt/live/recacted/privkey.pem
chroot = /var/chroot/stunnel
+
chroot = /var/run/stunnel
setuid = nobody
+
setuid = stunnel
setgid = nobody
+
setgid = stunnel
 
pid = /stunnel.pid
 
pid = /stunnel.pid
  
Line 80: Line 133:
 
accept  = 8143
 
accept  = 8143
 
connect = 8142
 
connect = 8142
 
 
</source>
 
</source>
  
Line 96: Line 148:
 
[Service]
 
[Service]
 
Type=forking
 
Type=forking
 +
ExecStartPre=-/usr/bin/mkdir /var/run/stunnel
 +
ExecStartPre=/usr/bin/chown -R stunnel:stunnel /var/run/stunnel/
 +
ExecStartPre=-/bin/chmod 700 /var/run/stunnel
 
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
 
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
 
ExecStop=/usr/bin/killall -9 stunnel
 
ExecStop=/usr/bin/killall -9 stunnel
 
+
RuntimeDirectory=stunnel
 
# Give up if ping don't get an answer
 
# Give up if ping don't get an answer
 
TimeoutSec=600
 
TimeoutSec=600
 
 
Restart=always
 
Restart=always
 +
#PrivateTmp=false
 
PrivateTmp=false
 
PrivateTmp=false
 +
EnvironmentFile=-/etc/stunnel/stunnel.conf
 +
#PermissionsStartOnly=true
 +
# RemainAfterExit=yes
 
</source>
 
</source>
  
==Mediawiki==
+
 
 +
 
 +
 
 
===Display unformated like code snippets===
 
===Display unformated like code snippets===
 
lang= text bash csharp cpp php xml py javascript (or js)
 
lang= text bash csharp cpp php xml py javascript (or js)
Line 118: Line 178:
 
{{ blockquote| text here }}
 
{{ blockquote| text here }}
 
</nowiki>
 
</nowiki>
 +
 +
===upgrade and move===
 +
* upgrade php to allow mediawiki upgrade
 +
* upgrade mediawik to allow for contact page, VisualEditor etc...
 +
* Implement short URLs for better SEO and they're pretty.
 +
====current soon to be old wiki version info====
 +
<source lang=text>
 +
Installed software
 +
Product Version
 +
MediaWiki 1.21.1
 +
PHP 5.3.3 (apache2handler)
 +
MySQL 5.1.73
 +
Entry point URLs
 +
Entry point URL
 +
Article path /wiki/index.php/$1
 +
Script path /wiki
 +
index.php /wiki/index.php
 +
api.php /wiki/api.php
 +
load.php /wiki/load.php
 +
Installed extensions
 +
Special pages
 +
ContactPage (Version 2.2) Contact form for visitors Daniel Kinzler and Sam Reed
 +
Renameuser Adds a special page to rename a user (need renameuser right) Ævar Arnfjörð Bjarmason and Aaron Schulz
 +
Parser hooks
 +
ParserFunctions (Version 1.5.1) Enhance parser with logical functions Tim Starling, Robert Rohde, Ross McClure and Juraj Simlovic
 +
SyntaxHighlight (Version 1.0.8.11) Provides syntax highlighting <syntaxhighlight> using GeSHi - Generic Syntax Highlighter Brion Vibber, Tim Starling, Rob Church and Niklas Laxström
 +
Media handlers
 +
PDF Handler Handler for viewing PDF files in image mode. Martin Seidel and Mike Połtyn
 +
Other
 +
Gadgets Lets users select custom CSS and JavaScript gadgets in their preferences Daniel Kinzler and Max Semenik
 +
WikiEditor (Version 0.3.1) Provides an extendable wikitext editing interface and many feature-providing modules Trevor Parscal, Roan Kattouw, Nimish Gautam and Adam Miller
 +
Parser extension tags
 +
<gallery>, <nowiki>, <pre>, <source> and <syntaxhighlight>
 +
Parser function hooks
 +
anchorencode, basepagename, basepagenamee, canonicalurl, canonicalurle, defaultsort, displaytitle, expr, filepath, formatdate, formatnum, fullpagename, fullpagenamee, fullurl, fullurle, gender, grammar, if, ifeq, iferror, ifexist, ifexpr, int, language, lc, lcfirst, localurl, localurle, namespace, namespacee, namespacenumber, ns, nse, numberingroup, numberofactiveusers, numberofadmins, numberofarticles, numberofedits, numberoffiles, numberofpages, numberofusers, numberofviews, padleft, padright, pagename, pagenamee, pagesincategory, pagesize, plural, protectionlevel, rel2abs, special, speciale, subjectpagename, subjectpagenamee, subjectspace, subjectspacee, subpagename, subpagenamee, switch, tag, talkpagename, talkpagenamee, talkspace, talkspacee, time, timel, titleparts, uc, ucfirst and urlencode
 +
</source>
  
 
==Fedora fc.22==
 
==Fedora fc.22==
Line 180: Line 276:
 
echo `hostname` `cat /etc/*elease*` "this is some blah blah testing body text" | mail -s "Testing 1 2 3" somebody@somewhere.tld
 
echo `hostname` `cat /etc/*elease*` "this is some blah blah testing body text" | mail -s "Testing 1 2 3" somebody@somewhere.tld
 
</source>
 
</source>
 +
Find a message ID.
 +
<source lang="bash">
 +
[root@redacted cron.d]# mailq
 +
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
 +
B077861458      758 Sat Jan 20 08:17:22  apache@redacted.net
 +
(connect to example.com[2606:2800:220:1:248:1893:25c8:1946]:25: Network is unreachable)
 +
                                        you@example.com
 +
 +
-- 0 Kbytes in 1 Request.
 +
# Read it.
 +
[root@dediserve1 conf]# postcat -q A9D1061AF9
 +
....
 +
# Delete it.
 +
[root@dediserve1 cron.d]# postsuper -d B077861458
 +
postsuper: B077861458: removed
 +
postsuper: Deleted: 1 message
 +
[root@redacted cron.d]# mailq
 +
Mail queue is empty
 +
[root@redacted cron.d]#
 +
</source>
 +
 
===letscncrypt===
 
===letscncrypt===
 
<source lang=text>
 
<source lang=text>
 
https://crt.sh/?q=dediserve1.jhalbrecht.net
 
https://crt.sh/?q=dediserve1.jhalbrecht.net
</source
+
</source>
 +
<source lang=bash>
 +
[root@thehost]# certbot certificates
 +
[root@thehost]# certbot delete # prompted for certs to remove
 +
[root@thehost]# certbot delete --cert-name delthisdname
 +
[root@thehost]#
 +
[root@thehost]#
 +
[root@thehost]#
 +
[root@thehost]#
 +
 
 +
</source>
 +
 
 
===stuff...===
 
===stuff...===
 
<source lang="bash">
 
<source lang="bash">
 
find ./ -exec ls -l {} + | less
 
find ./ -exec ls -l {} + | less
 
sed -i 's/findstring/replacestring/g' *
 
sed -i 's/findstring/replacestring/g' *
 +
</source>
 +
 +
===systemctl===
 +
edit /etc/systemd/system.conf add LogLevel=debug for increased logging when debugging ''systemctl start something''
 +
 +
systemctl cat bacula-fd will display the current bacula-fd.service file
 +
 +
===iptables===
 +
<source lang=bash>
 +
iptables -L --line-numbers
 +
iptables -D INPUT 3
 +
 +
iptables -L
 +
iptables -S
 +
 +
 +
service iptables save
 +
 +
 +
 +
</source>
 +
 +
==Debian 9==
 +
===Install===
 +
I'm attempting to install Stretch on a pair of 4TB drives in a Raid 1 configuration.
 +
====Some linke and notes====
 +
* [https://outflux.net/blog/archives/2018/04/19/uefi-booting-and-raid1/ UEFI booting and RAID1]
 +
* [https://wiki.debian.org/UEFI Disk partitioning: MS-DOS and GPT]
 +
 +
==Windows==
 +
===hosts and flush===
 +
I like to put the dns of the new site in hosts before I change name service enabling to verify proper operation first.
 +
 +
Elevate your privileges to Administrator
 +
 +
Edit c:\Windows\System32\Drivers\etc\hosts
 +
 +
ipconfig /flushdns
 +
 +
Once done testing don't forget to remove temporary ip from hosts
 +
==Not yet organized==
 +
Stuff I need to integrate into some order but I'm busy with other stuff and don't want to forget
 +
* journalctl -b -u fail2ban
 +
* fail2ban-client status
 +
** fail2ban-client status jail_name
 +
===disk stuff===
 +
====is grub installed?====
 +
<source lang="bash">
 +
[root@seven ~]# dd if=/dev/sda bs=1 count=512 | grep -aob GRUB
 +
378:GRUB
 +
512+0 records in
 +
512+0 records out
 +
512 bytes (512 B) copied, 0.00301491 s, 170 kB/s
 +
[root@seven ~]#
 +
</source>
 +
====install boot on /dev/sdb====
 +
<source lang="bash">
 +
[root@seven ~]# grub2-install /dev/sdb
 +
Installing for i386-pc platform.
 +
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
 +
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
 +
Installation finished. No error reported.
 +
[root@seven ~]#
 
</source>
 
</source>

Latest revision as of 12:53, 14 January 2019

Mostly just for me to remember stuff

I might use a command once, then not again for years. Hopefully I can jog my memory quickly here.

Python

I wanted a json utc datetime for a MQTT payload. Found the arrow module that is much like moment.js for javascript.

import arrow
print (arrow.get(arrow.utcnow()).for_json()

results in: "2015-08-27T15:03:07.427351+00:00" I'd like to trim it further and replace the +00:00 with Z. ??? and less precision on the seconds.

Documentation for ISO 8601

vim

comment a block

What's a quick way to comment/uncomment lines in Vim? (Stack overflow)

ctl v (at start of block)
down arrow (to end of block)
shift I, #
  or
: s/^/# <- more likely
esc

global search and replace

:
%s/findString/replaceString/g

Apache

Resources

utility

# VirtualHost configuration:
apachectl -S
# Check .conf syntax
apachectl configtest
# What modules loaded?
httpd -M
apachectl -M

Redirect site root to wiki

This works to redirect to www.somedomain.tld from www.somedomain.tld/w - basically to point the root to your wiki as home / first page.

<VirtualHost *:80>
     RewriteEngine on
     RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
</VirtualHost>

MediaWiki Short URLs

<VirtualHost *:443>
        ServerName www.redacted.info
        ServerAlias redacted.info
        DocumentRoot /var/www/redacted.info
        CustomLog       /var/log/httpd/redacted.info-access.log combined
        ErrorLog        /var/log/httpd/redacted.info-error.log
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/redacted.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/redacted.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateChainFile /etc/letsencrypt/live/redacted.com/chain.pem

        RewriteEngine on
        RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
        alias /wiki /var/www/redacted.info/w/index.php
        # Redirect / to Main Page
        RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
</VirtualHost>

Mediawiki

Visual Editor

parsoid

install start stop status

[root@myhost parsoid]#  systemctl daemon-reload  # Do this if when you make changes to a service file
[root@myhost parsoid]#  systemctl start parsoid  # start
[root@myhost parsoid]#  systemctl status parsoid # check status
[root@myhost parsoid]#  systemctl enable parsoid # start parsoid on boot

systemd service file.

[Unit]
Description=Mediawiki Parsoid web service on node.js
Documentation=http://www.mediawiki.org/wiki/Parsoid
Wants=local-fs.target network.target
After=local-fs.target network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=nobody
Group=nobody
WorkingDirectory=/opt/parsoid
EnvironmentFile=-/etc/parsoid/parsoid.env
ExecStart=/usr/bin/node /opt/parsoid/bin/server.js
KillMode=process
Restart=on-success
PrivateTmp=true
StandardOutput=syslog

stunnel

# groupadd -g 51 stunnel
# useradd -c "stunnel Daemon" -d /var/run/stunnel -g stunnel -s /bin/false -u 51 stunnel

/etc/stunnel/stunnel.conf

cert = /etc/letsencrypt/live/redacted/fullchain.pem
key = /etc/letsencrypt/live/recacted/privkey.pem
chroot = /var/run/stunnel
setuid = stunnel
setgid = stunnel
pid = /stunnel.pid

[parsoid]
accept  = 8143
connect = 8142

/lib/systemd/system/stunnel.service

[Unit]
Description=SSL tunnel for network daemons
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=stunnel.target

[Service]
Type=forking
ExecStartPre=-/usr/bin/mkdir /var/run/stunnel
ExecStartPre=/usr/bin/chown -R stunnel:stunnel /var/run/stunnel/
ExecStartPre=-/bin/chmod 700 /var/run/stunnel
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/killall -9 stunnel
RuntimeDirectory=stunnel
# Give up if ping don't get an answer
TimeoutSec=600
Restart=always
#PrivateTmp=false
PrivateTmp=false
EnvironmentFile=-/etc/stunnel/stunnel.conf
#PermissionsStartOnly=true
# RemainAfterExit=yes



Display unformated like code snippets

lang= text bash csharp cpp php xml py javascript (or js) <source lang="bash"> code snippet </source>

My Simple Template

{{ blockquote| text here }}

upgrade and move

  • upgrade php to allow mediawiki upgrade
  • upgrade mediawik to allow for contact page, VisualEditor etc...
  • Implement short URLs for better SEO and they're pretty.

current soon to be old wiki version info

Installed software
Product	Version
MediaWiki	1.21.1
PHP	5.3.3 (apache2handler)
MySQL	5.1.73
Entry point URLs
Entry point	URL
Article path	/wiki/index.php/$1
Script path	/wiki
index.php	/wiki/index.php
api.php	/wiki/api.php
load.php	/wiki/load.php
Installed extensions
Special pages
ContactPage (Version 2.2)	Contact form for visitors	Daniel Kinzler and Sam Reed
Renameuser	Adds a special page to rename a user (need renameuser right)	Ævar Arnfjörð Bjarmason and Aaron Schulz
Parser hooks
ParserFunctions (Version 1.5.1)	Enhance parser with logical functions	Tim Starling, Robert Rohde, Ross McClure and Juraj Simlovic
SyntaxHighlight (Version 1.0.8.11)	Provides syntax highlighting <syntaxhighlight> using GeSHi - Generic Syntax Highlighter	Brion Vibber, Tim Starling, Rob Church and Niklas Laxström
Media handlers
PDF Handler	Handler for viewing PDF files in image mode.	Martin Seidel and Mike Połtyn
Other
Gadgets	Lets users select custom CSS and JavaScript gadgets in their preferences	Daniel Kinzler and Max Semenik
WikiEditor (Version 0.3.1)	Provides an extendable wikitext editing interface and many feature-providing modules	Trevor Parscal, Roan Kattouw, Nimish Gautam and Adam Miller
Parser extension tags
<gallery>, <nowiki>, <pre>, <source> and <syntaxhighlight>
Parser function hooks
anchorencode, basepagename, basepagenamee, canonicalurl, canonicalurle, defaultsort, displaytitle, expr, filepath, formatdate, formatnum, fullpagename, fullpagenamee, fullurl, fullurle, gender, grammar, if, ifeq, iferror, ifexist, ifexpr, int, language, lc, lcfirst, localurl, localurle, namespace, namespacee, namespacenumber, ns, nse, numberingroup, numberofactiveusers, numberofadmins, numberofarticles, numberofedits, numberoffiles, numberofpages, numberofusers, numberofviews, padleft, padright, pagename, pagenamee, pagesincategory, pagesize, plural, protectionlevel, rel2abs, special, speciale, subjectpagename, subjectpagenamee, subjectspace, subjectspacee, subpagename, subpagenamee, switch, tag, talkpagename, talkpagenamee, talkspace, talkspacee, time, timel, titleparts, uc, ucfirst and urlencode

Fedora fc.22

I opened up node.js on port 3000 with this command.

firewall-cmd --permanent --add-port=3000/tcp
# be sure to reload
 firewall-cmd --reload
# tail a log with colored warnings
#> tail -f /var/log/maillog|egrep --ignore-case  --line-buffered --color=auto 'reject|ERROR|WARN|$'

7-zip

I wanted to create a .zip file for my FDDSE project from the command line. Perhaps in a batch file.

7z a -tzip FDDSE.zip FDDSE

VS 2015 IISExpress

.vs\config\applicationhost.config
%userprofile%\Documents\IISExpress\
netsh http show urlacl
netsh http add urlacl url=http://localhost:60262/ user=everyone
netsh http delete urlacl url=http://*:60262/
I 'ended' Microsoft.VsHub.Server.HttpHostx64.exe with TaskManager
// punch a hole in the firewall
// oopps just noticed I'm running public profile at home on nat. Another toDo
C:\Users\jeffa>netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=60262 profile=private remoteip=localsubnet action=allow
Ok.


C:\Users\jeffa>netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=60262 profile=public remoteip=localsubnet action=allow
Ok.

CentOS 7

Nifty resources

yum etc...

  • yum list installed
  • repoquery --list php56u
  • yum search all php-imap
  • yum install php56u-imap
  • rpm -qi postfix # show currently installed info

bacula

  • bconsole
    • status client

smtp etc...

mailq
postfix flush
postmap -q anexample.com  mysql:/afilenameWithQuery.cf
dovecot -n ; display configuration / check configuration syntax
echo `hostname` `cat /etc/*elease*` "this is some blah blah testing body text" | mail -s "Testing 1 2 3" somebody@somewhere.tld

Find a message ID.

[root@redacted cron.d]# mailq
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
B077861458      758 Sat Jan 20 08:17:22  apache@redacted.net
(connect to example.com[2606:2800:220:1:248:1893:25c8:1946]:25: Network is unreachable)
                                         you@example.com

-- 0 Kbytes in 1 Request.
# Read it.
[root@dediserve1 conf]# postcat -q A9D1061AF9
....
# Delete it.
[root@dediserve1 cron.d]# postsuper -d B077861458
postsuper: B077861458: removed
postsuper: Deleted: 1 message
[root@redacted cron.d]# mailq
Mail queue is empty
[root@redacted cron.d]#

letscncrypt

https://crt.sh/?q=dediserve1.jhalbrecht.net
[root@thehost]# certbot certificates
[root@thehost]# certbot delete # prompted for certs to remove
[root@thehost]# certbot delete --cert-name delthisdname 
[root@thehost]# 
[root@thehost]# 
[root@thehost]# 
[root@thehost]#

stuff...

find ./ -exec ls -l {} + | less
sed -i 's/findstring/replacestring/g' *

systemctl

edit /etc/systemd/system.conf add LogLevel=debug for increased logging when debugging systemctl start something

systemctl cat bacula-fd will display the current bacula-fd.service file

iptables

iptables -L --line-numbers
iptables -D INPUT 3

iptables -L
iptables -S


service iptables save

Debian 9

Install

I'm attempting to install Stretch on a pair of 4TB drives in a Raid 1 configuration.

Some linke and notes

Windows

hosts and flush

I like to put the dns of the new site in hosts before I change name service enabling to verify proper operation first.

Elevate your privileges to Administrator

Edit c:\Windows\System32\Drivers\etc\hosts

ipconfig /flushdns

Once done testing don't forget to remove temporary ip from hosts

Not yet organized

Stuff I need to integrate into some order but I'm busy with other stuff and don't want to forget

  • journalctl -b -u fail2ban
  • fail2ban-client status
    • fail2ban-client status jail_name

disk stuff

is grub installed?

[root@seven ~]# dd if=/dev/sda bs=1 count=512 | grep -aob GRUB
378:GRUB
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.00301491 s, 170 kB/s
[root@seven ~]#

install boot on /dev/sdb

[root@seven ~]# grub2-install /dev/sdb
Installing for i386-pc platform.
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
Installation finished. No error reported.
[root@seven ~]#