{"id":19282610,"url":"https://github.com/richardevcom/pampy-nfc","last_synced_at":"2026-05-09T05:34:04.662Z","repository":{"id":197511766,"uuid":"416740442","full_name":"richardevcom/PAMPy-NFC","owner":"richardevcom","description":"Linux PAM Python NFC authorisation for Active Directory","archived":false,"fork":false,"pushed_at":"2022-01-18T04:00:21.000Z","size":271,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-12T18:30:05.821Z","etag":null,"topics":["active","active-directory","auth","authentication","authorization","directory","kubuntu","linux","module","nfc","pam","pam-module","python","python3","ubuntu"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richardevcom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-10-13T12:49:15.000Z","updated_at":"2022-01-18T07:46:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"2cea53bb-2468-4e58-9d03-637fbdeab61b","html_url":"https://github.com/richardevcom/PAMPy-NFC","commit_stats":null,"previous_names":["richardevcom/pampy-nfc"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/richardevcom/PAMPy-NFC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardevcom%2FPAMPy-NFC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardevcom%2FPAMPy-NFC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardevcom%2FPAMPy-NFC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardevcom%2FPAMPy-NFC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richardevcom","download_url":"https://codeload.github.com/richardevcom/PAMPy-NFC/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardevcom%2FPAMPy-NFC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32808517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"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":["active","active-directory","auth","authentication","authorization","directory","kubuntu","linux","module","nfc","pam","pam-module","python","python3","ubuntu"],"created_at":"2024-11-09T21:27:44.294Z","updated_at":"2026-05-09T05:34:04.627Z","avatar_url":"https://github.com/richardevcom.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PAMPy NFC solution\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/richardevcom/PAMPy-NFC/raw/main/hero.png?raw=true\" alt=\"NFC\"/\u003e\n\u003c/p\u003e\n\n## Instalācija\n\n\u003cdetails\u003e\n  \u003csummary\u003e1. Automātiskā instalācija\u003c/summary\u003e\n  \n  Uzstādiet `wget` un palaidiet šo attālināto instalācijas skriptu:\u003cbr/\u003e\n  _(varat arī saglabāt savā tīklā un palaist to no sava tīkla)_\u003cbr/\u003e\n\n```bash\n# Lejupielādēt cURL\nsudo apt install curl\n# Lejupielādēt instalācijas failu\nsudo wget https://github.com/richardevcom/PAMPy-NFC/blob/main/setup/install.sh\n# Palaist instalācijas failu (obligāti jānorāda API servera adrese -u argumentam)\nsudo bash install.sh -u http://server_ip/api/\n```\n\n⚠️ _Lūdzu pārliecinieties, ka esat norādījuši derīgu pilno API servera adresi, piemēram:_ `http://127.0.0.1/api/Values/GetValues/`\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e2. Manuāla instalācija\u003c/summary\u003e\n\n1. Pirms uzsākšanas, pārliecinies, ka esi VPN tīklā.\n2. Atjaunini sistēmu un tās pakotnes\n\n```bash\napt-get -y update\n```\n\n3. Izpako source kodu\n1. Izmantojot Git\n\n```bash\napt-get -y install git\ngit clone https://github.com/richardevcom/PAMPy-NFC.git ppnfc\ncd ppnfc  # Neaizmirstam obligāti pāriet uz risinājuma mapi\n```\n\n2. Manuāli izpako lejupielādēto arhīva failu\n\n```bash\nwget https://github.com/richardevcom/PAMPy-NFC/archive/refs/tags/v1.3.6.zip\ntar -xf main.tar.gz\ncd PAMPy-NFC-main   # Neaizmirstam obligāti pāriet uz risinājuma mapi\n```\n\n4. Instalē PC/SC pakotnes\n\n```bash\napt-get -y install pcscd pcsc-tools\n```\n\n5. Atiestati/nobloķē noklusējuma PC/SC draiverus pievienojot šīs rindiņas faila beigās\n\n```bash\nnano /etc/modprobe.d/blacklist.conf\n```\n\n```bash\nblacklist nfc\nblacklist pn533\nblacklist pn533_usb\n```\n\n6. Instalē jauno PC/SC draiveri\n\n```bash\nyes | dpkg -i lib/driver/libacsccid1_1.1.8-1~ubuntu18.04.1_amd64.deb\n```\n\n7. Restartē PC/SC servisu\n\n```bash\nsystemcl restart pcscd\n```\n\n8. Uzstādam nepieciešamo Python3 bibliotēku\n\n```bash\napt-get -y install python3 python3-pip python3-pyscard python3-evdev python3-serial python3-filelock python3-psutil python3-cryptography python3-xdo python3-setproctitle python3-requests python3-xlib\n```\n\n9. Kopējam `ppnfc_config.py` konfigurācijas failu un rediģējam to\n\n```bash\ncp conf/ppnfc_config.py /etc/ppnfc_config.py\nnano /etc/ppnfc_config.py\n```\n\nNomainam API adresi `api_endpoint = \"http://127.0.0.1/api/\"` uz jums nepieciešamo\n\n10. Izvietojam pārējos risinājuma failus\n\n```bash\nyes | cp -rf bin/scripts/* /usr/local/bin \u0026\u003e/dev/null\nyes | cp -rf conf/services/*.service /lib/systemd/system \u0026\u003e/dev/null\nyes | cp -rf conf/ppnfc_pam.config /usr/share/pam-configs \u0026\u003e/dev/null\nyes | cp -rf conf/ppnfc_config.py /etc/ \u0026\u003e/dev/null\nyes | cp -rf bin/theme/Login.qml /usr/share/sddm/themes/breeze/ \u0026\u003e/dev/null\nyes | cp -rf bin/theme/Main.qml /usr/share/sddm/themes/breeze/ \u0026\u003e/dev/null\nyes | cp -rf bin/theme/Debug.qml /usr/share/sddm/themes/breeze/components/ \u0026\u003e/dev/null\n```\n\n11. Piešķiram minimāli nepieciešamās atļaujas failu palaišanai\n\n```bash\nchown -R root:root /usr/local/bin/ppnfc_* \u0026\u003e/dev/null\nchown -R root:root /lib/systemd/system/ppnfc_* \u0026\u003e/dev/null\nchown -R root:root /etc/ppnfc_config.py \u0026\u003e/dev/null\nchmod +x /usr/local/bin/ppnfc_* \u0026\u003e/dev/null\nchmod +x /lib/systemd/system/ppnfc_* \u0026\u003e/dev/null\nchmod +x /etc/ppnfc_config.py \u0026\u003e/dev/null\n```\n\n12. Iestatam un palaižam risinājuma servisus\n\n```bash\nsystemctl enable ppnfc_server \u0026\u003e/dev/null\nsystemctl start ppnfc_server \u0026\u003e/dev/null\n\nsystemctl enable ppnfc_keyboard_wedge \u0026\u003e/dev/null\nsystemctl start ppnfc_keyboard_wedge \u0026\u003e/dev/null\n\nsystemctl enable ppnfc_auto_send_enter_at_login \u0026\u003e/dev/null\nsystemctl start ppnfc_auto_send_enter_at_login \u0026\u003e/dev/null\n```\n\n13. Pievienojam `nodelay` parametru iekš `/usr/share/pam-configs/unix` faila `AUTH` sadaļas aiz katra `pam_unix.so`.\n14. Konfigurējam PAM rediģējot `/etc/pam.d/common-auth` failu un norādot šo risinājumu kā otro autorizācijas posmā\n\n```bash\nauth    [success=3 default=ignore]    pam_unix.so nodelay nullok_secure\nauth    [success=2 default=ignore]    pam_exec.so quiet /usr/local/bin/ppnfc_pam.py\nauth    [success=1 default=ignore]    pam_sss.so use_first_pass\n```\n\n\u003c/details\u003e\n\n## Konfigurācija\n\nŠis risinājums izmanto `/etc/ppnfc_config.py` Python3 failu kā konfigurācijas failu, lai pārrakstītu jeb kuras noklusējuma vērtības iekš `ppnfc_server.py` servera faila.\n\n```bash\nnano /etc/ppnfc_config.py\n\n# General - skatiet failus iekš /usr/local/bin - lai redzētu, kādus mainīgos varat rediģēt šajā konfigurācijā.\nlogout_action = 'logout'  # `logout` vai `lock` - izlogot vai slēgt sesiju?\n\n# API (attālināts API serviss)\napi_endpoint = \"http://127.0.0.1/api/Values/GetValues/\"  # API avota pamata URL adrese\napi_request_timeout = 10                                  # (n) laiks sekundēs, pēc kura pārtaukt API pieprasījumu\n\n# HTTP\nhttp_read_every = 0.2                   # nolasīt HTTP pieprasījumu ik (n) sekundes\nhttp_uid_not_sent_inactive_timeout = 1  # (n) laiks sekundēs, pēc kura pātraukt gaidīt lietotāja ID iesūtīšanu\n\n# PCSC\npcsc_read_every = 0.2   # nolasīt NFC lasītāju ik (n) sekundes\npcsc_read_timeout = 0.2 # (n) laiks sekundēs, pēc kura pārtraukt gaidīt NFC lasījumu\n\n# ...\n```\n\n## Papildus\n\n- Iekš `PAMPy-NFC-main/bin/` mapes atrodas fails `ppnfc_usb_reset` - tas ir paredzēts gadījumā, ja NFC lasītājs \"uzkaras\", vai pašrocīgi izslēdzas.\n- Risinājums ir izveidots uz [SiRFIDaL](https://github.com/Giraut/SiRFIDaL) bāzes.\n- Šis risinājums atbalsta Ubuntu/Kubuntu 18* versiju. Teorētiski tai ir jādarbojas arī uz 20* versijām, tomēr tā nav pilnībā notestēta uz tām.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardevcom%2Fpampy-nfc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichardevcom%2Fpampy-nfc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardevcom%2Fpampy-nfc/lists"}