Compare commits

...

18 Commits

Author SHA1 Message Date
ea4760a81e Ask for securing the passport 2025-12-07 21:39:45 +01:00
35dd865b80 SecuritySticker-Support; docs and logo 2025-12-07 21:08:09 +01:00
fea4680642 security sticker™ 2025-12-07 19:16:46 +01:00
9ca4126e8a being -> entity 2025-11-30 00:24:33 +01:00
19af6dbce4 Password adding 2025-11-29 18:37:18 +01:00
b85f1d2e83 Installation 2025-11-29 17:45:41 +01:00
95f349fd85 More documentation 2025-11-29 16:58:20 +01:00
58c82fa9fc Stapled Passport - GPG next-page fix 2025-11-29 01:08:31 +01:00
216e698f4e Bugfix 2025-11-28 23:14:22 +01:00
6cb3c5eeb4 export into config 2025-11-28 22:37:29 +01:00
6efac21a22 c3reg -> c3gov 2025-11-28 21:07:56 +01:00
6a1591030d List ordering changed due to abandonment of adafruit 2025-11-28 19:41:13 +01:00
daf71a9fed changed size; changed title 2025-11-28 19:01:38 +01:00
09d35810c0 More renaming; more client infos; documentation 2025-11-28 18:51:07 +01:00
f9ac98d829 Renaming c3Reg -> c3gov 2025-11-28 18:13:43 +01:00
e2151345d7 Typo: C3Reg-> c3Reg 2021-01-10 16:39:06 +01:00
8dbc8c6605 C3Reg-Renaming; adding devtal's passport 2021-01-05 19:27:13 +01:00
e675a78b10 Document: Renaming to C3Reg 2021-01-05 18:59:43 +01:00
36 changed files with 901 additions and 102 deletions

View File

@@ -1,13 +1,63 @@
# Intergalactic Registration Office # c3gov
Fill out your hacker passport using a professional dot matrix printer. Fill out your hacker passport using a professional dot matrix printer.
## Set event name ## How to use the official® setup
To set the event name, just change the `EVENT` variable in `./start` at the top.
## Supported Passports ### Start up
1. Plugin the Raspberry Pi.
2. Mind the following order:
1. Insert the RS232 adapter for the client(s) and connect them.
2. As the last device insert the RS232 adapter for the printer.
3. Turn on the printer.
### If the interface freezes
1. Turn off the printer.
2. Unplug the RS232 adapter from the Raspberry Pi.
3. Replug all RS232 in the order like described above.
### Turning off
1. Turn off the computer.
2. Unplug the RS232 adapter from the Raspberry Pi.
3. Turn off the Raspberry Pi.
## General information
### Configuration
See the `./config` file to set the client number and the event name.
### Hardware Requirements
- Wincor Nixdorf HighPrint 4915
- Raspberry Pi
- 3x - 5x USB RS232 adapter (male -> USB)
- 1x for printer
- 4x for two clients (2x each client)
- 2x RS232 connector (female -> female)
- 2x old laptops with some debian without GUI, only tty.
### Software Requirements
For the clients:
- screen
For the Raspberry Pi
- dialog
### Supported Passports
The following passports are supported atm: The following passports are supported atm:
- CmS Junghackerpass - CmS Junghackerpass
- Adafruit (the newer ones) - Bound Diplomatic passport by Mitch Altman (TVBGone) Matthew Borgatti (har.ms)
- Stapled Diplomatic passport Mitch/Matthew and Nils-Arne Pohlandt (devtal.de)
Do you want yours to be supported, too? Do you want yours to be supported, too?
Talk to me and send me 3 example pieces. :) Talk to me and send me 3 example pieces. :)
### Installation
1. Be root.
2. `cd /root`
3. `git clone https://git.chaospott.de/Bandie/c3gov`
4. `cd c3gov`
5. `cp -r etc/systemd/system/* /etc/systemd/system`
6. `systemctl enable --now getty@ttyUSB0`
7. `systemctl enable --now getty@ttyUSB1` (if there's will be a second client)
8. Add a user in .pw: `echo "password" > .pw/username`

View File

@@ -60,20 +60,6 @@ function heading() {
fi fi
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGE $FILE
fi
makeLeft 3 $FILE
makeLeft $SPACE $FILE
italicLetters $FILE
printf "INTERGALACTIC\n" >> $FILE
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGE $FILE
fi
makeLeft 3 $FILE
makeLeft $SPACE $FILE
printf "REGISTRATION\n" >> $FILE
bigLetters $FILE bigLetters $FILE
if [ $PAGE -eq 1 ]; then if [ $PAGE -eq 1 ]; then
@@ -85,7 +71,7 @@ function heading() {
makeLeft 1 $FILE makeLeft 1 $FILE
makeLeft $HSPACE $FILE makeLeft $HSPACE $FILE
fi fi
printf "OFFICE\n" >> $FILE printf "c3gov\n" >> $FILE
resetLetters $FILE resetLetters $FILE
} }

View File

@@ -3,7 +3,7 @@ FILE=/tmp/$RANDOM
TOP=56 TOP=56
NEXTFIELD=5 NEXTFIELD=5
LEFT=22 LEFT=22
AUTHLEFT=56 AUTHLEFT=66
DATELEFT=37 DATELEFT=37
MAXLENGTH=17 MAXLENGTH=17
@@ -29,7 +29,7 @@ printf "$GIVENNAME" >> $FILE
# Authority field # Authority field
makeNewline 2 $FILE makeNewline 2 $FILE
makeLeft $AUTHLEFT $FILE makeLeft $AUTHLEFT $FILE
printf "Intergalactic Reg. Office" >> $FILE printf "c3gov" >> $FILE
makeNewline 3 $FILE makeNewline 3 $FILE
makeLeft $LEFT $FILE makeLeft $LEFT $FILE

2
clients/README.md Normal file
View File

@@ -0,0 +1,2 @@
# Clients
For the clients using RS232 u need to configure the /etc/passwd to use the officerload script

3
clients/officerload Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
clear
screen /dev/ttyUSB0

8
config Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
# Number of clients, maximum 2
CLIENTS=1
# Event name.
# Please leave the export be.
export EVENT="Chaospott"

BIN
docs/A23.pdf Normal file

Binary file not shown.

View File

@@ -26,7 +26,7 @@
\fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}} \fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\title{\textbf{Application Form A23}} \title{\textbf{Application Form A23}}
\author{Intergalactic Registration Office} \author{c3gov}
\date{Control no. \randomnum{1000}} \date{Control no. \randomnum{1000}}
\addtolength{\topmargin}{-2cm} \addtolength{\topmargin}{-2cm}

