Tag: linux

regex или порно за мозъци

Преди 2 седмици се заиграх с jMeter (статия планирам в близко бъдеще, супер интересен и мощен tool!) и се наложи да взема стойността на един hidden field, който е уникален за всяка потребителска сесия. Кода изглеждаше така:

[code lang=”html”]<input name="form_key" type="hidden" value="PmIAQBj6jXqBIX8g" />
</pre>
<input name="form_key" type="hidden" value="PmIAQBj6jXqBIX8g" />
<div id="authenticationPopup" style="display: none;" data-bind="scope:’authenticationPopup’">
<p id="find_result" class="result">А нужното поле, както можете да се досетите – value.</p>
<p class="result">Между другото ако ви е интересно това е стандартна Magento 2 Enterprise инсталация.</p>

</div>
</div>
И моя гениален ум просветна веднага – "Просто е, ще ползвам regular expression". Всеки е чувал за регулярните изрази и за техните полу-митични възможности – от взимане на стойност по определен набор от инструкции,  validation, assertation и т.н. и т.н.

Отворих бодро regexp-а на Java и след около 15 минути мозъка ми излезе в почивка. Оказа се, че не е чак толкова лесно, а като попаднах на този (по мое мнение грозен, бавен и неефикасен (според stackoverflow)) <a href="http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html">regexp за валидиране на mail addresses</a> ми се схвана душата.
За радост тулове много, а добра работа ми свърши <a href="http://java-regex-tester.appspot.com/">http://java-regex-tester.appspot.com/</a>.

Решението на задачата е просто и изглежда по този начин:
<pre>[code](?<=value\=\")([a-zA-Z0-9]*)[/code]

Резултата по по-ясен начин го има и тук като можете да си поиграете със структурата и израза и да го прогодите за свои цели.

 

Сигурно се питате защо “порно за мозъци”? Много просто – търсенето и експериментирането с такъв набор от инструменти се оказа интересна задача и макар за някои да е елементарна за моя пръв сблъсък ми беше на ръба да изям клавиатурата.

Когато ти изтекат сертификатите на блога…

Както може би забелязахте последните 2 дни блога ми не се отваряше и причините бяха две:

  • Let’s Encrypt renewal-а не беше минал тримесечния си ъпдейт на сертификатите;
  • Понеже използвам HSTS нямаше и опция да видите блога нищо, че е с невалиден сертификат.

И това естествено по празниците, когато нямах достъп до компютър :)

Ето и какви бяха причините за това, че на nedko.info не минаха сертификатите, но на останалите 7-8 сайта, които хоствам минаха без проблеми:

  1. При опит за certificate renew  получавах следната грешка:
