ROOTPLOIT
Server: LiteSpeed
System: Linux in-mum-web1878.main-hosting.eu 5.14.0-570.21.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 11 07:22:35 EDT 2025 x86_64
User: u435929562 (435929562)
PHP: 7.4.33
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //lib/rpm/fileattrs/pythonname.attr
%__pythonname_provides() %{lua:
    local python = require 'fedora.srpm.python'
    -- this macro is called for each file in a package, the path being in %1
    -- but we don't need to know the path, so we would get for each file: Macro %1 defined but not used within scope
    -- in here, we expand %name conditionally on %1 to suppress the warning
    local name = rpm.expand('%{?1:%{name}}')
    local evr = rpm.expand('%{?epoch:%{epoch}:}%{version}-%{release}')
    local provides = python.python_altprovides_once(name, evr)
    -- provides is either an array/table or nil
    -- nil means the function was already called with the same arguments:
    --   either with another file in %1 or manually via %py_provides
    if provides then
      for i, provide in ipairs(provides) do
          print(provide .. ' ')
        end
    end
}

%__pythonname_obsoletes() %{?rhel:%{lua:
    -- On CentOS/RHEL we automatically generate Obsoletes tags in the form:
    --   package python3-foo -> Obsoletes: python3.XY-foo
    -- This provides a clean upgrade path between major versions of CentOS/RHEL.
    -- In Fedora this is not needed as we don't ship ecosystem packages
    -- for alternative Python interpreters.
    local python = require 'fedora.srpm.python'
    -- this macro is called for each file in a package, the path being in %1
    -- but we don't need to know the path, so we would get for each file: Macro %1 defined but not used within scope
    -- in here, we expand %name conditionally on %1 to suppress the warning
    local name = rpm.expand('%{?1:%{name}}')
    local evr = rpm.expand('%{?epoch:%{epoch}:}%{version}-%{release}')
    local obsoletes = python.python_altobsoletes_once(name, evr)
    -- obsoletes is either an array/table or nil
    -- nil means the function was already called with the same arguments:
    --   either with another file in %1 or manually via %py_provides
    if obsoletes then
      for i, obsolete in ipairs(obsoletes) do
          print(obsolete .. ' ')
        end
    end
}}

%__pythonname_path ^/