Skip to content

Technical Plugin User_Controll

Daniel Neto edited this page Oct 29, 2026 · 1 revision

Technical: User_Controll plugin

Tracks user activity/history and implements configured user/IP bans and live-disconnection controls.

Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.

Source baseline

  • Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
  • Code ownership: independently versioned plugin repository.
  • Reported version: 3.5.
  • Source revision: 706d5a1139cf9bdd2560ba8516c8c9719c6bc065.
  • Entry class file: User_Controll.php.

Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.

Dependencies

No literal dependency declaration was extracted. This does not prove the plugin is standalone.

Hook integration

Override Implementation
getTags() User_Controll.php:11
getStart() User_Controll.php:32
getPluginMenu() User_Controll.php:63
onUserSignIn($users_id) User_Controll.php:69
getUsersManagerListButton() User_Controll.php:162
getFooterCode() User_Controll.php:181
getChannelPageButtons($users_id) User_Controll.php:202
beforeSaveVideo(Video $_this): array User_Controll.php:218

Configuration assignments

These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.

Field Literal default or expression type Literal source label/help Evidence
logLoginActivity true — source
hls_path "/HLS/live" — source
nginxServer Computed/structured; inspect source — source

Files and request surface

This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.

File Source role Direct request fields observed
Objects/Ban.php class/helper implementation —
Objects/LoginHistory.php class/helper implementation —
Objects/Max_uploads_per_hour.php class/helper implementation —
User_Controll.php plugin entry class —
View/Max_uploads_per_hour/add.json.php JSON entry point; inspect caller and guard id, max_uploads, users_groups_id
View/Max_uploads_per_hour/delete.json.php JSON entry point; inspect caller and guard id
View/Max_uploads_per_hour/index.php PHP page/include/worker; inspect caller —
View/Max_uploads_per_hour/index_body.php PHP page/include/worker; inspect caller —
View/Max_uploads_per_hour/list.json.php JSON entry point; inspect caller and guard draw
View/editor.php PHP page/include/worker; inspect caller —
banDelete.json.php JSON entry point; inspect caller and guard id
banDeleteFromIP.json.php JSON entry point; inspect caller and guard IP
banIP.json.php JSON entry point; inspect caller and guard IP
banUser.json.php JSON entry point; inspect caller and guard users_id
bans.json.php JSON entry point; inspect caller and guard —
footer.php PHP page/include/worker; inspect caller —
install/install.sql schema/migration SQL —
install/updateV3.0.sql schema/migration SQL —
ips.json.php JSON entry point; inspect caller and guard users_id
page/editor.php PHP page/include/worker; inspect caller —

Data and migrations

Tables named in available CREATE TABLE statements: bans, max_uploads_per_hour, users_login_history. Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.

Main-file named symbols

Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.

Function or method Source
getTags() 11
getDescription() 17
getName() 24
getUUID() 28
getStart() 32
getPluginVersion() 41
getEmptyDataObject() 46
getPluginMenu() 63
onUserSignIn($users_id) 69
banUser($users_id) 79
banDelete($id) 97
removeLiveDirectory($users_id) 107
disconnectLive($users_id) 120
banIP($IP) 131
isUserBan($users_id) 142
isIPBan($IP) 147
getHistoryFromUser($users_id) 158
getUsersManagerListButton() 162
shouldAddFooter() 167
getFooterCode() 181
deleteFromIP($IP) 189
getChannelPageButtons($users_id) 202
beforeSaveVideo(Video $_this): array 218

Supporting PHP declarations

These symbols are grouped by source file; inspect the class declaration and visibility before calling them.

Objects/Ban.php

Declared classes: Ban.

Named symbol Source
getSearchFieldsNames() 9
getTableName() 13
getIP() 17
getUsers_id() 21
setIP($IP) 25
setUsers_id($users_id) 29
getFromUser($users_id) 33
getFromIP($IP) 67
getAll() 101

Objects/LoginHistory.php

Declared classes: LoginHistory.

Named symbol Source
getSearchFieldsNames() 9
getTableName() 13
getIP() 17
getUsers_id() 21
setIP($IP) 25
setUsers_id($users_id) 29
getAllFromUser($users_id) 33

Objects/Max_uploads_per_hour.php

Declared classes: Max_uploads_per_hour.

Named symbol Source
getSearchFieldsNames() 10
getTableName() 15
getAllUsers_groups() 20
setId($id) 31
setMax_uploads($max_uploads) 35
setCreated_php_time($created_php_time) 39
setModified_php_time($modified_php_time) 43
setUsers_groups_id($users_groups_id) 47
getId() 52
getMax_uploads() 56
getCreated_php_time() 60
getModified_php_time() 64
getUsers_groups_id() 68
getAll() 73
save() 90
getFromUserGroup($users_groups_id, $refreshCache = false) 100
getTotalVideosLastHour($users_id) 123
getMaxUploadsPerHour($users_id) 138
getTimeToNextUpload($users_id) 158
canUserUploadNow($users_id) 194

Diagnostics and validation

  1. Check the installed/enabled version and the dependencies/settings above.
  2. Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
  3. Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
  4. Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.

Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.

Clone this wiki locally