Failed authorization procedure. www.nedko.info (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://www.nedko.info/.well-known/acme-challenge/PdzPmGSbFd1XOOqa0LshcRGxqUАGHАUj3qМNamp1-Yw: "<!DOCTYPE html>
<html lang="en-GB">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial"

IMPORTANT NOTES:
 - The following errors were reported by the server:

Domain: www.nedko.info
 Type: unauthorized
 Detail: Invalid response from http://www.nedko.info/.well-known
 /acme-challenge/PdzPmGSbFd1XOOqa0LshcRGxqUАGHАUj3qМNamp1-Yw:
 "<!DOCTYPE html>
 <html lang="en-GB">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial"
 To fix these errors, please make sure that your domain name was
 entered correctly and the DNS A record(s) for that domain
 contain(s) the right IP address.

 

Проблема е, че при опит за достъп по http (близко до ума, но на мен ми отне време да се досетя, че Let’s Encrypt callback-а е по http, а не по https) при misconfiguration горния линк http://www.nedko.info/.well-known
/acme-challenge/PdzPmGSbFd1XOOqa0LshcRGxqUАGHАUj3qМNamp1-Yw пренасочваше към друг от моите домейни.

 

2. Започнах да преглеждам къде ми е проблема с това пренасочване и реших да изключа напълно port 80 поддръжката (http) макар и да имам redirect 301 в случай, че имам request по http.
Решението ми беше да спра изцяло поддръжката на http през vhosts. Става съвсем лесно с коментар или изтриване на удебеления ред:

#listen 80;
listen 443 ssl;

След тази промяна и рестартиране на nginx (service nginx restart) успях да стартирам процеса по преиздаването на сертификата успешно със следните редове:

letsencrypt certonly -a webroot --webroot-path=/var/www/nedko.info/ -d nedko.info -d www.nedko.info

където пътя до сайта е в директория /var/www/nedko.info/

 

Ако имате проблеми с намирането на директорията /.well-known/acme-challenge/ можете да я създадете наново като:

  • Проверите дали директорията съществува (под Линукс точката пред директория или файл се счита за скрит файл/директория) с
ls -lah /var/www/nedko.info/

Ако не съществува можете да я създадете със следната команда и дадете съответните правомощия:

mkdir /var/www/nedko.info/.well-known/acme-challenge/ && chmod 755 /var/www/nedko.info/.well-known/acme-challenge/

И изпълянвате по-горната команда за renew на сертификатите.
Ако не стане пишете в коментарите и ще го гледаме заедно.

Архивиране на директория с tar

И понеже ВСЕКИ път като ми се наложи да  архивирам директория под линукс и търся разни тъториали та реших да си го постна тук за по-лесно намиране, пък и на някой ако му е интересно/полезно – още по-добре.

Архивиране с tar

Ако искам да архивирам директория с всичките поддиректории и файлове с tar (zip и rar не идват инсталирани в пакетите на Дебиан и Убунту и вероятно на повечето останали дистрибуции) използвам следната команда:

tar czfv nedko.info.tar.gz /var/www/html/nedko.info/.

 

Дисекция на командата:

c – create

z – де/компресирай с gzip

f – архивирай във файл

v – verbose output (ще ни покаже полезна информация по време на компресирането. Не се препоръчва ако използваме командата в cron)

nedko.info.tar.gz – името на архива

/var/www/html/nedko.info – директорията, която искаме да архивираме

 

Разархивиране на създадения архив

И да речем, че нещо се прецака и искам да разархивирам архива в определена директория:

tar xzfv nedko.info.tar.gz /var/www/html/nedko.info

 

Дисекция на командата:

x – extract

z – де/компресирай с gzip

f – file (трябва да подадем име на файла след тази директива)

v – verbose – ще ни изкара полезна информация по време на декомпресирането. Не се препоръчва ако използваме командата в cron.

01.02.2017

Освен първата си по-сериозна статия за колоезденето, която написах днес се случват и други, доста интересни неща.

Например gitlab.com днес си преебаха базата данни. И това не е толкова страшно, защото при нормални условия restore-а би отнел няколко минути, но явно и бекъпите не са били особено полезни

Но освен лошата новина има и нещо хубаво и то е, че GitLab се оказата супер прозрачни откъм този проблем и дори направиха google doc в който описват подробно какво се случва.

И две IT мъдрости:

И това, че има два типа системни администратори – такива, които правят редовни и проверени бекъпи и такива, които вече ще правят. :)

По тази тема след няколко дни ще поръчам за експеримента един VPS на Hatzner за да направя load balancing и database replication + още 1-2 услуги както писах вече в статията за marvin. Ще е интересно и ще пиша за това като го направя.

 

Нещата, които намерих днес:

  • Злати прати днес този супер полезен ресурс – tldrlegal, който показва съвсем накратко популярните лицензни условия с много приятен и прост интерфейс.
  • Не знаех, че Амазон вече са и на low-cost VPS пазара;
  • How fucked is my database е малък сайт, който ви показва по хумористичен начин колко сте преебани използвайки една от следните бази данни – PostgreSQL, MySQL, MSSQL, Oracle, SQLite, MS Access, NoSQL?
  • WordPress с едно много неприятно ново vulnerability. Този път атакуващия може да направи privilege escalation и content injection. Ъпдейт към 4.7.2 е задължителен.

marvin

Началото

Около 2001 година започна интереса ми към WEB. И с времето се ориентирах към Joomla. Тогава бизнеса вече знаеше, че няма да му се размине без WEB и с времето направих доста сайтове (някои от тях са още online). И след време теглен от желанието си за собствено местенце в интернет и място където да пиша започнах да мисля за стой блог/ресурс в който да пиша разни неща. И така се роди идеята за Nedko.info – блог с интересна информация за web, малко смешки, урочета и т.н. Взех си хостинг в sueprhosting и сложих една Joomla 1.0.x
С времето интереса ми към него замря малко, но го оставих да живее. Няколко години по-късно (и един drop, защото не внимавах с времето за подновяване на домейна) реших да го съживя. 2014 година беше времето в което започнах с блога си в този му вид. Първо поствах мои стихове и разкази, после интересни IT неща, малко простотии и днес блога е изцяло персонален + малко интересни неща, които намирам ежедневно.

nasam.be

