0xGA: Check-in [1fdf461cf7]

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

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

Overview
Comment:Fix little glitches
Timelines: family | ancestors | descendants | both | narv
Files: files | file ages | folders
SHA1:1fdf461cf750c6ce07d6c63707733d98a7df563b
User & Date: milouse 2014-12-29 19:41:25
Context
2014-12-30
11:19
No more chroot, use LXC instead check-in: 17e12c7aac user: milouse tags: narv
2014-12-29
19:41
Fix little glitches check-in: 1fdf461cf7 user: milouse tags: narv
2014-12-25
01:23
Fix update process check-in: 0fbc05cbc6 user: milouse tags: narv
Changes

Changes to create_narv_installer.sh.

95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
This program will now exit to let you do all the necessary things before."
    exit 1
fi

mkdir $WORKINGREP

echo ":: creating shared necessary directories structure"
install -d -m755 $WORKINGREP/var/db
install -d -m755 $WORKINGREP/var/log
install -d -m777 $WORKINGREP/var/tmp
install -d -m755 $WORKINGREP/bin
install -d -m755 $WORKINGREP/etc
install -d -m755 $WORKINGREP/home

install -D -m755 narv.py $WORKINGREP/bin
install -D -m755 narv    $WORKINGREP/bin

clean_install

echo "General installation finished."
echo "You may now want to create your first app by entering the command:"
echo "$WORKINGREP/bin/narv create <appname>"







|
<
|
<
<
<









95
96
97
98
99
100
101
102

103



104
105
106
107
108
109
110
111
112
This program will now exit to let you do all the necessary things before."
    exit 1
fi

mkdir $WORKINGREP

echo ":: creating shared necessary directories structure"
install -d -m755 $WORKINGREP/{bin,etc,home,var}

install -d -m777 $WORKINGREP/var/{db,log,tmp}




install -D -m755 narv.py $WORKINGREP/bin
install -D -m755 narv    $WORKINGREP/bin

clean_install

echo "General installation finished."
echo "You may now want to create your first app by entering the command:"
echo "$WORKINGREP/bin/narv create <appname>"

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
...
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#!/usr/bin/env bash

PAYLOAD="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
9n/7T+sf//jHP/7xj3/8z/4N8hv0mAAoAAA="


