choose server based on user pattern (patch)

Michael Redinger Michael.Redinger@uibk.ac.at
Sun, 30 Dec 2001 19:18:35 +0100 (CET)


---------------------- multipart/mixed attachment
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hi,

here's a patch that chooses the server to be used based on the username
(but still keeps a backdoor user@host if you have to choose another
server listed in servers.php).

/* begin rationale */
We have two IMAP servers for our users. Based on their user name
I can always say which server they belong to.
Combined with Apache mod_rewrite this is really handy:
the user gets to one of the IMP servers and doesn't need to care which one
to choose.  The IMP server then automatically chooses the right IMAP server.
/* end rationale */

This adds the following parameters to config/php.new:
$conf['server']['autoserver'] = true;
$conf['server']['autoserver_notfullyqualified'] = true;

$servers in servers.php needs an additional entry for each server:
'userpattern' => array('ereg1', 'ereg2')

Note that the patterns will be evaluated in the order the servers
are specified, the order the servers are listed is important.


See attached diff files and configuration examples for details.

Any chance this gets included? :)

Michael


-----BEGIN PGP SIGNATURE-----
Version: PGP 6.5.8

iQA/AwUBPC9afw/XqdllwsEdEQImkgCgrCBGWuQUnb9puJv/HfIZbeGn0RUAn0Av
VgIy5/noH2x8WKsHGr99BYkI
=Rnf5
-----END PGP SIGNATURE-----


