Mamy oficjalny termin czwartego Grilla. Odbędzie się 6. marca o 18:30. Miejsce bez zmian, hotel Best Western. Więcej szczegółów na blogu imprezy.
Jak zwykle będzie można nas spotkać, tym razem wystąpię jednak tylko w barwach Generated Content.
Geek in the Shell: Redesigning the Web
Mamy oficjalny termin czwartego Grilla. Odbędzie się 6. marca o 18:30. Miejsce bez zmian, hotel Best Western. Więcej szczegółów na blogu imprezy.
Jak zwykle będzie można nas spotkać, tym razem wystąpię jednak tylko w barwach Generated Content.
Z pewnością większość z was włamania na strony kojarzy nierozerwalnie z Gorionem, osobą powszechnie kojarzoną pod kątem bezpieczeństwa.
Tym razem przedstawię wam jednak postać Roya, który dokonał czegoś dalece bardziej przebiegłego. Jego włamanie do NFZ posiada wszelkie cechy ataku idealnego — nie zostawił śladów, nie miał żadnego motywu i zrobił to bez naruszenia integralności systemu i bez obejścia zabezpieczeń cyfrowych. To sprawia, że jego atak nie kwalifikuje się pod żaden paragraf — jest całkowicie bezkarny.
Kluczowym elementem ataku było posiadanie skrzynki e-mail. Jako przewidujący cracker, Roy swoją skrzynkę założył już lata temu, na długo przed datą ataku, który miał miejsce dzisiaj. Dzięki temu ewentualne śledztwo nie byłoby w stanie powiązać daty rejestracji z samym atakiem.
Dalej poszło z górki, Roy długo czekał na ten dzień, ale w końcu jego chytry plan chwycił. Dziś rano na jego skrzynkę przyszedł list. List z NFZ. Z załącznikiem.
Zapomniawszy dawno o swych niecnych zamiarach, Roy był nieco zaskoczony niezamówioną korespondencją. Zaskoczony do tego stopnia, że w pierwszej chwili nie wiedział, dlaczego pracownik Działu Informatyzacji wysłał mu w załączniku cały serwis NFZ wraz z panelem administracyjnym.
Właściwie, po pewnym czasie, Roy przypomniał sobie, że wcale nie planował żadnego ataku ani włamania. Postanowił więc odpisać, pytając o co chodzi. Odpowiedź była tyle krótka, co zwięzła. I takoż nieortograficzna:
Przepraszam, to nie są wirusy. Zaszła pomyłka w adresie e-mail.
Proszę usunąć tego mail’a jak naj szybciej
Jeśli więc posiadacie konto pocztowe, strzeżcie się. Któregoś dnia może się bowiem okazać, że i wy zostaniecie bezwzględnymi crackerami, a wasze zdolności w dziedzinie inżynierii socjalnej rozwinęły się na tyle, że ofiary same się do was zgłaszają.
Roy list usunął, choć nie jestem pewien, czy ktoś inny zrobiłby to samo. Zaś Narodowemu Funduszowi Zdrowia gratulujemy działu IT.
W ramach nowej zabawy napadł mnie Paweł. W skrócie chodzi o to, że wytypowana osoba musi opublikować pięć nieznanych faktów ze swojego życia. Potem musi wybrać pięć następnych osób, które podlegają tym samym zasadom.
Jak pewnie zauważyliście, próba wejścia na stronę danej notki dzisiaj zwracała białą stronę. Okazało się, że winna jest wtyczka OpenID Registration. Chwilowo została więc wyłączona. W logach nie mam śladu po żadnych błędach, więc OpenID powróci, kiedy zdiagnozuję problem.
Wczoraj byłem zmuszony szybko dodać dodatkową funkcjonalność do jednej z rozwijanych przez nas aplikacji. Widok, o który chodziło opiera się na automatycznym, scaffoldowanym widoku administratora. Brzmi prosto?
Problem polegał na tym, że dostosowywanie logiki administratora jest dopiero w fazie planów (gałąź admin-newforms). W związku z tym, rozbudowanie go o własną logikę jest teoretycznie na tym etapie niewykonalne.
Przekopałem się więc przez większość kodu modułu django.contrib.admin i okazało się, że można Django nieco oszukać. Widoki są funkcjami, z czego korzysta się często przy generic views.
Nie można po nich dziedziczyć, ale można wołać jeden z drugiego.
Do pliku urls.py na samym początku (przed sekcją admin) dopisujemy:
(r'^admin/aplikacja/model/add/', 'serwis.aplikacja.admin_views.add_stage'),
Następnie zakładamy plik serwis/aplikacja/admin_views.py:
from django.contrib.admin.views import main def add_stage(request, *args, **kwargs): post = request.POST.copy() if request.method == 'POST': post['user'] = request.user.id request.POST = post return main.add_stage(request, ‘aplikacja’, ‘Model’, *args, **kwargs)
Voila!
Pierwsza część jest chyba oczywista, w tym przypadku nadpisujemy widok dodawania dla konkretnego modelu. Ponieważ Django przetwarza mapę rutingu w takiej kolejności, w jakiej są podane regułki, nasza linijka przesłoni znajdujące się niżej automatyczne reguły wbudowanego panelu administratora.
Druga część to utworzenie osobnego pliku dla widoków administracyjnych (nie musi to być osobny plik, ale to dobra praktyka). W pliku tym umieszczamy definicję własnego widoku add_stage.
W powyższym przykładzie dodawany jest automatycznie właściciel dla tworzonej instancji modelu. Nie bardzo można zrobić to w samym modelu, bo model jest bezstanowy i nie ma dostępu do stanu aplikacji. Poza tym, chcemy, żeby pole to było ustawiane tylko w tym przypadku.
Obiekt request.POST jest domyślnie immutable, więc tworzymy jego kopię i właśnie tę kopię modyfikujemy, a następnie podmieniamy oryginalny obiekt.
Ostatnia linijka powoduje wywołanie oryginalnego, magicznego
widoku administratora, dostarczonego przez Django. Z tą różnicą, że przekazujemy do niego nazwę aplikacji i modelu. W przypadku wywołania bezpośredniego, pochodzą one z wyrażenia regularnego w konfiguracji urls.py, tutaj musimy podać je jawnie.
Dopiero dzisiaj miałem czas pogrzebać dłużej w złożach Jamendo. I grzebię tak od dobrej godziny.
Jamendo to otwarta baza równie otwartej muzyki. Znajduje się tam obecnie ponad 26 tysięcy (sic!) utworów, jest więc w czym wybierać. Wszystkie na licencji Creative Commons, można zatem słuchać ich bez dodatkowych opłat.
Idea serwisu krąży wokół założenia, że słuchacze powinni wspierać artystę, a nie wytwórnię. Artyści zaś powinni stawiać na publiczność i swoją muzykę, a nie na kontrakty płytowe. Istnieje możliwość wsparcia indywidualnych wykonawców, więc dobra muzyka obroni się sama.
Polecam wszystkim tym, którzy nie słyszeli jeszcze o serwisie. Polecam i podobnym mnie, którzy dokładne zapoznanie się z nim odkładali na wieczne jutro.
Żałuję, że nie zrobiłem tego wcześniej.
Na początek chciałem pogratulować Robertowi Sparrowowi
Wróblowi, bo swoją platformę blogową prowadzi dzielnie od 4 lat. Sam przez długi czas prowadziłem tam swojego bloga, aż zdecydowałem, że WordPress daje mi nieco więcej możliwości i swobody (i mniej komentarzy losowych ludzi, którzy akurat czytali stronę główną).
Co jest jednak ciekawsze, Jogger zdecydował się wrócić do korzeni i postawić ponownie na blogi techniczne. Za oficjalnym blogiem:
Od dłuższego czasu na Stronie Głównej pojawia się coraz więcej wpisów niezwiązanych z szeroko pojętymi technologiami (w tym i informatycznymi). Przez to, wiele osób kompletnie przestało ją przeglądać, i skupiło się wśród znanych sobie Joggerów. I właśnie dla nich, przyszykowałem małą niespodziankę ;)
Od dziś (20.02.2007), Jogger posiada drugą domenę - Techblog.pl. Nie martwcie się, nie musicie zakładać nowych kont - do tego została utworzona specjalna kategoria, która zwie się… Techblog! ;) Tylko wpisy z niej lądują na nowej stronie głównej, i mogą się w niej znajdować TYLKO wpisy techniczne. Można umieszczać w niej nawet wpisy o naprawie kranu w łazience, jeśli kogoś to interesuje, pod warunkiem, że nie będzie to wpis typu
kran się zepsuł, jak go naprawić. Osoby, które mimo upomnień będą dodawać wpisy zarówno nie na temat, jak i o niskim poziomie merytorycznym, stracą możliwość publikowania czegokolwiek w tej kategorii.
Fanów blogowania technicznego zapraszam więc na Techblog.pl.
Tym razem szybki projekt, dwie godziny zabawy w Inkscape. Pastwiłem się nad programem, odtwarzając jeden z rysunków żeńskiej wersji Firefoksa.
Licencja tradycyjna, CC-BY-NC-SA. Wersji niepanoramicznej nie będzie, bo wystarczy sobie wyśrodkować obrazek na pulpicie.
Update: Tapeta w SVG, licencja ta sama.
Tym z was, którzy przegapili trzecią edycję Grilla, polecam zapoznanie się z materiałami wideo, które niedawno pojawiły się na blogu Grilla.
Dostępne są cztery nagrania prezentacji i komplet slajdów do nich (z wyjątkiem serwisu Live Chat, którego reprezentanci demonstrację przeprowadzali na żywym programie).
To był, zdaje się, nasz ostatni Grill w obecnym składzie ekipy iCenter. Następnym razem pojawimy się jako przedstawiciele nowej firmy.
Muszę pamiętać, żeby nie machać tyle rękami, kiedy mówię, bo przyciągam uwagę i filmują moje plecy zamiast ekranu. ;)
Ze strony alpha.pl krzyczą do nas najnowsze wersje oprogramowania. Na konto skusił się też kiedyś mój kolega, Łukasz Olejnik. Jego serwis od jakiegoś czasu nie działa.
Dostawca usług nie raczył o tym poinformować, poinformował za to wdzięcznie skrypt crona. I informuje nadal, ze szwajcarską punktualnością, dokładnie co godzinę.
Serwis ma tego pecha, że od początku swego istnienia korzysta z funkcjonalności eAccelerator, który niegdyś na wspomnianym hostingu zwykł działać. Być może wtedy była to jeszcze wersja beta, a do wersji alfa przeszli niedawno?
Cóż, zdarza się,
pomyślał Łukasz i czym prędzej zgłosił problem swojemu hostowi. Czym prędzej odpisał i host, a helpdesk pomoc swą zaoferował w te słowy:
eAccelerator działa. Proszę zobaczyć w
phpinfo()
Uspokoiło go to nieco i utwierdziło w przekonaniu, że może spokojnie zignorować wyświetlane zamiast strony:
Call to undefined function:
eaccelerator_get()
Do dziś ignoruje więc komunikaty, pracuje także nad przekonaniem swoich odwiedzających, że biała strona z czarnym napisem nie jest warta uwagi i świadczy o normalnej pracy serwera.
Dziękujemy zatem panom z AlphaNetu za wyczerpującą odpowiedź. Gratulujemy także czasu reakcji na zgłoszenie, a tak wspaniałego hostingu na resztę życia i sobie i wam życzę.
Ostatnie komentarze