# 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 dm1fcHJpdmlsZWdlZCI7czo0OiJoZWxwIjtzOjM2MDc6IiA8c3R5bGU+CiAgIGxpIGNvZGUg e2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRkaW5nOiAwLjVlbSAxZW07IGJhY2tn cm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjO30KICAgaDEsIGgyLCBoMywg aDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkO30K ICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07fQogICBoMiwgaDMge21hcmdpbi10 b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9CiAgIGgyIHtmb250LXNpemU6IDJl bTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAgbGkgYSBjb2RlIHtmb250LXdlaWdo dDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2FybmluZyB7Y29sb3I6cmVkO30KIDwvc3R5 bGU+Cgo8aDE+UHJpdmlsZWdlZDwvaDE+Cgo8cD5SZXF1aXJlcyA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiA0LjAuNiBvciBoaWdoZXIuPC9wPgoKVGhpcyBwbHVnaW4gcHJvdmlk ZXMgdGhlIGZvbGxvd2luZyB0YWdzOgo8dWw+Cgk8bGk+PGEgaHJlZj0iI3J2bV9wcml2aWxl Z2VkIj4gPGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZCAvJmd0OzwvY29kZT4gPC9hPjwv bGk+Cgk8bGk+PGEgaHJlZj0iI3J2bV9pZl9wcml2aWxlZ2VkIj4gPGNvZGU+Jmx0O3R4cDpy dm1faWZfcHJpdmlsZWdlZCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0i I3J2bV9wcml2aWxlZ2VkX3VzZXIiPiA8Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkX3Vz ZXIgLyZndDs8L2NvZGU+IDwvYT48L2xpPgo8L3VsPgoKCjxoMyBpZD0icnZtX3ByaXZpbGVn ZWQiPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWQgLyZndDs8L2NvZGU+PC9oMz4KCjxw PldoZW4gYSBub24tcHJpdmlsZWdlZCB1c2VyIHZpc2l0cyBhIHBhZ2UgY29udGFpbmluZyB0 aGlzIHRhZywgYSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRUUDwvc3Bhbj4gNDAzIEZvcmJpZGRl biBlcnJvciBpcyBzaG93bi48L3A+CgpUaGUgZXJyb3IgcGFnZSBjYW4gYmUgY3VzdG9taXpl ZCBpbiB0d28gd2F5czoKPG9sPgoJPGxpPm1vZGlmeSB0aGUgPGNvZGU+ZXJyb3JfZGVmYXVs dDwvY29kZT4gdGVtcGxhdGUgcGFnZS48L2xpPgoJPGxpPmNyZWF0ZSBhIG5ldyB0ZW1wbGF0 ZSBwYWdlIGNhbGxlZCA8Y29kZT5lcnJvcl80MDM8L2NvZGU+IChyZWNvbW1lbmRlZCEpPC9s aT4KPC9vbD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5uYW1lPSZx dW90O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxiciAvPgpMaXN0IG9m IGFsbG93ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gbG9naW4gbmFtZXMuIERl ZmF1bHQgaXMgdG8gYWNjZXB0IGFueSBsb2dnZWQgaW4gdXNlci48L2xpPgoJPGxpPjxjb2Rl PmxldmVsPSZxdW90O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxiciAv PgpMaXN0IG9mIGFsbG93ZWQgUHJpdmlsZWdlIGxldmVsczxzdXAgY2xhc3M9ImZvb3Rub3Rl IiBpZD0iZm5yZXY4OTAyNjIzMDY5MTgxMmM2Y2ExNGYtMSI+PGEgaHJlZj0iI2ZuODkwMjYy MzA2OTE4MTJjNmNhMTRmLTEiPjE8L2E+PC9zdXA+LiBEZWZhdWx0IGlzIHRvIGFjY2VwdCBs b2dnZWQgaW4gdXNlcnMgcmVnYXJkbGVzcyBvZiBwcml2aWxlZ2UgbGV2ZWwuPC9saT4KPC91 bD4KCjxoND5FeGFtcGxlPC9oND4KCjxwPkFsbG93IGFjY2VzcyB0byB1c2VyICYjODIxNjty dXVkJiM4MjE3OyBhbmQgYW55b25lIHdpdGggcHJpdmlsZWdlIGxldmVscyAyLDMgYW5kIDU6 PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkIG5hbWU9JnF1b3Q7cnV1 ZCZxdW90OyBsZXZlbD0mcXVvdDsyLDMsNSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCgo8 aDMgaWQ9InJ2bV9pZl9wcml2aWxlZ2VkIj48Y29kZT4mbHQ7dHhwOnJ2bV9pZl9wcml2aWxl Z2VkIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5DYW4gYmUgdXNlZCB0byBkaXNwbGF5IGRpZmZl cmVudCBjb250ZW50IHRvIHByaXZpbGVnZWQgdXNlcnMuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8 L2g0PgoKPHVsPgoJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7Y29tbWEtc2VwYXJhdGVkIHZhbHVl cyZxdW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBsb2dpbiBuYW1lcy4gRGVmYXVsdCBpcyB0byBhY2NlcHQgYW55IGxv Z2dlZCBpbiB1c2VyLjwvbGk+Cgk8bGk+PGNvZGU+bGV2ZWw9JnF1b3Q7Y29tbWEtc2VwYXJh dGVkIHZhbHVlcyZxdW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCBQcml2aWxl Z2UgbGV2ZWxzPHN1cCBjbGFzcz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjg5MDI2MjMwNjkx ODEyYzZjYTE0Zi0xIj4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2NlcHQgbG9nZ2Vk IGluIHVzZXJzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+CjwvdWw+Cgo8 aDQ+RXhhbXBsZTwvaDQ+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2lmX3ByaXZpbGVnZWQm Z3Q7CiAgWW91IGFyZSBsb2dnZWQgaW4hCiZsdDt0eHA6ZWxzZSAvJmd0OwogIFlvdSBhcmUg Tk9UIGxvZ2dlZCBpbiEKJmx0Oy90eHA6cnZtX2lmX3ByaXZpbGVnZWQmZ3Q7PC9jb2RlPjwv cHJlPgoKCjxoMyBpZD0icnZtX3ByaXZpbGVnZWRfdXNlciI+PGNvZGU+Jmx0O3R4cDpydm1f cHJpdmlsZWdlZF91c2VyIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EaXNwbGF5IHZhcmlvdXMg cHJvcGVydGllcyBvZiB0aGUgbG9nZ2VkIGluIHVzZXIuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8 L2g0PgoKPHVsPgoJPGxpPjxjb2RlPnR5cGU9JnF1b3Q7bmFtZXxlbWFpbHxwcml2aWxlZ2V8 bGV2ZWwmcXVvdDs8L2NvZGU+IDxiciAvPgogU2VsZWN0IG9uZSBvZjogbG9naW4gbmFtZSAo bmFtZSksIGVtYWlsIGFkZHJlc3MgKGVtYWlsKSwgcHJpdmlsZWdlIChwcml2aWxlZ2UpIG9y IG51bWVyaWMgcHJpdmlsZWdlIChsZXZlbCkuIEJ5IGRlZmF1bHQgdGhlIFJlYWxOYW1lIG9m IHRoZSBsb2dnZWQgaW4gdXNlciBpcyBzaG93bi48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVz PC9oND4KCjxwPlNob3cgdGhlIHJlYWwgbmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVzZXI6PC9w PgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkX3VzZXIgLyZndDs8L2NvZGU+ PC9wcmU+Cgo8cD5TaG93IHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBsb2dnZWQgaW4gdXNl cjo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWRfdXNlciB0eXBlPSZx dW90O2VtYWlsJnF1b3Q7Jmd0OzwvY29kZT48L3ByZT4KCjxoMz5Gb290bm90ZXM8L2gzPgoK PHAgY2xhc3M9ImZvb3Rub3RlIiBpZD0iZm44OTAyNjIzMDY5MTgxMmM2Y2ExNGYtMSI+PHN1 cD4xPC9zdXA+IFByaXZpbGVnZSBsZXZlbHM6PGJyIC8+CjxvbD4KCTxsaT5QdWJsaXNoZXI8 L2xpPgoJPGxpPk1hbmFnaW5nIEVkaXRvcjwvbGk+Cgk8bGk+Q29weSBFZGl0b3I8L2xpPgoJ PGxpPlN0YWZmIFdyaXRlcjwvbGk+Cgk8bGk+RnJlZWxhbmNlcjwvbGk+Cgk8bGk+RGVzaWdu ZXI8L2xpPjxiciAvPgo8L29sPjwvcD4iO3M6NDoiY29kZSI7czoxNjk4OiIKaWYgKGNsYXNz X2V4aXN0cygnXFRleHRwYXR0ZXJuXFRhZ1xSZWdpc3RyeScpKSB7CiAgVHhwOjpnZXQoJ1xU ZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKQogICAgLT5yZWdpc3RlcigncnZtX3ByaXZpbGVn ZWQnKQogICAgLT5yZWdpc3RlcigncnZtX2lmX3ByaXZpbGVnZWQnKQogICAgLT5yZWdpc3Rl cigncnZtX3ByaXZpbGVnZWRfdXNlcicpOwp9CgoKZnVuY3Rpb24gcnZtX3ByaXZpbGVnZWQo JGF0dHMpCnsKICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgJ25hbWUnID0+ICcnLAogICAg J2xldmVsJyAgPT4gJycKICApLCAkYXR0cykpOwoKICBpZiAoIXJ2bV9pc19wcml2aWxlZ2Vk KCRuYW1lLCAkbGV2ZWwpKQogIHsKICAgIG9iX2NsZWFuKCk7CiAgICB0eHBfZGllKCdGb3Ji aWRkZW4nLCA0MDMpOwogIH0KfQoKCmZ1bmN0aW9uIHJ2bV9pZl9wcml2aWxlZ2VkKCRhdHRz LCAkdGhpbmcgPSAnJykKewogIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAnbmFtZScgPT4g JycsCiAgICAnbGV2ZWwnID0+ICcnCiAgKSwgJGF0dHMpKTsKCiAgcmV0dXJuIHBhcnNlKEV2 YWxFbHNlKCR0aGluZywgcnZtX2lzX3ByaXZpbGVnZWQoJG5hbWUsICRsZXZlbCkpKTsKfQoK CmZ1bmN0aW9uIHJ2bV9pc19wcml2aWxlZ2VkKCRuYW1lLCAkbGV2ZWwpCnsKICBzdGF0aWMg JGlsaSA9IDA7CgogIGlmICgkaWxpID09PSAwKSAkaWxpID0gaXNfbG9nZ2VkX2luKCk7Cgog IGlmICghJGlsaSkgcmV0dXJuIEZBTFNFOwoKICAkaXNuYW1lICA9ICgkbmFtZSBhbmQgaW5f YXJyYXkoJGlsaVsnbmFtZSddLCBkb19saXN0KCRuYW1lKSkpOwogICRpc2xldmVsID0gKCRs ZXZlbCBhbmQgaW5fYXJyYXkoJGlsaVsncHJpdnMnXSwgZG9fbGlzdCgkbGV2ZWwpKSk7Cgog IGlmICgkbmFtZSkKICB7CiAgICBpZiAoJGxldmVsKQogICAgewogICAgICByZXR1cm4gKCRp c25hbWUgYW5kICRpc2xldmVsKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgcmV0dXJu ICRpc25hbWU7CiAgICB9CiAgfQogIGVsc2VpZigkbGV2ZWwpCiAgewogICAgcmV0dXJuICRp c2xldmVsOwogIH0KICBlbHNlCiAgewogICAgcmV0dXJuIFRSVUU7CiAgfQp9CgoKZnVuY3Rp b24gcnZtX3ByaXZpbGVnZWRfdXNlcigkYXR0cykKewogIGV4dHJhY3QobEF0dHMoYXJyYXko CiAgICAndHlwZScgPT4gJ1JlYWxOYW1lJwogICksICRhdHRzKSk7CgogIHN0YXRpYyAkaWxp ID0gMDsKCiAgaWYgKCRpbGkgPT09IDApICRpbGkgPSBpc19sb2dnZWRfaW4oKTsKCiAgJHR5 cGVzID0gYXJyYXkoJ1JlYWxOYW1lJywgJ25hbWUnLCAnZW1haWwnLCAncHJpdmlsZWdlJywg J2xldmVsJyk7CgogIGlmICghJGlsaSBvciAhaW5fYXJyYXkoJHR5cGUsICR0eXBlcykpIHJl dHVybjsKCiAgJGxldmVscyA9IGFycmF5KCdub25lJywgJ3B1Ymxpc2hlcicsICdtYW5hZ2lu ZyBlZGl0b3InLCAnY29weSBlZGl0b3InLCAnc3RhZmYgd3JpdGVyJywgJ2ZyZWVsYW5jZXIn LCAnZGVzaWduZXInKTsKCiAgc3dpdGNoICgkdHlwZSkKICB7CiAgICBjYXNlICdwcml2aWxl Z2UnOiAkb3V0ID0gJGxldmVsc1skaWxpWydwcml2cyddXTsgYnJlYWs7CiAgICBjYXNlICds ZXZlbCcgICAgOiAkb3V0ID0gJGlsaVsncHJpdnMnXTsgYnJlYWs7CiAgICBkZWZhdWx0ICAg ICAgICAgOiAkb3V0ID0gJGlsaVskdHlwZV07CiAgfQoKICByZXR1cm4gaHRtbHNwZWNpYWxj aGFycygkb3V0KTsKfQoiO3M6MzoibWQ1IjtzOjMyOiIxYmQ3NGVmOGE5YmM1NzExOTVkNGZi YmFhNjIzMmMzYSI7fQ==