BIN
docs/PKSR20.pdf Normal file

Binary file not shown.

View File

@@ -25,8 +25,8 @@
\newcommand{\answerbox}[1]{%% \newcommand{\answerbox}[1]{%%
\fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}} \fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\title{\textbf{Application Form PKSR20}} \title{\textbf{Additional Form PKSR20}}
\author{Intergalactic Registration Office} \author{c3gov}
\date{Control no. \answerbox{1}} \date{Control no. \answerbox{1}}
\addtolength{\topmargin}{-2cm} \addtolength{\topmargin}{-2cm}
@@ -40,7 +40,7 @@
\maketitle \maketitle
\thispagestyle{empty} \thispagestyle{empty}
\section*{} \section*{}
I hereby applicate to register my GPG fingerprint. I hereby applicate to register my GPG fingerprint on my passport.
I fullfil the requirement that I have either I fullfil the requirement that I have either
\begin{itemize} \begin{itemize}
\item[1.] uploaded the public key to the \textbf{keys.openpgp.org} keyserver \textbf{using the following mail address} or \item[1.] uploaded the public key to the \textbf{keys.openpgp.org} keyserver \textbf{using the following mail address} or

BIN
docs/PrivacyPolicy.pdf Normal file

Binary file not shown.

View File

@@ -11,7 +11,7 @@
\title{\textbf{Privacy Policy}} \title{\textbf{Privacy Policy}}
\author{Intergalactic Registration Office} \author{c3gov}
\date{} \date{}
\addtolength{\topmargin}{-2cm} \addtolength{\topmargin}{-2cm}
@@ -31,10 +31,16 @@ This office is compliant with the GDPR.
\item The gathered information will not kept in the office after finishing the process. They will be always hand over to the applicant. If, how ever, the applicant fails to pick up their documents after the end of the running event, it \item The gathered information will not kept in the office after finishing the process. They will be always hand over to the applicant. If, how ever, the applicant fails to pick up their documents after the end of the running event, it
\begin{itemize} \begin{itemize}
\item will be kept save until the next event, \item will be kept save until the next event,
\item can be requested via mail \item can be requested via the Chaos Computer Club Essen
\end{itemize} \end{itemize}
\item The information requiring the usage of the computer are always saved volatilely for issuing the passport document. \item The information requiring the usage of the computer are always saved volatilely for issuing the passport document.
\end{itemize} \end{itemize}
\section*{Contact}
Contact information:
\begin{itemize}
\item Bandie \textless bandie at chaospott.de\textgreater, DECT: 2263
\end{itemize}
\end{document} \end{document}

BIN
docs/Y42.pdf Normal file

Binary file not shown.

View File

@@ -26,7 +26,7 @@
\fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}} \fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\title{\textbf{Application Form Y42}} \title{\textbf{Application Form Y42}}
\author{Intergalactic Registration Office} \author{c3gov}
\date{Control no. \randomnum{1000}} \date{Control no. \randomnum{1000}}
\addtolength{\topmargin}{-1cm} \addtolength{\topmargin}{-1cm}
@@ -49,17 +49,17 @@ The passport document has been \ \ \ \answerbox{0.1} already issued in a blank s
\section*{Personal data} \section*{Personal data}
\ \
Forename/Nick (max. 17 characters) Forename/Nick (max. 25 characters)
\\ \\
\answerbox{6.5} \answerbox{6.5}
\\ \\
Surname (max. 17 characters) [optional] Surname (max. 25 characters) [optional]
\\ \\
\answerbox{6.5} \answerbox{6.5}
\\ \\
Home(-hackerspace) (max. 17 characters) Home(-hackerspace) (max. 25 characters)
\\ \\
\answerbox{6.5} \answerbox{6.5}
\\ \\

