0xGA: Check-in [abe4544729]

Yet another PHP framework, but made for org-mode and geeks.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Sign install script and offer verification on the fly.
Timelines: family | ancestors | descendants | both | narv
Files: files | file ages | folders
SHA1:abe454472900b98380a10201a832cecd32a3578c
User & Date: milouse 2014-09-24 15:59:11
Context
2014-09-24
16:04
Update home doc check-in: 50907e3740 user: milouse tags: narv
15:59
Sign install script and offer verification on the fly. check-in: abe4544729 user: milouse tags: narv
2014-08-24
01:00
Add creation of a dedicated systemd service file to put in /etc/systemd/system/ if necessary check-in: 940cbc4aab user: milouse tags: narv
Changes

Changes to create_narv_installer.sh.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
25
26
27
28
29
30
31













32
33
34
35
36
37
38
#!/usr/bin/env bash

if [ -f "./narv_install.sh" ] ; then
    rm narv_install.sh
fi

gzip --best -k narv narv.py 
tar -czf narv.tar.gz narv.gz narv.py.gz

exec 6>&1 # bind fd #6 to stdout (save stdout)
exec > /tmp/narv_tmp_install # redirect stdout to this file

cat <<EOF
#!/usr/bin/env bash
................................................................................

rm *.gz
exit

####################################################
### INSTALLER SCRIPT
####################################################














WORKINGREP=`realpath ./narvroot`

echo "$PAYLOAD" | base64 -d > narv.tar.gz
tar xzf narv.tar.gz
rm narv.tar.gz
gzip -d narv.gz narv.py.gz






|







 







>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env bash

if [ -f "./narv_install.sh" ] ; then
    rm narv_install.sh
fi

gzip --best -k narv narv.py
tar -czf narv.tar.gz narv.gz narv.py.gz

exec 6>&1 # bind fd #6 to stdout (save stdout)
exec > /tmp/narv_tmp_install # redirect stdout to this file

cat <<EOF
#!/usr/bin/env bash
................................................................................

rm *.gz
exit

####################################################
### INSTALLER SCRIPT
####################################################

if which gpg &> /dev/null; then
  if gpg -k 8C9CEE3D &> /dev/null; then
    echo -n 'Check sig? [Y|n] '
    read check_sign
    if [ "$check_sign" != "n" ]; then
      wget http://projects.depar.is/0xGA/doc/tip/narv_install.sh.asc
      if ! gpg --verify narv_install.sh.asc ; then
        exit 1
      fi
    fi
  fi
fi

WORKINGREP=`realpath ./narvroot`

echo "$PAYLOAD" | base64 -d > narv.tar.gz
tar xzf narv.tar.gz
rm narv.tar.gz
gzip -d narv.gz narv.py.gz

Changes to narv.

485
486
487
488
489
490
491

492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
      (message (concat "Not a valid orgx file: " dir)))))
EOF

        exec > $WORKINGREP/var/${APPNAME}@narv.service
        cat <<EOF
[Unit]
Description=$APPNAME Narv Web Application


[Service]
Type=simple
PIDFile=/srv/http/narvroot/var/${APPNAME}.pid
ExecStart=/srv/http/narvroot/usr/bin/narv start $APPNAME -d /srv/http/narvroot/
ExecStop=/srv/http/narvroot/usr/bin/narv stop $APPNAME -d /srv/http/narvroot/

[Install]
WantedBy=multi-user.target
EOF

        exec 1>&6 6>&- # Restore stdout and close fd #6

        chmod u+x $WORKINGREP/usr/bin/$APPNAME.py

        echo "Application installation finished."







>








|







485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
      (message (concat "Not a valid orgx file: " dir)))))
EOF

        exec > $WORKINGREP/var/${APPNAME}@narv.service
        cat <<EOF
[Unit]
Description=$APPNAME Narv Web Application
After=network.target

[Service]
Type=simple
PIDFile=/srv/http/narvroot/var/${APPNAME}.pid
ExecStart=/srv/http/narvroot/usr/bin/narv start $APPNAME -d /srv/http/narvroot/
ExecStop=/srv/http/narvroot/usr/bin/narv stop $APPNAME -d /srv/http/narvroot/

[Install]
WantedBy=network.target
EOF

        exec 1>&6 6>&- # Restore stdout and close fd #6

        chmod u+x $WORKINGREP/usr/bin/$APPNAME.py

        echo "Application installation finished."

Changes to narv_install.sh.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
















177
178
179
180
181
182
183
#!/usr/bin/env bash

PAYLOAD="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
9u3bt2/fvv1P8L8AsVg0lABQAAA="

















WORKINGREP=`realpath ./narvroot`

echo "$PAYLOAD" | base64 -d > narv.tar.gz
tar xzf narv.tar.gz
rm narv.tar.gz
gzip -d narv.gz narv.py.gz


|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
#!/usr/bin/env bash

PAYLOAD="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
UAAA"

if which gpg &> /dev/null; then
  if gpg -k 8C9CEE3D &> /dev/null; then
    echo -n 'Check sig? [Y|n] '
    read check_sign
    if [ "$check_sign" != "n" ]; then
      wget http://projects.depar.is/0xGA/doc/tip/narv_install.sh.asc
      if ! gpg --verify narv_install.sh.asc ; then
        exit 1
      fi
    fi
  fi
fi

WORKINGREP=`realpath ./narvroot`

echo "$PAYLOAD" | base64 -d > narv.tar.gz
tar xzf narv.tar.gz
rm narv.tar.gz
gzip -d narv.gz narv.py.gz

Added narv_install.sh.asc.























>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAABAgAGBQJUIs3qAAoJEKcU7KyMnO49j24IAKvZHex48OC3Vx4SaJIexapk
pJoicoFpXM5LBKHlOioh/8JKGQzmRiSHrVQOqXqsN4S2dcK0qFRkVzD077o50gpB
0ChbtvzrfKRQ34i45/fB/iMlmgJ9Fna7Llwp/MWwrrL5cUDTCKrkahTO1CPAPXQG
Y1GEBs6PfWQippnXzFp9cH8wbu3EbkXzPO2B0agKyKWum2Kss17CFchRiYKNGOKb
/H4k+/IVJnOQmaqCpH+7B/+YMdrYUCsPBzIK9tQ/DgBl5j8R3Td4ODGpeOUoD/oP
0wVEMfL0nk7SqulTWm6pxO0gvoDuhAR2hz2rlO3mlqbepvDRxZENoMvan3NNtLM=
=ewNn
-----END PGP SIGNATURE-----