1 Востаннє редагувалося NaharD (25.05.2017 22:00:17)

Тема: SourceMod та amxModX скрипнинг на gamgo.net

Пані та панове, прошу звернути вашу увагу на ще один мій проект - gamgo.net

gamgo.net - це мін другий проект після css.in.ua

gamgo.net - довідник по SourceMod та AmxModX.

Для тих хто не знає, що воно таке.

SourceMod та AmxModX - це надбудови над MetaMod, котрий, в свою чергу, надбудова над api рушія source від valve. Ці дві речі суттєво спрощуться зміну ґеймплея і написання різноманітних плагінів для кс та інший ігор на рушії source

Отже, я написав свій парсер інклюд файлів, котрий набагато просунутіший за офіційного - в мене проіндексовані дефайни, є пошук по класам, присутні коментарі, реєстрація через соц. мережі і багато іншого, чого не зміг дати офіційний довідник.

Виглядає це так, для SourceMod

https://replace.org.ua/extensions/om_images/img/592733281dfb8/mainSourcemod.png

Оскільки опис дуже короткий, напишу трохи про його створення.

Прихований текст

Я просто не знаю, що ще можна написати про нього.

Почалося все в 2008, коли я поступив в КРМК (Київський радіомеханічний коледж) на спеціальність, - "Обслуговування комп'ютерних систем та мереж". Я тоді майже нічого не знав про комп'ютери, але саме тоді в мене він з'явився. І перше, що я взнав - як грати в контр страйк соурс. Мене підсадив одногрупник.

Грав я не довго, згодом мені закортіло, щоб грали у мене. Завантажив я свій сервер, разом з одногрупником його запустив. І поїхало. Адмінки, скіни, різні доповнення. І перший плагін який я змінив, це був !rs (reset score) в ньому я прибрав, з 10 разу, одну перевірку і дозволив гравцям, котрі в спектрах, онулювати всій рахунок. Плагін скомпілювався і запрацював. Це був мій перший контакт з програмним кодом. Згодом я доволі непогано навчився писати плагіни. Одні з найкращих, це супер граната, рюкзак для зброї, міні зомбімод, день і ніч і ще багато чого, що я просто забув, бо вже 2 роки цим не займаюсь.

Після цього я зрозумів, що треба свій сайт. Перший сайт був на юкозі, другий - джумлі, третій - друпал, четвертий - phpbb. Тоді я зрозумів, що найкращий варіант - це власнонаписаний сайт. Спочатку зробив на чистому php, потім - почав використовувати сторонні бібліотеки. Вбудував на нього панель керування ігровим сервером.

Коли стало зрозуміло, що такий сайт нікому не потрібен, я вирішив зробити, щось, що буде завжди актуальним і за чим не доведеться так системно доглядати. Так з'явилася перша версія sm довідника. Пізніше я взнав про фреймворки і переписав довідник на yii1. Після армії я зробив вже глобальне оновлення на yii2.

Головна мета цього оновлення - відлагодити новий модуль user із всіма його прибамбасами. І вже після, перенести його на css.in.ua

Тож, хто писав, що лінь реєструватися - скоро виправлю це.
varkon говорив, що залюбки доповнить мої записи про ssl - скоро вишлю запрошення)

скоро

Скоро - не не більше чим через 1.5 міс.

Вже тоді, після цього оновлення, я зроблю тему в цьому розділі і буду просити адміністрацію закріпити її і додати сайт в друзі.
Будемо поширювати український контент разом.

Такі будуть мої найближчі плани.

2

Re: SourceMod та amxModX скрипнинг на gamgo.net

Ви в курсі, що на даний момент не працює авторизація від google та facebook? Якось з горем пополам працює авторизація від github, але чому ви навіть email не берете у них? - Ви ж запитуєте права на отримання email.

Подякували: NaharD1

3

Re: SourceMod та amxModX скрипнинг на gamgo.net

Виправив, прибрав фільтр для соціальних реєстрацій (хоч це не правильно). Думав зробити функцію генерації логінів з повних імен, типу Драган Володимир => Drahan_Volodymyr розділивши повне ім'я та логін. Але тут чомусь думаю, а чому це повне ім'я - не логін? Най так і буде. Тим паче змінити логін можна через кабінет.

