Отже, ця тема аналогічна темі «Help!», тільки для більш складних питань. Сюди постити питання щодо адміністрування систем, програмування та інших речей, складних для простих юзерів.
int main(int argc, char *argv[]) { using namespace std; if (argc<2) {. cout << "USAGE: filename1.rho [filename2.rho filename3.rho]\n"; return 1; } else cout << "RHO2XYZ for Wien2k v1.0\n"; //Reading filename1 and filename2 first lines: ifstream input; ofstream output; // string OutputFilename(); int npx, npy; float xlength, ylength; double x, y, charge; for (int i=1; i < argc; i++) //process all comanline arguments { input.open(argv[i], fstream::in); if (!input) { cerr << "Fatal alarm: Cannot open file "<< i << " " << argv[i] << "\n"; return 1; } char *OutputFilename=argv[i]; strcat(OutputFilename,".xyz"); cout << "Processing file " << OutputFilename << "\n"; output.open(OutputFilename, fstream::out); if (!output) { cerr << "Fatal alarm: Cannot write to the file " << OutputFilename << "\n"; return 1; } input >> npx >> npy >> xlength >> ylength; for (int m=0; m < npx; m++) for (int n=0; n < npy; n++) { x = (m*xlength)/npx; y = (n*ylength)/npy; input >> charge; output << " " << x << " " << y << " " << charge << "\n"; } input.close(); output.close(); } cout << "\ndone\n"; }
отже, скрипт отримує в якості аргументів файли типу file1.rho, file2.rho, file3.rho ... і з них генерує файли file1.rho.xyz, file2.rho.xyz, і т.п.
у мене чомусь він обробляє тільки перший файл, а надругому видає матюк:
Fatal alarm: Cannot open file 2 xyz
це спрацьовує оцей рядок:
Fatal alarm: Cannot open file "<< i << " " << argv[i] << "\n";
як це пофіксити?
PS не бийте за суржик, краще пролікнепіть.
upd: моє питання вирішене. постіть свої.
webwarrior
5.03.2009, 22:05:00
Я не знаю, у чому тут помилка, але мені здається простіше це переписати на якому-небудь python’і чи іншій скриптовій мові програмування. Робити такі речі на C++ - це жесть
noddeat
5.03.2009, 22:12:35
маєш, напевно, рацію, тільки пайтон я поки що хріново знаю, і взагалі, там цикли for через жопу якось зроблені. та й зрештою, яка різниця?
Дописано о 22 годині 12 хвилин 35 секунд глюк некритичний, тобто прога працює, якщо їй згодувати один файл. але все одно неприємно і цікаво знати на майбутнє, шо за фігня.
Приклад аналогічний до твого, і автор робить висновок, що, цитую ifstream::open() does not work on used ifstream Правда, автор пише про GNU Compiler Collection 3.0 і 3.1, але може, тут та сама ситуація...
noddeat
5.03.2009, 23:48:45
(Crusader @ 5.03.2009, 22:14:03)
Ось вдалося накопати таке.
http://osdir.com/ml/gcc.prs/2002-07/msg00737.html Приклад аналогічний до твого, і автор робить висновок, що, цитую ifstream::open() does not work on used ifstream Правда, автор пише про GNU Compiler Collection 3.0 і 3.1, але може, тут та сама ситуація...
ні, не то є причиною. Чомусь argv[2] є порожнім, хоча це не так. дещо переписав:
#include "iostream" #include "fstream" #include "string.h" using namespace std; int rho2xyz(char *InputFilename) { ifstream input; ofstream output; int npx, npy; float xlength, ylength; double x, y, charge; char *OutputFilename=InputFilename; input.open(InputFilename, fstream::in); if (!input) { cerr << "Fatal alarm: Cannot open file "<< InputFilename << "\n"; return 1; } strcat(OutputFilename,".xyz"); cout << "Processing file " << OutputFilename << "\n"; output.open(OutputFilename, fstream::out); if (!output) { cerr << "Fatal alarm: Cannot write to the file " << OutputFilename << "\n"; return 1; } input >> npx >> npy >> xlength >> ylength; for (int m=0; m < npx; m++) for (int n=0; n < npy; n++) { x = (m*xlength)/npx; y = (n*ylength)/npy; input >> charge; output << " " << x << " " << y << " " << charge << "\n"; } input.close(); output.close(); return 0; }
int main(int argc, char *argv[]) { if (argc<2) {. cout << "USAGE: filename1.rho [filename2.rho filename3.rho]\n"; return 1; } else cout << "RHO2XYZ for Wien2k v1.0\n"; for (int i=1; i < argc; i++) //process all comanline arguments rho2xyz(argv[i]); cout << "\ndone\n"; }
нічого не змінилося, просто виділив код конвертування в окрему функцію. ну і тепер точно для кожного файлу створюється всередині функції свій потік вводу і виводу.
Внаслідок переписування прога не зупиняється на першій помилці, і продовжує обробляти всі файли. І що ми бачимо? Ось що:
маєш, напевно, рацію, тільки пайтон я поки що хріново знаю, і взагалі, там цикли for через жопу якось зроблені. та й зрештою, яка різниця?
Краще на Bash+Sed чи Perl вже. Але вистачить і чистого BASH.
По теме: http://gcc.gnu.org/onlinedocs/libstdc++/fa...reopening_fails по идее в новых компилях уже пофиксено. но на всякий случай после stream.close() делаем stram.clear() Более того у тебя происходит херня со строчками. Ты при дописывании расширения делаешь жуткую ошибку(см. лебедев мод пункт 4.4). Ты портишь значение параметра, и пытаешься открыть очень левый файл. Даже сам посмотри — фейл на попытке открыть файл «xyz». Решение см. в лебедевмод п.5. Как иллюстрация — я не открываю файл, а просто каждый раз вывожу все параметры. Имеем:
форматируй код! табуляция это элементарно просто, зато повышает читабельность
загловочные стандартные файлы ДОЛЖНЫ включаться как #include <file> а не #include ”file”. Второй вариант снчала исчет в текущей папке, потом в стандарнтых, первый — наоборот.
почему бы не заменить расширение файла вместо дописывания? ну да ладно, это мелочи. но это то, что ожидает юзверь обычно.
в том же фрагменте — куда большая ошибка. Мы модифицируем аргумент коммандной строки. Да-да, OutputFilename — не копия, а указатель на i-й аргумент, потому в зависимости от конкретного способа реализации параметров коммандной строки такая порнуха может привести к одному из:
Segmentation fault — если выход за дозволенную память(а мы можем, т.к. строку могли выделить тютелька в тутельку под размер данных)
он же — если нам средствами ОС дают этот массив только для чтения(NB: не уверен)
херня, если дописанное расширение залазит по памяти на следующий аргуемент (что у тебя и происходит)
Мене стривожило оце: Fatal alarm: Cannot open file xyz Наскільки я зрозумів, оте xyz він може взяти лише звідси: strcat(OutputFilename,”.xyz”);
Є підозра, що причина тут:
char *OutputFilename=InputFilename;
В даному випадку ми працюємо не з даними, а з указниками на них, тож мені здається, что тут ми отримуємо не два однакові рядки символів, а насправді один рядок, на який вказують одночасно два указники, тому зміна OutputFilename’у призводить до зміни вихідного рядка. Спробуй замінити цей рядок на поелементне копіювання символів з одного масиву в інший.
Дописано - власне, Elf-Eluna-Alina вже це написав
Chantale
6.03.2009, 00:31:41
(Crusader @ 6.03.2009, 00:24:37)
В даному випадку ми працюємо не з даними, а з указниками на них, тож мені здається, что тут ми отримуємо не два однакові рядки символів, а насправді один рядок, на який вказують одночасно два указники
Нє-а. Тут указники на різні рядки, розміщенні «поруч».
тому зміна OutputFilename’у призводить до зміни вихідного рядка. Спробуй замінити цей рядок на поелементне копіювання символів з одного масиву в інший.
Не радьте дурниць, або радьте писати на C, а не C++
noddeat
6.03.2009, 00:40:20
Але вистачить і чистого BASH.
та я почав писати на беш, але щось мені не сподобалось, як там цикли зроблені. якщо не впадло, покажи, як функцію rho2xyz на беші реалізувати.
форматируй код! табуляция это элементарно просто, зато повышает читабельность
все форматую, просто скопіпастилось невдало трохи.
загловочные стандартные файлы ДОЛЖНЫ включаться как #include <file> а не #include ”file”. Второй вариант снчала исчет в текущей папке, потом в стандарнтых, первый — наоборот.
ясно.
троки над делать не так, если на C++:
я так і зробив спершу. але ска не працює ніфіга.
почему бы не заменить расширение файла вместо дописывания? ну да ладно, это мелочи. но это то, что ожидает юзверь обычно.
яке розширення в юніксоподібних системах? замінити не можна, так і задумано. поки що юзер цієї програми лише я, але загалом в схожих конвертерах така і є традиція: файл .rho — це raw data, себто густина у внутрішньому форматі обчислювальної програми, а .rho.xxx — це файл густини в форматі .xxx. Формат xxx може містити різні дані, а не тільки густину, тому потрібно подвійне розширення.
Дописано о 00 годині 40 хвилин 20 секунд опа! заджялало! Ельфі мій Бог!
using namespace std; int rho2xyz(char *InputFilename) { ifstream input; ofstream output; int npx, npy; float xlength, ylength; double x, y, charge; string OutputFilename=InputFilename; OutputFilename += ".xyz"; input.open(InputFilename, fstream::in); if (!input) { cerr << "Fatal alarm: Cannot open file "<< InputFilename << "\n"; return 1; } cout << "Processing file " << OutputFilename.c_str() << "\n"; output.open(OutputFilename.c_str(), fstream::out); if (!output) { cerr << "Fatal alarm: Cannot write to the file " << OutputFilename << "\n"; return 1; } input >> npx >> npy >> xlength >> ylength; for (int m=0; m < npx; m++) for (int n=0; n < npy; n++) { x = (m*xlength)/npx; y = (n*ylength)/npy; input >> charge; output << " " << x << " " << y << " " << charge << "\n"; } input.close(); output.close(); return 0; }
int main(int argc, char *argv[]) { if (argc<2) {. cout << "USAGE: filename1.rho [filename2.rho filename3.rho]\n"; return 1; } else cout << "RHO2XYZ for Wien2k v1.0\n"; for (int i=1; i < argc; i++) //process all comanline arguments rho2xyz(argv[i]); cout << "\ndone\n"; }
Chantale
6.03.2009, 00:59:50
якщо не впадло…
впадло. завтра.
яке розширення в юніксоподібних системах? замінити не можна, так і задумано. поки що юзер цієї програми лише я, але загалом в схожих конвертерах така і є традиція: файл .rho — це raw data, себто густина у внутрішньому форматі обчислювальної програми, а .rho.xxx — це файл густини в форматі .xxx. Формат xxx може містити різні дані, а не тільки густину, тому потрібно подвійне розширення.
Ок зрозуміло. Про всяк випадок: Кошерна заміна розширення(C++, на вимоги можу написати на C) в UNIX
# For i=0..NPX-1, j=0..NPY-1 for i in $(seq 0 $[$NPX-1]); do for j in $(seq 0 $[$NPY-1]); do read CHARGE # NB: bash can’t handle floating point math # you need bc for the following to work X=$(echo "scale=$PREC; $i/$XLEN" | bc) Y=$(echo "scale=$PREC; $j/$YLEN" | bc) echo $X $Y $CHARGE done done }
# Number of digits after period in division PREC="6"
# While we have arguments while [ $# -ne 0 ]; do # Compose output filename OUT=$1.xyz # replacing extension variant # OUT=$(echo $1 | sed -n -e ’s/^\(.*\)\(\.[^.]*\)\?$/\1.xyz/p’)
# Do stuff rho2xyz < $1 > $OUT
# Shift the arguments shift done
Дописано о 01 годині 44 хвилин 00 секунд ой, я провтыкал что читаем не из стдина, а из файла. невелика потеря, завтра исправлю.
FIXED01 годині 51 хвилин скількато секунд Вроде будет пахать. Дайте файл для проверки.
noddeat
6.03.2009, 02:23:44
дякую, завтра спробую. і файлик завтра приаттачу.
pathfinder
6.03.2009, 12:23:46
Хм... Тема Хтось xslt знає? Зараз якраз розбираюсь з Altova StyleVision, по ходу виникають питання які багато часу забирають; може, сюди за допомогою звертатимусь.
noddeat
6.03.2009, 15:38:21
Вроде будет пахать. Дайте файл для проверки.
не працює, скотина. якась несподівана помилка в рядку 6, де цієї помилки не може бути:
$ ~/wien2k/utils/rho2xyz.sh pbe.rho /home/noddeat/wien2k/utils/rho2xyz.sh: line 6: 100 100 3.42503 3.42503-1: syntax error in expression (error token is "100 3.42503 3.42503-1")
циферки — це NPX, NPY, XLEN та YLEN-1. аттачу файлик (перейменувати, забравши розширення .txt): в результаті очікую ось що:
Chantale
6.03.2009, 22:18:22
Поправил в соответствии со структурой входных данных
#!/bin/sh
# Separated to ease input redirection. Hell, I’m lazy --elfy rho2xyz() { # Read header data read -a HEADER NPX=${HEADER[0]} NPY=${HEADER[1]} XLEN=${HEADER[2]} YLEN=${HEADER[3]}
# For i=0..NPX-1, j=0..NPY-1 i="0" j="0" read -a INPUT while [ ${#INPUT[*]} -ne 0 ]; do for k in $INPUT; do # NB: exponential notation is not autoconverted! CHARGE=$k # NB: bash can’t handle floating point math # you need bc for the following to work # fractions (.513 to 0.513) sovietizator is ugly # and dirty. Please fix sometime X=$(echo "scale=$PREC; $i/$XLEN" | bc | sed -e ’s/^\./0./g’) Y=$(echo "scale=$PREC; $j/$YLEN" | bc | sed -e ’s/^\./0./g’) echo $X $Y $CHARGE j=$[$j+1] if [ $j -eq $NPY ]; then j="0" i=$[$i+1] fi done read -a INPUT done }
# Number of digits after period in division PREC="6"
# While we have arguments while [ $# -ne 0 ]; do # Compose output filename OUT=$1.xyz # replacing extension variant # OUT=$(echo $1 | sed -n -e ’s/^\(.*\)\(\.[^.]*\)\?$/\1.xyz/p’)
# Do stuff rho2xyz < $1 > $OUT
# Shift the arguments shift done
у меня работает только крайне невьбебенно шопиздец медленно. Алсо, смотри комменты.
noddeat
6.03.2009, 23:06:41
bc — це, звісно, жесть. напевно, краще пайтон юзати, ніж беш все-таки.
зараз перевіримо.
Chantale
6.03.2009, 23:12:51
Нє, а чому жесть? Ця прога саме для цього і призначена. Шел сам по собі не вміє виходити за ℤ, тому що це викликає купу геморою з точністю і округленням. Втім, я би радив Perl.
ПС: в юнікоді є символ ℤ. Я в шоці.
noddeat
7.03.2009, 00:40:00
блін, ти цикли for дарма поприбирав. тепер замість x i y там якась незрозуміла хуіта. x змінюється від 0 до XLEN, y теж, а скрипт видає нісенітницю.
але добре, мені впадло вже розбиратися, все одно скриптик буде корисний як зразок. дуже дякую!
ПС: в юнікоді є символ ℤ. Я в шоці.
а шо ти хочеш, там навіть цицьки є. прокрути у вільний час всю таблицю символів, ти охрінієш.
Chantale
7.03.2009, 00:43:14
(NodDeat @ 7.03.2009, 00:40:00)
блін, ти цикли for дарма поприбирав. тепер замість x i y там якась незрозуміла хуіта. x змінюється від 0 до XLEN, y теж, а скрипт видає нісенітницю.
Читати bash-ем «до вайтспейса» — це накладно. Принаймні може я лошара, але я не знаю, як це зробити кошерно. Прибрав я тому, що читати треба рядками, а в тебе 5 координат на рядок. І то я не знаю чи їх завжди кратна п’ятірці кількість, от я зробив от так, щоб не заморачуватись.
noddeat
7.03.2009, 00:47:12
а, он воно що. їх завжди п’ять в рядку. розмір матриці задає npx і npy, а на 5 колонок воно розбите просто так, для краси (прогу німці писали, йопт).
noddeat
25.03.2009, 18:05:19
це радше не хелп, а просто питання з цікавості:
Як отримується сертифікат для https-сторінок та який механізм його захисту, що йому всі довіряють?
Firefox от лається на сторінки із самопідписаними сертифікатами, і просить додати виняток. я так розумію, є певні «довірені» фірми, які видають ці сертифікати. Чому їх не можна підробити? Чи коштує цей сертифікат дофіга бабла?
Сертифікат видається на домен, як я розумію. А чи реально замінити DNS та зробити фішерську сторінку із сертифікатом, який не викликає підозри?
NLD
25.03.2009, 20:07:48
QUOTE(NodDeat @ 25.03.2009, 18:05:19)
це радше не хелп, а просто питання з цікавості:
Як отримується сертифікат для https-сторінок та який механізм його захисту, що йому всі довіряють?
Firefox от лається на сторінки із самопідписаними сертифікатами, і просить додати виняток. я так розумію, є певні «довірені» фірми, які видають ці сертифікати. Чому їх не можна підробити? Чи коштує цей сертифікат дофіга бабла?
Сертифікат видається на домен, як я розумію. А чи реально замінити DNS та зробити фішерську сторінку із сертифікатом, який не викликає підозри?
Вкратце схема выглядит так - есть такая штука, как SSL/TLS (http://en.wikipedia.org/wiki/Transport_Layer_Security). При установке шифрованного соединения браузер пытается аутентифицировать сайт с помощью его цифрового сертификата, подписанного доверенной CA (Certification Authority). Публичных CA существует довольно много, в частности, это Verisign, Thawte Consulting (бывшая контора Шаттлворта) etc. Также вполне можно поднять локальный CA или даже несколько. Например, для IPSec VPN. Стоит сертификат от доверенного провайдера, кстати, не так уж и много. Как работает цифровая подпись, можно посмотреть в гугле. Это тоже криптография с открытым ключом, но конкретно RSA там не используется. Еще там используется также хэширование (MD5 или семейство SHA). Всех деталей я не знаю, пока глубоко сюда не копал, но в общих чертах оно вот так и выглядит.
За счет чего это секьюрно - ну, RSA будет считаться достаточно безопасным, пока не существует алгоритмов разложения на простые числа за реальное время. Также это зависит от реалистичных методов подделки хэша. Для MD5 они, в принципе, существуют, но очень ресурсоемкие.
Впрочем, не так давно уже провели успешную атаку (proof-of-concept) на инфраструктуру цифровых сертификатов. Но это потребовало крайне серьезных капиталовложений. И эксплуатировало MD5 collisions.
Подделка DNS - это отдельный длинный и веселый разговор, впрочем. Короче говоря, успешно подделать и DNS, и сертификат практически нереально. Гораздо проще юзать куда более обычные методики.
Дописано о 20 годині 04 хвилин 54 секунд А, насчет локального СА - чтоб с его помощью кого-то там наябувать, нужно сначала уговорить всех производителей браузеров, что тебе можно верить.
Дописано о 20 годині 07 хвилин 48 секунд О! Нашел материалы по теме той атаки
там можно походить по линкам и посмотреть более детальное обьяснение, как это все работает.
NLD
25.03.2009, 20:19:15
А, еще насчет самоподписанных сертификатов.
Их можно (и нужно) генерить и самому. Только тут уже вопрос доверия юзера к ресурсу. Потому Файрфокс и просит посмотреть сертификат и добавить исключение. Вот, например, когда ты первый раз коннектишься к жаббер-серверу или почте (по SSL), тоже требуется принять сертификат ресурса. С RPM-репозиториями та же фигня (там GPG, но суть та же).
noddeat
25.03.2009, 21:17:45
Ну коротше, я так розумію, контори, які випускають довірені сертифікати, башляють бабло Мозіллі та іншим?
Питання актуальне для всяких сайтів, які беруть оплату картками. Якщо у них сертифікат підписано Thawte, чи означає це, що їм можна довіряти/їх загрібуть мєнти, якщо щось не так буде?
і ще: наскільки безпечно логінитись по ssh RSA-ключами? Ситуацію, що мій друг, якого я пустив за комп, спиздить мій приватний ключ, не розглядаю.
Дописано о 21 годині 17 хвилин 45 секунд
Потому Файрфокс и просит посмотреть сертификат и добавить исключение. Вот, например, когда ты первый раз коннектишься к жаббер-серверу или почте (по SSL), тоже требуется принять сертификат ресурса. С RPM-репозиториями та же фигня (там GPG, но суть та же).
я не знаю, чи це з точки зору usability правильно. Юзер привчається додавати ексепшени, і буде робити це на автоматі. А коли клікне на фішерську сторінку, навіть не подумає про те, що є якась небезпека. Якось треба то інакше зробити.
virus
25.03.2009, 22:24:22
(NodDeat @ 25.03.2009, 21:17:45)
Ну коротше, я так Питання актуальне для всяких сайтів, які беруть оплату картками. Якщо у них сертифікат підписано Thawte, чи означає це, що їм можна довіряти/їх загрібуть мєнти, якщо щось не так буде?
Із недостовірних джерел:
Ничто не мешает купить сертификат у Verisign или другого вендора на липовую контору или подставные личные данные. Они не могут проверить наличие у клиента юридических оснований выдавать себя за условные ООО «Рога и копыта» из г.Пермь, Россйская Федерация. Единственное, что проверяется при выпуске сертификата — это то, принадлежит ли вам домен, для которого вы его запрашиваете. Так что, как по мне, покупка сертфиката у Verisign’а — это всего-навсего демонстрация того, что компания готова выбросить 500$ и несколько человеко-часов, а то и больше на утрясение всех организационных вопросов, вместо того, чтобы потратить это время и деньги на разработку новых возможностей или же реальное улучшение безопасности системы. Вообще, Verisign — это для банков. Есть другие вендоры, с которыми проще и дешевле (пример — ниже).
В случае с провайдерами сертификатов - есть Service Level Agreement какой-то. И неустойки в случае каких-либо провтыков с их стороны.
Насчет того, кто кому башляет - честно говоря, хз, но списки trusted CA существуют. И вот этот механизм проверки сертификатов нужен как раз для всяких платежных сайтов и подобного. Для тех, кто работает с какими-либо финансовыми данными. И тут уже как раз механизм должен работать так - если ты привык видеть, что все работает нормально, то выброшенная ошибка должна свидетельствовать о том, что что-то не так. И все.
А, например, для какой-нибудь bugzilla или WebVPN достаточно один раз добавить исключение при настройке. Если потом что-то будет не так - можно проверить.
А насчет логина RSA-ключами - это вроде как дополнительная мера аутентификации. И вообще удобнее.
noddeat
25.03.2009, 22:52:58
А насчет логина RSA-ключами - это вроде как дополнительная мера аутентификации. И вообще удобнее.
в моєму випадку — основна, тобто логінюсь без вводу пароля. зробив це не тільки з огляду на те, що впадло вводити пароль, а й для зменшення гемору зв’язаного з копіюванням даних через scp.
єдине що хтось може спиздити вміст папки ~/.ssh з мого ноута, ну тоді він зможе залогінитись на всі доступні мені компи (благо для зловмисника — вони є в known_hosts). ну але я наразі не знаю, як це можна зробити без фізичного доступу до нього.
Дописано о 22 годині 52 хвилин 58 секунд
Насчет того, кто кому башляет - честно говоря, хз, но списки trusted CA существуют. И вот этот механизм проверки сертификатов нужен как раз для всяких платежных сайтов и подобного. Для тех, кто работает с какими-либо финансовыми данными. И тут уже как раз механизм должен работать так - если ты привык видеть, что все работает нормально, то выброшенная ошибка должна свидетельствовать о том, что что-то не так. И все.
суть в тому, що: — знайшов ти в гуглі якийсь незнаний тобі інтернет-магазин — захотів щось там купити — ти не знаєш, можна цьому магазину довіряти, чи ні. питання було в тому, чи можна це робити на підставі того, що в нього підписаний Versign-сертифікат.
Відповідь я розумію як: можна, але обережно
NLD
25.03.2009, 23:07:13
Как бы дело в том, что, как правило, за бугром магазины сами не занимаются такими вещами, а аутсорсят платежи. Например, тому же Paypal. То бишь, ты просто нажимаешь кнопочку и вводишь свои данные уже на сайте Пэйпала, а не сообщаешь их магазину. И весь прикол как раз и состоит в том, как убедить юзера, что он именно на сайте Paypal.
Да, в принципе, у нас так же. Яндекс.Деньги, Вебмани етц.
Дописано о 23 годині 07 хвилин 13 секунд Но, конечно, корректный SSL-сертификат еще не гарантирует, что тебе товар придет Это только в той или иной мере гарантия того, что страничка совершения транзакции принадлежит именно платежной системе и, следовательно, что а) платеж пройдет, б) пройдет только этот платеж
noddeat
25.03.2009, 23:11:23
ну, хто як. авіакомпанії самі беруть гроші.
про paypal ясно, але бувають і менш знані сайти. от нещодавно на автобус резервував квиток, а там воно перевело мене для оплати на якусь сторінку epay.pl (точну назву не пам’ятаю). я трохи напрягся, але перевірив сертифікат і ще раз правильність адреси тієї сторінки, звідки прийшов, і вирішив, що довіряти можна.
Amazon теж сам бере гроші. Правда, по суті, амазон — це контора, яка гарантує захист від шахраїв і виступає посередником у оплаті, а так книжки продають всякі дрібні ноунеймові продавці.
NLD
25.03.2009, 23:12:28
А, да. Насчет ~/.ssh на ноуте.
Никто пока не отменял такую штуку, как шифрование /home или вообще всего винта (тут есть нюансы, шифрованный /boot или не очень). Работать будет несколько медленнее, но зато больше уверенности, что если ноут стырят, данные не утекут.
noddeat
25.03.2009, 23:14:04
та ну нафіг, у мене нічого надтаємного нема якщо вкрадуть ноут, то ключі заміню на серверах, це зрозуміло.
а нафіга сервер автентифікації питає, чи можна довіряти урлу? це дратує, чесно кажучи. яка конкретно виникає загроза безпеки, якщо всім урлам буде довіряти?
noddeat
24.04.2009, 11:24:47
я тут ір-таблицями почав гратися, обмеживши для початку кількість під’єднань з одного ІР за хвилину для ssh. тепер хочу те саме зробити для веба, щоб прибрати кривого Петра нарешті.
Питання: при поточній відвідуваності Бонета, яку кількість з’єднань з одного ІР за хвилину ви порекомендуєте, щоб DOS-и різати і одночасно не чіпати нормальних користувачів? З урахуванням, що на серваку старий селерон зі 512М оперативки.
Друге питання: з’єднання http — це порт 80? як заблокувати вхідні з’єднання з усіх портів, крім, власне, 80-го і 22-го? чи порекомендували б ви мені заблокувати ping? якщо так, то як це зробити?
NLD
24.04.2009, 13:34:29
По первому пункту - касательно конкретно веб-серверов не могу что-то точно сказать. Но вообще в цисках по умолчанию стоит нижняя граница в 400 полуоткрытых соединений за последнюю минуту и верхняя в 500. Нижняя граница значит, что просто будут дропаться новые соединения и верхняя - что существующие полуоткрытые соединения будут обрубаться до нижней границы. Что такое полуоткрытое соединение TCP знаешь? Это значит, что от клиента пришел SYN, сервер отправил SYN ACK, но еще не получил от клиента ACK. Поскольку сервер ожидает подтверждения, он держит это соединение в памяти. Естественно, этим пользуются и подтверждение не отправляют. Атака называется SYN flood.
Короче, я тебе щас перечислю все значения по умолчанию, а ты уже делай с ними что хочешь. Время ожидания в полуоткрытом состоянии до закрытия сессии - 30 сек Время ожидания в установленном состоянии (без активности) - 1 час Общее количество новых полуоткрытых соединений, нижняя граница - 400 Общее количество новых полуоткрытых соединений, верхняя граница - 500 Скорость, с которой появляются новые соединения, нижняя граница - 400/мин Скорость, с которой появляются новые соединения, верхняя граница - 500/мин Количество полуоткрытых соединений от одного хоста - 50
По второму пункту - да, HTTP это 80-ый порт. Если еще используется HTTPS - это 443-ий. Пинги я бы рубить не стал. Впрочем, если сильно захочется, полностью это называется ICMP echo request. Но вообще трогать ICMP не стоит. Это слишком полезная штука.
noddeat
24.04.2009, 15:11:31
дякую. а як це в iptables прописати?
По второму пункту - да, HTTP это 80-ый порт. Если еще используется HTTPS - это 443-ий. Пинги я бы рубить не стал. Впрочем, если сильно захочется, полностью это называется ICMP echo request. Но вообще трогать ICMP не стоит. Это слишком полезная штука.
ок. https на бонеті нема. колись хотіли веб-пошту робити @bo.net.ua, але потім заглохло.
Когда я писал, предполагалось, что ты способен на man iptables
да, но я лінивий дякую ще раз за допомогу
NLD
24.04.2009, 15:43:52
Ладно, покаюсь. В общем-то, я в иптаблесах сам пока что... гм.... не силен. Дождешься сюда virus’a - он, наверное, сможет что-то конкретное подсказать. Как бы в прошлом админ гейта ЮЗИКа, все такое.
Но в конкретно том туториале я подобные вещи где-то видел. Там куча примеров с обьяснениями.
Шарамариагга
24.04.2009, 17:13:53
(NodDeat @ 1.04.2009, 19:53:17)
а нафіга сервер автентифікації питає, чи можна довіряти урлу? це дратує, чесно кажучи. яка конкретно виникає загроза безпеки, якщо всім урлам буде довіряти?
Это зависит от тех данных, которые провайдер отсылает клиенту.
noddeat
24.04.2009, 20:18:54
(Абырвалг @ 24.04.2009, 17:13:53)
(NodDeat @ 1.04.2009, 19:53:17)
а нафіга сервер автентифікації питає, чи можна довіряти урлу? це дратує, чесно кажучи. яка конкретно виникає загроза безпеки, якщо всім урлам буде довіряти?
Это зависит от тех данных, которые провайдер отсылает клиенту.
стоп-стоп-стоп, це я, добровільно автентифікуюсь на сервері аааа через OpenID. І якщо в мене стоять правильні куки (тобто юзаю я свій власний, а не чужий ID), сервер має мене авторизувати, або не авторизувати. Чому його єбе, що я логінюсь на сервері ааа і передаю йому якісь дані, якщо я це роблю свідомо і добровільно? Чи може він боїться, що сервер ааа робить авторизацію без мого відома, вгадавши мій OpenID? це було б дуже цікаво, але дуууже малоймовірно. Для параноїків нехай би була така опція, а нормальних людей тре лишити в спокої.
Дописано о 21 годині 18 хвилин 54 секунд чи може просто зробити так:
iptables -A INPUT -m state --state NEW -m recent --s iptables -A INPUT -m state --state NEW -m recent --update --seconds 60 --hitcount 500 -j DROP
і не вийо?
virus
24.04.2009, 20:26:53
(NLD @ 24.04.2009, 16:43:52)
Ладно, покаюсь. В общем-то, я в иптаблесах сам пока что... гм.... не силен. Дождешься сюда virus’a - он, наверное, сможет что-то конкретное подсказать. Как бы в прошлом админ гейта ЮЗИКа, все такое.
Но в конкретно том туториале я подобные вещи где-то видел. Там куча примеров с обьяснениями.
Я свого часу робив за цими настановами: http://www.gentoo.org/doc/en/security/secu...?part=1&chap=12 Десь спростив, десь доповнив. Тоді захисту від брутфорсу по ssh не передбачалось, оскільки такі речі треба робити з повним усвідомленням власних дій.
noddeat
24.04.2009, 20:42:02
(virus @ 24.04.2009, 20:26:53)
(NLD @ 24.04.2009, 16:43:52)
Ладно, покаюсь. В общем-то, я в иптаблесах сам пока что... гм.... не силен. Дождешься сюда virus’a - он, наверное, сможет что-то конкретное подсказать. Как бы в прошлом админ гейта ЮЗИКа, все такое.
Но в конкретно том туториале я подобные вещи где-то видел. Там куча примеров с обьяснениями.
Я свого часу робив за цими настановами: http://www.gentoo.org/doc/en/security/secu...?part=1&chap=12Десь спростив, десь доповнив. Тоді захисту від брутфорсу по ssh не передбачалось, оскільки такі речі треба робити з повним усвідомленням власних дій.
о, дякую, там аж готовий скрипт є. там же ж акурат з’єднання по ssh лімітуються по 1 за секунду, з’єднання www не лімітуються у тому прикладі.
Дописано о 21 годині 42 хвилин 02 секунд
що буде, якщо я зараз розіп’ю пляшку вина, яку мені подарували і наберу:
iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT DROP
вот весело буде
virus
24.04.2009, 20:47:39
(NodDeat @ 24.04.2009, 21:42:02)
що буде, якщо я зараз розіп’ю пляшку вина, яку мені подарували і наберу:
iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT DROP
вот весело буде
/etc/init.d/firewall panic
noddeat
24.04.2009, 22:31:23
ага, вже побачив, гарний параметр. запустив один раз, і купуй квиточок до Києва, пдуй на Тургенівську, витягуй сервер з гермозони та відкривай своїми кривими руками назад доступ до ssh.
а взагалі, якщо нас сильно досять, то провайдер сам вирубає і вломлює люлів за криворукість.
Дописано о 23 годині 31 хвилин 23 секунд іще ламерське питання: все, що я запхаю в /etc/init.d, саме запуститься при запуску системи? ще з урахуванням того, що в убунтів там upstart якийсь, треба в інше місце ініт-скрипти пхати.
Москалевський
25.04.2009, 10:01:39
а ми на фі дозволяємо ссш тіки з fcss.uma.kiev.ua, логінимось на нього, а з нього на сервак.
тре не забути шоб скрипт був екзкутабл і
update-rc.d scriptname defaults
noddeat
25.04.2009, 11:18:08
а ми на фі дозволяємо ссш тіки з fcss.uma.kiev.ua, логінимось на нього, а з нього на сервак.
донедавна так і було: доступ був дозволений тільки з кількох компів. з певних причин цю політику довелось змінити.
Chantale
25.04.2009, 14:39:26
(NodDeat @ 24.04.2009, 23:31:23)
Дописано о 23 годині 31 хвилин 23 секундіще ламерське питання: все, що я запхаю в /etc/init.d, саме запуститься при запуску системи? ще з урахуванням того, що в убунтів там upstart якийсь, треба в інше місце ініт-скрипти пхати.
Традиційно, в папці /etc/init.d/ кладуть обгортки-скрипти навколо сервісів, що можуть запускатись на хості. Скрипти мають розуміти 3 параметра мінімум — start,stop,restart. Потім, знов таки, традиційно(System V), з цих скриптів роблять сим.посилання(ібо нах копіювати?) на /etc/rc.N/[S|K]XXservicename. N — номер runlevel-а, S — на цьому рівні цей скрипт треба start, K — на цьому рівні цей скрипт треба stop, XX — порядковий номер для того щоб організувати очередність запуску, servicename — для краси, щоб не забути де шо. Майже всі системи в тій чи іншій мірі це успадкували. Напр. у Gentoo зроблено окремі символьні ранлевели(boot, default etc.) але суть та сама.
(Москалевський @ 25.04.2009, 11:01:39)
а ми на фі дозволяємо ссш тіки з fcss.uma.kiev.ua, логінимось на нього, а з нього на сервак.
І сенс?
noddeat
25.04.2009, 15:21:20
ага, ніби є це все. в який мені ранлевел краще запхати?