---------------------- multipart/mixed attachment
LS0tIHJlZGlyZWN0LnBocC5vcmlnCU1vbiBEZWMgMjQgMDY6MTA6NDEgMjAw
MQ0KKysrIHJlZGlyZWN0LnBocAlTdW4gRGVjIDMwIDE5OjA2OjE2IDIwMDEN
CkBAIC0xMSw2ICsxMSw4IEBADQogDQogZGVmaW5lKCdJTVBfQkFTRScsIGRp
cm5hbWUoX19GSUxFX18pKTsNCiByZXF1aXJlX29uY2UgSU1QX0JBU0UgLiAn
L2xpYi9iYXNlLnBocCc7DQorLy8gYzEwMm1yIE5FVw0KK2lmICggJGNvbmZb
J3NlcnZlciddWydhdXRvc2VydmVyJ10gKSByZXF1aXJlX29uY2UgSU1QX0JB
U0UgLiAnL2NvbmZpZy9zZXJ2ZXJzLnBocCc7DQogDQogJGFjdGlvbiA9IEhv
cmRlOjpnZXRGb3JtRGF0YSgnYWN0aW9uJywgJycpOw0KIGlmICgkYWN0aW9u
ID09PSAnY29tcG9zZScpIHsNCkBAIC0zOSw2ICs0MSwxMTUgQEANCiAgICAg
fQ0KIH0NCiANCisvLyBjMTAybXIgTkVXDQoraWYgKCAkY29uZlsnc2VydmVy
J11bJ2F1dG9zZXJ2ZXInXSApIHsNCisJaWYgKCAhaXNzZXQoJEhUVFBfUE9T
VF9WQVJTWydpbWFwdXNlciddKSApIHsNCisJCSRyZWFzb24gPSAic2Vzc2lv
biI7DQorCQloZWFkZXIoJ0xvY2F0aW9uOiAnIC4gSG9yZGU6OmFwcGxpY2F0
aW9uVXJsKElNUDo6bG9nb3V0VXJsKCdsb2dpbi5waHAnLCAkcmVhc29uKSwg
dHJ1ZSkpOw0KKwkJZXhpdDsNCisJfQ0KKwlpZiAoIGVyZWcoICJAIiwgJEhU
VFBfUE9TVF9WQVJTWydpbWFwdXNlciddICkgKSB7DQorCQkkdG1wX3VhcyA9
IGV4cGxvZGUoIkAiLCAkSFRUUF9QT1NUX1ZBUlNbJ2ltYXB1c2VyJ10pOw0K
KwkJaWYgKCAhaXNzZXQoJHRtcF91YXNbMF0pIHx8ICEkdG1wX3Vhc1swXSAp
IHsNCisJCQkkcmVhc29uID0gImZhaWxlZCI7DQorCQkJaGVhZGVyKCdMb2Nh
dGlvbjogJyAuIEhvcmRlOjphcHBsaWNhdGlvblVybChJTVA6OmxvZ291dFVy
bCgnbG9naW4ucGhwJywgJHJlYXNvbiksIHRydWUpKTsNCisJCQlleGl0Ow0K
KwkJfQ0KKwkJJEhUVFBfUE9TVF9WQVJTWydpbWFwdXNlciddID0gJHRtcF91
YXNbMF07DQorCQlpZiAoIGNvdW50KCR0bXBfdWFzKSAhPSAyICkgew0KKwkJ
CSRyZWFzb24gPSAiZmFpbGVkIjsNCisJCQloZWFkZXIoJ0xvY2F0aW9uOiAn
IC4gSG9yZGU6OmFwcGxpY2F0aW9uVXJsKElNUDo6bG9nb3V0VXJsKCdsb2dp
bi5waHAnLCAkcmVhc29uKSwgdHJ1ZSkpOw0KKwkJCWV4aXQ7DQorCQl9DQor
CQlmb3JlYWNoICggJHNlcnZlcnMgYXMgJG5hbWUgPT4gJHZhbHVlICkgew0K
KwkJCWlmICggaXNfYXJyYXkoJHZhbHVlKSAmJiBhcnJheV9rZXlfZXhpc3Rz
KCdzZXJ2ZXInLCAkdmFsdWUpICYmIGlzc2V0KCR2YWx1ZVsnc2VydmVyJ10p
KSB7DQorCQkJCWlmICggJHZhbHVlWydzZXJ2ZXInXSA9PSAkdG1wX3Vhc1sx
XSkgew0KKwkJCQkJJEhUVFBfUE9TVF9WQVJTWydzZXJ2ZXInXSA9ICRuYW1l
Ow0KKwkJCQkJYnJlYWs7DQorCQkJCX0gZWxzZWlmICggJGNvbmZbJ3NlcnZl
ciddWydhdXRvc2VydmVyX25vdGZ1bGx5cXVhbGlmaWVkJ10gKSB7DQorCQkJ
CQkkdGVtcHNlcnYgPSBleHBsb2RlKCIuIiwgJHZhbHVlWydzZXJ2ZXInXSk7
DQorCQkJCQlpZiAoICR0ZW1wc2VydlswXSA9PSAkdG1wX3Vhc1sxXSApIHsN
CisJCQkJCQkkSFRUUF9QT1NUX1ZBUlNbJ3NlcnZlciddID0gJG5hbWU7DQor
CQkJCQkJYnJlYWs7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQor
DQorCX0gZWxzZSB7DQorCQlmb3JlYWNoICggJHNlcnZlcnMgYXMgJG5hbWUg
PT4gJHZhbHVlICkgew0KKwkJCWlmICggaXNfYXJyYXkoJHZhbHVlKSAmJiBh
cnJheV9rZXlfZXhpc3RzKCd1c2VycGF0dGVybicsICR2YWx1ZSkgJiYgaXNf
YXJyYXkoJHZhbHVlWyd1c2VycGF0dGVybiddKSkgew0KKwkJCQlmb3JlYWNo
ICggJHZhbHVlWyd1c2VycGF0dGVybiddIGFzICR1cCApIHsNCisJCQkJCWlm
IChlcmVnKCAkdXAsICRIVFRQX1BPU1RfVkFSU1snaW1hcHVzZXInXSkgKSB7
DQorCQkJCQkJJEhUVFBfUE9TVF9WQVJTWydzZXJ2ZXInXSA9ICRuYW1lOw0K
KwkJCQkJCWJyZWFrIDI7DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9
DQorCX0NCisNCisJaWYgKCAhaXNzZXQoJEhUVFBfUE9TVF9WQVJTWydzZXJ2
ZXInXSkgKSB7DQorCQkkcmVhc29uID0gImZhaWxlZCI7DQorCQloZWFkZXIo
J0xvY2F0aW9uOiAnIC4gSG9yZGU6OmFwcGxpY2F0aW9uVXJsKElNUDo6bG9n
b3V0VXJsKCdsb2dpbi5waHAnLCAkcmVhc29uKSwgdHJ1ZSkpOw0KKwkJZXhp
dDsNCisJfQ0KKw0KKwlpZiAoIGlzc2V0KCRzZXJ2ZXJzWyRIVFRQX1BPU1Rf
VkFSU1snc2VydmVyJ11dWydwb3J0J10pICYmICRzZXJ2ZXJzWyRIVFRQX1BP
U1RfVkFSU1snc2VydmVyJ11dWydwb3J0J10gKSB7DQorCQkkSFRUUF9QT1NU
X1ZBUlNbJ3BvcnQnXSA9ICRzZXJ2ZXJzWyRIVFRQX1BPU1RfVkFSU1snc2Vy
dmVyJ11dWydwb3J0J107DQorCX0gZWxzZSB7DQorCQkkcmVhc29uID0gImZh
aWxlZCI7DQorCQloZWFkZXIoJ0xvY2F0aW9uOiAnIC4gSG9yZGU6OmFwcGxp
Y2F0aW9uVXJsKElNUDo6bG9nb3V0VXJsKCdsb2dpbi5waHAnLCAkcmVhc29u
KSwgdHJ1ZSkpOw0KKwkJZXhpdDsNCisJfQ0KKw0KKwlpZiAoIGlzc2V0KCRz
ZXJ2ZXJzWyRIVFRQX1BPU1RfVkFSU1snc2VydmVyJ11dWydwcm90b2NvbCdd
KSAmJiAkc2VydmVyc1skSFRUUF9QT1NUX1ZBUlNbJ3NlcnZlciddXVsncHJv
dG9jb2wnXSApIHsNCisJCSRIVFRQX1BPU1RfVkFSU1sncHJvdG9jb2wnXSA9
ICRzZXJ2ZXJzWyRIVFRQX1BPU1RfVkFSU1snc2VydmVyJ11dWydwcm90b2Nv
bCddOw0KKwl9IGVsc2Ugew0KKwkJJHJlYXNvbiA9ICJmYWlsZWQiOw0KKwkJ
aGVhZGVyKCdMb2NhdGlvbjogJyAuIEhvcmRlOjphcHBsaWNhdGlvblVybChJ
TVA6OmxvZ291dFVybCgnbG9naW4ucGhwJywgJHJlYXNvbiksIHRydWUpKTsN
CisJCWV4aXQ7DQorCX0NCisNCisJaWYgKCBpc3NldCgkc2VydmVyc1skSFRU
UF9QT1NUX1ZBUlNbJ3NlcnZlciddXVsncmVhbG0nXSkgJiYgJHNlcnZlcnNb
JEhUVFBfUE9TVF9WQVJTWydzZXJ2ZXInXV1bJ3JlYWxtJ10gKSB7DQorICAg
ICAgICAgICAgICAgICRIVFRQX1BPU1RfVkFSU1sncmVhbG0nXSA9ICRzZXJ2
ZXJzWyRIVFRQX1BPU1RfVkFSU1snc2VydmVyJ11dWydyZWFsbSddOw0KKyAg
ICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgJHJlYXNvbiA9ICJm
YWlsZWQiOw0KKyAgICAgICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAn
IC4gSG9yZGU6OmFwcGxpY2F0aW9uVXJsKElNUDo6bG9nb3V0VXJsKCdsb2dp
bi5waHAnLCAkcmVhc29uKSwgdHJ1ZSkpOw0KKyAgICAgICAgICAgICAgICBl
eGl0Ow0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKCBpc3NldCgkc2Vy
dmVyc1skSFRUUF9QT1NUX1ZBUlNbJ3NlcnZlciddXVsnZm9sZGVycyddKSAp
IHsNCisgICAgICAgICAgICAgICAgJEhUVFBfUE9TVF9WQVJTWydmb2xkZXJz
J10gPSAkc2VydmVyc1skSFRUUF9QT1NUX1ZBUlNbJ3NlcnZlciddXVsnZm9s
ZGVycyddOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAg
JHJlYXNvbiA9ICJmYWlsZWQiOw0KKyAgICAgICAgICAgICAgICBoZWFkZXIo
J0xvY2F0aW9uOiAnIC4gSG9yZGU6OmFwcGxpY2F0aW9uVXJsKElNUDo6bG9n
b3V0VXJsKCdsb2dpbi5waHAnLCAkcmVhc29uKSwgdHJ1ZSkpOw0KKyAgICAg
ICAgICAgICAgICBleGl0Ow0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYg
KCBpc3NldCgkc2VydmVyc1skSFRUUF9QT1NUX1ZBUlNbJ3NlcnZlciddXVsn
bmFtZXNwYWNlJ10pICkgew0KKyAgICAgICAgICAgICAgICAkSFRUUF9QT1NU
X1ZBUlNbJ25hbWVzcGFjZSddID0gJHNlcnZlcnNbJEhUVFBfUE9TVF9WQVJT
WydzZXJ2ZXInXV1bJ25hbWVzcGFjZSddOw0KKyAgICAgICAgfSBlbHNlIHsN
CisgICAgICAgICAgICAgICAgJHJlYXNvbiA9ICJmYWlsZWQiOw0KKyAgICAg
ICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gSG9yZGU6OmFwcGxp
Y2F0aW9uVXJsKElNUDo6bG9nb3V0VXJsKCdsb2dpbi5waHAnLCAkcmVhc29u
KSwgdHJ1ZSkpOw0KKyAgICAgICAgICAgICAgICBleGl0Ow0KKyAgICAgICAg
fQ0KKw0KKyAgICAgICAgaWYgKCBpc3NldCgkc2VydmVyc1skSFRUUF9QT1NU
X1ZBUlNbJ3NlcnZlciddXVsnbWFpbGRvbWFpbiddKSApIHsNCisgICAgICAg
ICAgICAgICAgJEhUVFBfUE9TVF9WQVJTWydtYWlsZG9tYWluJ10gPSAkc2Vy
dmVyc1skSFRUUF9QT1NUX1ZBUlNbJ3NlcnZlciddXVsnbWFpbGRvbWFpbidd
Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgJHJlYXNv
biA9ICJmYWlsZWQiOw0KKyAgICAgICAgICAgICAgICBoZWFkZXIoJ0xvY2F0
aW9uOiAnIC4gSG9yZGU6OmFwcGxpY2F0aW9uVXJsKElNUDo6bG9nb3V0VXJs
KCdsb2dpbi5waHAnLCAkcmVhc29uKSwgdHJ1ZSkpOw0KKyAgICAgICAgICAg
ICAgICBleGl0Ow0KKyAgICAgICAgfQ0KKw0KKw0KK30NCisNCisNCisNCisN
CisNCiAvKiBDcmVhdGUgYSBuZXcgc2Vzc2lvbiBpZiB3ZSdyZSBnaXZlbiB0
aGUgcHJvcGVyIHBhcmFtZXRlcnMuICovDQogaWYgKGlzc2V0KCRIVFRQX1BP
U1RfVkFSU1snaW1hcHVzZXInXSkgJiYgaXNzZXQoJEhUVFBfUE9TVF9WQVJT
WydwYXNzJ10pKSB7DQogICAgIGlmICghaXNzZXQoJEhUVFBfUE9TVF9WQVJT
WydtYWlsYm94J10pKSB7DQo=
---------------------- multipart/mixed attachment
LS0tIGxvZ2luLnBocC5vcmlnCVN1biBEZWMgMjMgMDA6NTU6MzQgMjAwMQ0K
KysrIGxvZ2luLnBocAlTdW4gRGVjIDMwIDE3OjU2OjQ1IDIwMDENCkBAIC0x
NzYsNyArMTc2LDcgQEANCiAkcmVhbG1fdmFsdWUgPSAkc2VydmVyc1skc2Vy
dmVyX2tleV1bJ3JlYWxtJ107DQogDQogLyogQnVpbGQgdGhlIDxzZWxlY3Q+
IHdpZGdldCBmb3IgdGhlIHNlcnZlcnMgbGlzdC4gKi8NCi1pZiAoJGNvbmZb
J3NlcnZlciddWydzZXJ2ZXJfbGlzdCddICYmICEkY29uZlsnc2VydmVyJ11b
J3NlcnZlcl9saXN0X2hpZGRlbiddKSB7DQoraWYgKCRjb25mWydzZXJ2ZXIn
XVsnc2VydmVyX2xpc3QnXSAmJiAhJGNvbmZbJ3NlcnZlciddWydzZXJ2ZXJf
bGlzdF9oaWRkZW4nXSAmJiAhJGNvbmZbJ3NlcnZlciddWydhdXRvc2VydmVy
J10pIHsNCiAgICAgJHNlcnZlcnNfbGlzdCA9ICcnOw0KIA0KICAgICBmb3Jl
YWNoICgkc2VydmVycyBhcyAka2V5ID0+ICRjdXJTZXJ2ZXIpIHsNCg==
---------------------- multipart/mixed attachment
LS0tIHRlbXBsYXRlcy9sb2dpbi9sb2dpbi5pbmMub3JpZwlNb24gRGVjICAz
IDE5OjEwOjExIDIwMDENCisrKyB0ZW1wbGF0ZXMvbG9naW4vbG9naW4uaW5j
CVN1biBEZWMgMzAgMTg6MDI6MTkgMjAwMQ0KQEAgLTksNyArOSw3IEBADQog
DQogZnVuY3Rpb24gc3VibWl0X2xvZ2luKCkNCiB7DQotICAgIDw/cGhwIGlm
ICgkY29uZlsnc2VydmVyJ11bJ3NlcnZlcl9saXN0J10gJiYgISRjb25mWydz
ZXJ2ZXInXVsnc2VydmVyX2xpc3RfaGlkZGVuJ10pOiA/Pg0KKyAgICA8P3Bo
cCBpZiAoJGNvbmZbJ3NlcnZlciddWydzZXJ2ZXJfbGlzdCddICYmICEkY29u
Zlsnc2VydmVyJ11bJ3NlcnZlcl9saXN0X2hpZGRlbiddICYmICEkY29uZlsn
c2VydmVyJ11bJ2F1dG9zZXJ2ZXInXSk6ID8+DQogICAgIGlmIChkb2N1bWVu
dC5pbXBsb2dpbi5zZXJ2ZXJbZG9jdW1lbnQuaW1wbG9naW4uc2VydmVyLnNl
bGVjdGVkSW5kZXhdLnZhbHVlLnN1YnN0cigwLCAxKSA9PSAiXyIpIHsNCiAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgfQ0KQEAgLTgyLDcgKzgyLDcg
QEANCiAgICAgPHRkIGFsaWduPSJsZWZ0Ij48aW5wdXQgdHlwZT0icGFzc3dv
cmQiIHRhYmluZGV4PSIyIiBuYW1lPSJwYXNzIiAvPjwvdGQ+DQogPC90cj4N
CiANCi08P3BocCBpZiAoJGNvbmZbJ3NlcnZlciddWydzZXJ2ZXJfbGlzdCdd
KTogPz4NCis8P3BocCBpZiAoJGNvbmZbJ3NlcnZlciddWydzZXJ2ZXJfbGlz
dCddICYmICEkY29uZlsnc2VydmVyJ11bJ2F1dG9zZXJ2ZXInXSk6ID8+DQog
PD9waHAgaWYgKCRjb25mWydzZXJ2ZXInXVsnc2VydmVyX2xpc3RfaGlkZGVu
J10pOiA/Pg0KIDx0cj4NCiAgICAgPHRkPjxpbnB1dCB0eXBlPSJoaWRkZW4i
IG5hbWU9InNlcnZlciIgdmFsdWU9Ijw/PSAkc2VydmVyX2tleSA/PiIgLz48
L3RkPg0KQEAgLTEzNCw3ICsxMzQsNyBAQA0KIDwvdHI+DQogPD9waHAgZW5k
aWY7ID8+DQogDQotPD9waHAgaWYgKCEkcHJlZnMtPmlzTG9ja2VkKCdmb2xk
ZXJzJykgJiYgISRjb25mWydzZXJ2ZXInXVsnc2VydmVyX2xpc3QnXSk6ID8+
DQorPD9waHAgaWYgKCEkcHJlZnMtPmlzTG9ja2VkKCdmb2xkZXJzJykgJiYg
ISRjb25mWydzZXJ2ZXInXVsnc2VydmVyX2xpc3QnXSAmJiEkY29uZlsnc2Vy
dmVyJ11bJ2F1dG9zZXJ2ZXInXSk6ID8+DQogPHRyPg0KICAgICA8dGQgYWxp
Z249InJpZ2h0IiBjbGFzcz0ibGlnaHQiPjxiPjw/PSBfKCJGb2xkZXIgUHJl
Zml4IikgPz48L2I+PC90ZD4NCiAgICAgPHRkIGFsaWduPSJsZWZ0Ij48aW5w
dXQgdHlwZT0idGV4dCIgdGFiaW5kZXg9IjMiIG5hbWU9ImZvbGRlcnMiIHZh
bHVlPSI8Pz0gSG9yZGU6OmdldEZvcm1EYXRhKCdmb2xkZXJzJywgJGZvbGRl
cnNfdmFsdWUpID8+IiAvPjwvdGQ+DQpAQCAtMTY0LDcgKzE2NCw3IEBADQog
PHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4NCiA8IS0tDQogDQotPD9waHAgaWYgKCRjb25mWydzZXJ2ZXIn
XVsnY2hhbmdlX3BvcnQnXSAmJiAhJGNvbmZbJ3NlcnZlciddWydzZXJ2ZXJf
bGlzdCddKTogPz4NCis8P3BocCBpZiAoJGNvbmZbJ3NlcnZlciddWydjaGFu
Z2VfcG9ydCddICYmICEkY29uZlsnc2VydmVyJ11bJ3NlcnZlcl9saXN0J10g
JiYgISRjb25mWydzZXJ2ZXInXVsnYXV0b3NlcnZlciddKTogPz4NCiBmdW5j
dGlvbiB1cGRhdGVQb3J0KCkNCiB7DQogICAgIGlmIChkb2N1bWVudC5pbXBs
b2dpbi5wcm90b2NvbC5vcHRpb25zW2RvY3VtZW50LmltcGxvZ2luLnByb3Rv
Y29sLnNlbGVjdGVkSW5kZXhdLnZhbHVlID09ICdpbWFwJykgew0K
---------------------- multipart/mixed attachment
LS0tIGxpYi9JTVAucGhwLm9yaWcJU3VuIE5vdiAxOCAxNzoxNzoyNCAyMDAx
DQorKysgbGliL0lNUC5waHAJU3VuIERlYyAzMCAxODoxNjoxNiAyMDAxDQpA
QCAtMTI4LDEzICsxMjgsMTMgQEANCiAgICAgICAgIA0KICAgICAgICAgLyog
V2UgbWlnaHQgbmVlZCB0byBvdmVycmlkZSBzb21lIG9mIHRoZSBkZWZhdWx0
cyB3aXRoDQogICAgICAgICAgICBlbnZpcm9ubWVudGFsIHNldHRpbmdzLiAq
Lw0KLSAgICAgICAgaWYgKCRjb25mWydzZXJ2ZXInXVsnc2VydmVyX2xpc3Qn
XSkgew0KKyAgICAgICAgaWYgKCRjb25mWydzZXJ2ZXInXVsnc2VydmVyX2xp
c3QnXSB8fCAkY29uZlsnc2VydmVyJ11bJ2F1dG9zZXJ2ZXInXSkgew0KICAg
ICAgICAgICAgIGluY2x1ZGVfb25jZSBJTVBfQkFTRSAuICcvY29uZmlnL3Nl
cnZlcnMucGhwJzsNCiAgICAgICAgIH0NCiANCiAgICAgICAgIGlmIChBdXRo
OjpnZXRBdXRoKCkpIHsNCiAgICAgICAgICAgICAkaW1wWyd1bmlxdXNlcidd
ID0gQXV0aDo6Z2V0QXV0aCgpOw0KLSAgICAgICAgfSBlbHNlaWYgKCRjb25m
WydzZXJ2ZXInXVsnc2VydmVyX2xpc3QnXSAmJiAhZW1wdHkoJHNlcnZlcnNb
JEhUVFBfUE9TVF9WQVJTWydzZXJ2ZXInXV1bJ3JlYWxtJ10pKSB7DQorICAg
ICAgICB9IGVsc2VpZiAoKCRjb25mWydzZXJ2ZXInXVsnc2VydmVyX2xpc3Qn
XSB8fCAkY29uZlsnc2VydmVyJ11bJ2F1dG9zZXJ2ZXInXSkgJiYgIWVtcHR5
KCRzZXJ2ZXJzWyRIVFRQX1BPU1RfVkFSU1snc2VydmVyJ11dWydyZWFsbSdd
KSkgew0KICAgICAgICAgICAgICRpbXBbJ3VuaXF1c2VyJ10gPSAkaW1wWyd1
c2VyJ10gLiAnQCcgLiAkc2VydmVyc1skSFRUUF9QT1NUX1ZBUlNbJ3NlcnZl
ciddXVsncmVhbG0nXTsNCiAgICAgICAgIH0gZWxzZWlmICghZW1wdHkoJEhU
VFBfUE9TVF9WQVJTWydyZWFsbSddKSkgew0KICAgICAgICAgICAgICRpbXBb
J3VuaXF1c2VyJ10gPSAkaW1wWyd1c2VyJ10gLiAnQCcgLiAkSFRUUF9QT1NU
X1ZBUlNbJ3JlYWxtJ107DQpAQCAtMTQyLDcgKzE0Miw3IEBADQogICAgICAg
ICAgICAgJGltcFsndW5pcXVzZXInXSA9ICRpbXBbJ3VzZXInXTsNCiAgICAg
ICAgIH0NCiANCi0gICAgICAgIGlmICgkY29uZlsnc2VydmVyJ11bJ3NlcnZl
cl9saXN0J10NCisgICAgICAgIGlmICgoJGNvbmZbJ3NlcnZlciddWydzZXJ2
ZXJfbGlzdCddIHx8ICRjb25mWydzZXJ2ZXInXVsnYXV0b3NlcnZlciddKQ0K
ICAgICAgICAgICAgICYmIGlzc2V0KCRzZXJ2ZXJzWyRIVFRQX1BPU1RfVkFS
U1snc2VydmVyJ11dKQ0KICAgICAgICAgICAgICYmIGlzX2FycmF5KCRzZXJ2
ZXJzWyRIVFRQX1BPU1RfVkFSU1snc2VydmVyJ11dKSkgew0KICAgICAgICAg
ICAgICRzdnIgPSAmJEhUVFBfUE9TVF9WQVJTWydzZXJ2ZXInXTsNCkBAIC0x
NzQsNyArMTc0LDcgQEANCiAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
Z2xvYmFsICRwcmVmczsNCiAgICAgICAgICAgICANCi0gICAgICAgICAgICBp
ZiAoJGNvbmZbJ3NlcnZlciddWydzZXJ2ZXJfbGlzdCddDQorICAgICAgICAg
ICAgaWYgKCgkY29uZlsnc2VydmVyJ11bJ3NlcnZlcl9saXN0J10gfHwgJGNv
bmZbJ3NlcnZlciddWydhdXRvc2VydmVyJ10pDQogICAgICAgICAgICAgICAg
ICYmIGlzc2V0KCRzZXJ2ZXJzWyRIVFRQX1BPU1RfVkFSU1snc2VydmVyJ11d
KQ0KICAgICAgICAgICAgICAgICAmJiBpc19hcnJheSgkc2VydmVyc1skSFRU
UF9QT1NUX1ZBUlNbJ3NlcnZlciddXSkpIHsNCiAgICAgICAgICAgICAgICAg
JHN2ciA9ICYkSFRUUF9QT1NUX1ZBUlNbJ3NlcnZlciddOw0K
---------------------- multipart/mixed attachment
Ly8gSWYgeW91IHNldCBhdXRvc2VydmVyIHRvIHRydWUgYW5kIGFkZCAndXNl
cnBhdHRlcm4nIHZhbHVlcyB0byB5b3VyDQovLyBzZXJ2ZXJzIGluIHNlcnZl
cnMucGhwLCB0aGUgYXBwcm9wcmlhdGUgc2VydmVyIHdpbGwgYmUgY2hvb3Nl
bg0KLy8gYmFzZWQgb24gdGhlIHVzZXJuYW1lDQokY29uZlsnc2VydmVyJ11b
J2F1dG9zZXJ2ZXInXSA9IHRydWU7DQoNCi8vIHdoZW4gdXNpbmcgYXV0b3Nl
cnZlciwgdXNlcnMgY2FuIHN0aWxsIGNob29zZSBhbm90aGVyIHNlcnZlcg0K
Ly8gd2hlbiBlbnRlcmluZyB1c2VyQHNlcnZlciAoaG93ZXZlciwgdGhlIHNl
cnZlciBtdXN0IGJlIGluY2x1ZGVkDQovLyBpbiBzZXJ2ZXJzLnBocCkuDQov
LyBJZiB5b3UgZW5hYmxlIGF1dG9zZXJ2ZXJfbm90ZnVsbHlxdWFsaWZpZWQs
IHVzZXJzIGNhbiBlbnRlciBib3RoIHRoZQ0KLy8gc2hvcnQgc2VydmVyIG5h
bWUgYW5kIHRoZSBmdWxseSBxdWFsaWZpZWQgaG9zdCBuYW1lLg0KLy8gZWcu
IGlmIHlvdSBoYXZlIGFuIHNlcnZlcnMgZW50cnkgc2VydmVyLm15LmRvbWFp
biwgdGhlIHVzZXJzIGNhbiBlbnRlcg0KLy8gYm90aCB1c2VyQHNlcnZlciBh
bmQgdXNlckBzZXJ2ZXIubXkuZG9tYWluIHRvIGxvZ2luIHRvIHRoYXQgaG9z
dC4NCiRjb25mWydzZXJ2ZXInXVsnYXV0b3NlcnZlcl9ub3RmdWxseXF1YWxp
ZmllZCddID0gdHJ1ZTsNCg0K
---------------------- multipart/mixed attachment--