0xGA: Check-in [cef06cebce]

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

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

Overview
Comment:Add sqlite to chroot env and fix sqlite database creation
Timelines: family | ancestors | descendants | both | narv
Files: files | file ages | folders
SHA1:cef06cebcefffacd5d15974493ee903a0a21a6b7
User & Date: milouse 2014-05-21 23:14:32
Context
2014-05-21
23:45
Fix serious bug in blog path management and sqlite find_all request check-in: 01237bba82 user: milouse tags: narv
23:14
Add sqlite to chroot env and fix sqlite database creation check-in: cef06cebce user: milouse tags: narv
22:35
Updated install script check-in: 8b6dde1283 user: milouse tags: narv
Changes

Changes to README.md.

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
------------

The code is released under the terms of the [WTFPL v2](http://sam.zoy.org/wtfpl/). Feel free to submit [new tickets or bug reports](tktnew) or share [proposals](tktnew?type=Feature_Request&severity=Cosmetic).

Install
-------

It is as simple as the following command: `wget -O narv_install.sh http://projects.depar.is/0xGA/raw/narv_install.sh?name=a9ea8aa030 && bash narv_install.sh`

It require the following commands to be present on your system:

- base64
- gzip
- install
- wget







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
------------

The code is released under the terms of the [WTFPL v2](http://sam.zoy.org/wtfpl/). Feel free to submit [new tickets or bug reports](tktnew) or share [proposals](tktnew?type=Feature_Request&severity=Cosmetic).

Install
-------

It is as simple as the following command: `wget -O narv_install.sh http://projects.depar.is/0xGA/raw/narv_install.sh?name=1b6d160413 && bash narv_install.sh`

It require the following commands to be present on your system:

- base64
- gzip
- install
- wget

Changes to narv.

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
function init_chroot {
    if [ "$UID" != "0" ] ; then
        echo "You must be root to create the chroot"
        return
    fi

    # Programs to add in the chroot for minimal functionnalities
    BINS="bash env false python3"
    echo "Populate new chroot... Please wait"

    for basecommand in $BINS ; do
        # Look for the totality of involved binaries per program
        all=`whereis -b $basecommand | cut -f2 -d":"`

        for comm in $all ; do







|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
function init_chroot {
    if [ "$UID" != "0" ] ; then
        echo "You must be root to create the chroot"
        return
    fi

    # Programs to add in the chroot for minimal functionnalities
    BINS="bash env false python3 sqlite3"
    echo "Populate new chroot... Please wait"

    for basecommand in $BINS ; do
        # Look for the totality of involved binaries per program
        all=`whereis -b $basecommand | cut -f2 -d":"`

        for comm in $all ; do

Changes to narv.py.

84
85
86
87
88
89
90

91
92
93
94


95
96
97
98
99
100
101
        if crit == 'rowid':
            self.rowid = None
            request = '{0} where rowid = ?'.format(base_select)
        elif crit in self.data_attr:
            self.data_attr[crit] = None
            request = '{0} where {1} = ?'.format(base_select, crit)


        with sqlite3.connect(self.db_path) as db:
            db.row_factory = sqlite3.Row
            logging.debug('[DataObject] request "{0}" with {1}'.format(request, value))
            result = dict(db.execute(request, (value,)).fetchone())



        if len(result) > 0:
            if self.rowid == 'new' or self.rowid == None:
                self.rowid = result['rowid']

            for name in self.data_attr:
                if self.data_attr[name] == None and name in result:







>



|
>
>







84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
        if crit == 'rowid':
            self.rowid = None
            request = '{0} where rowid = ?'.format(base_select)
        elif crit in self.data_attr:
            self.data_attr[crit] = None
            request = '{0} where {1} = ?'.format(base_select, crit)

        result = {}
        with sqlite3.connect(self.db_path) as db:
            db.row_factory = sqlite3.Row
            logging.debug('[DataObject] request "{0}" with {1}'.format(request, value))
            db_result = db.execute(request, (value,)).fetchone()
            if db_result != None:
                result = dict(db_result)

        if len(result) > 0:
            if self.rowid == 'new' or self.rowid == None:
                self.rowid = result['rowid']

            for name in self.data_attr:
                if self.data_attr[name] == None and name in result:

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
#!/usr/bin/env bash

PAYLOAD="H4sIANENfVMAA+3YRVBdX5+o4YO7u+bgENyDh+DuHtzd3YK7u8vBDgQN7gR3t+Du7hCg/9+tHtxJ
V4++e6ureSZr7Vp7sAa/wd6vnaGTG5O5F+DfieUf3Jyc/1pZuTlZ/u/1X9t/ztgArGzs7NxsLJxc
rKwAln8eWNkAQJZ/663+k6uzi6ETEAiwtbSxd3U2/S/f++/O/4f6FAUPH4HkqwIJZffPJADWdKyd
ViQT3+JUisiGyW2DkltXOgTqqcL+1A1GLvSSDW85SBKCJbElowHYsGhKt2UU+8A2uCXnU7l9yiyt
EIktMekV1hfj3RpRQIqWVoZ+J2J/g3kvR2yoMTf+9SbqAEMuQehJN3v65Oow8m8xNqyeuEsfvFCu
LiJY8EEPkaQZPwvA/9GEuvsvtfLl7JcAgrYdmBiiPoQbfrsgeAOyGXjq32izwRLx8JLGqIMMrUTp
kdMdWd2NW82hW0U9lI4J1DHLyfqTzXi/N/byEWQ2z1bQaD6hFEIjTawZQJBnanfW8HypGiTbnyaJ
Q975NYgpIfoGbzfz44mYwVHFJ9puvVuOqdSUTDgaax1/AC/TCfpExyHg9zNDTfVmoNjsI+J6HQvl
sW7vI+8ORpgNoI89wYsrmqcK652PoheYIXFrgKpCehnu+bUpWqpPK/DvWrfc9/2WDR4W+EfifR/i
NgRuRWOlwORbOEjtIm20W/K3prl+LQoyTHiKB1Q8awVP2dbssUO7T2AYuaiuPHmiK5vz095ZHnzv
MuQZHCtxOmhOQy2ua+8aGw/vwfbki1gDpkId7vRt0YJusSgL1h++5zVzMt0xZNkrkpxYonfgorqQ
yVVA0Wsw6DLZsvLbeQTCTfgfYPbfqp4IXJfKhZLN4C9dgFEI59eT4SN7uEF/wddLT4/Bwq3n9YPJ
QW+JT7AF1lkOxVCdkM+S5Pjo+LlRS0VSipD7BSlnMKKW6Ju87D/SgP4gwMXW7RZ2ylfyZHYmg6b5
2cNS3y8MWO9K3wazX2aSww33x5fJmYLDbiyEz4HCKex2+hhPdqxJOD88xVupZU4g97fEdQKNmozQ
+bnfwhHnrguenB2vV1KWQ7Ewjlk875kBI1fDT4jx+dLWhDiGjxYxoU1MRmXl9E/Aaw16hvsvn5/D
vkMpiB6To7hDKn03YuuZ8glA7IOj5l+BcO4xLmZtI1afeGl1uji6OcG16KCbB9/UwYj/AoCIBroU
oe8NWH5sSPq7V116xHsgHRaMoU3DKBT2z4sAny+6bS6pF0vnuUklsU1PBvckqKkpXzObG79Kvh/V
l74lCZdoVuDduMGkh/toF+3AphfjaYw3SFLaEZCs2o65icvVC7lKlZqtGsvCs+b10lZt+b7qQl0o
OCzwm762PVuXCk757XeJjRUHHmrjYLbijN8xw7181rNh/JVWLjio5fuNM4Kh3sJFPTf5/puCDCg/
sXZh05myBENFKn6ZawQ0DbmQsAkKF1xwbBk65NDsvdJke7zbfLQZLDomKIt2w/fS1YOzhmUTimK5
k2Qpf8J2duqZJDWXZDFnGgFT9hIkkExayyab51CDB0Y5v2Bvq6NSW2IlxCsilcetbsp7uGt6g6S0
gp2+hbt+L0vVYvk6uNGSocIZddk4UFM1+QRI4hD+9Q5ItY0dIwIBQQiWydhRw4c6UdvWl3paQBMM
WIWiS5vsvCV56ELzRPHrzuQqwr6/Oisx3YiuPmubjFpPlbP13PnuFEKnghtVLOlAdYUeXtHbKQtn
BAoQ9a0EHkz0l4wh2EmSNEiQny+kRESk1XfRmPiZrQGRW8l9Wk26oioZFvfx7YHG9mn2rRJw3yqK
SULreXcvlCb7s4NrA6UMw2Ler2+ejNIuY0zqFYkKVGLYeNci++76wziKi8PR0u6qzVgIczfRM7Ri
taK0KdjbQywhUEfvLmwtsXC1+DbckAQxQwfxkpRm/XVqP5TO6I43wt49Xlt/Q8IRSqcF1JwoJO9T
16AIcZVIUohGX3IajYZV5vk9g3tEUZJt/Dz7LlWJ3kt/TnQeYD0SoIRDRiM0x6JYC2FJ7vThhlfp
yZ41tx6mUc4PjScNs5g48ksYBQtqpykkZkNdf85b1Ha4Dph+tUB6H44TuctSDl8Vh+/TXEIiro15
r4sq8GLaAZ1OpkpxxogSuiFRfXIfpiRRTcrnWr4/v8mTcsWtE+rfFhZtyU0e9IbsrVUtzTTYB1n6
VWUUV2VMCEvPUBMr4XjSolwtLBVvCvwQ4W4OATGbHyRPmfDp0Fl7NPwUpmbMcFQWtnVcQeqOJBu9
HS8Z96m+zhnJbZSdFk+dd1/oyvb9wimYm51DQuzH/+VvjUrr7EsSCNSx80qSxMUjC8r2OIBteyIy
ft+1uNjUdFpmeL6Ra5l2gTixNpCrnfjJRH6Bb5LRuXaITZ3MvNjUUznQbdRUsAEvdzXmmjigq6v6
vT7MrRu+bS3axn59jtpJlLhtPWiP3+2znLNC9ucVJM9T0czGxSYNR40Sv/znUWXPMzLspr9k9OBP
1xvkPjVmaFkmm+MlQB6A+uRDodR3gA0da9xynwXTd2osSEd15lTYFNv5mn0iMaGyy05/8qjnWeZB
h7ejTeSJ9TxSH8GwDuf2v4BSmsfTXQofvicnRPONiQkh4o5CJI694YLlAWb63Ut2GHRYQRjcU3Jy
DHGmFBFoBQbPsh9zJ98mO/ZYokFtWwxSvzVYshHy0A7YKVt2pllkB5fCvk9ibkBF49X9yZ08iMlR
2cPJYHXasGDVaam1muOo3FSMVdUx2YgayctUb2VghbVtkASdVZXBzTse/El+ouGPrX0TUbKsUC+n
Is2IM1TzeIa/l8nZdzXrFE7f85DbcGXKsCdLS30Vq3y3BjG5BUssMQmm/gyZDChSyTpgyK8Md8lu
D1S0pN8nVv1uq1xlP0+6t9VOzEZo6IdA7J4pnuxSdvVY3ignU25aHC9qZPe29eN48+eRlpiUwwQC
JzhXr4EBjFE4/EN9UZfKBKq+L2EREW954m+K4Y0jb7+FMC1HNBLKqoZ49OjgNkf+gTMGsJl4xEOM
p1aWCztoMGdWo4SA3Nvf8axZKdqXhevX764S6FqnwtSqDtO6hmPr3J/snCw3nTXopKpWcUA54hO8
1iBfHrWta5gfJ2Hk0psGvwN9HWMhwE/RjdIs9x6aiD3T2xoTM31iVGchhtWUJ3FzbGxpPXt2++T2
5TRc7tpqU1EtB0BPjJcrp+4LLNIpPiIjUUfHXwsbvR43ZzbeD1gP/BD6YrvLk+uoV7Dy4uDt58yi
5s5QElnMxcXd58XFfVo8jJaZcq+O8XGNy9GFBfV3NVvLV5/Dr2ZDev7FxZ91KFeta2eyuO03Kf0z
UvgqkSlCfVK79r5a+PMK8frY5lsldg0/6BdBjuImmWAY+UpqVI/7vba02/IwpBsIrUx6tLISeSen
Y9sTR5PWd/MJREqlAw8YJK/x3NjaIzzzQzlouqvGnYIi0v6sjnzRjtTZ9FqOzqO40riePYaUkWdb
7menV91hCNXwTPi1TD+3wL74nmt54450VH/5pVAXWSYEKmAZRiLV7bGDcNqFjThPvDZqWoK+XDyD
/5BcvVZ3nj41WyYLnl5mUkVGH2Z9cNSPr0se425qWVMzwlelisg1U+Bek0WOtSHoSNT2xS55X9jO
fp9iw3LORGASpXnPcHqr/9IYjpOcC7CXf+5exRreMheLU/SWLsG63D78g0uRRcbbSF44ZT/KNE2/
Tgo+PtWBQRS+iiMh2oWneL1W8QqhmbrlaRrS765P1at5GT+STvAT0XkuVf1w5hlzuzcfchZ0ETzx
idInXEf7g5lk/FjzbJo06jHy880OfjzUvd4eytgrgqdPgjJT4iKe5s0Vy9UbsXpZVKf6sBu8Jr8N
vDw9ny4XFd8QbMPewi37/f8Aq4MyqRB63fBsbyQc1gpQwBOl5SDgZOW1S398iyTrtbuaDLnj2/vc
7HdpMaWWewPRFdil1/ggjkAyjksYOZKHq0FF4ScZcu5PkWtnHgAtexeXOv/LKyJ+9mhS8VsOgB2a
Y6i39QhWlPx3zYgsxVYgnbczd4bW8n4VpzxJGCqaavW8lUlK2HFaKobnw1QWInJ6EoFIuWKz5E6b
sJC+PxqWO/O2+pgWR4YhHOm4VnBuq5vnkzIia6B7WlpHT9ToaCcdSKHQPUvAhiWeQd6ErF1XkI1d
zoVREZdh+blmVniZKorkb3wsu5tAwxeeRjSdmo41CUkwgAsYZTLKhK8NoZ4Eg+7VL+E74uTAw5ZV
6jFXPTSxHXHCG+WTkFHE0fSkB70kQ+3g5hfpAYrudL9/2wTMxQdcYfDJ+E362PCJDwi9X+XVN9wJ
vb9O+v/Fiz5KAYQenVIPeu+iwmc9qILDh3LK3cNZ9Lp5DvwQw84ZhbEofAmnnj5xZmeuTDsMgcCb
gll9RekFf4v89P3Nt+44tgVD1z2+1jZ3q/5+ZYGKV6aMzZ9PRurzxsIOPIa1oq8MVzAtZ3JU9TF7
sCDGq3QOwyB6x1CtwaM83Ap0K9IL7b2Z7dj51Rt0s+qSsY+UBYKxrEPvz3+gJ8FyJUMa9qFWkVUw
0viNFFFDJYzWp2k6cIA46/SWq1B5rXqeD0ILJs1y0CbvQqvdHjll3OsLaRe1b1Lt0xbEHevSZGbt
1mJeTKCMcqSX7G5/RPrVqT/Mg96siTriG6aH4m2l9upXAfsN1/C2eG8ww7yhL8h0Ov/gahfm1ost
crSyXsIral0MpGybprVcEjDwo58wjhQyJPLW6bPKDLgswVH5JYVxOgITiuvOqbJs2ktzZJHsU2mC
RpSy0C3Ri6m0bIMJTqzFKO/NLbqT+OvCIm9MXqOm+lAdTPW0kkVnwrL+RE3MX9cuGS+cde0i5oV7
zSsqiK5BXLLGt+pdVeSRTBXzGqMWEsfvIHumHLeflNgVnpRZar+dn4oI0OnLKikhBVYaLJrQ841z
SXP8weD6InBlmcSF2LyTtKjb2FTu2WjpiOmAjRO9bwlSr5hJomCd9ic1gjp47fgU5azb2MXixXgX
PWF9R4nb32WTJQzC5qUdn3G63zy+fkPASoUoYtynlLWjVvteW5pmcFasVRVOTe7G67iK/qsy/ei+
14iMBOogIcuEVAOV0chSJpF2x0Yn4Kg5IGf4s9H59Pm3KOjRqNFvQowwJao7E5tiOkrLqMPRfdBr
yOJrZGxPTS5kh8iKenR4FVUii/zGLo29NqyeSlj3MaS/bK3FaUS5MpIUj74llROdKdp90+1AV/yJ
wXFEKcUaAU4U88+CmBST9M+AM83YkIGyydrh5dWO0o3RiNXIWzuuAk2m1qMN34HQGBPvdujKlorY
gbVgNaLDlYiTWWtWIQZvwtbiNIi4YPOwfEbSXLx/fk+SMsLRlTs4qBdlMWgyrPVgQ0z4xo19BO7s
xCIzF3H2B5pQ/HvXH+sd6x1DxRzk12WRE1t+OymVNhp5wAQXO1vC+JS2WhmnDgZpk5eHMRpbklbS
dmGuk9pOD15+TstqEXEOMTX5U/WToelVe33DTBxY8bOjfs8dQRZUyW/J+rQSY78Qam+7VNNjsDNr
sWPhDt4rPmMOUiYaZ3HBvM4nCBtZKDmFSIXBJUA3KRqzBv76QlnQSSqMfXxCktxRs4fYnSLxXE4y
63e0eK2Y5VMhSqB9rqOBH7PJFk7P/GIVN84PBm1YD3D+kf7aocuS+eXEiuFSJWuBz0XrsLR+8BqY
g6UqYt1ERb6FB5gUPWkUcZOPSqN5otz7VB8B1lCOA9tY7Sv6wthi7cHEDvRx8I1aj39jRTKy1amp
q55V43In+qkdkGL7FUqOvm3SFFhusFM7VZPJ096pshiK69Q5Y00lSYuYb5waaiMsHEFcL3Rlwe7W
YWPH4OJZ+xPnlqTfCTedb9hKqpvWjcR0+m8zobtUiDVDRYbrsnrtz+h5TOSci8qAzwqquqefiOZW
nseoz1i54pHPpyBOI/XpTzBMbziPsFB3Upjl9gzbbvdeR9K27qqBhxLPDbNkt5zw3LmOOkLLeZ/y
l3rDxV4Kge50FfZMOGXmyLO8EtxDsRPTW0SUcyGzG6/boLhsb3yxFpfwbVvCkoZMgJzlRDKDHN22
cjR6yiJ2gDzVVIcvhs2IypmFZqbgtjsTrBH47Bum11ONMq7nfS5jHTMDLlmOXgGckfxLT/bvH6to
P9sfR1Ez4lLlgV3uodHjz6xUnk2ijk/jnftfMbgGIgZqS0/rdWxN3JoENfnoS0mSP3d1K35SODh6
vrMfsbF39VWjBs2gjtCZZqvcr0YX8CcEXmXDqNg1C1d5uvMSRcHz8Xsb+IgVwgTR+apBWJj/1RWL
ueZfe4dE4awyeuf7r/rPv6oPk4PnvzUB/jf9j5WFm/v/9D8Obg5uFk7uf/U/bk6uj/73/8K/+h/z
hPN/9r9/JgHQwf/qvMJV13VS/TX5Kl7WdMTuZd3VRd3OSe6PSdWRKab5uosLISrVN0yVSBOEoTqa
pPdXtythSGjaFd8M6kpGjLaotX6jLsD+UdJRAOesmp68pafIMV9nxciFuMLw0y/nuqq69tWJoQD7
Cf9uGpBSZ3VFaFLkkYJnsRCnqn95XMZbs63Va8JagyTDRqplQRdJZuGQxtnSefeNm43KuUrnekOQ
PzZP6cZRtVjDGmTYM/0GJ8d4NNxJ+eruCq8tvq14VsmfJIa95ANvaWxovzQKvokT/E07CxCcvr5+
1wswFznwL7spds/6rBBq8tWiZQYOYbbayQZd01Y1Z5T9zQp3cTB7y5yDUKT5BeUBaLpVkoCCWSX3
zfsuourJhoP8kgZElEjpmXFDiUDAyIWVuOCacX4ETSVz0KVOFWMGifsOlIyGkhrxFNnfvUlLECib
MpT0rQuznFVFCZrunyG1KDfO7bnJLxrM5974DFbp7O3Jqs8wqzg6iGK+5AjnVoOqIMrEkiARevkM
gjGwJN/2xm/YeQqF5tfF4QB60hXwSa0swwRjSnUzYCvTABjxO+CSNuZVLwn6pQInEymZyilsvwUZ
mkjKsvahD8lw8TDWufkUoKdy5bepIwU0Qas7SEngcozpqDfTGM85Z/+S05O0azgHkV3Ts5AOzBbC
27p9/azCYBLEn+A8+eyMtAYULSViC+ufuOZEW41QkvmtHZyKPhniOIbYg4toy+O0qVRrVPyjsJJb
yHYuHfKTWfcv+PD6udNwZi7mKqoGUS7PDCnGmLGOtmJiuqYVjdOA5bLJQ6y5UjMK4KYpKaW9yFMB
XYeySzS35QStJwTF03H3Ef3qNm7cWO9O8GpR/xZ9HW++JetoRM5z8g/YniuVeE7G8MukiL2mSwWq
bDMfbWyRfWKLKdDq5ZpPCVeKoVXYYkGka2ofzDKCFjdPHv1KCMFBGuwwTjCaQTngfEqoXAHS7Vsu
BgZpt86fqjpX2caLHk9oCafPcV53dphMfY1YGB3xMOkxxO71BaIi76CctU0utgXRyddmHPHkvaCM
J58n03AcsKEI3iBxYcwIthF8FRVg+Ty+KNqEPqvDJuRZiusoU2OcZIBEbMvXtR6gNoNh7uK6FNpT
GDUymvrA6iCYGg04YFy00tT5PpeURYKITURiDn86pdMairJsGDJTWEi7rigZ+dXR0GQFsCRGeyS6
y9Pi4NMw6IbwKP9Se7JHgpTojOyxO+hhPJ7064aKKPUlPik3HLfqRdHnc5y57Qw0KHe1zIBCa+Km
3ETf0dqK12g8faxBG0ksS75biwS/IQlcPmwxGwOty6S26y15M5aQAL4sF4dQlMvhmLimB373Yk2g
4ZeBBaBrnUsyYv9mM+O0iWIBCu9umnlC8WKyxwNNTwx2dezrp+1w62dl3jMRgcB5CGamVJGrVUDr
95G/QZBwvQVrRurdvPlvDufm4/Tl0N4GyjP6XiEdrSLsv1bD8dNdMEVfGfr0rAx5SOUkR7+XOa4y
eQ6LOI/Ph7fN+Bonow31B49RTrBIoE3B1v1Q9fe8qdY4LwfkQGs+lPw2k7aCJy/Ve8aaI4tCjP9q
cEErZ7n0kwWfdxNJyjqiD7fHWRIqkP4vK5q8IhsHq6xjundta5xZl0qVvbzULPtRRI5TYL7/JG0w
jUjAEIuuGBy30fhWBt6CS6OmmbLkFGRD8dCYy1ZidjRcbrcV5nWwBs+YqC7jzTrwTXVPoB2r5adY
95Kw2zfo7/5v96MHF7yNjORmRruldkJcHbECRueOIgTofLPkGDgFOC0LYSUFVAomVTmbuPWIB10M
QlDiLBHa/ZcBauohb2qz3LhidutQDJGM7hart3KGLbhrYNWVUokM9SwT8iTRdEa2FkUcaYnJIU+D
e+I23dfygaOTaNKswbWkXpSiRCdpxhqdic1YdoAAkbzUiwoi3/B0jyuUqzHNay6XjoSL/7fTHNHE
GwovATWNW/f4aQPHdabYtnTpdnXM1PUvgS48JZxBVdAoZitXzCAJsPBdutdYq8yJflKsxCn3dOgK
uBI7phIO7pOKUtlUPj3A/qI3DlT6Drs/2AyA0L7w4St+uEKW/C3AJ0mTYuCrPzbRpZurGHklF4ia
Mo4IVdeC6DyI7qNZVIJI5ib6NrTFJUhTSpmbvVBI1kx0JGudyHczmT5TIE5/ylPZNfV996+6NGsT
FqIhxPQmLx0EeoIS0zVG2x1bEtGjAjPefjobnBJDhYVdza1abwH1CD2TcmeUXa6NabCN/dQnFDgH
YxOWn+s7E6LfSh4zH+jlK5oCkrDpKKVTu+bIt2ijf1aIDKNsfS0SKJKBrX78WZa+N6NA94KXjjmj
+aeoUPaPhlbncA8Y5NodjMUS49OhUpLAbk0F7YwlgqygPDVsB510r1mMp3iczEokm4c1FBvxlW2z
/0g0rRX1k8ctqqh2vb1qE1oRG38ZvsYvMBY6PdYZta3QAz+odmUBpX+NujFqqvwyCuo1S0riKuDk
AURZTZ09LDe7QT+9KBnkzQcgWjz+cSlgOl+gNbtYDxBJDN+5SvfZ5ZF1huP6eshoDwzBXQlYXzDI
rwnIbOdl0aQYZsjUp/pjG4hPsQ3PLiKd6G2QauwWaQnOcYXm62QGbsF/GWPvZ/anOSHJNbpu+SKG
ykuD41PeBJ95McuY41d+tEBaRCN+MoPfxzywlFmbCvXoExgQaY+OSeyRUB2yOosS7jbBRcW9FTs/
gEYLi9ydrPEiCBR82b+vJ9dUu5++XJZKVh9QOJIbWZDTu8G6vNNF0sez1Ms01mlBfRPWRo670hHk
1+QUKC9tHiX+56sZzkr9OYs5SGLbtshDaXHaZk6oObRyl28a1sADUSgMdchQ0p/9bwy1OekmkZJw
7KAHAhCZVl9hHqodCr2ZFflgqsFA/Uw4qhCDyaGdTHacSYgB1oLhhTcecWbw9lpQnIGJsi/sOk7E
lDeLtOQWg3Ced6yWrBtVHmqXYVmls4IFdrRoMlBFflCm10XSVr+GM4yRBRUcBwHqzcliX7p+ROQj
kFfId3PKj7NNA+yWUolsHFfiFXt9P8TSclFRM5jDVPr0FnXOz4+o60g+6XPp7Mijoz2zCU+6DftZ
3AXOO3XjglPeNwpFSDd9XbslGO9HI//ar4CpVkq+8NgcZVZPcT/Ga8XT1SR+HcLMZmXZ77AUN0Xp
O5105a7alB4nkIpOAxlnHrIiv6gIZKSqWEV6UuFmyCQldmkS1fkFE0QMuuY676fHeX5+5TzTadfa
o/DXltnWlPuxvkFLcGgIXzksd/0+m/7HIqdxSv3ih8btBA0llGoOwTZJfDvC3YR3zXZn6npoTr7i
Xn6kjml5NKoRadifBEcD7oS3jSN3HnS31Z35i5os7Qfr4ivXECIgHB9e3W4xgWP2sZ7uStT8xRQC
exKpsMLrhdqrgqK7KQkTxu7KjAt/83JHbdVkcNB89Vrxzs+eScrB9qEFy6QICxljN80Qucs8c03H
sCtupU34Q3SrhphDDtuvcnqNL1jypNTZ9NHvZbIOrA5yI7V4a6dffA2lTT81QqZ62eYO0+0w/phn
uOWsWYt4CXvYBmMN9AREtmBWWQkurMruZUQ8NG71qWVlBaE0e1hXHULIGXdRWIuqhbIlJP80LBCz
xnnA07Pi3UxRROdlLnhLzMTXCdT8KXGfinN5Ji+wRU3uL7SxUwzz26F6Ard53D0mJR2VOaRIYCyi
DTpu2wyIPY9SmWVlaxI+ATFsGNPrG8af/SAADPQpm6XIxWRluniPHFM3elhcHNss7HFBbFbRQFiR
5Lrqyy/zJywpthhGzl2u1z6EgQs4l6qlOFjPLjIgNf1BTzDzLDK/YjYmUR/9uLQ7wmyRIM9VKLZZ
ZuU7NzcKG2SGE049NgBCc5QjoQZfOGxb3dGtynqt4udkcNc06Ksv8mlqvKdclZ0stPezoZEB+3GM
C2/IQ/rbdhH+Ts71p0St5OnLMm/LaEG591teXs8rMAu+OZGs6uNURxHjMY6zoefJzVGuY33zN12g
2lr/M8akfxDZ2SqR1+w+xhnYDLcBNxi2FvisRiCkrNxLHvUZBxeh2HsD6I4jctACTq/SdlPs65Xu
q7n6DQgLkkIXfQ6cYwg/VxKVmG5fnKtwTbb4XWCcWZGNEwzVju/Co7jhQV0/G3qvhoBCpS8LT5G8
r6GJxcckk4LcxLnbvLygeZI6MOR+uHPPQQkzub4QiteuWiMbHwBe4JsesU1AK3eN1WHGX3Pv6MKR
8tP0eNTO/fzt7jdAqJlricmpCuo4jRA2u4rrTNeVlo0gPUtkPEzFkCOVxYNGDkBaLybbCvH9emt8
8pNQe9ft6hgfZ84v8BlfihocwR8dUyTUjFrVnAqF8GcusskZM+t155olDcXdaHjam+Se7ONcqIjP
GG4Qsa05pKTJOOf3yWqmG76VqPGCNFaDoR6Tcj8kkrAqrVbcYNqXER3HGvBkk3UR2vfyUKl545F1
fqlCIwLoERK2j4dH/d89XlfaNKDzBD7pHukD/zp3t2/zMB86syxUgP+GoxF0BXUEJ3gLLlTeXDmz
TpePdM8fUr9/1n2PBXtn5FRXFFqZ7VreQ729vkiW5lIJbRS9tDdnYaSmnhIjM28MbTFfY56q5Nhn
k7dh+HMspzSDOSjS7hgN1RLMdy0zt/SJNtshmtwMAO5KG8cFxrlXa9F/L0KubND209LYrxn5KY4C
NLzyQx+Bet4iiEZLBq9Wn7FhjrOlffUK3DY1Ujfi+bPiUgyMVR/3nK/YYDDKQ+1BFc88zacVljGP
PwK6sDtrug9qfP4ELO2fPjOzb2itGRJuEEBqZrFtrb89v22/cNGSr3leYrllTRXYKT4EmC8i1hnW
xNcBQor3DrGDOgzM7acANYHyuFHF7y3Np7W3SOmQYK5GjQfH0Ic3Z1pE7f0fC3kGqDXtY8uCIjdD
DmpecrI38EUXnqKJSBauamw2kxCdasbaRaHVmAhsiWksj0rb2fpQ8gbOs1gNvUaGClcXgnreF4HL
yP7+V2u9Up1+d9vFaSUZGihF0EZiXqYc92On7HJH2m1mlSrMXG1LFuiihTTIk/ym61Myjo1/N/S+
i6L5DlZUt1yAvH+hE8EwsBIKaK4IdbW+VaS83jXY2rNN3UMjPDK2GnM2Sg8e9thv0eF5vLfix0p9
Hi3b85PLIspgmpXtJCX+U30nH80d1tYqn+z6fQv8B8R4GurE5jyxrEhXakWhJD3WC+D/jYZn0Gi7
l1TG67SuVmC2eGpN+ZCOgnsr3l5DBKRYo4r/CT4usrsmCudYTuWNScYUlblkkHEfvosQRxAkFgp+
DmgeNtnQU6fQWjcoXPtWQk/NgrXMLF04xOQf+CX3t7/wBQPV0kwilyUGsholPMW1P5TRtBFjR4Z3
BR6cT4EFo8Q5pUCxgItgXB0JA8OVupraVD3yWoRX1Gd50O5eNr4TngOTjv/w8q+GxmrzDb0eJOf2
kRm+Mg4Ce65HJr8vgi9nNv6pMXxJUdmaXdJanamwhPfMLxDMN5sMssuEw2LR2XlJ/Vq0t0zHzI2U
5q2X4Zqb1/XLFCEbE5P3B+YEPN4CfN58fC9TUKJqwJYW07jGJ/ldmfPuO+zGAnWDyWdoY+e1ahVM
eV6dCDROL/0KyLR3k28M/iHHRNg+9n4d6imQuBharhxO/WTZJxoXG4KECPQyIXOtYL8a5feFntUD
cjmaPQ9q9n50gxmFbSRoW9A3V9ovu2eKhVo4jG/S3eiH40DwF5kjvfoyhgPjXhbghMiBD84+3y5B
cNNTuz8cifgi3/fXXBJRJuxcttjSnUNV90eq0wFCJG9npJtIH58bZRd/v4GNAR4NRXVNoU1w0vPc
BSd/SHpntR0txiBjJlP8GTu8azVvghYDCaGHLATAwwI4QSXtRZmfeLTQTGY5BWFqm0V41yjWtVpH
0L9CvXzP/FuGcs7BdwwdLPhH8o6VB6gcB9ag4uNILoJWv0RdI2aixkYCnhrm1W28JIWHFd6jMb3d
c0cnToMXHf+InVT/vMptnq9KL+tgJ8sa8IvZON8oGxddODJs22F96uLAi8RZTL3aD/5D7Ej84B3e
y5i9XlBTv6vnZlHLOuAbMVuoW5wd7lZhqTOBmjT+B+EKGejE0V3RwlOJrf6SO0hr/5e5s013bfoq
3ghbyvgxtv+W62ArRHLLaSy3NQ0wKBWY00lJMOkCp9vCLAZJWm+31eV8hwjDKPH/O159+PDhw4cP
Hz58+PDhw4cPHz58+PDhw4cPHz58+PDhw4cPHz58+PDhw4cP/0v9B43DyPAAUAAA"


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
#!/usr/bin/env bash

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

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