{"id":19952492,"url":"https://github.com/dosmike/sm-ugc-blocker","last_synced_at":"2026-03-19T12:44:11.514Z","repository":{"id":133520550,"uuid":"450919998","full_name":"DosMike/SM-UGC-Blocker","owner":"DosMike","description":"Block UGC in TF2 dependent on players TrustFactors","archived":false,"fork":false,"pushed_at":"2025-05-19T18:29:02.000Z","size":137,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-19T19:39:11.430Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"SourcePawn","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DosMike.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-22T19:49:09.000Z","updated_at":"2025-05-19T18:29:07.000Z","dependencies_parsed_at":"2023-07-10T00:16:02.645Z","dependency_job_id":null,"html_url":"https://github.com/DosMike/SM-UGC-Blocker","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/DosMike/SM-UGC-Blocker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FSM-UGC-Blocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FSM-UGC-Blocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FSM-UGC-Blocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FSM-UGC-Blocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DosMike","download_url":"https://codeload.github.com/DosMike/SM-UGC-Blocker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FSM-UGC-Blocker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286079811,"owners_count":27282121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-26T02:00:06.075Z","response_time":193,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T01:13:23.481Z","updated_at":"2025-11-26T05:03:56.001Z","avatar_url":"https://github.com/DosMike.png","language":"SourcePawn","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UGC Block\n\nUser Generated Content (UGC) can become a concern for server owners if bad actors decide to show up.\n\nThis can include bad language in chat, on items names and item descriptions as well has NSFW / illegal imagery for custom decals and sprays.\n\n### Features\n\n* Restrict usage of sprays, jingles (TF2: decals, item names and descriptions) based on TrustFactor\n* Log files uploaded from clients\n* Scan uploaded files for fake AV triggers (and ban on detection)\n* Ingame commands to forward and backwards look-up of filenames for a players spray/jingle\n\n### Config\n\nThis plugin allows you to control when players are able to use custom decals, item names, descriptions and sprays through the following convars.\n\n`sm_ugc_disable_decal \"0\"`   \nAlways block items with custom decals\n\n`sm_ugc_disable_description \"0\"`   \nAlways block items with custom descriptions\n\n`sm_ugc_disable_name \"0\"`   \nAlways block items with custom names\n\n`sm_ugc_disable_spray \"0\"`   \nAlways block players from using sprays\n\n`sm_ugc_disable_jingle \"0\"`   \nAlways block players from using jingles ('sound sprays')\n\n`sm_ugc_trust_decal \"*3\"`   \nTrustFlags required to allow items with custom decals, empty to always allow\n\n`sm_ugc_trust_description \"*3\"`   \nTrustFlags required to allow items with custom descriptions, empty to always allow\n\n`sm_ugc_trust_name \"*3\"`   \nTrustFlags required to allow items with custom names, empty to always allow\n\n`sm_ugc_trust_spray \"*3\"`   \nTrustFlags required to allow sprays, empty to always allow\n\n`sm_ugc_trust_jingle \"*3\"`   \nTrustFlags required to allow jingles, empty to always allow\n\n`sm_ugc_log_uploads \"1\"`   \nLog all client file uploads to `user_custom_received.log`\n\n**Some malicious spray files were used to trip false positives in client anti-virus**   \n[Spray Exploit Fixer](https://forums.alliedmods.net/showthread.php?t=323447) catches this and I recommend you use that plugin.\n\nItems that do not pass the filters will currently just be removed from the player.   \nIn case of weapons i might look into using TF2 Gimme or TF2 Items to generate and re-equip \"clean\" versions.\n\nUser custom files will still upload to the server, but the download is limited:   \nIf a client connects while a spray or jingle is blocked, that file should no longer download to other clients.\nIn case sprays or jingles get blocked after they join, no new clients will receive the files, and the action should\nbe blocked from being executed.\nGetting permission to use sprays or jingles after being in the server for some seconds will *not* send the files\nto other clients. The player should reconnect in this case to trigger the download.\n\n### Commands\n\nThe logs can also be checked directly from the server with the command `sm_ugclookup` or `sm_ugclookuplogs`.\nBoth commands require the Kick flag by default and the former tried to check online players first.\n\nArguments is a player name, SteamID or a filename. If an online player is found, it will return their current\nspray and jingle file as well as the types of UGC they can currently use. Otherwise the log will be scanned through\nand the last up to 50 entries will be dumped to your console, including the timestamp.\n\n### Dependencies\n\nWhile this plugin was originally written for TF2, I should have changed it to work on other games as well.\nAs a result dependencies that do not apply to your game should only be required for compilation.\n\n* This plugin requires [TF2 Attributes](https://github.com/nosoop/tf2attributes) to check if an items has a custom name/description/decal.   \n  I'm using nosoops fork, but FlamingSarges original might work as well. In any case Version 1.3.2 or above is required.\n* [TrustFactor](https://github.com/DosMike/SM-TrustFactor) is required to check players trustworthiness.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdosmike%2Fsm-ugc-blocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdosmike%2Fsm-ugc-blocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdosmike%2Fsm-ugc-blocker/lists"}