The Russian Electronic Developer Magazine | |
Русский электронный журнал разработчика | |
/****** CONFIG BEGIN ******/ /* Расположение INI*/ ini='e:\weasel\weasel.ini' /* Subject для УДАЛЕНИЯ */ sDEL="DELETE" /* Subject для ИЗМЕНЕНИЯ */ sEDIT="EDIT" /* Subject для СОЗДАНИЯ НОВОГО */ sNEW="NEW" /* email "кому" разрешает администрировать */ emailedit='edit@weasel' /* список email "от кого" разрешается администрировать */ emailFromBase='emailedit.txt' /******* CONFIG END *******/и создать файл emailedit.txt вида:
; первая строка - комментарий you@domain.comс допущенными для администрирования e-mail по одному в каждой строке. Все эти настройки желательно никому не говорить :). Setup.exe из поставки Weasel "иногда" добавляет в конец значения MailRoot перевод строки, если в строке:
Call SysMkDir(MailRoot||email)возникает ошибка, то это - оно. Я вылечил перенабором MailRoot в SETUP.EXE Weasel`а. Письма должны быть plain/text, тело письма состоит из строк:
NAME: Vasya Pupkin EMAIL: pupkin PASS: suxx COMM: My Boss - Must Dieдля удаления, достаточно одного поля "EMAIL:". Если хотите использовать кирилицу, а потом еще и читать из setup.exe - письма надо отсылать в кодировке 866. И сообственно скрипт:
/* Администрирование Weasel с помощью писем*/ call rxfuncadd 'sysloadfuncs', 'rexxutil', 'sysloadfuncs'; call sysloadfuncs PARSE ARG userargs PARSE VAR userargs FileMSG userargs PARSE VAR userargs EmailFile userargs /****** CONFIG BEGIN ******/ /* Расположение INI*/ ini='e:\weasel\weasel.ini' /* Subject для УДАЛЕНИЯ */ sDEL="DELETE" /* Subject для ИЗМЕНЕНИЯ */ sEDIT="EDIT" /* Subject для СОЗДАНИЯ НОВОГО */ sNEW="NEW" /* email "кому" разрешает администрировать */ emailedit='edit@weasel' /* список email "от кого" разрешается администрировать */ emailFromBase='emailedit.txt' /******* CONFIG END *******/ EmailFrom=LineIn(EmailFile,1,1) EmailTo=LineIn(EmailFile,,1) EmailTo=STRIP(EmailTo,,'<') EmailTo=STRIP(EmailTo,,'>') EmailFrom=STRIP(EmailFrom,,'<') EmailFrom=STRIP(EmailFrom,,'>') /* проверка email-получателя */ if EmailTo = EmailEdit then Do rc=seekemail() /* проверка, имеет ли право отправитель администрировать*/ if rc \= 0 then do subj=subject() /* определяем поле Subject */ call inifield /* определяем поля EMAIL,NAME etc */ SELECT when subj=sNEW then call newedit when subj=sDEL then call dead when subj=sEDIT then do call dead call newedit end otherwise END exit 2 /* письмо обработано - письмо уничтожить */ end End say Subj emailto Emailfrom EXIT 0 /* письмо не относится к Администрированию - пропустить */ /* Удаление */ DEAD: rc=SysIni(ini, email, 'DELETE:') return /* Новое */ NEWEDIT: rc1=SysIni( ini, email, 'RealName', Name) rc2=SysIni( ini, email, 'Password', Pass) rc3=SysIni( ini, email, 'Comments' , Comm) /* создаем каталог */ MailRoot=SysIni( ini, '$SYS', 'MailRoot') Call SysMkDir(MailRoot||email) return /* Определение email realname password comments */ INIFIELD: str=linein(FileMSG,1,1) DO WHILE LINES(FileMSG) str=STRIP(LINEIN(FileMSG,,1)) ePOS=POS('EMAIL:',str) nPOS=POS('NAME:',str) pPOS=POS('PASS:',str) cPOS=POS('COMM:',str) IF ePOS \= 0 THEN email=STRIP(SUBSTR(str,7)) IF nPOS \= 0 THEN name=STRIP(SUBSTR(str,6)) IF pPOS \= 0 THEN pass=STRIP(SUBSTR(str,6)) IF cPOS \= 0 THEN comm=STRIP(SUBSTR(str,6)) end return /* поиск Subject */ SUBJECT: str=linein(FileMSG,1,1) DO WHILE LINES(FileMSG) str=LINEIN(FileMSG,,1) IF POS('Subject:', STRIP(str)) \= 0 THEN DO PARSE VAR str scum str PARSE VAR str subj str LEAVE END end /* возврат в UPPERCASE */ return translate(Strip(subj)) /* провека на допуск администрировать */ SEEKEMAIL: str=linein(emailFromBase,1,1) DO WHILE LINES(emailFromBase) str=LINEIN(emailFromBase,,1) IF SUBSTR(str,1,1) \= ';' THEN do emailBase=str IF emailBase=emailFrom THEN return 1 /* с этого email можно администрировать */ end end return 0 /* с этого email нельзя администрировать */ /**********/
Интересные ссылки:
Сбербанк бизнес.
Комментариев к странице: 0 | Добавить комментарий
Редактор: Дмитрий Бан
Оформление: Евгений Кулешов