mirror of
				https://github.com/karl0ss/homepage.git
				synced 2025-10-31 06:24:02 +00:00 
			
		
		
		
	
						commit
						66073ed460
					
				| @ -11,6 +11,7 @@ import Jellyfin from "./widgets/service/jellyfin"; | |||||||
| import Speedtest from "./widgets/service/speedtest"; | import Speedtest from "./widgets/service/speedtest"; | ||||||
| import Traefik from "./widgets/service/traefik"; | import Traefik from "./widgets/service/traefik"; | ||||||
| import Jellyseerr from "./widgets/service/jellyseerr"; | import Jellyseerr from "./widgets/service/jellyseerr"; | ||||||
|  | import Npm from "./widgets/service/npm"; | ||||||
| 
 | 
 | ||||||
| const widgetMappings = { | const widgetMappings = { | ||||||
|   docker: Docker, |   docker: Docker, | ||||||
| @ -25,7 +26,8 @@ const widgetMappings = { | |||||||
|   rutorrent: Rutorrent, |   rutorrent: Rutorrent, | ||||||
|   speedtest: Speedtest, |   speedtest: Speedtest, | ||||||
|   traefik: Traefik, |   traefik: Traefik, | ||||||
|   jellyseerr: Jellyseerr |   jellyseerr: Jellyseerr, | ||||||
|  |   npm: Npm, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default function Widget({ service }) { | export default function Widget({ service }) { | ||||||
|  | |||||||
							
								
								
									
										65
									
								
								src/components/services/widgets/service/npm.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/components/services/widgets/service/npm.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | |||||||
|  | import useSWR from "swr"; | ||||||
|  | 
 | ||||||
|  | import Widget from "../widget"; | ||||||
|  | import Block from "../block"; | ||||||
|  | 
 | ||||||
|  | export default function Npm({ service }) { | ||||||
|  |   const config = service.widget; | ||||||
|  |   const { url } = config; | ||||||
|  | 
 | ||||||
|  |   const fetcher = async (reqUrl) => { | ||||||
|  |     const { url, username, password } = config; | ||||||
|  |     const loginUrl = `${url}/api/tokens`; | ||||||
|  |     const body = { identity: username, secret: password }; | ||||||
|  | 
 | ||||||
|  |     const res = await fetch(loginUrl, { | ||||||
|  |       method: "POST", | ||||||
|  |       body: JSON.stringify(body), | ||||||
|  |       headers: { | ||||||
|  |         "Content-Type": "application/json", | ||||||
|  |       }, | ||||||
|  |     }) | ||||||
|  |       .then((response) => response.json()) | ||||||
|  |       .then( | ||||||
|  |         async (data) => | ||||||
|  |           await fetch(reqUrl, { | ||||||
|  |             method: "GET", | ||||||
|  |             headers: { | ||||||
|  |               "Content-Type": "application/json", | ||||||
|  |               Authorization: "Bearer " + data.token, | ||||||
|  |             }, | ||||||
|  |           }) | ||||||
|  |       ); | ||||||
|  |     return res.json(); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const { data: infoData, error: infoError } = useSWR(`${url}/api/nginx/proxy-hosts`, fetcher); | ||||||
|  | 
 | ||||||
|  |   console.log(infoData); | ||||||
|  | 
 | ||||||
|  |   if (infoError) { | ||||||
|  |     return <Widget error="NGINX Proxy Manager API Error" />; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (!infoData) { | ||||||
|  |     return ( | ||||||
|  |       <Widget> | ||||||
|  |         <Block label="Running" /> | ||||||
|  |         <Block label="Stopped" /> | ||||||
|  |         <Block label="Total" /> | ||||||
|  |       </Widget> | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   const enabled = infoData.filter((c) => c.enabled === 1).length; | ||||||
|  |   const disabled = infoData.filter((c) => c.enabled === 0).length; | ||||||
|  |   const total = infoData.length; | ||||||
|  | 
 | ||||||
|  |   return ( | ||||||
|  |     <Widget> | ||||||
|  |       <Block label="Enabled" value={enabled} /> | ||||||
|  |       <Block label="Disabled" value={disabled} /> | ||||||
|  |       <Block label="Total" value={total} /> | ||||||
|  |     </Widget> | ||||||
|  |   ); | ||||||
|  | } | ||||||
| @ -5,6 +5,11 @@ | |||||||
|     - My First Service: |     - My First Service: | ||||||
|         href: http://localhost/ |         href: http://localhost/ | ||||||
|         description: Homepage is awesome |         description: Homepage is awesome | ||||||
|  |         widget: | ||||||
|  |           type: npm # npm for NGINX Proxy Manager | ||||||
|  |           url: http://localhost:81 # no slash at the end | ||||||
|  |           username: aidenpwnz@proton.me # your email | ||||||
|  |           password: AidenProxy1994! # your password | ||||||
| 
 | 
 | ||||||
| - My Second Group: | - My Second Group: | ||||||
|     - My Second Service: |     - My Second Service: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Luca Pellegrino
						Luca Pellegrino