На рахунок пошти, я теж так думав, поки, практично не отримав, такий ось скромненький масивчик:

array(3) {
  ["id"]=>
  string(21) "104533254153473454675"
  ["name"]=>
  string(31) "Володимир Драган"
  ["url"]=>
  string(45) "https://plus.google.com/104533254153473454675"
}

Єдиний хто надає більше інфи, це стім, там ще можна аватара відразу поставити, а от пошту жоден з них не дає.

4 Востаннє редагувалося /KIT\ (05.07.2021 11:09:09)

Re: SourceMod та amxModX скрипнинг на gamgo.net

del

5

Re: SourceMod та amxModX скрипнинг на gamgo.net

Ні, логін краще ніколи не змінювати, а якщо й змінювати, то лише зі зміною адреси основної пошти користувача. Тобто у якості логіна краще брати email. Окрім цього, якщо користувач один раз зайшов з однієї соцмережі, а іншого разу з іншої, то що ви будете створювати два різні облікові записи? Знову ж таки, краще користувача розпізнавати за адресою пошти.

Стосовно отримання масиву від OAuth 2 без пошти, то ви щось десь не так робите. З усіх найвідоміших соціальних мереж, лише Twitter не передає пошти (по крайній мірі так було з пів року назад). Решта - передають пошту як базові дані.

Реєстрація через соцмережі повинна спрощувати реєстрацію на вашому сайті. А без пошти від соцмереж, вам необхідно писати код для підтвердження пошти.

6

Re: SourceMod та amxModX скрипнинг на gamgo.net

До речі, ось у цій моїй публікації показано в тому числі і як отримувати дані від Google OAuth 2 за допомогою офіційного PHP-клієнта від Google.

Хоча у мене бекенд на Node.js, але суті то не змінює, на клієнті я використовую цей метод і Google мені надає саму мінімальну базову інформацію: Id, Name, Email, Image URL.

Схоже ви використовуєте котрийсь із плагінів вашого фреймворка, в противному разі, думаю, знали б про це.

Заради тесту, можете зареєструватись на моєму сайті. Якщо виникнуть питання, там є коментарі. За разом і я протестую чи все працює коректно.

П.С. Зараз на своєму сайті спостерігаю досить рідко певні проблеми з виявленням змін (не показується якась в'юха після певної події). Хоча ви навряд чи побачите подібне, але все ж якщо побачите, то просто клікаєте в будь-якому місці поточної сторінки =).

Подякували: LoganRoss, NaharD2

7 Востаннє редагувалося NaharD (26.05.2017 15:50:20)

Re: SourceMod та amxModX скрипнинг на gamgo.net

Підказують, що, банально, у додатка недостатньо прав. І дійсно, він не запитує такого дозволу, хоча я прикрутив його ще при створенні. Дивно. Ось які дозволи потрібні додатку
http://не-дійсний-домен/i9/174116170cd03ee70dbbb782e4daaf4f/1495806288/31907/1148991/Screenshot_800.jpg
А ось те, що він запитує
http://не-дійсний-домен/i9/d5590247fdc2bbd15634054425b5e579/1495806302/43285/1148991/f_.png

8

Re: SourceMod та amxModX скрипнинг на gamgo.net

NagarD написав:

Підказують, що, банально, у додатка недостатньо прав. І дійсно, він не запитує такого дозволу...

Не зрозумів чого не запитує ваш застосунок, але зрозумів, що ось тут user_friends - це вже небазова інформація, і щоб вам facebook передавав цю інформацію, необхідно проходити додаткову перевірку, доводити що ця інформація вам дійсно потрібна... Думаю список друзі вам справді не потрібен.

9 Востаннє редагувалося ktretyak (26.05.2017 16:00:38)

Re: SourceMod та amxModX скрипнинг на gamgo.net

А ні, схоже, що це таки базова інфа (нижче це описано).

Тобто ваш застосунок запитує також саму базову інформацію, права на які мають усі користувачі Facebook OAuth 2. Тобто у вас таки щось не те із отриманням даних від провайдерів OAuth 2.

10 Востаннє редагувалося NaharD (26.05.2017 19:54:20)

Re: SourceMod та amxModX скрипнинг на gamgo.net

Чудово, отримав пошту користувача.

Як я зрозумів, при створенні додатку ти даєш дозволи які він зможе запитувати, а які дозволи він буде запитувати - за це вже відповідає параметр scope.

Маємо, щось типу

    https://www.facebook.com/dialog/oauth?
    display=popup&
    redirect_uri=https%3A%2F%2Fgamgo.net%2Fen%2Fuser%2Foauth%2Ffacebook&
    type=web_server&
    scope=email& // скоуп public_profile буде за замовчуванням
    response_type=code&

Ось тепер вже можна думати про прив'язку декількох соціалок до одно профіля. Але спершу розібреруся з ґітом. Бо у гугла вже зрозуміло, що теж треба впаяти відповідний скоуп.

Ґіт як виявляється працює, але користувач має дозволити публікацію своєї пошти.
https://i.stack.imgur.com/fN8dy.png

11

Re: SourceMod та amxModX скрипнинг на gamgo.net

Це у вас хіба свіжий прінт-скрін? У мене показує зовсім інше меню...

На скільки я зрозумів, у користувачів зараз є можливість приховувати свою пошту, але все-одно OAuth прийде з поштою такого формату: [ім'я користувача]@users.noreply.github.com.

12

Re: SourceMod та amxModX скрипнинг на gamgo.net

Маленький фікс і тепер при вході через іншу соціальну мережу, другий обліковий запис не створюється, але при умові, що і перший oauth і другий віддали пошту.

Прихований текст
ktretyak написав:

Це у вас хіба свіжий прінт-скрін? У мене показує зовсім інше меню...

Скрін знайшов в інтернеті.
Пошта дозволена для показу.

    Array
(
    [login] => NaharD
    [id] => 11397792
    [avatar_url] => https://avatars3.githubusercontent.com/u/11397792?v=3
    [gravatar_id] => 
    [url] => https://api.github.com/users/NaharD
    [html_url] => https://github.com/NaharD
    [followers_url] => https://api.github.com/users/NaharD/followers
    [following_url] => https://api.github.com/users/NaharD/following{/other_user}
    [gists_url] => https://api.github.com/users/NaharD/gists{/gist_id}
    [starred_url] => https://api.github.com/users/NaharD/starred{/owner}{/repo}
    [subscriptions_url] => https://api.github.com/users/NaharD/subscriptions
    [organizations_url] => https://api.github.com/users/NaharD/orgs
    [repos_url] => https://api.github.com/users/NaharD/repos
    [events_url] => https://api.github.com/users/NaharD/events{/privacy}
    [received_events_url] => https://api.github.com/users/NaharD/received_events
    [type] => User
    [site_admin] => 
    [name] => Володимир
    [company] => 
    [blog] => 
    [location] => Місто Кия
    [email] => nagard***************
    [hireable] => 
    [bio] => 
    [public_repos] => 1
    [public_gists] => 0
    [followers] => 0
    [following] => 0
    [created_at] => 2015-03-09T22:12:16Z
    [updated_at] => 2017-05-26T20:50:36Z
)

Пошта прихована.

    Array
(
    [login] => NaharD
    [id] => 11397792
    [avatar_url] => https://avatars3.githubusercontent.com/u/11397792?v=3
    [gravatar_id] => 
    [url] => https://api.github.com/users/NaharD
    [html_url] => https://github.com/NaharD
    [followers_url] => https://api.github.com/users/NaharD/followers
    [following_url] => https://api.github.com/users/NaharD/following{/other_user}
    [gists_url] => https://api.github.com/users/NaharD/gists{/gist_id}
    [starred_url] => https://api.github.com/users/NaharD/starred{/owner}{/repo}
    [subscriptions_url] => https://api.github.com/users/NaharD/subscriptions
    [organizations_url] => https://api.github.com/users/NaharD/orgs
    [repos_url] => https://api.github.com/users/NaharD/repos
    [events_url] => https://api.github.com/users/NaharD/events{/privacy}
    [received_events_url] => https://api.github.com/users/NaharD/received_events
    [type] => User
    [site_admin] => 
    [name] => Володимир
    [company] => 
    [blog] => 
    [location] => Місто Кия
    [email] => 
    [hireable] => 
    [bio] => 
    [public_repos] => 1
    [public_gists] => 0
    [followers] => 0
    [following] => 0
    [created_at] => 2015-03-09T22:12:16Z
    [updated_at] => 2017-05-27T05:21:12Z
)

13

Re: SourceMod та amxModX скрипнинг на gamgo.net

До речі, на скільки я пам'ятаю, github раніше не видавав пошти із загальної сторінки користувача. Треба було робити окремий запит до api.github.com/user/emails?access_token=your-token щоб він видав її.

14

Re: SourceMod та amxModX скрипнинг на gamgo.net

NagarD, у вас на сайті для залогінення через github використовується клієнтський JavaScript. В документації github я не побачив що у них є офіційна JavaScript-версія для цього. Може я погано шукав, це у вас власний скрипт, чи все-таки офіційний?

15

Re: SourceMod та amxModX скрипнинг на gamgo.net

Аха, у них з'явився GraphQL API v4 - це щось новеньке, сподіваюсь вони нарешті нададуть JavaScript-код для OAuth 2.

Подякували: NaharD1

16

Re: SourceMod та amxModX скрипнинг на gamgo.net

ktretyak написав:

NagarD, у вас на сайті для залогінення через github використовується клієнтський JavaScript. В документації github я не побачив що у них є офіційна JavaScript-версія для цього. Може я погано шукав, це у вас власний скрипт, чи все-таки офіційний?

Не зовсім зрозумів, але ось таким чином я отримую дані користувача https://developer.github.com/apps/build … auth-apps/

17

Re: SourceMod та amxModX скрипнинг на gamgo.net

На моєму сайті, коли відбувається вхід через github, йде переадресація користувача спочатку до github-API, а потім назад до мене на сторінку для залогінення.

Таких переадресацій можна уникнути, якщо використовувати JavaScript-код. Що робить цей код: після того, як користувач клікає по кнопці залогінення, спливає додаткове вікно браузера у якому й відбуваються авторизація, після чого воно закривається і основне вікно браузера нікуди не переадресовує користувача. Таким кодом зручніше користуватись, особливо на SPA-сайтах.

Поки що, я не бачив в офіційній документації щоб цей JavaScript-код надавався. Звичайно ж я бачив сторонні бібліотеки, але мене цікавить саме офіційна версія коду.

18

Re: SourceMod та amxModX скрипнинг на gamgo.net

Це від вас залежить. Якщо відкриєте посилання з атрибутом target="_blank". То ґіт відкриється в новій вкладці, а по завершенню авторизації, користувача кине на redirect_uri, котрий ви передаєте в ґет параметрах. Наприклад у вас це - "redirect_uri=https://hub.org.ua/pre-account/login?github=1". Відповідно відкриєте в новому вікні - ґіт буде в новому вікні.

19

Re: SourceMod та amxModX скрипнинг на gamgo.net

Дуже схоже, що ви самі не додавали скрипти для OAuth ні на боці браузера, ні на боці бекенда. Таки мабуть поставили готові плагіни і забули за них.

У мене target="_blank" там лише через вибрану схему взаємодії з Github-API. Якщо ви клікните кнопки інших соцмереж, то побачите що спливає нове вікно... Оці інші соцмережі мають офіційні JavaScript-скрипти спеціально підготовлені для взаємодії з їхніми API.

20

Re: SourceMod та amxModX скрипнинг на gamgo.net

Не розумію, що ви такою риторикою переслідуєте?

Хочете вивести мене на чисту воду? - Так, у мене сторонній плагін.

Хочете кращого юзабіліті?  Зробіть його.

Прихований текст

Як це працює у мене https://gamgo.net/assets/a44c5acd/js/eauth.js. Цей скрипт працює зі всіма видами авторизацій. Все уніфіковано і просто.

Подякували: ostap34PHP1