nasam.be е втората ми идея (тогава за социална мрежа, don’t blame me – всеки тогава искаше социалка), която датира от 2009 г. С времето слагах разни неща. В момента имам един status page там, като скоро ще мигрирам Joomla базата към WordPress и ще вдигна сайта със старите ми писания.

 

Избора на хостинг

Малко след като си купих първия хостинг се чудих защо аз не направя нещо свое? Звучи напълно логично за 15-17 годишен, но реалността се оказа различна. И така с времето все повече и повече изпитвах ограниченията на cpanel, трудностите в това да не знаеш какво става отдолу, кой има достъп до твоите данни и какво би било да можеш да направиш service nginx restart.

След няколко опита (включително вдигнахме един университетски сървър, а малко по-късно имах проект с мои приятели от университета и вдигнах един ubuntu server в таванското помещение на един от приятелите. Проекта се казваше 5heads.eu) останах на superhosting още няколко години, но 2016 беше времето в което трябваше да изляза от комфортната си зона и да направя нещо, което съм мечтал прекалено много време. Намерих vultr.com – VPS (virtual private server) за умопомрачителните $5 месечно и реших да го наема за няколко месеца и да видим дали transition-а ще е лек.

Marvin

marvin е параноичния и вечно депресиран свръхинтелигентен робот от “Пътеводител на галактическия стопаджия” на Дългaс Адамс.

marvin работи с Ubuntu. Всичко тръгна. Или поне по-новите проекти. Имам 2 сайта на античната Joomla 1.5, които са невъзможни за ъпдейт към по-нов бранч (има custom решения, но не и универсални такива) и започнах да търся. Оказа се, че има решение да пусна две отделни PHP-та на nginx с fpm (ако някой има интерес ще пусна инструкциите тук). Отне ми цяла вечност да ги подкарам поради различни проблеми и най-вече това, че за пръв път пипах nginx.

След като подкарах всичко реших, че е време да сложа Let’s encrypt сертификати на всичките си сайтове и сега си светят в зелено. Доволен съм. Статия за това как го направих ще пиша скоро.

 

Хостинг в marvin

През целия си живот съм бил привърженик на споделянето на знания с другите и marvin не прави изключение. VPS, който ползвам в момента е със следната конфигурация:

  • 1 CPU;
  • 2 GB RAM memory;
  • 50 GB SSD storage;
  • 2 TB bandwidth.

В този си вид мога да споделя малко място с FTP достъп, mySQL база данни и сертификат от Let’s Encrypt безплатно за всеки, който пожелае това и ми даде достатъчно добър довод (от типа на – студент съм, ученик съм, нов съм в бранша и не искам да си взимам хостинг за сега).

Edit – към септември 2017 г. marvin беше ъпгрейднат от 768 мб рам към 1ГБ, а storage-а му – от 15 SSD към 25 GB SSD.

Към Май 2021 г. marvin се търкаля на DigitalOcean с 1vCPU (avg CPU usage за последните 14 дни – 10%), 2GB RAM (avg RAM usage за последните 14 дни – 55%) и 50GB SSD (avg Disk usage за последните 14 дни – 83%).

 

Бъдещето на marvin

Надявам се marvin да не свърши като робота в книгата. Искам да подкарам няколко услуги на него като една от тях ще е wpscan за web, ще има gitlab и най-вероятно munin и backup service (вероятно duply или прост скрипт използващ rsync).
Към marvin смятам след време да присъединя още един, който ще е на друг VPS provider, който ще играе ролята на failover и DB replication service.

 

slartibartfast

И ето, че днес (15.02.20117) вдигнах още един VPS, този път на digitalocean, който ще играе ролята на backup, replication и failover solution на marvin. Хостинга по традиция е от $5 и ще свърши много повече отколкото имам нужда.
Скоро ще пиша в отделен пост какво съм вдигнал и как на сървъра.
В момента прехвърлям и nasam.be към него за да имам асоцииран домейн с който да си играя.

Ъпдейт към 27.05.2021 – slartibartfast е мъртъв от година и повече. Доста по-изгодно е да имам един по-голям VPS с повече RAM и диск отколкото два и колкото и да не ми се искаше теглих ножа на slartibartfast и се наложи да забравя за failover и remote backup.

vortex

Вече писах за vortex, но би било редно да направя honorable mention за него и тук. Откакто съм DevOps виждайки scale-а с който работим и всичките услуги, които мога да хостна и да науча не видях смисъл да търкалям един нещастен VPS (не, че не може на DigitalOcean, но освен цената идва и отговорността за поддръжката и правилната експлоатация на сървисите) и реших да взема нещо в нас. Повече инфо за това можете да намерите в статията, която съм линкнал по-горе.

 