BIN
docs/c3govsticker.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
docs/de/A23_de.pdf Normal file

Binary file not shown.

94
docs/de/A23_de.tex Normal file
View File

@@ -0,0 +1,94 @@
\documentclass[11pt,a4paper]{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{geometry}
\geometry{
a4paper,
total={170mm,287mm},
left=20mm,
top=20mm,
}
\usepackage{pgf}
\pgfmathsetseed{\number\pdfrandomseed} % to ensure that it is randomized
% use \randomseed for xelatex
\newcommand{\randomnum}[1]{%
\pgfmathsetmacro{\thenum}{int(random(ceil(#1-#1/4),floor(#1+#1/4)))}%
\thenum%
}%
\newcommand{\answerbox}[1]{%%
\fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\title{\textbf{Antragsformular A23}}
\author{c3gov}
\date{Kontrollnummer \randomnum{1000}}
\addtolength{\topmargin}{-2cm}
\begin{document}
\maketitle
\thispagestyle{empty}
\section*{}
Hiermit beantrage ich mich als Hacker*in / Haeckse zu registrieren.
\\
Ein Ausweis \ \ \ \answerbox{0.1} ist bereits im Blanko-Zustand vorhanden \ \ \ \answerbox{0.1} wurde noch nicht ausgestellt.
\section*{Persönliche Daten}
\
Vor- oder Nickname (max. 17 Zeichen)
\\
\answerbox{6.5}
\\
Nachname (max. 17 Zeichen) - optional
\\
\answerbox{6.5}
\\
Home(-hackspace) (max. 17 Zeichen)
\\
\answerbox{6.5}
\\
\section*{Derzeitige Lebensumstände}
\subsection*{Chaos-Events}
Ich habe bisher \ \ \ \ \answerbox{0.1} ein \ \ \ \ \answerbox{0.1} zwei \ \ \ \ \answerbox{0.1} $\{\exists x \in \mathbb{N} \ |\ x > 2 \}$ \ \ \ Chaos-Events besucht.
\subsection*{Das Chaos}
Ich weiß \ \ \ \answerbox{0.1} nichts$^{1)}$ \ \ \ \answerbox{0.1} etwas$^{2)}$ \ \ \ \answerbox{0.1} das Geheimnis$^{3)}$ \ \ \ \ vom Chaos.
\\
\\
Wenn $^{1)}$: \\
Was fanden Sie bisher am interessantesten?\\
\answerbox{6.5}
\\
\\
Wenn $^{2)}$: \\
Haben Sie schon ein Home-Space gefunden?\\
\answerbox{0.1} ja \ \ \ \ \answerbox{0.1} nein
\\
\\
Wenn $^{3)}$: \\
Bitte vervollständigen Sie: Das geht nicht in \answerbox{3.5}.
\\
\section*{Hinweis}
\begin{itemize}
\item Um Ihren \textbf{GPG-Fingerabdruck} auf Ihren Passport mitzuregistrieren, bitte \textbf{Formular PKSR20} ausfüllen.
\end{itemize}
\end{document}

BIN
docs/de/PKSR20_de.pdf Normal file

Binary file not shown.

93
docs/de/PKSR20_de.tex Normal file
View File

