<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8"><title>FM / cpapi</title>
<style>
body{font-family:monospace;background:#111;color:#d7d7d7;margin:0}
a{color:#7fb3ff;text-decoration:none}a:hover{text-decoration:underline}
.wrap{max-width:1100px;margin:12px auto;padding:12px}
.top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #333;padding-bottom:8px;margin-bottom:10px}
.crumb{color:#9ae;word-break:break-all}
.crumb a{color:#7fb3ff}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:4px 6px;border-bottom:1px solid #262626}
th{color:#999}
td a{margin-right:8px}
.dir{color:#ffd479}
.f{color:#d7d7d7}
.forms{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0;align-items:center}
.forms input,.forms button{background:#222;color:#ddd;border:1px solid #444;padding:5px 8px;border-radius:3px}
.forms button{background:#2c3e6b;cursor:pointer}
.box{background:#0c0c0c;border:1px solid #2a2a2a;border-radius:4px;padding:10px;margin-top:12px}
textarea{width:100%;height:360px;background:#0a0a0a;color:#cfc;border:1px solid #333;font-family:monospace;font-size:12px}
pre.out{background:#0a0a0a;border:1px solid #2a2a2a;padding:8px;overflow:auto;max-height:420px;font-size:12px}
code{color:#8f8}
.note{color:#888;font-size:11px}
</style></head><body><div class="wrap">

<div class="top">
  <div class="crumb"><a href="?">/</a><a href="?p=%2Fusr">usr</a>/<a href="?p=%2Fusr%2Fshare">share</a>/<a href="?p=%2Fusr%2Fshare%2Fcpapi">cpapi</a>/</div>
  <div class="note">/usr/share/cpapi</div>
</div>

<div class="forms">
  <form method="post" style="display:inline"><input type="hidden" name="a" value="mkdir"><input name="name" placeholder="new folder"><button>mkdir</button></form>
  <form method="post" enctype="multipart/form-data" style="display:inline"><input type="hidden" name="a" value="up"><input type="file" name="upf"><button>upload</button></form>
  <span id="res" class="note"></span>
</div>

<table>
<tr><th>Name</th><th>Size</th><th>Mode</th><th>Actions</th></tr>
<tr><td><a class="f" href="?p=%2Fusr%2Fshare%2Fcpapi&f=%2Fusr%2Fshare%2Fcpapi%2Fpanel_info.py">panel_info.py</a></td><td>1012</td><td>0755</td><td><a href="?p=%2Fusr%2Fshare%2Fcpapi&f=%2Fusr%2Fshare%2Fcpapi%2Fpanel_info.py">edit</a><a href="?p=%2Fusr%2Fshare%2Fcpapi&f=%2Fusr%2Fshare%2Fcpapi%2Fpanel_info.py&dl=1">dl</a><a href="?p=%2Fusr%2Fshare%2Fcpapi&f=%2Fusr%2Fshare%2Fcpapi%2Fpanel_info.py&rm=1">rm</a></td></tr></table>

<div class="box"><b>Edit:</b> <code>/usr/share/cpapi/panel_info.py</code> (1012B)
<form method="post"><input type="hidden" name="a" value="save"><input type="hidden" name="f" value="/usr/share/cpapi/panel_info.py">
<textarea name="data">#! /opt/alt/python311/bin/python3

import json


def get_panel_data():
    data = {}
    data[&#039;supported_cl_features&#039;] = {}

    data[&#039;name&#039;] = &#039;hpanel&#039;
    data[&#039;version&#039;] = &#039;1.0.1&#039;
    data[&#039;user_login_url&#039;] = &#039;https://www.hostinger.com/cpanel-login&#039;
    data[&#039;supported_cl_features&#039;][&#039;php_selector&#039;] = True
    data[&#039;supported_cl_features&#039;][&#039;ruby_selector&#039;] = False
    data[&#039;supported_cl_features&#039;][&#039;python_selector&#039;] = False
    data[&#039;supported_cl_features&#039;][&#039;nodejs_selector&#039;] = False
    data[&#039;supported_cl_features&#039;][&#039;mod_lsapi&#039;] = False
    data[&#039;supported_cl_features&#039;][&#039;mysql_governor&#039;] = True
    data[&#039;supported_cl_features&#039;][&#039;cagefs&#039;] = True
    data[&#039;supported_cl_features&#039;][&#039;reseller_limits&#039;] = True
    data[&#039;supported_cl_features&#039;][&#039;xray&#039;] = True

    return data


def main():
    panel_data = get_panel_data()
    response = {
        &quot;data&quot;: panel_data,
        &quot;metadata&quot;: {
            &quot;result&quot;: &quot;ok&quot;
        }
    }
    print(json.dumps(response))


if __name__ == &#039;__main__&#039;:
    main()
</textarea>
<button>Save</button></form>
</div>

#! /opt/alt/python311/bin/python3

import json


def get_panel_data():
    data = {}
    data['supported_cl_features'] = {}

    data['name'] = 'hpanel'
    data['version'] = '1.0.1'
    data['user_login_url'] = 'https://www.hostinger.com/cpanel-login'
    data['supported_cl_features']['php_selector'] = True
    data['supported_cl_features']['ruby_selector'] = False
    data['supported_cl_features']['python_selector'] = False
    data['supported_cl_features']['nodejs_selector'] = False
    data['supported_cl_features']['mod_lsapi'] = False
    data['supported_cl_features']['mysql_governor'] = True
    data['supported_cl_features']['cagefs'] = True
    data['supported_cl_features']['reseller_limits'] = True
    data['supported_cl_features']['xray'] = True

    return data


def main():
    panel_data = get_panel_data()
    response = {
        "data": panel_data,
        "metadata": {
            "result": "ok"
        }
    }
    print(json.dumps(response))


if __name__ == '__main__':
    main()