Changelog

И понеже много обичам да пиша changelogs реших да го сложа директно в тази статия:

  • Full SSL support преди започването на този blogpost;
  • Пълен бекъп на базите данни ежедневно;
  • swap support – on (защото на VPS-а на който съм не е пуснат по default). Как да си активирате swap-а на кой да е VPS можете да прочетете тук;
  • Вдигнах slartibartfast на 15.02.2017 използващ услугите на digitalocean.com
  • 16.03.2017 г. marvin вече работи с HTTP/2 и HSTS (HTTP Strict Transport Security). Резултата от SSLLabs можете да видите тук;
  • 18.07.2017 г. – marvin вече поддържа livepatch, което ще минимизира downtime-а му до минимум.

100% SSL поддържка на marvin

Днес най-накрая успях да подкарам 100% SSL support на всичките ми хостнати проекти с Let’s Encrypt.

Без проблеми естествено не можеше, но бяха решени с касапския метод:

[code]aptitude remove letsencrypt[/code]

[code]aptitude purge[/code]

[code]aptitude install letsencrypt[/code]

Заедно с това сложих и letsencrypt renew, защото сертификатите са валидни само три месеца. Сега ще чакам да видим след три месеца дали всичко ще стане автоматично :)

10.11.2017

Днес деня започна с поезия. Този път ред е на Мария Донева и нейния блог, който влиза в личния ми feedly моментално:

 

Тя се готви да пътува.

Тя се готви да пътува.
Вече знае накъде.
Но макар че се шегува,
тайна мисъл я яде.

И макар че тя е смела
и е купила билет,
във лъжи се е оплела.
За да продължи напред,

трябва да развърже възел,
трябва да прескочи плет,
да надвие своя мързел,
да изхвърли много смет.

И четирите саксии
на сираческа съдба
да остави. Да изтрие
спомена за веселба.

Да извика студовете.
Да си спомни за дъжда
във леглото, на ръцете –
пръстените със ръжда.

Да не мисли за доброто.
Да не мисли за вина.
Да си навлече палтото.
Без целувка на уста

да потегли, да замине –
вече знае накъде.
Да остави да изстине
окаденото кафе.

Да не мие тези чаши,
да не готви за обяд.
Да се радва, че се плаши,
Да не търси път назад.

Да не спира. Да не чака,
време е да се реши –
който пак я е разплакал,
няма да я утеши.

Тя се готви да пътува,
но да се стопи снега.
Ще избяга, ще отплува,
но не знам кога,
кога…

 

 

Нещо интересно, което намерих днес:

  • Новината на деня – след като verizon купиха огроман част от Yahoo остатъка от компанията се преименува на … “Altaba”??? Мисля, че по-тъпо име не е било възможно да бъде измислено;
  • Chrome Backdoor – Chromebackdoor is a pentest tool, this tool use a MITB technique for generate a windows executable “.exe” after launch run a malicious extension or script on most popular browsers, and send all DOM datas on command and control;
  • 3 Ways to Permanently and Securely Delete ‘Files and Directories’ in Linux;
  • И едно очарователно видео. Канят няколко badasses в стая и малко по-късно влиза малко момиченце, което без да казва нищо започва да си разтоварва нещата от раничката и кани лошите чичковци на по чаша кафе/чай/торта (пластмасови). И разтапя тия лошите татуирани и начумерени хора с една усмивка;

Сканиране за лоши сектори под Linux

Има едно нещо, което е по-лошо от счупения хардуер и то е умиращия такъв. Тия дни ми се наложи да сканирам няколко хард диска за лоши сектори под linux (в моя случай това е офисната ми машина с Ubuntu 14.04.3 LTS + Mate) и след извесно чудене кой метод да избера се спрях на badblocks. Хубавото му е, че единственото нещо, което го накарах да изведе е списък с лошите сектори, които евентуално по-късно можех да обработя с fsck. Без графични интерфейси, излишни прозорци и т.н. Автор на badblocks е Реми Кард.

Инсталацията му под Debian базирани инсталации е тривиална: Continue reading

By PacktPub

By PacktPub

Raspberry Pi Cookbook for Python Programmers

Открийте какво можете да направите с един Python качен върху Raspberry PI с офертата на Packt Publishing, която пуснаха безплатно само за днес (редовната ѝ цена е малко над $25).