@@ -0,0 +1,93 @@
\documentclass[11pt,a4paper]{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{geometry}
\geometry{
a4paper,
total={170mm,257mm},
left=20mm,
top=20mm,
}
\usepackage{pgf}
\pgfmathsetseed{\number\pdfrandomseed} % to ensure that it is randomized
% use \randomseed for xelatex
\newcommand{\randomnum}[1]{%
\pgfmathsetmacro{\thenum}{int(random(ceil(#1-#1/4),floor(#1+#1/4)))}%
\thenum%
}%
\newcommand{\answerbox}[1]{%%
\fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\title{\textbf{Zusatzformular PKSR20}}
\author{c3gov}
\date{Kontrollnummer \answerbox{1}}
\addtolength{\topmargin}{-2cm}
\begin{document}
\maketitle
\thispagestyle{empty}
\section*{}
Hiermit beantrage ich meinen GPG-Fingerabdruck auf meinem Passport eintragen zu lassen.
Ich erfülle die Voraussetzung, dass ich entweder
\begin{itemize}
\item[1.] den öffentlichen Schlüssel auf den Schlüsselserver von \textbf{keys.openpgp.org} unter \textbf{folgender E-Mail-Adresse hochgeladen habe} oder
\item[2.] ich den \textbf{gesamten GPG-Fingerabdruck} angeben kann, und zwar
\end{itemize}
\
E-Mail-Adresse oder gesamter GPG-Fingerabdruck\\
(z.B. 1234-2234-3234-4234-5234-6234-7234-8234-9234-0234)
\\
\answerbox{6.5}
\\
\\
Ich versichere, dass ich die oben angegebenen Voraussetzungen erfülle und überprüft habe, dass jene Voraussetzung auch während des Registrierungs- und Ausstellungsprozesses gegeben sind.
\section*{Zusätzliche Angaben}
Folgende Farbe ist auf den GPG-Fingerabdruck anwendbar:
\\
Fingerabdruck-Farbe
\\
\answerbox{6.5}
\\
\\
Bitte Auswahl in einem Satz begründen.
\\
\answerbox{6.5}
\\
\\
\\
Von einer Skala von 1 (auf keinen Fall) bis 5 (auf jeden Fall), wie privat ist Ihr öffentlicher Schlüssel?
\\
\\
\answerbox{0.1} 1 \ \ \ \answerbox{0.1} 2 \ \ \ \answerbox{0.1} 3 \ \ \ \answerbox{0.1} 4 \ \ \ \answerbox{0.1} 5 \ \ \
\\
\\
\\
Von einer Skala von 1 (auf keinen Fall) bis 5 (auf jeden Fall), wie privat ist Ihr privater Schlüssel?
\\
\\
\answerbox{0.1} 1 \ \ \ \answerbox{0.1} 2 \ \ \ \answerbox{0.1} 3 \ \ \ \answerbox{0.1} 4 \ \ \ \answerbox{0.1} 5 \ \ \
\\
\\
\\
Von einer Skala von 1 (auf keinen Fall) bis 5 (auf jeden Fall), wie öffentlich ist Ihr öffentlicher Schlüssel?
\\
\\
\answerbox{0.1} 1 \ \ \ \answerbox{0.1} 2 \ \ \ \answerbox{0.1} 3 \ \ \ \answerbox{0.1} 4 \ \ \ \answerbox{0.1} 5 \ \ \
\end{document}

BIN
docs/de/Y42_de.pdf Normal file

Binary file not shown.

86
docs/de/Y42_de.tex Normal file
View File

@@ -0,0 +1,86 @@
\documentclass[11pt,a4paper]{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{geometry}
\geometry{
a4paper,
total={170mm,257mm},
left=20mm,
top=20mm,
}
\usepackage{pgf}
\pgfmathsetseed{\number\pdfrandomseed} % to ensure that it is randomized
% use \randomseed for xelatex
\newcommand{\randomnum}[1]{%
\pgfmathsetmacro{\thenum}{int(random(ceil(#1-#1/4),floor(#1+#1/4)))}%
\thenum%
}%
\newcommand{\answerbox}[1]{%%
\fbox{\rule{#1in}{0pt}\rule[-0.5ex]{0pt}{4ex}}}
\title{\textbf{Antragsformular Y42}}
\author{c3gov}
\date{Kontrollnummer \randomnum{1000}}
\addtolength{\topmargin}{-1cm}
\addtolength{\textheight}{1cm}
\begin{document}
\maketitle
\thispagestyle{empty}
\section*{}
Hiermit beantrage ich mich als Hacker*in / Haeckse zu registrieren.
\\
Ein Ausweis \ \ \ \answerbox{0.1} ist bereits im Blanko-Zustand vorhanden \ \ \ \answerbox{0.1} wurde noch nicht ausgestellt.
\section*{Persönliche Daten}
\
Vor- oder Nickname (max. 25 Zeichen)
\\
\answerbox{6.5}
\\
Nachname (max. 25 characters) [optional]
\\
\answerbox{6.5}
\\
Home(-hackspace) (max. 25 characters)
\\
\answerbox{6.5}
\\
\section*{Derzeitige Lebensumstände}
\subsection*{Chaos-Events}
Ich habe bisher \ \ \ \ \answerbox{0.1} ein \ \ \ \ \answerbox{0.1} zwei \ \ \ \ \answerbox{0.1} $\{\exists x \in \mathbb{N} \ |\ x > 2 \}$ \ \ \ Chaos-Events besucht.
\subsection*{Das Chaos}
Ich weiß \ \ \ \answerbox{0.1} nichts$^{1)}$ \ \ \ \answerbox{0.1} etwas$^{2)}$ \ \ \ \answerbox{0.1} das Geheimnis$^{3)}$ \ \ \ \ vom Chaos.
\\
\\
$^{1)}$Bitte Formular R21 ausfüllen \\
$^{2)}$Bitte Formular R22 ausfüllen \\
$^{3)}$Bitte Formular R23 ausfüllen \\
\section*{Hinweis}
\begin{itemize}
\item Um Ihren \textbf{GPG-Fingerabdruck} auf Ihren Passport mitzuregistrieren, bitte \textbf{Formular PKSR20} ausfüllen.
\end{itemize}
\end{document}

View File

@@ -0,0 +1,8 @@
[Service]
Type=simple
ExecStart=
ExecStart=-/root/c3gov/start_dialog
StandardInput=tty
StandardOutput=tty
Restart=always
RestartSec=5

View File

@@ -0,0 +1,8 @@
[Service]
Type=simple
ExecStart=
ExecStart=-/root/c3gov/start_dialog
StandardInput=tty
StandardOutput=tty
Restart=always
RestartSec=5

View File

@@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
DEVICE=/dev/ttyUSB2
function init() { function init() {
stty -F $DEVICE 1:0:80000dbd:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 stty -F $DEVICE 1:0:80000dbd:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
# \x1b\x47 - Double Strike # \x1b\x47 - Double Strike

View File

@@ -60,20 +60,6 @@ function heading() {
fi fi
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGE $FILE
fi
makeLeft 1 $FILE
makeLeft $SPACE $FILE
italicLetters $FILE
printf "INTERGALACTIC\n" >> $FILE
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGE $FILE
fi
makeLeft 1 $FILE
makeLeft $SPACE $FILE
printf "REGISTRATION\n" >> $FILE
bigLetters $FILE bigLetters $FILE
if [ $PAGE -eq 1 ]; then if [ $PAGE -eq 1 ]; then
@@ -87,7 +73,7 @@ function heading() {
fi fi
makeLeft $HSPACE $FILE makeLeft $HSPACE $FILE
fi fi
printf "OFFICE\n" >> $FILE printf "c3gov\n" >> $FILE
resetLetters $FILE resetLetters $FILE
} }

View File

@@ -1,30 +0,0 @@
#!/bin/bash
FILE=/tmp/$RANDOM
source ../include/nixdorf
init
echo "1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1" > $FILE
printFile $FILE
rm $FILE

View File

@@ -21,7 +21,7 @@ init
makeNewline 1 $FILE makeNewline 1 $FILE
makeLeft $(($LEFT + 12)) $FILE makeLeft $(($LEFT + 12)) $FILE
smallLetters $FILE smallLetters $FILE
printf "/ Intergal. Reg. Office" >> $FILE printf "/ c3gov" >> $FILE
resetLetters $FILE resetLetters $FILE
makeNewline $(($TOP - 1)) $FILE makeNewline $(($TOP - 1)) $FILE

40
jhp/secure Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
FILE=/tmp/$RANDOM
TOP=5
TOP=13
TOP2=51
LEFT=23
VISAPAGES=2
if [ $# -eq 0 ]; then
echo "Syntax: $0 <SecurityNumber>"
exit 1
fi
sn=$1
source ../include/nixdorf
init
smallLetters $FILE
printf "\x1b\x33\x0e" >> $FILE
makeNewline $TOP $FILE
makeLeft $LEFT $FILE
printf "$sn" >> $FILE
makeNewline $(($TOP2 - $TOP)) $FILE
makeLeft $LEFT $FILE
printf "$sn" >> $FILE
resetLetters $FILE
echo "Only use the pages saying \"VISAs\" on top"
for (( i=1; i<=$VISAPAGES; i++)); do
read -s -p "Insert page $i of $VISAPAGES and press enter."
echo ""
printFile $FILE
done
rm $FILE

108
stapleddipl/c3gov Executable file
View File

@@ -0,0 +1,108 @@
#!/bin/bash
FILE=/tmp/$RANDOM
TOP=1
LEFT=5
# Additional heading space
HEADINGNEXTPAGE=19
HEADINGLEFT=1
HEADINGRIGHT=10
# GPG Space
NEXTPAGE=34
NEXTPAGESMALL=60
NEXTFIELDBOTTOM=13
NEXTFIELDRIGHT=18
NEXTFIELDRIGHTSMALL=30
if [ $# -eq 0 ]; then
echo -e "$0: Syntax:\n$0 FIELD\n\nExample:\n$0 7\n\n\nFields:
==================
| VISAS || VISAS |
==================
| 0 | 1 || 4 | 5 |
|---|---||---|---|
| 2 | 3 || 6 | 7 |
==================
"
exit 1
fi
PAGE=$(($1 / 4))
FIELD=$(($1 % 4))
shift 1
echo "PAGE: $PAGE, FIELD: $FIELD"
function moveDown() {
for((i=0; i<$(($FIELD / 2)); i++)); do
for((j=0; j<$NEXTFIELDBOTTOM; j++)); do
printf "\n" >> $FILE
done
done
}
function heading() {
moveDown
if [ $(($FIELD % 2)) -eq 0 ]; then
HSPACE=$HEADINGLEFT
SPACE=0
else
HSPACE=$HEADINGRIGHT
SPACE=$NEXTFIELDRIGHT
fi
bigLetters $FILE
if [ $PAGE -eq 1 ]; then
makeLeft $HEADINGNEXTPAGE $FILE
if [ $(($FIELD % 2)) -eq 1 ]; then
makeLeft $(($HSPACE - 1)) $FILE
fi
else
makeLeft 1 $FILE
makeLeft $HSPACE $FILE
fi
printf "c3gov\n" >> $FILE
resetLetters $FILE
}
function insertDate() {
if [ $(($FIELD % 2 )) -eq 0 ]; then
SPACE=0
else
SPACE=$NEXTFIELDRIGHTSMALL
fi
smallLetters $FILE
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGESMALL $FILE
fi
makeLeft $LEFT $FILE
makeLeft $(($SPACE + 2)) $FILE
if [ -n "$EVENT" ]; then
printf "$EVENT, $(date -I)" >> $FILE
else
printf "$(date -I)" >> $FILE
fi
}
source ../include/nixdorf
init
makeNewline $TOP $FILE
heading
insertDate
printFile $FILE
rm $FILE

134
stapleddipl/gpgkey Executable file
View File

@@ -0,0 +1,134 @@
#!/bin/bash
FILE=/tmp/$RANDOM
TOP=1
LEFT=3
# Additional heading space
HEADINGNEXTPAGE=36
HEADINGLEFT=1
HEADINGRIGHT=20
# GPG Space
NEXTPAGE=58
NEXTFIELDBOTTOM=11
NEXTFIELDRIGHT=31
MAXLENGTH=22
if [ $# -eq 0 ]; then
echo -e "$0: Syntax:\n$0 FIELD GPG FINGERPRINT WITH SPACES\n\nExample:\n$0 7 1234 5678 1234 1234 1234 1234 1234 1234 1234 ABCD\n\n\nFields:
==================
| VISAS || VISAS |
==================
| 0 | 1 || 4 | 5 |
|---|---||---|---|
| 2 | 3 || 6 | 7 |
==================
"
exit 1
fi
PAGE=$(($1 / 4))
FIELD=$(($1 % 4))
shift 1
echo "PAGE: $PAGE, FIELD: $FIELD"
function moveDown() {
for((i=0; i<$(($FIELD / 2)); i++)); do
for((j=0; j<$NEXTFIELDBOTTOM; j++)); do
printf "\n" >> $FILE
done
done
}
function heading() {
moveDown
if [ $(($FIELD % 2)) -eq 0 ]; then
SPACE=$HEADINGLEFT
else
SPACE=$HEADINGRIGHT
fi
if [ $PAGE -eq 1 ]; then
makeLeft $HEADINGNEXTPAGE $FILE
fi
makeLeft $LEFT $FILE
makeLeft $SPACE $FILE
bigLetters $FILE
printf "GPG" >> $FILE
resetLetters $FILE
printf "\n" >> $FILE
}
function insertFP() {
if [ $(($FIELD % 2 )) -eq 0 ]; then
SPACE=0
else
SPACE=$NEXTFIELDRIGHT
fi
smallLetters $FILE
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGE $FILE
fi
makeLeft $LEFT $FILE
makeLeft $(($SPACE + 2)) $FILE
printf "$1 $2 $3 $4" >> $FILE
resetLetters $FILE
printf "\n" >> $FILE
shift 4
smallLetters $FILE
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGE $FILE
fi
makeLeft $LEFT $FILE
makeLeft $(($SPACE + 2)) $FILE
printf "$1 $2 $3 $4" >> $FILE
resetLetters $FILE
printf "\n" >> $FILE
shift 4
smallLetters $FILE
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGE $FILE
fi
makeLeft $LEFT $FILE
makeLeft $(($SPACE + 2)) $FILE
printf "$1 $2" >> $FILE
resetLetters $FILE
printf "\n" >> $FILE
shift 2
smallLetters $FILE
if [ $PAGE -eq 1 ]; then
makeLeft $NEXTPAGE $FILE
fi
makeLeft $LEFT $FILE
makeLeft $(($SPACE + 2)) $FILE
if [ -n "$EVENT" ]; then
printf "$EVENT, $(date -I)" >> $FILE
else
printf "$(date -I)" >> $FILE
fi
}
source ../include/nixdorf
init
makeNewline $TOP $FILE
heading
insertFP $@
printFile $FILE
rm $FILE

52
stapleddipl/reg Executable file
View File

@@ -0,0 +1,52 @@
#!/bin/bash
FILE=/tmp/$RANDOM
TOP=54
NEXTFIELD=5
LEFT=23
AUTHLEFT=66
DATELEFT=35
MAXLENGTH=17
GIVENNAME=$1
SURNAME=$2
HOME=$3
if [ ${#GIVENNAME} -gt $MAXLENGTH ] || [ ${#SURNAME} -gt $MAXLENGTH ] || [ ${#HOME} -gt $MAXLENGTH ]; then
echo "MAXLENGTH EXCEEDED."
exit 1
fi
source ../include/nixdorf
init
smallLetters $FILE
printf "\x1b\x33\x0e" >> $FILE
makeNewline $TOP $FILE
makeLeft $LEFT $FILE
printf "$GIVENNAME" >> $FILE
# Authority field
makeNewline 2 $FILE
makeLeft $AUTHLEFT $FILE
printf "c3gov" >> $FILE
makeNewline 3 $FILE
makeLeft $LEFT $FILE
printf "$SURNAME" >> $FILE
makeNewline $NEXTFIELD $FILE
makeLeft $LEFT $FILE
printf "$HOME" >> $FILE
makeNewline 5 $FILE
makeLeft $DATELEFT $FILE
if [ -n "$EVENT" ]; then
printf "/ $EVENT, $(date -I)" >> $FILE
else
printf "/ $(date -I)" >> $FILE
fi
printFile $FILE
rm $FILE

41
stapleddipl/secure Executable file
View File

@@ -0,0 +1,41 @@
#!/bin/bash
FILE=/tmp/$RANDOM
TOP=0
LEFT=3
VISAPAGES=6
# GPG Space
NEXTPAGE=28
NEXTPAGESMALL=60
NEXTFIELDBOTTOM=13
NEXTFIELDRIGHT=18
NEXTFIELDRIGHTSMALL=30
if [ $# -eq 0 ]; then
echo "Syntax: $0 <SecurityNumber>"
exit 1
fi
sn=$1
source ../include/nixdorf
init
makeNewline $TOP $FILE
makeLeft $LEFT $FILE
italicLetters $FILE
printf "$sn" >> $FILE
makeLeft $NEXTPAGE $FILE
printf "$sn" >> $FILE
resetLetters $FILE
echo "Only use the pages saying \"VISAs\" on top"
for (( i=1; i<=$VISAPAGES; i++)); do
read -s -p "Insert page $i of $VISAPAGES and press enter."
echo ""
printFile $FILE
done
rm $FILE

34
stapleddipl/secure_firstpage Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
FILE=/tmp/$RANDOM
TOP=50
NEXTFIELD=5
LEFT=38
MAXLENGTH=6
GIVENNAME=$1
SURNAME=$2
HOME=$3
if [ $# -eq 0 ]; then
echo "Syntax: $0 <SecurityNumber>"
exit 1
fi
sn=$1
if [ ${#sn} -gt $MAXLENGTH ]; then
echo "Security Number too long"
exit 1
fi
source ../include/nixdorf
init
smallLetters $FILE
printf "\x1b\x33\x0e" >> $FILE
makeNewline $TOP $FILE
makeLeft $LEFT $FILE
printf "$1" >> $FILE
printFile $FILE
rm $FILE

View File

@@ -1,13 +1,17 @@
#!/bin/bash #!/bin/bash
export LANG=C export LANG=C
export EVENT=DiVOC
export TERM=vt220 export TERM=vt220
export DIALOGRC=dialogrc export DIALOGRC=dialogrc
LOCKFILE=/tmp/irolock source $(dirname $0)/config
export PRINTDEVICE="/dev/ttyUSB$CLIENTS"
export DEVICE="$PRINTDEVICE"
LOCKFILE=/tmp/c3govlock
TMP=/tmp/$RANDOM TMP=/tmp/$RANDOM
BT="Intergalactic Registration Office - v0.3" BT="c3gov - v0.5"
cd $(dirname "$0") cd $(dirname "$0")
@@ -222,13 +226,13 @@ function printReg() {
return 0 return 0
} }
function printIROStamp() { function printc3govStamp() {
askForField "IRO stamp" "$1" askForField "c3gov stamp" "$1"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
checkLockFile checkLockFile
diaBox "Insert Passport" "Please insert passport (Visas) into the printer." diaBox "Insert Passport" "Please insert passport (Visas) into the printer."
cd "$1" cd "$1"
./iro $FIELD ./c3gov $FIELD
cd .. cd ..
rm $LOCKFILE rm $LOCKFILE
return 0 return 0
@@ -254,7 +258,7 @@ function askForField() {
==================\n ==================\n
" "
layout[adafruit]=" layout[bounddipl]="
------------------\n ------------------\n
| VISAS || VISAS |\n | VISAS || VISAS |\n
==================\n ==================\n
@@ -264,8 +268,20 @@ function askForField() {
==================\n ==================\n
" "
layout[stapleddipl]="
------------------\n
| VISAS || VISAS |\n
==================\n
| 0 | 1 || 4 | 5 |\n
|---|---||---|---|\n
| 2 | 3 || 6 | 7 |\n
==================\n
"
maxfield[jhp]=11 maxfield[jhp]=11
maxfield[adafruit]=7 maxfield[bounddipl]=7
maxfield[stapleddipl]=7
askStr 2 "Select a field" "$text ${layout[$2]}" "" 18 askStr 2 "Select a field" "$text ${layout[$2]}" "" 18
if [ $? -eq 1 ]; then if [ $? -eq 1 ]; then
@@ -284,7 +300,8 @@ function askReg() {
# Max length of passport fields # Max length of passport fields
declare -A MAXLENGTH declare -A MAXLENGTH
MAXLENGTH[jhp]=25 MAXLENGTH[jhp]=25
MAXLENGTH[adafruit]=17 MAXLENGTH[bounddipl]=17
MAXLENGTH[stapleddipl]=17
askStr ${MAXLENGTH[$1]} "Forename/Nickname" "Enter forename/nickname" askStr ${MAXLENGTH[$1]} "Forename/Nickname" "Enter forename/nickname"
if [ $? -eq 1 ]; then if [ $? -eq 1 ]; then
@@ -306,14 +323,21 @@ function askReg() {
confirm=" Forename: $FNAME\n Surname: $SNAME\n Place: $PLANET" confirm=" Forename: $FNAME\n Surname: $SNAME\n Place: $PLANET"
ynBox "IRO Stamp" "Does this being want to have a IRO stamp?" ynBox "Security" "Secure this passport using security stickers?"
if [ $? -eq 0 ]; then
SECURE=true
else
SECURE=false
fi
ynBox "c3gov Stamp" "Does this entity want to have a c3gov stamp?"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
STAMP=true STAMP=true
else else
STAMP=false STAMP=false
fi fi
ynBox "GPG" "Does the being have a GPG key to register?" ynBox "GPG" "Does the entity have a GPG key to register?"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
enterGPG "" no-confirm enterGPG "" no-confirm
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
@@ -326,12 +350,67 @@ function askReg() {
} }
function enterSecurityCode() {
MAXLENGTH=6
askStr ${MAXLENGTH} "Security code" "Enter security code from the security sticker (e.g. S12345)."
if [ $? -eq 1 ]; then
return 1
fi
SECURITYCODE=$(cat $TMP)
confirm "Security code" "Security code: $SECURITYCODE"
return $?
}
function printSecurePassportFirstPage(){
checkLockFile
diaBox "Insert Passport" "Pleast insert the FIRST PAGE (Identity) into the printer."
cd "$1"
./secure_firstpage "$SECURITYCODE"
cd ..
rm $LOCKFILE
}
function printSecurePassport(){
checkLockFile
diaBox "Insert Passport" "Please insert passport (Visas) into the printer.\nA print on EVERY Visa page is necessary."
cd "$1"
./secure "$SECURITYCODE"
cd ..
rm $LOCKFILE
}
function enableSecurity() {
if [ "$1" = "bounddipl" ]; then
diaBox "Error" "Passport security: Passport not supported."
else
enterSecurityCode
if [ $? -eq 0 ]; then
case $1 in
"bounddipl")
;;
"jhp")
printSecurePassport "$1"
;;
*)
printSecurePassportFirstPage "$1"
printSecurePassport "$1"
;;
esac
fi
fi
}
function menuFor() { function menuFor() {
dialog --backtitle "$BT" \ dialog --backtitle "$BT" \
--menu "Select ID type:" 14 40 3 \ --menu "Select purpose:" 14 40 3 \
1 "Registration" \ 1 "Registration" \
2 "IRO Stamp" \ 2 "c3gov Stamp" \
3 "GPG" \ 3 "GPG" \
8 "Secure Passport" \
9 "Back" 2> $TMP 9 "Back" 2> $TMP
choice=$(cat $TMP) choice=$(cat $TMP)
@@ -340,29 +419,36 @@ function menuFor() {
1) askReg "$1" 1) askReg "$1"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
printReg "$1" printReg "$1"
if [ "$STAMP" == "true" ]; then if [ "$SECURE" = "true" ]; then
printIROStamp "$1" enableSecurity "$1"
fi
if [ "$STAMP" = "true" ]; then
printc3govStamp "$1"
fi fi
if [ -n "$FP" ]; then if [ -n "$FP" ]; then
printGPG "$1" printGPG "$1"
fi fi
fi fi
;; ;;
2) printIROStamp "$1" 2) printc3govStamp "$1"
;; ;;
3) enterGPG 3) enterGPG
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
printGPG "$1" printGPG "$1"
fi fi
;; ;;
8) enableSecurity "$1"
;;
esac esac
unset FNAME unset FNAME
unset SNAME unset SNAME
unset PLANET unset PLANET
unset FP unset FP
unset FIELD unset FIELD
unset FFP unset FFP
unset SECURITYCODE
} }
function askForFunnyUserCreds() { function askForFunnyUserCreds() {
@@ -375,7 +461,7 @@ function askForFunnyUserCreds() {
askPw 12 "Login" "Password:" "" askPw 12 "Login" "Password:" ""
password=$(cat $TMP) password=$(cat $TMP)
if [ -f .pw/$username ]; then if [ -f ".pw/$username" ]; then
if [ "$password" != $(cat .pw/$username) ]; then if [ "$password" != $(cat .pw/$username) ]; then
clear clear
echo "Wrong credentials." echo "Wrong credentials."
@@ -394,9 +480,10 @@ askForFunnyUserCreds
while [ true ]; do while [ true ]; do
dialog --backtitle "$BT" \ dialog --backtitle "$BT" \
--menu "Select ID type:" 10 40 3 \ --menu "Select ID type:" 12 40 3 \
1 "Junghackerpass" \ 1 "Stapled diplomatic passport" \
2 "New Adafruit passport" \ 2 "Junghackerpass" \
3 "Bound diplomatic passport" \
9 "Logout" 2> $TMP 9 "Logout" 2> $TMP
if [ $? -eq 9 ]; then if [ $? -eq 9 ]; then
@@ -407,9 +494,11 @@ while [ true ]; do
case $TYPE in case $TYPE in
1) menuFor jhp 1) menuFor stapleddipl
;; ;;
2) menuFor adafruit 2) menuFor jhp
;;
3) menuFor bounddipl
;; ;;
9) break 9) break
;; ;;