Получить e-mail адрес из SOA-записи DNS

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.

Ответить


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Смайлики
:smile: :( ;-) :roll: :pardon: 8) :x :oops: :shock: :cz2: :-D :ROFL: :Yahoo!: :cry: :Search: :Bravo: :good: :bad: :sorry: :no: :unknown: :evil: :crazy: :"": :fool: :-o :drinks: :st: :bn:
Ещё смайлики…

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ОТКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Развернуть Обзор темы: Получить e-mail адрес из SOA-записи DNS

Получить e-mail адрес из SOA-записи DNS

Сообщение xM » 2017-06-02 12:56:46

zg писал(а):Источник цитаты #!/usr/bin/env php

И этот скрипач тоже не нужен. А так-то вариантов вагон. Возможно даже, что где-то есть даже какой-нибудь Perl или Python модуль для этого.
Но я привык не умножать сущности без нужды.

Получить e-mail адрес из SOA-записи DNS

Сообщение zg » 2017-06-02 12:34:05

Эстетика это, конечно, да :smile: можно и так сделать

soaemail.php

Код: Выделить всё

#!/usr/bin/env php
<?php 

interface Filter 
{
    function filter($data);
}

class CompositeFilter implements Filter
{
    private $filters = [];
    
    function addFiter
(Filter $filter)
    {
        $this->filters[] = $filter;
    }
    
    function filter
($data)
    {
        foreach ($this->filters as $filter) {
            $data = $filter->filter($data);
        }
        
        return $data
;
    }
}

class SobakenFilter implements Filter
{
    function filter($data)
    {
        return preg_replace('~(?<!\\\\)\\.~', '@', $data, 1);
    }
}

class LastDotFilter implements Filter
{
    function filter($data)
    {
        return preg_replace('~\\.$~', '', $data);
    }
}

class StripSpacesFilter implements Filter
{
    function filter($data)
    {
        return trim($data);
    }
}

class StripSlashesFilter implements Filter
{
    function filter($data)
    {
        return stripslashes($data);
    }
}

class SoaEmailFilter extends CompositeFilter
{
    function __construct()
    {
        $this->addFiter(new StripSpacesFilter());
        $this->addFiter(new SobakenFilter());
        $this->addFiter(new LastDotFilter());
        $this->addFiter(new StripSlashesFilter());
    }
}

$filter = new SoaEmailFilter();

foreach (file('php://stdin') as $line) {
    echo $filter->filter($line), PHP_EOL;


Использование

Код: Выделить всё

% echo "this\.my\.email.my.lovely.personal.domain." | ./soaemail.php
this.my.email@my.lovely.personal.domain


Ещё можно каждый класс тестами покрыть, потом в композер и на гитхаб :-D красотищща :drinks:

Получить e-mail адрес из SOA-записи DNS

Сообщение xM » 2017-06-02 11:30:58

zg писал(а):Источник цитаты тут нужен перл

Скрипач не нужен.
zg писал(а):Источник цитаты изначальный вариант тоже вполне красивый и рабочий

Рабочий да. А эстетического удовлетворения, как раз, нет :-)

Получить e-mail адрес из SOA-записи DNS

Сообщение zg » 2017-06-02 6:40:07

ой, точно :smile:

ну тогда тут нужен перл, я не знать, как сед уметь ассершин

Код: Выделить всё

% echo "this\.my\.email.my.lovely.personal.domain." | perl -ne '~s/(?<!\\)\./@/; ~s/\.$//; ~s/\\\././g; print;'
this.my.email@my.lovely.personal.domain


UPD: хотя изначальный вариант тоже вполне красивый и рабочий, если его немного сократить

Код: Выделить всё

% echo "this\.my\.email.my.lovely.personal.domain." | sed 's/\\\./\\/g; s/\./@/; s/\\/\./g; s/.$//'
this.my.email@my.lovely.personal.domain

Получить e-mail адрес из SOA-записи DNS

Сообщение xM » 2017-06-01 23:01:44

zg, @ забыли.

Получить e-mail адрес из SOA-записи DNS

Сообщение zg » 2017-06-01 21:32:02

Код: Выделить всё

% echo "this\.my\.email.my.lovely.personal.domain." | sed 's/\\././g;s/\.$//'
this.my.email.my.lovely.personal.domain

Получить e-mail адрес из SOA-записи DNS

Сообщение xM » 2017-05-16 17:22:20

f_andrey писал(а):Источник цитаты Тогда будь пацаном, реализуй модификацию RFC 5322 http://emailregex.com/

Это не о том. Но ссылка хорошая, спасибо.

Получить e-mail адрес из SOA-записи DNS

Сообщение f_andrey » 2017-05-16 13:54:30

Тогда будь пацаном, реализуй модификацию RFC 5322 http://emailregex.com/ :evil:

Получить e-mail адрес из SOA-записи DNS

Сообщение xM » 2017-05-16 12:16:35

Alex Keda писал(а):Источник цитаты чего некрасиво-то?

Нет чувства удовлетворённости :-)

Получить e-mail адрес из SOA-записи DNS

Сообщение Alex Keda » 2017-05-15 9:49:20

чего некрасиво-то?
работает - и хай работает

Получить e-mail адрес из SOA-записи DNS

Сообщение xM » 2017-05-01 19:33:55

Ситуация следующая. В SOA-записях DNS хранится e-mail адрес в несколько необычном формате и его нужно оттуда извлечь (это просто) привести в божеский вид (несколько сложнее).
Например, e-mail this.my.email@my.lovely.personal.domain будет записан в SOA как this\.my\.email.my.lovely.personal.domain..
Задача обратить его в первоначальный вид средствами shell.
Я эту проблему решил набором перезаписей в sed но как-то, на мой вкус, некрасиво.

Код: Выделить всё

# echo "this\.my\.email.my.lovely.personal.domain." | sed -e 's/\\\./\\/g' -e 's/\./@/' -e 's/\\/\./g' -e 's/.$//'
this.my.email@my.lovely.personal.domain

Наверняка есть вариант покрасивее.

Вернуться к началу