Книгата се състои от 10 глави , които включват:

  1. Как да започнем с Raspberry PI:
    1. Инсталиране на Raspberry PI NOOBS;
    2. Настройка на Ethernet и wireless мрежа;
    3. Използване на прокси, връзка към VNC/SSH (през X11 forwarding);
    4. Конфигуриране на споделена директория използвайки Samba;
    5. Update към latest на Raspberry PI и Noobs/Debian;
  2. The real deal – Инсталация и първи стъпки с Python, стрингове, файлове и менюта:
    1. Въведение;
    2. Работа с текст и стрингове;
    3. Работа с файлове и error handling;
    4. Създаване на boot-up меню;
    5. Създаване на самодефинируемо (баси думата. На английски е self-defining) меню.
  3. Използване на Python за автоматизация и по-висока продуктивност;
  4. Създаване на игри и графика използвайки IDLE3 за debugging, Tkinter Canvas за чертаене с мишката и създаване на 1-2 игрички (това е интересно да се види на живо);
  5. Създаване на 3D графика – създаване и импорт на 3D модели, създаване на 3D и билдване на карти и лабиринти;
  6. Използване на Python за комуникация с хардуер. Тук ще се покажат няколко ултра интересни неща в които е силната страна на Pi-то – контролиране на LED светлина, обработване на данни през бутон (тоест какво да прави при натиснат/изключен бутон), създаване на shutdown бутон, използване на GPIO и други;
  7. Работа със сензори. Работа с i2c бъс, четене на аналогови данни и използването на analog-to-digital конвертор, логване на данни, разширяване на функционалността на Raspberry PI с GPIO с I/O expander, събиране и изпращане на данни към online services.
  8. Създаване на проекти с Raspberry Pi camera module;
  9. Да си направим робот – използвания хардуер е Rover-Pi с линеарно задвижващи се мотори, advanced motor control, създаване на шестокрак Pi-Bug робот (да стряскате с него любимата), избягване на обекти и ориентация;
  10. Интерфейси – автоматизиране на дома с remote sockets, използване на SPI за контрол на LED матрици, комуникация през серийния интерфейс, контролиране на Raspberry PI през bluetooth и USB devices.

Тегленето на книгата е напълно безплатно като се изисква елементарна регистрация (не искат данни за кредитна карта).

Вариантите в които пристига книгата са:

  • Онлайн през техния Piktlib. Там четенето е приятно, всичко е структурирано добре със съдържание на книгата в дясно и опция за търсене из страниците. Проблем е, че ресурса понякога е малко бавен. Няма опция за bookmarks на определени текстове или страница и ако не помня до къде съм стигнал рискувам да загубя немалко време докато се ориентирам кое съм чел и кое не;
  • PDF;
  • ePub;
  • Mobi;
  • Kindle с два ebook формата – PDF или Kindle format. След избор на формат въвеждаме Kindle адреса си и ще получим книгата синхронизирана на Kindle–а без да я прехвърляме от устройство на устройство;
  • Code files – Всичкия код, който е използван в книгата като примери може да бъде изтеглен също от тази секция.
  • С доплащане можете да получите и хартиения вариант на книгата.

Та така де. Книгата изглежда интересна.

 

Линк за теглене можете да намерите тук.

 

Приятно четене.

Недко разказва: Microsoft лимитира OneDrive, намаля акаунтите до 5GB

Микромеките пак са в стихията си. Аз лично не съм използвал техните услуги, но Юлиян, например,  име фен и сигурно няма да бъде особено щастлив.

Та накратко – OneDrive е облачна услуга предназначена основно за запазване на потребителски данни (cloud storage service), която (очевидно до днес) беше с неограничено пространство, което само по себе си вдигна доста голям шум по времето, когато го обявиха.

Е – не всичко продължава вечно. Както е казал народа – снимки, файлове, ала бала качвате, ама хард дисковете пари струват.

Та сега нашите са сменили малко тактиката и максималния стандартен план за свободно място на OneDrive е ограничено до 1 TB ($6.99 с включен Office 365 на месец).

Безплатното пространство, което всеки регистриран потребител получава е намалено от 15GB до 5GB.

 

А докато MicroSoft правят подобни промени в една от основните си услуги аз продължавам да използвам Google Drive (който всеки регистриран в gMail или Google има) и техните 15GB безплатно пространство за storage като плана им за 1TB е $9.99 (което е по-скъпо от това на Микромеките както писах малко по-горе).
Та всеки си решава сам за себе си. Аз моето решение го взех преди време и съвсем скоро ще опиша и моята домашна инфраструктура като част от нея ще използва OwnCloud