# rvm_privileged v0.5 # Use TXP admin user privileges on public side # # License: GNU GPLv2 or later # # Ruud van Melick # http://vanmelick.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMC41IjtzOjY6ImF1dGhvciI7czoxNToiUnV1ZCB2 YW4gTWVsaWNrIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIxOiJodHRwOi8vdmFubWVsaWNrLmNv bS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjQ0OiJVc2UgVFhQIGFkbWluIHVzZXIgcHJpdmls ZWdlcyBvbiBwdWJsaWMgc2lkZSI7czo0OiJ0eXBlIjtpOjA7czo0OiJuYW1lIjtzOjE0OiJy dm1fcHJpdmlsZWdlZCI7czo0OiJoZWxwIjtzOjM2NTM6IiA8c3R5bGU+CiAgIGxpIGNvZGUg e2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRkaW5nOiAwLjVlbSAxZW07IGJhY2tn cm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjO30KICAgaDEsIGgyLCBoMywg aDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkO30K ICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07fQogICBoMiwgaDMge21hcmdpbi10 b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9CiAgIGgyIHtmb250LXNpemU6IDJl bTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAgbGkgYSBjb2RlIHtmb250LXdlaWdo dDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2FybmluZyB7Y29sb3I6cmVkO30KIDwvc3R5 bGU+Cgo8aDE+UHJpdmlsZWdlZDwvaDE+Cgo8cD5SZXF1aXJlcyA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiA0LjAuNiBvciBoaWdoZXIuPC9wPgoKPHA+VGhpcyBwbHVnaW4gcHJv dmlkZXMgdGhlIGZvbGxvd2luZyB0YWdzOjxiciAvPgo8dWw+Cgk8bGk+PGEgaHJlZj0iI3J2 bV9wcml2aWxlZ2VkIj4gPGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZCAvJmd0OzwvY29k ZT4gPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3J2bV9pZl9wcml2aWxlZ2VkIj4gPGNvZGU+ Jmx0O3R4cDpydm1faWZfcHJpdmlsZWdlZCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+Cgk8bGk+ PGEgaHJlZj0iI3J2bV9wcml2aWxlZ2VkX3VzZXIiPiA8Y29kZT4mbHQ7dHhwOnJ2bV9wcml2 aWxlZ2VkX3VzZXIgLyZndDs8L2NvZGU+IDwvYT48L2xpPjxiciAvPgo8L3VsPjwvcD4KCgo8 aDMgaWQ9InJ2bV9wcml2aWxlZ2VkIj48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkIC8m Z3Q7PC9jb2RlPjwvaDM+Cgo8cD5XaGVuIGEgbm9uLXByaXZpbGVnZWQgdXNlciB2aXNpdHMg YSBwYWdlIGNvbnRhaW5pbmcgdGhpcyB0YWcsIGEgPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8 L3NwYW4+IDQwMyBGb3JiaWRkZW4gZXJyb3IgaXMgc2hvd24uPC9wPgoKPHA+VGhlIGVycm9y IHBhZ2UgY2FuIGJlIGN1c3RvbWl6ZWQgaW4gdHdvIHdheXM6PGJyIC8+CjxvbD4KCTxsaT5t b2RpZnkgdGhlIDxjb2RlPmVycm9yX2RlZmF1bHQ8L2NvZGU+IHRlbXBsYXRlIHBhZ2UuPC9s aT4KCTxsaT5jcmVhdGUgYSBuZXcgdGVtcGxhdGUgcGFnZSBjYWxsZWQgPGNvZGU+ZXJyb3Jf NDAzPC9jb2RlPiAocmVjb21tZW5kZWQhKTwvbGk+PGJyIC8+Cjwvb2w+PC9wPgoKPGg0PkF0 dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7Y29tbWEtc2VwYXJh dGVkIHZhbHVlcyZxdW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBsb2dpbiBuYW1lcy4gRGVmYXVsdCBpcyB0byBhY2Nl cHQgYW55IGxvZ2dlZCBpbiB1c2VyLjwvbGk+Cgk8bGk+PGNvZGU+bGV2ZWw9JnF1b3Q7Y29t bWEtc2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dl ZCBQcml2aWxlZ2UgbGV2ZWxzPHN1cCBjbGFzcz0iZm9vdG5vdGUiIGlkPSJmbnJldjE3MDg4 ODk0OTY2NDdjNjMyYTU0Y2NhLTEiPjxhIGhyZWY9IiNmbjE3MDg4ODk0OTY2NDdjNjMyYTU0 Y2NhLTEiPjE8L2E+PC9zdXA+LiBEZWZhdWx0IGlzIHRvIGFjY2VwdCBsb2dnZWQgaW4gdXNl cnMgcmVnYXJkbGVzcyBvZiBwcml2aWxlZ2UgbGV2ZWwuPC9saT4KPC91bD4KCjxoND5FeGFt cGxlPC9oND4KCjxwPkFsbG93IGFjY2VzcyB0byB1c2VyICYjODIxNjtydXVkJiM4MjE3OyBh bmQgYW55b25lIHdpdGggcHJpdmlsZWdlIGxldmVscyAyLDMgYW5kIDU6PC9wPgoKPHByZT48 Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkIG5hbWU9JnF1b3Q7cnV1ZCZxdW90OyBsZXZl bD0mcXVvdDsyLDMsNSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCgo8aDMgaWQ9InJ2bV9p Zl9wcml2aWxlZ2VkIj48Y29kZT4mbHQ7dHhwOnJ2bV9pZl9wcml2aWxlZ2VkIC8mZ3Q7PC9j b2RlPjwvaDM+Cgo8cD5DYW4gYmUgdXNlZCB0byBkaXNwbGF5IGRpZmZlcmVudCBjb250ZW50 IHRvIHByaXZpbGVnZWQgdXNlcnMuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJ PGxpPjxjb2RlPm5hbWU9JnF1b3Q7Y29tbWEtc2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29k ZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBsb2dpbiBuYW1lcy4gRGVmYXVsdCBpcyB0byBhY2NlcHQgYW55IGxvZ2dlZCBpbiB1c2Vy LjwvbGk+Cgk8bGk+PGNvZGU+bGV2ZWw9JnF1b3Q7Y29tbWEtc2VwYXJhdGVkIHZhbHVlcyZx dW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCBQcml2aWxlZ2UgbGV2ZWxzPHN1 cCBjbGFzcz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjE3MDg4ODk0OTY2NDdjNjMyYTU0Y2Nh LTEiPjE8L2E+PC9zdXA+LiBEZWZhdWx0IGlzIHRvIGFjY2VwdCBsb2dnZWQgaW4gdXNlcnMg cmVnYXJkbGVzcyBvZiBwcml2aWxlZ2UgbGV2ZWwuPC9saT4KPC91bD4KCjxoND5FeGFtcGxl PC9oND4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpydm1faWZfcHJpdmlsZWdlZCZndDsKICBZb3Ug YXJlIGxvZ2dlZCBpbiEKJmx0O3R4cDplbHNlIC8mZ3Q7CiAgWW91IGFyZSBOT1QgbG9nZ2Vk IGluIQombHQ7L3R4cDpydm1faWZfcHJpdmlsZWdlZCZndDs8L2NvZGU+PC9wcmU+CgoKPGgz IGlkPSJydm1fcHJpdmlsZWdlZF91c2VyIj48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2Vk X3VzZXIgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRpc3BsYXkgdmFyaW91cyBwcm9wZXJ0aWVz IG9mIHRoZSBsb2dnZWQgaW4gdXNlci48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+ Cgk8bGk+PGNvZGU+dHlwZT0mcXVvdDtuYW1lfGVtYWlsfHByaXZpbGVnZXxsZXZlbCZxdW90 OzwvY29kZT4gPGJyIC8+CiBTZWxlY3Qgb25lIG9mOiBsb2dpbiBuYW1lIChuYW1lKSwgZW1h aWwgYWRkcmVzcyAoZW1haWwpLCBwcml2aWxlZ2UgKHByaXZpbGVnZSkgb3IgbnVtZXJpYyBw cml2aWxlZ2UgKGxldmVsKS4gQnkgZGVmYXVsdCB0aGUgUmVhbE5hbWUgb2YgdGhlIGxvZ2dl ZCBpbiB1c2VyIGlzIHNob3duLjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHA+ U2hvdyB0aGUgcmVhbCBuYW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjo8L3A+Cgo8cHJlPjxj b2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWRfdXNlciAvJmd0OzwvY29kZT48L3ByZT4KCjxw PlNob3cgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyOjwvcD4KCjxw cmU+PGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZF91c2VyIHR5cGU9JnF1b3Q7ZW1haWwm cXVvdDsmZ3Q7PC9jb2RlPjwvcHJlPgoKPGgzPkZvb3Rub3RlczwvaDM+Cgo8cCBjbGFzcz0i Zm9vdG5vdGUiIGlkPSJmbjE3MDg4ODk0OTY2NDdjNjMyYTU0Y2NhLTEiPjxzdXA+MTwvc3Vw PiBQcml2aWxlZ2UgbGV2ZWxzOjxiciAvPgo8b2w+Cgk8bGk+UHVibGlzaGVyPC9saT4KCTxs aT5NYW5hZ2luZyBFZGl0b3I8L2xpPgoJPGxpPkNvcHkgRWRpdG9yPC9saT4KCTxsaT5TdGFm ZiBXcml0ZXI8L2xpPgoJPGxpPkZyZWVsYW5jZXI8L2xpPgoJPGxpPkRlc2lnbmVyPC9saT48 YnIgLz4KPC9vbD48L3A+IjtzOjQ6ImNvZGUiO3M6MTY5ODoiCmlmIChjbGFzc19leGlzdHMo J1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKSkgewogIFR4cDo6Z2V0KCdcVGV4dHBhdHRl cm5cVGFnXFJlZ2lzdHJ5JykKICAgIC0+cmVnaXN0ZXIoJ3J2bV9wcml2aWxlZ2VkJykKICAg IC0+cmVnaXN0ZXIoJ3J2bV9pZl9wcml2aWxlZ2VkJykKICAgIC0+cmVnaXN0ZXIoJ3J2bV9w cml2aWxlZ2VkX3VzZXInKTsKfQoKCmZ1bmN0aW9uIHJ2bV9wcml2aWxlZ2VkKCRhdHRzKQp7 CiAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICduYW1lJyA9PiAnJywKICAgICdsZXZlbCcg ID0+ICcnCiAgKSwgJGF0dHMpKTsKCiAgaWYgKCFydm1faXNfcHJpdmlsZWdlZCgkbmFtZSwg JGxldmVsKSkKICB7CiAgICBvYl9jbGVhbigpOwogICAgdHhwX2RpZSgnRm9yYmlkZGVuJywg NDAzKTsKICB9Cn0KCgpmdW5jdGlvbiBydm1faWZfcHJpdmlsZWdlZCgkYXR0cywgJHRoaW5n ID0gJycpCnsKICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgJ25hbWUnID0+ICcnLAogICAg J2xldmVsJyA9PiAnJwogICksICRhdHRzKSk7CgogIHJldHVybiBwYXJzZShFdmFsRWxzZSgk dGhpbmcsIHJ2bV9pc19wcml2aWxlZ2VkKCRuYW1lLCAkbGV2ZWwpKSk7Cn0KCgpmdW5jdGlv biBydm1faXNfcHJpdmlsZWdlZCgkbmFtZSwgJGxldmVsKQp7CiAgc3RhdGljICRpbGkgPSAw OwoKICBpZiAoJGlsaSA9PT0gMCkgJGlsaSA9IGlzX2xvZ2dlZF9pbigpOwoKICBpZiAoISRp bGkpIHJldHVybiBGQUxTRTsKCiAgJGlzbmFtZSAgPSAoJG5hbWUgYW5kIGluX2FycmF5KCRp bGlbJ25hbWUnXSwgZG9fbGlzdCgkbmFtZSkpKTsKICAkaXNsZXZlbCA9ICgkbGV2ZWwgYW5k IGluX2FycmF5KCRpbGlbJ3ByaXZzJ10sIGRvX2xpc3QoJGxldmVsKSkpOwoKICBpZiAoJG5h bWUpCiAgewogICAgaWYgKCRsZXZlbCkKICAgIHsKICAgICAgcmV0dXJuICgkaXNuYW1lIGFu ZCAkaXNsZXZlbCk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIHJldHVybiAkaXNuYW1l OwogICAgfQogIH0KICBlbHNlaWYoJGxldmVsKQogIHsKICAgIHJldHVybiAkaXNsZXZlbDsK ICB9CiAgZWxzZQogIHsKICAgIHJldHVybiBUUlVFOwogIH0KfQoKCmZ1bmN0aW9uIHJ2bV9w cml2aWxlZ2VkX3VzZXIoJGF0dHMpCnsKICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgJ3R5 cGUnID0+ICdSZWFsTmFtZScKICApLCAkYXR0cykpOwoKICBzdGF0aWMgJGlsaSA9IDA7Cgog IGlmICgkaWxpID09PSAwKSAkaWxpID0gaXNfbG9nZ2VkX2luKCk7CgogICR0eXBlcyA9IGFy cmF5KCdSZWFsTmFtZScsICduYW1lJywgJ2VtYWlsJywgJ3ByaXZpbGVnZScsICdsZXZlbCcp OwoKICBpZiAoISRpbGkgb3IgIWluX2FycmF5KCR0eXBlLCAkdHlwZXMpKSByZXR1cm47Cgog ICRsZXZlbHMgPSBhcnJheSgnbm9uZScsICdwdWJsaXNoZXInLCAnbWFuYWdpbmcgZWRpdG9y JywgJ2NvcHkgZWRpdG9yJywgJ3N0YWZmIHdyaXRlcicsICdmcmVlbGFuY2VyJywgJ2Rlc2ln bmVyJyk7CgogIHN3aXRjaCAoJHR5cGUpCiAgewogICAgY2FzZSAncHJpdmlsZWdlJzogJG91 dCA9ICRsZXZlbHNbJGlsaVsncHJpdnMnXV07IGJyZWFrOwogICAgY2FzZSAnbGV2ZWwnICAg IDogJG91dCA9ICRpbGlbJ3ByaXZzJ107IGJyZWFrOwogICAgZGVmYXVsdCAgICAgICAgIDog JG91dCA9ICRpbGlbJHR5cGVdOwogIH0KCiAgcmV0dXJuIGh0bWxzcGVjaWFsY2hhcnMoJG91 dCk7Cn0KIjtzOjM6Im1kNSI7czozMjoiMWJkNzRlZjhhOWJjNTcxMTk1ZDRmYmJhYTYyMzJj M2EiO30=