![]() |
De los mismos creadores de pico llega ...
1 Archivos Adjunto(s)
Pues eso, estos días estoy entretenido con un nuevo juguete, no se si recordáis el micro servidor que colgué por aquí ya hace un año, pico lo llame, pues ahora he intentando hacer algo similar en linux (el pico original no funciona en linux porque wine no implementa todavía la API TransmitFile).
Así que he abierto el gedit, y comencé a escribir código en C. Por ahora llevo unas 500 lineas de código, y ya maneja correctamente el comando Get, puede enviar archivos, mensajes de texto, listar directorios, codificar/descodificar urls y además es multihilo. Faltan por implementar la autentificación, el comando Head y algún método de Timeout a la hora de leer el socket, pero eso ya lo haremos mas adelante si es necesario. El funcionamiento es sencillo, solo hay que ejecutar pico en un terminal y luego en cualquier navegador utilizar la url http://127.0.0.1:1978/ si es en el mismo equipo o http://tuip:1978/ si es desde otro equipo de tu red. Se puede ejecutar sin usar el terminal, pero entonces el programa permanece oculto y no mostraría ni mensajes, ni errores (si los hubiera). Una vez que accedemos a esa url vemos un listado de todo el sistema de ficheros, aquí es importante recordar que el programa tiene los mismos permisos de lectura que el usuario que lo ejecuta (para mas adelante estoy pensando en utilizar algo como chroot para cambiar el directorio raíz del proceso). Como siempre, se admiten sugerencias, consejos, criticas (sin pasarse :p ) pero siempre recordando que se trata de un juguete y no de un servidor serio, yo al menos pienso utilizarlo como venia haciéndolo con su hermano gemelo en windows, para pasar archivos de un ordenador a otro rápidamente y sin tener que andar instalando nada, ni cambiando la configuración de las carpetas compartidas, etc ... un par de clicks y copiando, sin complicarse (muy útil cuando quieres pasar archivos al portátil de un amigo). Cambios: - 12/04/2006
|
Cita:
No he podido probarlo, y la verdad es que no sé cuándo podré, pero hay cosillas interesantes. No dices nada de condiciones para usarlo, así que supondré que es completamente libre (el sueño de Stallman :D). Lo digo porque tengo un montón de ideas pendientes a las que tendré que dar salida cuando consiga establecerme definitivamente y... :rolleyes: |
Cita:
Por otro lado, aun siendo libres y sin tener ninguna obligación de hacerlo, estaría bien, que si utilizas el código me mandaras un mensaje para saber como termino la cosa, solo por curiosidad. |
Stupendo.
Y por supuesto que puedes utilizar mis licencias, por eso las puse en mi web. Puede que las cambie algo en un futuro próximo, especialmente lo de "Modificaciones al Acuerdo de Licencia" ya que ahora mismo Burdjia, como ente, no existe y ya no dispongo del apartado de correos, pero lo demás seguirá siendo igual, así que sin problema. |
Bueno al parecer tenia un pequeño problema de zombies. Cuando un proceso hijo finalizaba, no lo limpiaba, quedando entonces en el sistema como un proceso zombie. Bueno, eso esta solucionado, ahora manejo la señal que indica que el proceso hijo a terminado y hago limpieza. Ya subí el zip con el código corregido.
Espero que el siguiente bug tarde un poco mas en aparecer :o |
Hola,
Está muy chulo Pico Seoane. Y me he puesto a probar lo de "compartir" archivos entre ordenadores y la cosa parece muy curiosa. :) No garantizo que vaya a estar "online", pero, ¿alguien podría probar a entrar en la siguiente dirección y decirme lo que ve? :) http://82.159.35.98:1978 |
:D Lo que se ve dec es un dialogo pidiendo usuario y contraseña, y yo que pensé que habías puesto tu disco duro online :p
|
Hola,
:D :D :D Eso era justo lo que quería que se viera. :) :D Ahora puedes probar con el usuario: "clubdelphi" y la contraseña "clubdelphi". :) |
Y por lo que veo estas usando Pico :D
|
Ahora sale un directorio, con un archivo llamado hola.txt
|
Hola,
Sí... :) La verdad es que es curioso esto, ¿eh? Dan ganas de ponerse a hacer algo y todo... de momento ya he añadido a Pico la capacidad de aceptar como parámetro el nombre de un usuario, además de la contraseña. :) No sé... esta misma tarde tengo que irme de casa a hacer unos asuntos, y el ordenador se quedará probablemente encendido... no sé si dejar a Pico "corriendo" de modo que si necesito algún archivo o algo... pueda recurrir a él. Qué cosas... desde luego es curioso Pico. :) |
Cita:
Cita:
|
Hola,
Nope. No he probado la versión para Linux, pero, supongo que viniendo de quien viene será igual o mejor que la de Windows. Y sí que dan ganas de ponerse a juguetear un poco, pero, efectivamente, no sé si está uno lo suficientemente preparado para estas cosas. Por ejemplo, el tema de la seguridad. Tal como yo lo veo, no es posible "saltarse" a Pico a no ser que se conozca el nombre de usuario y la contraseña correspondientes. Ahora bien, esto es tal y como yo lo veo. Otra cosa es que esté completamente equivocado. Una cosa Seoane, ahora que lo pienso, lo mismo que está Pico para HTTP podría uno escribir un Pico para FTP, ¿no? Pero me estoy desviando del tema... :) |
Cita:
Cita:
|
Cita:
Al final, ten en cuenta que agregar una licencia puede ser tan simple como "Este codigo esta disponible bajo la licencia SuperWau! disponible en http://unaurl.com" (En caso de usar una licencia con el texto publico, como las creative commons). Por experiencia, las cosas legales son las que uno menos piensa pero luego vuelven para darte en el trasero... |
Cita:
|
Cita:
"Todos mis mensajes, incluidos código y archivos adjuntos esta bajo la licencia Superguay" ¿Que os parece? he visto que en algún sitio lo hacían así, pero me parecía un poco pedante. Para cuatro lineas de código que se pueden meter en un mensaje me parece excesivo tener que andar pensando en licencias y demás. |
Con respecto al codigo que se pone en los post no es tan serio -al fin rararmente es codigo compilable o completo-, pero en el caso de PICO o cualquier software que es funcional pues si.
|
Y una pregunta social....
Porque re-hiciste PICO en C,sabiendo que existe freepascal? Una mera aventura al lado oscuro? ;). Bueno,no que desanime a probar otros lenguajes. Por ahi he probado ruby,python, erllang y otros mas raros tambien... simplemente que me parece que de tener una cosa funcionando.... |
Cita:
En cuanto a freepascal, me encantaría utilizarlo, pero no termino de acostumbrarme a el :( , no es mi querido delphi :p Mas adelante lo probare de nuevo y veremos que tal ... |
Bueno, veo que pocos lo han bajado (unas 5 personas) y como nadie dice nada, supongo que nadie lo ha probado :( Ya se que este foro no es el mas adecuado para hablar de C y menos sobre linux, pero me gustaría saber si el programa compila bien en otras distribuciones de linux y si funciona bien.
Así que si alguien tiene linux y dispone de un poco de tiempo, me gustaría que lo bajase y lo probase. Y mejor si bajáis la ultima versión, porque como podéis ver en el primer mensaje de este hilo he hecho algunos cambios. |
Hola,
Bueno. Ahora mismo estoy con Windows, empero, prometo probarlo la próxima vez que cambie a Linux... que está en otro disco duro, es cuestión de "cambiar uno por otro". Más que nada para poderte decir que sí, que todo va como se espera Seoane. :) |
En cuanto llegue a casa lo pruebo.
En cuanto llegue a casa y me 'zampe' la comida. :D |
1 Archivos Adjunto(s)
Hola,
Bueno. Ya he tratado de probar Pico en Debian Etch. No puedo compilarlo... bien porque no sé, bien porque algo "falla" en mi sistema. Estos son los comandos que ejecuto y los mensajes de error que recibo, por cierto que los mismos si lo hago como "root" como si no: Cita:
Cita:
Nota: Tengo que adjuntar los "mensajes de error" en un archivo porque el sistema de seguridad de los Foros impide que lo copie en el propio mensaje. Por cierto, el archivo que adjunto es un archivo de texto: cámbiese la extensión de ZIP a TXT. :) |
Vamos por partes, para compilarlo solo tienes que situarte en el directorio donde esta el código y teclear:
Código:
makeCódigo:
./picoY por ultimo siempre te queda hacer doble click sobre el :D |
Hola,
Bueno. Lo del "make" no lo sabía. Me la apunto Seoane. En cuanto al doble clic no parece que funcione... por un lado. Ahora bien, resulta que no tengo el "gcc" instalado, de modo que lo estoy instalando... Tengo algún problema, así que paso los resultados de ejecutar Pico, esta vez con el "./": Cita:
A ver. Recapitulemos. Una vez instalado el "gcc" he podido compilar Pico sin problemas. Antes de eso no podía ejecutar Pico (el ejecutable que tú incluyes Seoane), puesto que me aparecería el error susomentado. Al compilar Pico en mi sistema (ya digo, luego de instalar el "gcc") sí que he podido ejecutar Pico perfectamente. Es decir, que he podido ejecutar el Pico que yo he compilado en mi sistema: ¡y funciona como se espera, ahí está escuchando! :) Edito: Una cosilla Seoane, no sé si será útil o qué. Resulta que me he percatado de que si ejecuto varias veces Pico (lo he hecho al hacer las pruebas sin darme cuenta) cuando al cabo cierra la consola desde donde lo inicio al menos un proceso de Pico sigue funcionando. No sé. Lo primero que se me ocurre es que no se permitan más instancias de Pico... pero esto me parece que no es una solución... no sé... :) |
El problema era debido a que estaba compilado con una versión diferente de la que tu tienes instala en tu sistema. Al volverlo a compilar, ya se adapto. Esta es una de las razones por las que los programas en linux se distribuyen en código fuente, así se pueden adaptar a cada sistema al compilarlos.
Cita:
|
Cita:
Código:
[11618] bind(): Address already in use |
Hola,
Pues así es la verdad. Habría jurado que probé a navegar con Pico luego de haber hecho doble clic... y de ahí que dijese que no funcionaba (en mi sistema), pero, compruebo ahora que sí, que al hacer doble clic Pico se ejecuta como se espera. :) Efectivamente, al hacer de nuevo doble clic Pico no se ejecuta (terminará con error, pero este no se muestra) y al intentar ejecutar Pico de nuevo (esta vez desde la consola) aparece el error que mencionas Seoane. O sea. Que bien. :D |
Por cierto dec, muchas gracias por probarlo.
|
Hola,
Nah, hombre, no hay de qué, ha sido un placer y he aprendido algos (como lo de Make, por ejemplo). Ahora que me gustaría meterme un poco más, pero, me temo que hoy por hoy es pensar en lo excusado. Todavía con Pico (en Delphi) he hecho alguna cosilla... o por mejor decir he tratado de hacerla, pero, nada del otro mundo... nada publicable. :) |
Pues nada, ya he comido, un poco tarde :( y me he puesto a probar el ya famoso 'pico' :).
Veamos: Cita:
P.d: al conectar sale siempre al principio: favicon not found, no sé qué será: Cita:
|
El favicon segun la wikipedia:
Cita:
Caramba, la de cosas que estamos aprendiendo hoy :p :D Muchas gracias Casimiro por probarloo :) |
Cita:
Además me ha servido para averiguar que tengo el puerto 1978 abierto en el ubuntu, bueno, realmente, todos los puertos, no me había fijado que no tengo firewall activado ni nada de nada :eek: |
Cita:
|
Me acabo de descargar pico y lo he probado en mi distribución Mandrake, he de decir que funciona perfecto. Como bien dicen por ahi es muy facil de usar(y tanto...) y seguramente me sea útil porque estoy continuamente desplazandome.
Enhorabuena por el buen "juguetito" que has hecho seoane:) |
Bueno, yo sigo jugando. Ahora buscando un poco de seguridad me he fijado en xinetd. Xinetd es un demonio presente en muchos sistemas tipo Unix que gestiona las conexiones de varios demonios. La ejecución de una única instancia de Xinetd reduce la carga del sistema, en comparación con lo que significaría ejecutar cada uno de los demonios que gestiona, de forma individual. Cuando una petición llega a nuestro equipo, a uno de los puertos controlados por el, ejecuta una instancia del programa encargado de manejar esa conexión. Por ejemplo, en el caso de pico, cuando alguien se conecte al puerto 1978 xinetd ejecutara una instancia de nuestro programa para que se encargue de esa conexión, una vez cerrada la conexión nuestro programa también se cierra.
Además de la ventaja de no tener el programa siempre funcionando, xinetd nos ofrece un montón de ventajas mas, como pueden ser:
He modificado levemente el programa para que funcione con xinet, puedes bajarte el zip con el programa del primer mensaje de este hilo. Ahora para ejecutar pico de forma compatible con xinet utiliza el parametro "--inetd", algo asi: Código:
/usr/bin/pico --inetd"/ etc/xinetd.d/pico" Código:
service picoPara que esta nueva configuracion tenga efecto tenemos que reiniciar el servicio xinetd. Asi que ejecutamos el siguiente comando: Código:
/ etc/init.d/xinetd restartEn la pagina de xinetd o en esta otra , puedes encontrar mas información sobre como limitar el acceso y demás opciones de configuración. |
| La franja horaria es GMT +2. Ahora son las 02:53:32. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi