технарь |
Отправлено: 6 сентября 2022 — 12:32 • Тема: Список IP для блокировки • Форум: Всё подряд |
Ответов: 12 Просмотров: 2157
|
Цитата от Marych: А что там может пойти не так? Сейчас уже не помню - по моему служба отказалась запускаться... Может это решение только для серверных осей и на обычную 32 разрядную семерку оно не катит. |
технарь |
Отправлено: 6 сентября 2022 — 03:57 • Тема: Отпуск в Белоруссии • Форум: Всё подряд |
Ответов: 5 Просмотров: 2525
|
Да все никак себе картиночный менеджер к форуму прицепить времени не найду. Готовые решения есть, но всегда что-то не нравится. Все думаю вот переработаю под себя и тогда уже... Лет пять уже перерабатываю.
Фотки днем перезалью... |
технарь |
Отправлено: 6 сентября 2022 — 03:52 • Тема: Список IP для блокировки • Форум: Всё подряд |
Ответов: 12 Просмотров: 2157
|
Цитата: Если ещё короче - поставь на винду IPBan Пробовал, но что-то пошло не так как ожидалось - в итоге забил. В принципе меня не напрягает раз в сутки зайти и посмотреть логи. Ну и дописать айпишник руками в файрвол если что. |
технарь |
Отправлено: 5 сентября 2022 — 10:24 • Тема: Список IP для блокировки • Форум: Всё подряд |
Ответов: 12 Просмотров: 2157
|
Если кратко - есть смешной домашний сервер. RDP порт открыт для доступа из внешней сети. Периодически антивирус фиксирует попытки подбора пароля. Если вижу такую настойчивую активность в логах - блокирую IP умника через файрвол. За время сформировался небольшой список...
Список IP (Показать)5.62.19.53
5.62.19.67
31.43.185.3
31.43.185.8
31.43.185.9
31.43.185.31
45.15.19.130
45.141.84.116
45.141.84.119
45.141.87.11
45.141.87.18
45.141.87.21
45.143.201.62
62.122.195.56
82.202.247.37
88.86.83.25
89.189.163.19
91.122.194.239
91.240.242.15
91.240.242.16
92.114.153.67
92.255.85.163
92.255.85.181
92.255.85.201
92.255.85.202
92.255.85.225
95.68.242.38
109.107.166.13
152.89.196.21
162.215.219.217
176.96.230.91
176.96.230.110
176.111.173.77
178.176.229.24
179.43.167.210
185.156.72.25
185.156.72.27
185.156.72.29
185.156.72.31
185.176.220.106
193.56.146.191
193.142.146.209
193.142.147.7
194.26.29.40
194.26.29.48 |
технарь |
Отправлено: 2 июля 2022 — 12:29 • Тема: Система "хуков" • Форум: SMF Community |
Ответов: 10 Просмотров: 2261
|
Internal functions
integrate_buffer
Called from: Subs.php, during obExit, used to add functions to be run on the content prior to it being sent to the user, in the spirit of last-minute widespread content changes.
Purpose: To allow you to modify the content globally before sending to the user, for example SimpleSEF uses this hook to actually replace links.
Accepts: 1 function name.
Sends: $buffer, a string representing the page as a whole.
Unlike other functions, this hook explicitly requires a return value - not all other hook functions handle return values. The return value is the buffer contents.
integrate_exit
Called from: Subs.php, during obExit, used when finally leaving the theme system either in the event of normal execution or fatal errors (i.e. any time a full page is generated that isn't a redirect/attachment)
Purpose: To allow you to do final shutdown on external apps, close connections, free resources. Can also be used with portals or other output handling functions.
Accepts: 1 function name.
Sends: boolean value whether the footer should be output (i.e. footer should be done and not in wireless template)
integrate_fix_url
Called from: News.php, during fix_possible_url().
Purpose: To allow the RSS feeds to have adjustments made for queryless style URLs - and any other URL changes that may be required.
Accepts: 1 function name.
Sends: $val, the original URL
integrate_magic_quotes
This one isn't actually a function, it's a setting that's relevant. PHP's idea of magic quoting is one of the most irritating ideas it has ever had, to attempt to automatically be able to quote values that are incoming from userland. Unfortunately its behavior is somewhat unpredictable and therefore unreliable.
In the process of sanitizing $_GET, SMF does its own clean-up of magic quotes, handling the various types that may be incoming, but other systems do not do this and rely on default PHP behavior. This setting overrides SMF's behavior and returns it to the default.
integrate_redirect
Called from: Subs.php, during redirectexit(), immediately prior to physically issuing redirect headers.
Purpose: To allow code to modify the destination or duration before redirect, potentially of any redirect issued in the forum.
Accepts: 1 function name.
Sends: $setLocation, $refresh
$setLocation - the final URL it should redirect to, as a full URL.
$refresh - boolean, whether to send a Refresh header, or more preferably a Location header. |
технарь |
Отправлено: 2 июля 2022 — 12:26 • Тема: Система "хуков" • Форум: SMF Community |
Ответов: 10 Просмотров: 2261
|
Profile
integrate_profile_areas
Called from: Profile.php, just after the definition of the default profile areas (i.e. the menu entries for the profile section)
Purpose: allows add or modify the menu in the profile area
Accepts: 1 function name.
Sends: $profile_areas
Admin panel
integrate_admin_areas
Called from: Admin.php, during AdminMain(), immediately after the default SMF admin areas have been defined.
Purpose: To allow code to modify the admin menu, adding or removing areas, sections or subsections from it.
Accepts: 1 function name.
Sends: $admin_areas that is the array of admin areas.
integrate_core_features
Called from ManageSettings.php at the beginning of the function ModifyCoreFeatures, just after the $core_features has been populated with the default SMF's Core Features.
Purpose Allows adding new features to the Core Features list in the administration panel.
Accepts 1 function name
Sends $core_features
integrate_general_mod_settings
Called from: ManageSettings.php, at the beginning of the function ModifyGeneralModSettings
Purpose: allows add new settings for mods to the page Modification Settings
Accepts: 1 function name.
Sends: $config_vars
integrate_modify_modifications
Called from: ManageSettings.php, at the beginning of the function ModifyModSettings
Purpose: allows add new pages for mod settings to the Modification Settings section.
Accepts: 1 function name.
Sends: $subActions, an array where the key is the subaction and the value is the name of the function to be called for the corresponding subaction
$subActions = array(
'general' => 'ModifyGeneralModSettings',
);
To add a new subaction a mod using this hook should contain:
$subActions['mysubaction'] = 'mysubaction_function'; |
технарь |
Отправлено: 2 июля 2022 — 12:24 • Тема: Система "хуков" • Форум: SMF Community |
Ответов: 10 Просмотров: 2261
|
Posting and Personal Messages
integrate_bbc_buttons
Called from: Subs-Editor.php, during create_control_richedit(), just after the $context['bbc_tags'] array has been filled with the information regarding bbcode buttons.
Purpose: allows modify the appearance of the bbcode buttons in the rich editor (i.e. the editor with all the controls)
Accepts: 1 function name.
Sends: $context['bbc_tags']
integrate_bbc_codes
Called from: Subs.php, after all the information regarding the default bbcode tags are loaded in the $codes array
Purpose: allows easily add or remove or change the behaviour of bbcode tags.
Accepts: 1 function name.
Sends: $codes
integrate_create_topic
Called from: Subs-Post.php, if a post creates a new topic, once all other SMF processing has been done (like stats updates)
Purpose: Allows you to add topics to a CMS once they are posted. It would likely be better for something such as the Twitter mod to use this as a point to call, rather than modifying the code itself.
Accepts: 1 function name.
Sends: $msgOptions, $topicOptions, $posterOptions - the same three variables used to actually create a topic (see the Function Database for createPost for more), once the changes have been applied, so $topicOptions['id'] is the topic's id, $msgOptions['id'] is the id of its message, for example.
integrate_outgoing_email
Called from: Subs-Post.php, once an email has been assembled, just before it is inserted into the master email queue.
Purpose: Allows you to process or otherwise do something with any email before it is actually sent out.
Accepts: 1 function name.
Sends: $subject, $message, $headers
$subject - listing the email's subject
$message - its main message
$headers - the headers (which includes who it's to, who it's from, date, return path and other things)
integrate_personal_message
Called from: Subs-Post.php, sendpm() once the post is sanitized.
Purpose: To allow you to send or otherwise preprocess personal messages, you could export them to a third party CMS or similar.
Accepts: 1 function name.
Sends: $recipients, $from['username'], $subject, $message
$recipients - an array containing potentially two elements, 'to' and 'bcc', each of which will be an array of membernames that the message is going to
$from['username'] - the username sending the message
$subject - PM's subject
$message - message body |
технарь |
Отправлено: 2 июля 2022 — 12:23 • Тема: Система "хуков" • Форум: SMF Community |
Ответов: 10 Просмотров: 2261
|
Registration, and other user hooks
integrate_activate
Called from: Multiple places.
ManageMembers.php - during admin approval of members, immediately after approving a member
Profile-Actions.php - activating an account through the profile area
Register.php - activating an account from member activation, immediately after sending the message and immediately before actioning it.
Purpose: To ensure a member is activated in a separate system when activated in SMF itself.
Accepts: 1 function name.
Sends: string representing the member's name (since that is guaranteed to be consistent, member id is not)
integrate_change_member_data
Called from: Subs.php, updateMemberData(), immediately before processing to add to SMF's own tables.
Purpose: To ensure data is migrated to an external system as well as updating SMF's own tables.
Accepts: 1 function name.
Sends: $member_names, $var, $data[$var]
$member_names - an array of the names of members
$var - name of the variable being updated
$data[$var] - the new value
NOTE: Not all values are exported through this hook. Only the following will be exported - any other values updated will not.
'member_name' - user name
'real_name' - display name
'email_address' - email address
'id_group' - primary user group (only)
'gender' - male/female
'birthdate' - date of birth
'website_title' - name of website specified in profile
'website_url' - address of website specified in profile
'location' - the location stated in profile
'hide_email' - whether the user's email address should be considered private (admin visible only)
'time_format' - the user's time format string for their own time format
'time_offset' - the user's own time offset (from profile)
'avatar' - gallery or URL specified avatar
'lngfile' - user's language
integrate_delete_member
Called from: Subs-Members.php, deleteMembers(), immediately before logging that the action has been done (which is before the SMF tables are all updated)
Purpose: To ensure that the external app is updated when a user's account is removed.
Accepts: 1 function name.
Sends: Number representing user id being deleted from SMF tables.
integrate_register
Called from: Subs-Members.php, just before a user is physically added to the members table. (Same route runs whether it is a conventional user signup or from the admin panel) Validation on details has been carried out by this time.
Purpose: Could be used to do further validation of a user, e.g. an external lookup service or other system that the user accounts are linked to. Alternatively could be used to export user details to an external app and sign them up at the same time.
Accepts: 1 function name.
Sends: $regOptions, $theme_vars
$regOptions is a complex array variable. While the full list is in Subs-Members, the most pertinent for most cases are:
$regOptions['username'] - username used to sign up
$regOptions['password'] - password supplied (unhashed!)
$regOptions['email'] - email address supplied on signup
$regOptions['require'] - whether the account is immediate registration ('normal'), email activation ('activation'), COPPA form ('coppa') or admin approval (anything else, notionally 'admin')
$regOptions['memberGroup'] - primary membergroup id to assign (not validated) |
технарь |
Отправлено: 2 июля 2022 — 12:22 • Тема: Система "хуков" • Форум: SMF Community |
Ответов: 10 Просмотров: 2261
|
Log in/log out
integrate_login
Called from: LogInOut.php, DoLogIn(), almost first instruction in the function - used during user actively logged in (session exists, more validating that than anything else) Register.php, Register2(), once registration is completed, just before setting up user cookie - so registration will log them in to both SMF and integrated app
Purpose: To log user in on both integrated code and in SMF at the same time.
Accepts: 1 function name.
Sends: three variables: string of user's username, string of password (hashed) or null if not supplied, length of cookie lifetime in minutes
integrate_logout
Called from: LogInOut.php, LogOut(), if the user is not a guest, after unsetting some session variables, but before clearing their entry in {db_prefix}log_online. They are, technically, still listed as online when the hook is called.
Purpose: To initiate logout in integrated code.
Accepts: 1 function name.
Sends: string representing user's name
integrate_reset_pass
Called from: Lots of places Profile-Modify.php, authentication(), just before a new password is hashed and about to be inserted into the database (user modifying own password, I think) Profile.php, ModifyProfile(), for admin modifying another user's password (I think) Reminder.php, setPassword2(), for when a user resets their password from reminder email Reminder.php, SecretAnswer2(), for when a user successfully posts their secret answer Subs-Auth.php, resetPassword(), for when user has forgotten their password and a new one is emailed to them.
Purpose: For notifying external code when a user's password is modified outside of registration.
Accepts: 1 function name.
Sends: $old_user, $user, $newPassword
$old_user - frequently the same as $user, in some cases it can be an unsanitised version of the username
$user - the user name
$newPassword - the newly set password, from whatever source
integrate_validate_login
Called from: LogInOut.php, Login2(), just before actually calling for the user's record in the database.
Purpose: To validate credentials in an external data source as well as with SMF.
Accepts: 1 function name.
Sends: three variables: string of user's username, string of password (hashed) or null if not supplied, length of cookie lifetime in minutes
Unlike other functions, this hook explicitly requires a return value - not all other hook functions handle return values. The return value is a string - either "retry" if there was an issue and user needs to try again, or anything else if the hooked function does not have an issue with the supplied details.
integrate_verify_password
Called from: multiple places Profile.php, ModifyProfile(), to ensure password is valid before modifying profile details that require password confirmation. Security.php, validateSession() twice - once, to ensure password is valid during a regular check, and once to ensure adminstrator's password is correct (i.e. even though we were logged in, we need to reauthenticate e.g. admin panel)
Purpose: To run any further tests to validate the user supplied password.
Accepts: 1 function name.
Sends: two variables, representing user name and current unhashed password.
Unlike other functions, this hook explicitly requires a return value - not all other hook functions handle return values. The return value is either exactly identical to true if acceptable, or anything else is a fail.
integrate_verify_user
Called from: Load.php, loadUserSettings(), as the first option.
Purpose: To attempt to log in from external app first, by reusing login credentials; this is taken in preference to either cookie or session details.
Accepts: 1 function name.
Sends: No variables, just calls the function - after verifying the function exists.
Unlike other functions, this hook explicitly requires a return value - few other hook functions handle return values. The return value is cast to an integer to represent user id; 0 = not logged in and to refer to cookie then session, otherwise it represents the user id. |
технарь |
Отправлено: 2 июля 2022 — 12:20 • Тема: Система "хуков" • Форум: SMF Community |
Ответов: 10 Просмотров: 2261
|
General hooks
integrate_actions
Called from: index.php, just after the creation of the action array
Purpose: To allow add or remove actions from the action array.
Accepts: 1 function name.
Sends: $actionArray, this is the array containing all the actions provided by SMF. The structure of the array is:
code: 'myaction' => array('ActionFile.php', 'action_function'),
where:
myaction - is the action as it appears in the url (e.g. http://yourforum.tld/forum/index.php?action=myaction)
ActionFile.php - is the file containing the function that is called when the action is requested
action_function - is the name of the function that will be executed
integrate_egg_nog
Called from: ViewQuery.php, before the query log (full page) is built.
Purpose: To be able to add any pre-processing to the query log that may be necessary prior to outputting. Will be of limited use.
Accepts: 1 function name.
Sends: No variables, just calls the function(s) - after verifying the function exists.
integrate_load_theme
Called from: Load.php, at the end of loadTheme(), to load any information that potentially affects top level loading of the theme itself.
Purpose: Designed to modify the layers to be loaded during page generation, for example to avoid calling the 'html' layer if the page is part of a CMS output (where there will already be a similar layer). Orstio expands on it a little more, covering off my initial theory that it was for exporting data to a CMS, rather than its actual use of pulling from.
Accepts: 1 function name.
Sends: No variables, just calls the function - after verifying the function exists.
integrate_load_permissions
Called from: ManagePermissions.php, just after the default permission arrays have been created and populated
Purpose: To allow modify permissions
Accepts: 1 function name.
Sends: $permissionGroups, $permissionList, $leftPermissionGroups, $hiddenPermissions, $relabelPermissions
integrate_menu_buttons
Called from: Subs.php, just after having populated the $menu_buttons array with the standard entries.
Purpose: To allow modify SMF's main menu
Accepts: 1 function name.
Sends: $menu_buttons
integrate_output_error
Called from: Errors.php, just after the error itself has been logged but before it has been output to the user.
Purpose: To allow reformatting of the error message, prior to notification to user, or perhaps to log or process in an outside system (e.g. sending an email to administrators on certain types of error occurring)
Accepts: 1 function name.
Sends: $message, $error_type, $error_level, $file, $line
$message - is the message text itself.
$error_type - is the SMF category of an error, e.g. General (general), undefined variables/indexes (undefined_vars), user errors like forgotten passwords (user), database/query errors (database).
$error_level - is the PHP error level ident. See the PHP manual for the values this is.
$file - is the filename this occurred in (full server path).
$line - is the line number of the error.
integrate_pre_load
Called from: Load.php, just after $modSettings has been loaded, which is very, very early on in SMF processing - immediately after integrate_pre_include is checked.
Purpose: Allows you to call one or more functions before general SMF processing begins. These can be any defined functions, though it is entirely possible that they are defined in the file loaded by #integrate_pre_include.
Accepts: 1 function name.
Sends: No variables, just calls the function - after verifying the function exists.
integrate_whos_online
Called from: Who.php, if index.php was the loaded page of the user but it's because something else with integration is happening.
Purpose: To be able to add listed actions to Who's Online from integrated apps.
Accepts: 1 function name.
Sends: $actions array from Who.php which will basically be the components of the URL, e.g. index.php?action=page;sa=something results in $actions being array('action' => 'page', 'sa' => 'something') which the integrated function can use to identify what the action really is. |
|