function clean_install {
    rm narv narv.py narv_install.sh

    if [ -f narv_install.sh.asc ]; then
        rm narv_install.sh.asc
    fi
................................................................................
This program will now exit to let you do all the necessary things before."
    exit 1
fi

mkdir $WORKINGREP

echo ":: creating shared necessary directories structure"
install -d -m755 $WORKINGREP/var/db
install -d -m755 $WORKINGREP/var/log
install -d -m777 $WORKINGREP/var/tmp
install -d -m755 $WORKINGREP/bin
install -d -m755 $WORKINGREP/etc
install -d -m755 $WORKINGREP/home

install -D -m755 narv.py $WORKINGREP/bin
install -D -m755 narv    $WORKINGREP/bin

clean_install

echo "General installation finished."
echo "You may now want to create your first app by entering the command:"
echo "$WORKINGREP/bin/narv create <appname>"


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







 







|
<
|
<
<
<









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
...
188
189
190
191
192
193
194
195

196



197
198
199
200
201
202
203
204
205
#!/usr/bin/env bash

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

function clean_install {
    rm narv narv.py narv_install.sh

    if [ -f narv_install.sh.asc ]; then
        rm narv_install.sh.asc
    fi
................................................................................
This program will now exit to let you do all the necessary things before."
    exit 1
fi

mkdir $WORKINGREP

echo ":: creating shared necessary directories structure"
install -d -m755 $WORKINGREP/{bin,etc,home,var}

install -d -m777 $WORKINGREP/var/{db,log,tmp}




install -D -m755 narv.py $WORKINGREP/bin
install -D -m755 narv    $WORKINGREP/bin

clean_install

echo "General installation finished."
echo "You may now want to create your first app by entering the command:"
echo "$WORKINGREP/bin/narv create <appname>"

Changes to narv_install.sh.asc.

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

iQEcBAABCAAGBQJUm1fIAAoJEKcU7KyMnO49KkYIAIBpWrP2x6rLnpANG9L7nhAN
kZMR+UwawlMiznPJJnWQ9UmBaYhwltP27T8F1rw8DcqQoZ8d96Idb9sgyuQUHc77
tyC2zpI89kCMLmpIucwAcwMfce40VZkj0DM9sCspGIVWbqfUF69qKN5FrRUkvVys
kRTMm0CiiYc6HX4s14le67PfJQJ+hIbZ5OqZLRSsSt6rd7dku6KzEU67EVS9GDC3
c5O4eesTdBqYRPwJkCMev7VPGg3qpVXNzVPKTN44FV68k/2fHCP7lRmdwEW6dKhS
z4wkyZy4qX1rudcbtgVltTuanpvW1w1mphOo41O05Eq6cmD6G3sDdiH8tY62pqg=
=hOsm
-----END PGP SIGNATURE-----



|
|
|
|
|
|
|

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

iQEcBAABCAAGBQJUoZ+rAAoJEKcU7KyMnO4913YH/0az+OSg8QI3OuDX658IvKj3
fVJkzW9iLiTOu58sPfjxcV3BVyXQUXKmyQUhoUkIjxg84nJ0gPlq9rW4Os7kIV5E
DMhL13EUZ9AlZ+CKWhE4Y5YgmtbsGzLLhdN/7HwX45i44LJLgJWMj5A49qT4muF7
IuJQTIXdgvJxbI8xoFvX1AUlPgxPK2Jv0nYTnaqMqEZnL4OKyn7HCr+QwKKZzz3i
+U7h2Zee7x25pzfevkkoMTy1T698avYh17h2YuG46xnqubhMXVYY6zBNDAYDEZux
2JhV0JKwr0PC8MXQHeq7nEf13b9dIKMnG+09ZsbnYV4oLXOOtzemjFA98eeG/pQ=
=L2Yq
-----END PGP SIGNATURE-----

Changes to src/narv.

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
...
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245




246
247
248
249
250
251
252
        pgrep -f $APPNAME.py > $WORKINGREP/var/$APPNAME.pid
        echo "Your Narv application seems to be always running. Try $0 stop $APPNAME"
        exit 1;
    fi

    daemon_begin_log_line "Starting $WORKINGREP/bin/$APPNAME.py"

    $WORKINGREP/bin/$APPNAME.py &
    pgrep -f $APPNAME.py > $WORKINGREP/var/$APPNAME.pid
    daemon_end_log_line 0
}

function narv_stop {
    if [ ! -f "$WORKINGREP/var/$APPNAME.pid" ] ; then
        echo "Your Narv application is NOT running."
................................................................................


if __name__ == "__main__":
    app = Narv(('', 9042), MyBeautifulApp)
    app.start()
EOF

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

[Service]
Type=simple
User=nobody
PIDFile=${WORKINGREP}/var/${APPNAME}.pid
ExecStart=${WORKINGREP}/bin/narv start $APPNAME -d ${WORKINGREP}/
ExecStop=${WORKINGREP}/bin/narv stop $APPNAME -d ${WORKINGREP}/

[Install]
WantedBy=network.target
EOF

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

        chmod u+x bin/$APPNAME.py

        daemon_end_log_line 0
        echo
        echo ":: Sample configuration files has been put in
:: $WORKINGREP/etc/
:: Don't forget to review and customize them."
        echo




        echo ":: You may start your new app now by entering the following command:"
        echo
        echo "$0 start $APPNAME"
        echo
        echo ":: and go check it at http://${DOMAINNAME}:9042/"
        ;;
    start)







|







 







|


|





|
|
|











|



>
>
>
>







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
...
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
        pgrep -f $APPNAME.py > $WORKINGREP/var/$APPNAME.pid
        echo "Your Narv application seems to be always running. Try $0 stop $APPNAME"
        exit 1;
    fi

    daemon_begin_log_line "Starting $WORKINGREP/bin/$APPNAME.py"

    python3 $WORKINGREP/bin/$APPNAME.py &
    pgrep -f $APPNAME.py > $WORKINGREP/var/$APPNAME.pid
    daemon_end_log_line 0
}

function narv_stop {
    if [ ! -f "$WORKINGREP/var/$APPNAME.pid" ] ; then
        echo "Your Narv application is NOT running."
................................................................................


if __name__ == "__main__":
    app = Narv(('', 9042), MyBeautifulApp)
    app.start()
EOF

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

[Service]
Type=simple
User=nobody
PIDFile=${WORKINGREP}/var/%i.pid
ExecStart=${WORKINGREP}/bin/narv start %i -d ${WORKINGREP}/
ExecStop=${WORKINGREP}/bin/narv stop %i -d ${WORKINGREP}/

[Install]
WantedBy=network.target
EOF

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

        chmod u+x bin/$APPNAME.py

        daemon_end_log_line 0
        echo
        echo ":: Some sample configuration files has been put in
:: $WORKINGREP/etc/
:: Don't forget to review and customize them."
        echo
        echo ":: A systemd unit file has been put in
:: $WORKINGREP/var/narv@${APPNAME}.service
:: You can create a symbolic link to it in /etc/systemd/system/"
        echo
        echo ":: You may start your new app now by entering the following command:"
        echo
        echo "$0 start $APPNAME"
        echo
        echo ":: and go check it at http://${DOMAINNAME}:9042/"
        ;;
    start)