{"id":21413084,"url":"https://github.com/rixrix/zafu","last_synced_at":"2025-10-26T14:07:47.602Z","repository":{"id":801663,"uuid":"503486","full_name":"rixrix/zafu","owner":"rixrix","description":"a CouchDB CLI Administration Console","archived":false,"fork":false,"pushed_at":"2010-02-23T03:30:29.000Z","size":712,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-16T18:22:48.340Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rixrix.png","metadata":{"files":{"readme":"README","changelog":"CHANGES","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-02-05T05:53:30.000Z","updated_at":"2014-07-18T08:13:08.000Z","dependencies_parsed_at":"2022-08-16T10:55:21.247Z","dependency_job_id":null,"html_url":"https://github.com/rixrix/zafu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rixrix/zafu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixrix%2Fzafu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixrix%2Fzafu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixrix%2Fzafu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixrix%2Fzafu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rixrix","download_url":"https://codeload.github.com/rixrix/zafu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixrix%2Fzafu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281114802,"owners_count":26446046,"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-10-26T02:00:06.575Z","response_time":61,"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-22T18:16:46.484Z","updated_at":"2025-10-26T14:07:47.581Z","avatar_url":"https://github.com/rixrix.png","language":"C","readme":"/**\n\\mainpage\n\n\\section abstract Abstract\nA modular framework for implementing a CISCO-like CLI on a *NIX system.\nArbitary command menus and actions can be defined using XML files.\nThis software handles the user interaction, and forks the appropriate system\ncommands to perform any actions. \n\n- \\ref _licence_page \n- \\ref _changes_page \n- \\ref _issues_page\n\n\\section downloads Downloads\nThis project is hosted on \n\u003cA HREF=\"http://sourceforge.net/projects/clish/\"\u003esourceforge.\u003c/A\u003e from where\nthe source-code can be downloaded.\n\n\\section background Background\nThe CISCO-like CLI has become a de-facto standard in the domain of network \ndevices. It is a much more restricted interface than traditional *NIX shells,\nhence is simpler to use and inherently more secure. As more devices move to \nusing an embedded *NIX operating systems, a simple, scalable means of producing \nsuch a CLI becomes valuable.\n\n\\section existing Existing Solutions\n\n\\subsection Libcli\n\u003cA HREF=\"http://libcli.sourceforge.net/\"\u003eLibcli\u003c/A\u003e\nprovides a similar facility but has the following main limitations:-\n\n1) In order to add new commands a monolithic executable (which uses the\n   library) needs to be recompiled, after editing the source code to add the\n   newly required commands and actions.\n\n2) libcli takes responsiblity for attaching to a socket (telnet-like). This \n   limits the usage of the CLI; difficult to use over SSH for example, similarly\n   cannot get the menus directly from an existing shell.\n\n3) The implementation of the command actions is hard-linked into the monolithic\n   executable, this can cause licence concerns/issues when a commercial company\n   wishes to control proprietry software from within the CLI.\n\n4) libcli takes responsiblity for the authentication of the user. This is\n   different from other \"shells\" which do not deal with authentication, but are\n   simply spawned as the required user.\n   \n\\subsection GNU-zebra\n\u003cA HREF=\"http://www.zebra.org/\"\u003eZebra\u003c/A\u003e\nis a routing package, and comes with it's own integrated CLI, to handle its\nconfiguration (VTYSH).\n\n\\section project CLISH Project\nThe project is written (mostly) in ANSI-C and provides two example executables\nwhich can be used as a drop-in replacement for a more conventional \"shell\".\n\nThe software was initially developed as part of some internal work at 3Com and\ndue to the dependancy on 3rd party open-source packages, and it's self contained\nnature, it is being released into the public domain.\n\nIt is designed to run on any *NIX system e.g. Linux, BSD, Cygwin and makes use\nof the following other opensource packages (glibc,tinyxml,doxygen)\n\n\\subsection clish  clish  (pronounced see-lish)\nThis application is a standard UNIX shell replacement. The ACTION tags in the XML\nspecification are mapped to the system() call and hence will be interpreted as\na Bourne-shell script.\n\n\\subsection tclish tclish (pronounced tickle-ish)\nThis application is built if the TCL libraries are present on the build system.\nThe name of the executable produced will reflect the version of TCL used. e.g. \ntclish8.4 will be generated if TCL8.4 is present on the system.\n\nThis application will spawn a TCL interpreter when started, and the contents of\nthe ACTION tags will be interpreted as TCL scripts within that interpreter for\nthe duration of the shell.\n  \n\\subsection Features\nThe \"clish\" shell has the following features:-\n\n-\tProvides CLI tree handling facilities\n\t-\tTree built from multiple XML encoded files. (uses tinyxml)\n\t        This means that XML configuration files can be be made part of\n\t\t3rd party packages and simply installing them integrates\n\t\tcommands into the CLI.\n\t\n-\tAccess permissions are defined as part of the CLI tree definition; a CLI\n\tnode/branch may be limited to a specific *NIX group.\n\n-\tProvides interface to user\n\t-\tHandles auto-completion of commands\n\t-\tOnly appropriate commands for the current user's \"group\" will be \n\t\tavailable.\n\t-\tProvides parameter type verification facility\n\t\t*\tEach parameter may be of a specific type, which the\n\t\t        framework will ensure is correctly entered by the user.\n\t-\tProvides key-handling for the interface (uses tinyrl)\n\t\t*\tProvides command line editing facilities\n\t\t*\tup/down arrow keys\n\t\t*\t[TAB] command completion \n\t\t*\t[CTRL-A] move to start of command line\n\t\t*\t[?] provides context sensitive help.\n\n- \tAble to be launched non-interactively\n\t- textual scripts can be written to drive the CLI\n\n-\tExecutes a specified CLI command by launching the appropriate\n        (as defined in the CLI tree) system command line to perform the\n        required action\n\t-\tOnly commands permitted for the current user are available.\n\t-\tDuring execution the I/O streams are handed over to the new \n\t        program.\n\t-\tAble to spawn a 3rd party shell, where necessary\n\t        This will take over control of the  I/O channel until that\n\t\tsub-shell exits.\n\n\n\"clish\" makes use of multiple XML files to define it's behaviour these...\n\n-\tIdentify scope of the commands (global or specific view(s))\n\n-\tInclude access permissions. By default a command will be\n        accessible to all users, but the schema will provide\n\tthe ability to limit the command based on UNIX group membership.\n\n-\tIncludes help text for menus\n\n-\tIncludes parameter definitions (with types where appropriate)\n\n-\tIncludes prompt modifications (different views)\n\n-\tIncludes full command line which each leaf node should execute\n        to achieve result.\n\n-\tSeparate set of files for each localization (language) can be\n        provided and determined by the user logging in.\n\n-\t\"packages\" can contribute files to define their facilities\n        within the CLI; this makes augmentation of the CLI as simple\n\tas including/excluding a particular package.\n\n\\section example xml-example directory\n\n\\include README\n\nSome of the example files are put here for reference:\n\n\\subsection global_xml global-command.xml\n\\include global-commands.xml\n\n\\subsection startup_xml startup.xml\n\\include startup.xml\n\n\\subsection types_xml types.xml\n\\include types.xml\n\n\\subsection debug_xml debug-view.xml\n\\include debug-view.xml\n\n*/","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frixrix%2Fzafu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frixrix%2Fzafu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frixrix%2Fzafu/lists"}