网络安全稽核工作(Network Security Auditing Work)

安全稽核工作

1.定期对公司系统软件进行渗透测试模拟攻击,及时发现系统安全漏洞,反馈给相关部门
2.利用自主开发的epa软件时行网络监控,对网络违规行为及时制止(如:私自安装与工作无关聊天软件等)
3.对外发邮件进行稽核,特别是外发apk是否含有公司机密文件
4.物理环境稽核,如:私自搭建wifi,各种网络设备规范连接等
5.权限与安全意识稽核,如:账号权限与使用,违规操作等
6.撰写公司各种安全条例规范及安全策略

网络维护,日常管理,调查安全事件,支持及参与公司系统开发,维护及应用;对系统/程序进行测试,以确保整体系统的高品质运作;支持系统的实施及支援;统整有关系统文档

Installation of an Open Source Prometeo-ERP System

Introduction

Although Prometeo-ERP System was a phase-out project for any further development, its follow-up project was Django-ERP. However, Django-ERP is still under development, Its function is not ready, and most features are not ready for public use at this moment. Then, I step back to continue to test Prometeo-ERP System. Prometeo-ERP has already provide many useful features, its public release free version had the following features:

  • Authentication & row-level permission system
  • Notification system
  • Custom widgets & dashboards
  • Taxonomy system
  • File browsing
  • Event calendar
  • User tasks & timesheets
  • CRM (Customer Relationship Management)
  • Products management
  • Stock management
  • Human resources management
  • Sales management
  • Project management
  • Knowledge management
  • DMS (Document Management System)

I installed the Prometeo-ERP system to my Raspberry Pi machine, i.e. free OS, free program tools, free application tools, … Great. It is still worth to study it, and I will show the installation installation in the following

Installation Steps:

1. Checkout sources from the GIT repository:

https://code.google.com/archive/p/prometeo-erp/

2. Follow the instructions in the README file as reference.

2.1 PREREQUISITES

Make sure you have the following prerequisites installed:

* python >= 2.6 (or 2.7 the public one)

$ pip install python==2.7

* pytz >= 2011h (required)
$ pip install pytz==2011h

* python-markdown >= 2.0 (required)
$ pip install markdown

* xhtml2pdf >= 0.0.3 (required)
$ pip install xhtml2pdf==0.0.3

* icalendar >= 2.2 (required)
$ pip install icalendar==2.2

* django >= 1.3.1 (required)
$ pip install django==1.3.1

* south >= 0.7.3 (optional)
$ pip install south

2.2 INSTALLATION
1. Rename the download folder to “prometeo” (It is necessary).

2. cp settings/base.py.tmpl settings/base.py, and edit several statement as below:

$ vi settings/base.py
….

ADMINS = (
# (‘Goldman’, ‘goldman.au168@gmail.com’),
)

MANAGERS = ADMINS

DATABASES = {
default’: {
‘ENGINE’: ‘django.db.backends.sqlite3’, # Add ‘postgresql_psycopg2’, ‘postgresql’, ‘mysql’, ‘sqlite3’ or ‘oracle’.
‘NAME’: ‘erp.db’, # Or path to database file if using sqlite3.
‘USER’: ”, # Not used with sqlite3.
‘PASSWORD’: ”, # Not used with sqlite3.
‘HOST’: ”, # Set to empty string for localhost. Not used with sqlite3.
‘PORT’: ”, # Set to empty string for default. Not used with sqlite3.
}

}

LANGUAGE_CODE = ‘en-us’

# List of installed applications.
INSTALLED_APPS = (
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.sites’,
‘django.contrib.messages’,
‘django.contrib.admin’,
‘django.contrib.admindocs’,
‘django.contrib.comments’,
‘django.contrib.markup’,
‘django.contrib.redirects’,
‘django.contrib.staticfiles’,

#’south’,

‘prometeo.core’,
‘prometeo.core.filebrowser’,
‘prometeo.core.widgets’,
‘prometeo.core.menus’,
‘prometeo.core.taxonomy’,
‘prometeo.core.auth’,
‘prometeo.core.registration’,
‘prometeo.core.notifications’,
‘prometeo.core.calendar’,

‘prometeo.todo’,
‘prometeo.addressing’,
‘prometeo.partners’,
‘prometeo.documents’,
‘prometeo.products’,
‘prometeo.stock’,
‘prometeo.hr’,
‘prometeo.sales’,
‘prometeo.projects’,
‘prometeo.knowledge’,
)

3. It’s time to create the DB schema

$ python manage.py syncdb

4. Start the server:

$ python manage.py runserver

5. Test the application via link http://localhost:8000 as screen dump below:

prometeo-system

 

Setup Raspberry pi Car camera with Android phone WiFi

Introduction

Raspberry Pi can be widely used for Car computer with many features, such as plays DVDs, GPS, displays TV, Bluetooth (phone calls + music), MP3/MPEG4 player, CD/radio, car camera, reversing camera (comes on automatically when I put the car in reverse gear), etc. This week, I test raspberry pi to connect to android phone’s wireless hotpot, and setup camera and display feature as below. It is interesting.

Connect Raspberry Pi to an Android phone’s camera

Step 1. Install Pi Camera Application in Android Phone, which you can find many from Google Play Store as below screen:

ipcam-app

Step 2. Turn on the Android Phone’s Camera Application and active its web server feature, then it will display an ip address for your external browse connection.

Step 3. Turn on the Android Phone’s wireless sharing hotpot feature, then the ip address will be refresh to its own phone address for your external connection as below:

Step 4. Connect the Raspberry Pi to Android Phone Open the browser in your Raspberry Pi, and type in the ip address, then it will display the camera as below:

ipcam-display

Screen Dump of Another Scene of Camera and Display as below two pictures:

cam-phone-display

cam-pi-diaplay

 

Display Raspberry Pi Camera to Android phone

Step 1. Install Raspberry Pi Camera and vlc software as describe in my previous post “Installation of Raspberry Pi Camera

Step 2. Start the video streaming function with command:

$ raspivid -w 640 -h 480 -o – -t 9999999 |cvlc -vvv stream:///dev/stdin –sout ‘#standard{access=http,mux=ts,dst=:8554}’ :demux=h264

Step 3. We can connect via browser with link http://ip-address:8554/.

Bonus:

We can also use VNC to connect Raspberry Pi from Android Phone, provided that you start the VNC server function (as described in my previous post “Installation Raspberry Pi” Step 6, and then install VNC app from Google Play Store, and start VNC connection in Andriod Phone as below:

VNC-1                   VNC-2

 

 

 

淺談工業 4.0

工業 1.0、2.0、3.0 時代

互聯網發展至今可分為四個時代(參考此文),工業發展也可分為四個匙時代,四次工業革命。第一次工業革命是利用水力及蒸汽的力量作為動力源,第二次工業革命则使用电力为非常出名的大量生产提供動力與支持,第三次工業革命則是使用电子设备及資訊技術(IT)來校除人為影響以增進工業制造的自動化。

industiral-4.0a

工業 4.0 時代

時至今日,到了工业4.0時代,工業4.0(Industry 4.0、Industrie 4.0)或稱第四次工業革命(Fourth industrial revolution)、生產力4.0,是一個德国政府提出的高科技計劃,由德國聯邦教育及研究部和聯邦經濟及科技部联合资助,投资预计达 2 亿欧元,用來提昇製造業的電腦化、數位化和智能化。目標與以前不同,不是創造新的工業技術,而是將所有工業相關的技術、銷售與產品體驗統合起來,是建立具有適應性、資源效率和人因工程学的智慧工廠(Smart Factory),並在商業流程及價值流程中整合客戶以及商業伙伴。其技術基礎是智慧整合感控系統(Cyber-Physical System, CPS)及物联网(Internet of Things, IoT)。這樣的架構雖然還在摸索,但如果得以陸續成真並應用,最終將能建構出一個有感知意識的新型智能工業世界,能透過分析各種大數據, 直接生成滿足客戶的相關解決方案產品(需求客製化),更可利用電腦預測部分固有狀況,例如天氣預測、公共交通、市場調查數據等等,及時精準生產或調度現有 資源、減少多餘成本與浪費等等(供應端優化),需要注意的是工業只是這個智慧世界的一個部件,需要以“工業如何適應智慧網絡下的未來生活”去理解才不會搞 混工業的種種概念。

《中國製造2025》計畫

在德國推出工業4.0之後,美國、日本和中國都在積極追趕。「中國經濟發展已進入新常態,製造業必須要從價值鏈低端向中高端升級…我們要研究,到底該以什麼戰略應對新一輪發展,如何實現製造業由『大』變『強』。」中國工業與信息化部部長苗圩對人民日報說。為中國製造業力拼轉型,因此中國國務院最近還頒布《中國製造2025》計畫,引起全世界的注意。這個計劃準備全面推動製造強國戰略,目標成為和歐美並駕齊驅的先進製造強國。這個計畫以機械設備、工業自動化/智慧化和機器人為重心。

中國已經成為世界工廠、製造業「大國」,但是大部分還是以代工為主,技術水準低、產品品質差、利潤低,處在全球產業鏈的底端。生產方式落後、資源消耗大、污染排放多。中國企業生氣蓬勃、成長快,但缺少持之以恆投入創新能力的提升,國際競爭力不足。希望這個到計劃能為中國工業帶來新景象吧。

industiral-4.0b

互聯網技術(Web Internet)的發展史

簡介

互聯網技術(Web Internet)的發展飛快,轉眼間已到第四代。第一代叫web 1.0,即傳統的網站站主設定網頁結構及內容,向公眾發放自己的訊息。之後版本是資源平等的體現,叫 web 2.0,網站站主只提供一個網站架構, 而內容則由參與者上載, 如youtube, facebook, xanga,使用如AJAX的技術。進而 Web 3.0,該詞包含多層含義,用來概括網際網路發展過程中可能出現的各種不同的方向和特徵,包括:大數據、物聯網,將網際網路本身轉化為一個泛型資料庫;跨瀏覽器、超瀏覽器的內容投遞和請求機制;人工智慧技術的運用;語義網;地理對映網;運用3D技術搭建的網站甚至虛擬世界或網路公國等。Web 3.0的顯著特徵為擁有10M的平均頻寬,而2.0約用1M,致於1.0 約為96K以下。今後的發展,為 web 4.0,智能化機械、生物科技…等,可能正如電影Matrix所言,做成”天網”的電腦智能系統,希望電腦不會控制人類,走著看吧。

演變歷史

互聯網技術(Web Internet)的演變的歷史大致如下:
1990—2000年,web 1.0(Web,网,作用:连接知识),主要包括网页搜索引擎、网站、数据库、文件服务器等
2000—2010年,web 2.0 (Scocial web,社会网,作用:连接知识)引入了社区、RSS、Wiki、社会化书签、社会化网络等概念
2005—2020年,web 3.0(Sementic web,语义网,作用:连接知识),由本体、语义查询、人工智能、智能代理、知识结点、语义知识管理等构成
2015—2030年,web 4.0(ubiquitous,无所不在的网,作用:连接情报),具体内容还不大清除,我想web 4.0的含义关键在于它在任何时候、任何地方能够提供给你任何需要的东西。

web4.0-b web4.0-a

Setup Django WorkFlow Application

Introduction

Recently, I studied how to setup a work flow program using python django. Believe me, Python Diango can provide you a high quality work flow web application. Let’s say I would like a simple workflow application as below diagram. I will show you how to setup the application as below instruction, and I will also show you the screen dump examples of running the application.

django-workflow0

Step 1. Prerequisition

This Work Flow Program requires Python 3.3 or greater, and django 1.6 or 1.7. I recommend you to setup under virtual environment. Setup the following python plug-in by running the following command:

$ pip3 install Django==1.7.1
$ pip3 install WebOb==1.4
$ pip3 install WebTest==2.0.16
$ pip3 install amqp==1.4.6
$ pip3 install anyjson==0.3.3
$ pip3 install beautifulsoup4==4.3.2
$ pip3 install billiard==3.3.0.18
$ pip3 install celery==3.1.16
$ pip3 install django-fsm==2.2.0
$ pip3 install django-viewflow==0.7.0
$ pip3 install django-webtest==1.7.7
$ pip3 install kombu==3.0.23
$ pip3 install mock==1.0.1
$ pip3 install pytz==2014.9
$ pip3 install singledispatch==3.4.0.3
$ pip3 install six==1.8.0
$ pip3 install waitress==0.8.9

Step 2. Create a standard django project and application

Run the following command:

$ django-admin.py startproject demo .

$ ./manage.py startapp helloworld

$ mv helloworld/ demo/

Step 3. Edit or Create the following files

3.1 edit demo/settings.py

INSTALLED_APPS = (
    ‘django.contrib.admin’,
    ‘django.contrib.auth’,
    ‘django.contrib.contenttypes’,
    ‘django.contrib.sessions’,
    ‘django.contrib.messages’,
    ‘django.contrib.staticfiles’,
    ‘viewflow’,
    ‘demo.helloworld’
)

TEMPLATE_CONTEXT_PROCESSORS = (
    ‘django.contrib.auth.context_processors.auth’,
    ‘django.core.context_processors.request’,
)

3.2 edit demo/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from viewflow import views as viewflow
from .helloworld.flows import HelloWorldFlow

urlpatterns = patterns(
    ”,
    url(r’^helloworld/’,
        include([
            HelloWorldFlow.instance.urls,
            url(‘^$’, viewflow.ProcessListView.as_view(), name=’index’),
            url(‘^tasks/$’, viewflow.TaskListView.as_view(), name=’tasks’),
            url(‘^queue/$’, viewflow.QueueListView.as_view(), name=’queue’),
            url(‘^details/(?P<process_pk>d+)/$’,
                viewflow.ProcessDetailView.as_view(), name=’details’)],
                namespace=HelloWorldFlow.instance.namespace),
            {‘flow_cls’: HelloWorldFlow}),
    #url(r’^flows/’, include(viewflow.urls)),
    url(r’^admin/’, include(admin.site.urls)),
    url(r’^accounts/login/$’, ‘django.contrib.auth.views.login’, name=’login’),
    url(r’^accounts/logout/$’, ‘django.contrib.auth.views.logout’, name=’logout’),
)

3.3 create demo/celery.py

import os
from celery import Celery

from django.conf import settings

os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘demo.settings’)

app = Celery(‘tests’)

app.config_from_object(‘django.conf:settings’)
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

3.4 create demo/helloworld/flows.py

from viewflow import flow
from viewflow.base import Flow, this
from viewflow.contrib import celery

from . import models, views, tasks

class HelloWorldFlow(Flow):
    process_cls = models.HelloWorldProcess

    start = flow.Start(views.CreateRequestView)
        .Next(this.approve)

    approve = flow.View(views.ApproveRequestView)
        .Next(this.is_approved)

    is_approved = flow.If(lambda p: p.approved)
        .OnTrue(this.send)
        .OnFalse(this.end)

    send = celery.Job(tasks.send)
        .Next(this.end)

    end = flow.End()

3.5 edit demo/helloworld/models.py

from django.db import models
from viewflow.models import Process

class HelloWorldProcess(Process):
    text = models.CharField(max_length=250)
    approved = models.BooleanField(default=False)

3.6 edit demo/helloworld/tasks.py

from demo.celery import app as celery_app
from viewflow.flow import flow_job

@celery_app.task()
@flow_job()
def send(activation):
    print(activation.process.text)

3.7 edit demo/helloworld/views.py

from django.views import generic
from viewflow import views as flow_views

class CreateRequestView(flow_views.StartViewMixin,
                        generic.UpdateView):
    fields = [“text”]

    def get_object(self):
        return self.activation.process

class ApproveRequestView(flow_views.TaskViewMixin,
                         generic.UpdateView):
    fields = [“approved”]

    def get_object(self):
        return self.activation.process

Step 4. Start the Application Server

Run the following Command:

./manage.py createsuperuser –username=admin –email=admin@admin.com
( setup admin password )

./manage.py makemigrations

./manage.py migrate

Start the following celery in another virtual env

celery -A demo worker -l info

Start the application server:

./manage.py runserver

Step 4. Run the Application from browser

Admin Logon

http://127.0.0.1:8000/admin/

WorkFlow Application Logon

http://127.0.0.1:8000/helloworld/

Step 5. Screen Dump Example of running the WorkFlow Application

django-workflow1

django-workflow2

django-workflow3
django-workflow4
django-workflow5

Reference Document Link:

http://viewflow.io/

http://docs.viewflow.io/material_admin.html

https://pypi.python.org/pypi/django-viewflow

Prometeo-ERP System (An Open Source ERP System)

Introduction

Recently, I found a open source ERP application project which was developed by python and django framework. Prometeo is absolutely an open-source and free of charge. It is very user friendly and user-oriented, too.

Installation

1. Checkout sources from the GIT repository:

git clone https://emanuele.bertoldi@code.google.com/p/prometeo-erp/ prometeo

http://code.google.com/p/prometeo-erp

https://code.google.com/archive/p/prometeo-erp/

https://code.google.com/archive/p/prometeo-erp/source/default/source

2. Follow the instructions in the README file from the download.

3. Test the installation at http://localhost:8000 running the development server:

python manage.py runserver

Further Development

This Prometeo-ERP project is no longer maintained nor supported! However, it is succeeded by another project called django ERP, which is still under developing. Its link is –> https://github.com/djangoERPTeam/django-erp

Steps to Install Django-cms in Raspberry Pi

Introduction

django CMS is a modern web publishing platform built with Django, the web application framework “for perfectionists with deadlines”. Django CMS offers out-of-the-box support for the common features you’d expect from a CMS, but can also be easily customised and extended by developers to create a site that is tailored to their precise needs. The following will show you how step by step of Django CMS installation, and also with screen dump examples.

Installation Steps

start a virtual environment under Raspberry Pi
1.  sudo pip install virtualenv
2.  virtualenv env
3.  sourse env/bin/activate

Install Djangocms-Installer and create a project
1.  pip install djangocms-installer
2.  djangocms -p project project
Use default value for most questions
select lang = en, fr, de
Use default username : pi   then input your password

Start CMS Application
1.  cd project
j2.  python manage.py runserver
3.  You can browse the CMS web site via link http://127.0.0.1:8000/

Select a CMS template from Start Bootstrap
1.  http://startbootstrap.com/template-overviews/modern-business/   –> download
2.  copy css, font-awesome, fonts, js directories from download to project/project/static
3.  copy full-width.html to project/project/templates directory
4.  Edit line in settings.py

CMS_TEMPLATES = (
## Customize this
(‘fullwidth.html’, ‘Fullwidth’),
(‘sidebar_left.html’, ‘Sidebar Left’),     –> Delete
(‘sidebar_right.html’, ‘Sidebar Right’)    –> Delete
)

5.  Delete    ./templates/sidebar_left.html      sidebar_right.html

6.  Edit the full-width.html file as below:

{% load cms_tags menu_tags sekizai_tags staticfiles %}
<!DOCTYPE html>
<html lang=”{{ LANGUAGE_CODE }}”>

<head>

<meta charset=”utf-8″>
<meta http-equiv=”X-UA-Compatible” content=”IE=edge”>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<meta name=”description” content=”{% page_attribute ‘meta_description’ %}”>
<meta name=”author” content=””>

<title>{% page_attribute ‘page_title’ %}CMS</title>

<!– Bootstrap Core CSS –>
<link href=”{% static “css/bootstrap.min.css” %}” rel=”stylesheet”>

<!– Custom CSS –>
<link href=”{% static “css/modern-business.css” %}” rel=”stylesheet”>

<!– Custom Fonts –>
<link href=”{% static “font-awesome/css/font-awesome.min.css” %}” rel=”stylesheet” type=”text/css”>

….
<![endif]–>
{% render_block “css” %}
</head>

<body>
{% cms_toolbar %}
<!– Navigation –>
….

{% show_menu 0 100 100 100 %}     and delete lines as below:
<div class=”collapse navbar-collapse” id=”bs-example-navbar-collapse-1″>
<ul class=”nav navbar-nav navbar-right”>
{% show_menu 0 100 100 100 %}
</ul>
</div>
<!– /.navbar-collapse –>
….

<!– jQuery –>
<script src=”{% static “js/jquery.js” %}”></script>

<!– Bootstrap Core JavaScript –>
<script src=”{% static “js/bootstrap.min.js” %}”></script>
<% render_block “js” %}
</body>

Change the line         <a class=”navbar-brand” href=”index.html”>Start Bootstrap</a>
To                      <a class=”navbar-brand” href=”/”>New CMS Name</a>

7.  Rename   base.html    to base-bak.html
Rename   full-width.html   base.html

8.  Restart the server and test.

Screen Dump of Installation

pi@gopi1:~ $ pip install virtualenv
pi@gopi1:~ $ virtualenv env
New python executable in /home/pi/env/bin/python
Installing setuptools, pip, wheel…done.
pi@gopi1:~ $ source env/bin/activate
(env) pi@gopi1:~ $ pip install djangocms-installer
Collecting djangocms-installer
Downloading djangocms_installer-0.8.8-py2.py3-none-any.whl (56kB)
100% |████████████████████████████████| 61kB 714kB/s
Requirement already satisfied (use –upgrade to upgrade): argparse in /usr/lib/python2.7 (from djangocms-installer)
Collecting dj-database-url>=0.4 (from djangocms-installer)
Collecting six (from djangocms-installer)
Using cached six-1.10.0-py2.py3-none-any.whl
Requirement already satisfied (use –upgrade to upgrade): pip in ./env/lib/python2.7/site-packages (from djangocms-installer)
Collecting tzlocal (from djangocms-installer)
Collecting pytz (from tzlocal->djangocms-installer)
Using cached pytz-2016.4-py2.py3-none-any.whl
Installing collected packages: dj-database-url, six, pytz, tzlocal, djangocms-installer
Successfully installed dj-database-url-0.4.1 djangocms-installer-0.8.8 pytz-2016.4 six-1.10.0 tzlocal-1.2.2
(env) pi@gopi1:~ $ djangocms -p project project
Database configuration (in URL format) [default sqlite://localhost/project.db]:
django CMS version (choices: 2.4, 3.0, 3.1, 3.2, stable, develop) [default stable]:
Django version (choices: 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, stable) [default stable]:
Activate Django I18N / L10N setting; this is automatically activated if more than language is provided (choices: yes, no) [default yes]:
Install and configure reversion support (choices: yes, no) [default yes]:
Languages to enable. Option can be provided multiple times, or as a comma separated list. Only language codes supported by Django can be used here: en, fr
Optional default time zone [default Asia/Hong_Kong]:
Activate Django timezone support (choices: yes, no) [default yes]:
Activate CMS permission management (choices: yes, no) [default yes]:
Use Twitter Bootstrap Theme (choices: yes, no) [default no]:
Use custom template set [default no]:
Load a starting page with examples after installation (english language only). Choose “no” if you use a custom template set. (choices: yes, no) [default no]:
Creating the project
Please wait while I install dependencies
Dependencies installed
Creating the project

Operations to perform:
Synchronize unmigrated apps: project, staticfiles, messages, djangocms_admin_style, sitemaps, sekizai, treebeard
Apply all migrations: djangocms_file, reversion, djangocms_inherit, sessions, admin, djangocms_column, djangocms_text_ckeditor, sites, auth, djangocms_video, menus, contenttypes, djangocms_picture, djangocms_googlemap, djangocms_style, djangocms_link, cms, djangocms_teaser
Synchronizing apps without migrations:
Creating tables…
Running deferred SQL…
Installing custom SQL…
Running migrations:
Rendering model states… DONE
Applying contenttypes.0001_initial… OK
Applying auth.0001_initial… OK
Applying admin.0001_initial… OK
Applying contenttypes.0002_remove_content_type_name… OK
Applying auth.0002_alter_permission_name_max_length… OK
Applying auth.0003_alter_user_email_max_length… OK
Applying auth.0004_alter_user_username_opts… OK
Applying auth.0005_alter_user_last_login_null… OK
Applying auth.0006_require_contenttypes_0002… OK
Applying sites.0001_initial… OK
Applying cms.0001_initial… OK
Applying cms.0002_auto_20140816_1918… OK
Applying cms.0003_auto_20140926_2347… OK
Applying cms.0004_auto_20140924_1038… OK
Applying cms.0005_auto_20140924_1039… OK
Applying cms.0006_auto_20140924_1110… OK
Applying cms.0007_auto_20141028_1559… OK
Applying cms.0008_auto_20150208_2149… OK
Applying cms.0008_auto_20150121_0059… OK
Applying cms.0009_merge… OK
Applying cms.0010_migrate_use_structure… OK
Applying cms.0011_auto_20150419_1006… OK
Applying cms.0012_auto_20150607_2207… OK
Applying cms.0013_urlconfrevision… OK
Applying cms.0014_auto_20160404_1908… OK
Applying djangocms_column.0001_initial… OK
Applying djangocms_file.0001_initial… OK
Applying djangocms_file.0002_auto_20151202_1551… OK
Applying djangocms_file.0003_remove_related_name_for_cmsplugin_ptr… OK
Applying djangocms_file.0004_set_related_name_for_cmsplugin_ptr… OK
Applying djangocms_googlemap.0001_initial… OK
Applying djangocms_inherit.0001_initial… OK
Applying djangocms_inherit.0002_auto_20150622_1244… OK
Applying djangocms_link.0001_initial… OK
Applying djangocms_link.0002_auto_20140929_1705… OK
Applying djangocms_link.0003_auto_20150212_1310… OK
Applying djangocms_link.0004_auto_20150708_1133… OK
Applying djangocms_link.0005_auto_20151003_1710… OK
Applying djangocms_link.0006_remove_related_name_for_cmsplugin_ptr… OK
Applying djangocms_link.0007_set_related_name_for_cmsplugin_ptr… OK
Applying djangocms_picture.0001_initial… OK
Applying djangocms_picture.0002_auto_20151018_1927… OK
Applying djangocms_style.0001_initial… OK
Applying djangocms_style.0002_set_related_name_for_cmsplugin_ptr… OK
Applying djangocms_teaser.0001_initial… OK
Applying djangocms_text_ckeditor.0001_initial… OK
Applying djangocms_text_ckeditor.0002_remove_related_name_for_cmsplugin_ptr… OK
Applying djangocms_text_ckeditor.0003_set_related_name_for_cmsplugin_ptr… OK
Applying djangocms_video.0001_initial… OK
Applying djangocms_video.0002_set_related_name_for_cmsplugin_ptr… OK
Applying menus.0001_initial… OK
Applying reversion.0001_initial… OK
Applying reversion.0002_auto_20141216_1509… OK
Applying sessions.0001_initial… OK
Creating admin user
Username (leave blank to use ‘pi’):
Email address: goldman.au168@gmail.com
Password:
Password (again):
Superuser created successfully.
All done!
Get into “/home/pi/cmsproj” directory and type “python manage.py runserver” to start your project
(env) pi@gopi1:~ $ cd project
(env) pi@gopi1:~/project $ ls
manage.py  media  project  project.db  requirements.txt  static
(env) pi@gopi1:~/project $ python manage.py runserver
Performing system checks…

System check identified no issues (0 silenced).
May 08, 2016 – 15:05:32
Django version 1.8.13, using settings ‘project.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
New revision!!!! RELOAD!
28495694-7c4f-409e-9605-c499bf16e97a (<type ‘str’>)
-> None (<type ‘NoneType’>)
reverse(‘my_test_app_view’): Reverse for ‘my_test_app_view’ with arguments ‘()’ and keyword arguments ‘{}’ not found. 0 pattern(s) tried: []
reverse(‘my_test_app_view’): Reverse for ‘my_test_app_view’ with arguments ‘()’ and keyword arguments ‘{}’ not found. 0 pattern(s) tried: []
[08/May/2016 15:05:33] “GET /admin/ HTTP/1.1” 302 0
[08/May/2016 15:05:34] “GET /en/admin/ HTTP/1.1” 302 0
[08/May/2016 15:05:35] “GET /en/admin/login/?next=/en/admin/ HTTP/1.1” 200 3107
[08/May/2016 15:05:35] “GET /admin/ HTTP/1.1” 302 0
[08/May/2016 15:05:35] “GET /en/admin/ HTTP/1.1” 302 0
[08/May/2016 15:05:35] “GET /en/admin/login/?next=/en/admin/ HTTP/1.1” 200 3107
[08/May/2016 15:05:36] “GET /static/admin/css/base.css HTTP/1.1” 200 14049
[08/May/2016 15:05:36] “GET /static/admin/css/base.css HTTP/1.1” 200 14049
[08/May/2016 15:05:36] “GET /static/admin/css/login.css HTTP/1.1” 200 940
[08/May/2016 15:05:36] “GET /static/djangocms_admin_style/js/jquery.ui.touch-punch.min.js HTTP/1.1” 200 0
[08/May/2016 15:05:36] “GET /static/djangocms_admin_style/css/djangocms-admin.css HTTP/1.1” 200 151181
[08/May/2016 15:05:36] “GET /static/djangocms_admin_style/js/base-admin.js HTTP/1.1” 200 2910
[08/May/2016 15:05:36] “GET /static/djangocms_admin_style/js/drag-touch-support.js HTTP/1.1” 200 1200
[08/May/2016 15:05:36] “GET /static/admin/css/login.css HTTP/1.1” 200 940
[08/May/2016 15:05:37] “GET /static/djangocms_admin_style/fonts/django-admin-iconfont.woff?v=3.2.0 HTTP/1.1” 200 10612
[08/May/2016 15:07:16] “POST /en/admin/login/?next=/en/admin/ HTTP/1.1” 302 0
[08/May/2016 15:07:17] “GET /en/admin/ HTTP/1.1” 200 7525
[08/May/2016 15:07:17] “GET /static/admin/css/base.css HTTP/1.1” 304 0
[08/May/2016 15:07:17] “GET /static/admin/css/dashboard.css HTTP/1.1” 200 434
[08/May/2016 15:07:17] “GET /static/admin/css/dashboard.css HTTP/1.1” 200 434
[08/May/2016 15:07:17] “GET /static/djangocms_admin_style/css/djangocms-admin.css HTTP/1.1” 304 0
[08/May/2016 15:07:17] “GET /static/djangocms_admin_style/js/base-admin.js HTTP/1.1” 304 0
[08/May/2016 15:07:17] “GET /static/djangocms_admin_style/js/drag-touch-support.js HTTP/1.1” 304 0
[08/May/2016 15:07:17] “GET /static/djangocms_admin_style/js/jquery.ui.touch-punch.min.js HTTP/1.1” 304 0
[08/May/2016 15:07:17] “GET /static/djangocms_admin_style/img/icon_arrow_right.png HTTP/1.1” 200 15812
^C(env) pi@gopi1:~/project $ ls
manage.py  media  project  project.db  requirements.txt  static
(env) pi@gopi1:~/project $ cd project
(env) pi@gopi1:~/project/project $ ls
__init__.py   settings.py   static     urls.py   wsgi.py
__init__.pyc  settings.pyc  templates  urls.pyc  wsgi.pyc
(env) pi@gopi1:~/projectj/project $ cd /home/allusers/startboot*
(env) pi@gopi1:/home/allusers/startbootstrap-modern-business-1.0.5 $ ls
404.html          contact.html     index.html            portfolio-4-col.html
about.html        css              js                    portfolio-item.html
bin               faq.html         LICENSE               pricing.html
blog-home-1.html  font-awesome     portfolio-1-col.html  README.md
blog-home-2.html  fonts            portfolio-2-col.html  services.html
blog-post.html    full-width.html  portfolio-3-col.html  sidebar.html
(env) pi@gopi1:/home/allusers/startbootstrap-modern-business-1.0.5 $ cp -r css /home/pi/project/project/static
(env) pi@gopi1:/home/allusers/startbootstrap-modern-business-1.0.5 $ cp -r font-awesome /home/pi/project/project/static
(env) pi@gopi1:/home/allusers/startbootstrap-modern-business-1.0.5 $ cp -r fonts /home/pi/project/project/static
(env) pi@gopi1:/home/allusers/startbootstrap-modern-business-1.0.5 $ cp -r js /home/pi/project/project/static
(env) pi@gopi1:/home/allusers/startbootstrap-modern-business-1.0.5 $ cp full-width.html /home/pi/project/project/templates
(env) pi@gopi1:/home/allusers/startbootstrap-modern-business-1.0.5 $ cd /home/pi/project/project/templates
(env) pi@gopi1:~/project/project/templates $ ls
base.html        fullwidth.html     sidebar_right.html
full-width.html  sidebar_left.html
(env) pi@gopi1:~/project/project/templates $ ls -l
total 24
-rw-r–r– 1 pi pi 1122 May  8 15:01 base.html
-rwxr-xr-x 1 pi pi 6589 May  8 15:13 full-width.html
-rw-r–r– 1 pi pi  191 May  8 15:01 fullwidth.html
-rw-r–r– 1 pi pi  308 May  8 15:01 sidebar_left.html
-rw-r–r– 1 pi pi  308 May  8 15:01 sidebar_right.html
(env) pi@gopi1:~/project/project/templates $ vi full-width.html
(env) pi@gopi1:~/project/project/templates $ mv base.html base-bak.html
(env) pi@gopi1:~/project/project/templates $ mv full-width.html base.html
(env) pi@gopi1:~/project/project/templates $ cd ..
(env) pi@gopi1:~/project/project $ ls
__init__.py   settings.py   static     urls.py   wsgi.py
__init__.pyc  settings.pyc  templates  urls.pyc  wsgi.pyc
(env) pi@gopi1:~/project/project $ vi settings.py
(env) pi@gopi1:~/project/project $ cd templates
(env) pi@gopi1:~/project/project/templates $ ls
base-bak.html  base.html  fullwidth.html  sidebar_left.html  sidebar_right.html
(env) pi@gopi1:~/project/project/templates $ vi fullwidth.html
(env) pi@gopi1:~/project/project/templates $ cd ..
(env) pi@gopi1:~/project/project $ cd ..
(env) pi@gopi1:~/project $ python manage.py runserver
Performing system checks…

System check identified no issues (0 silenced).
May 08, 2016 – 15:33:06
Django version 1.8.13, using settings ‘project.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Screen Dump Result

After succeeded installation, you can browse the django CMS via link http://127.0.0.1:8000 as below screen  dump results.

djangocms1 djangocms2 djangocms3 djangocms4

 

BONUS:

If you make any change, you can run the following command:

python manage.py makemigrations

python manage.py migrate

Useful Add-On Plug-in:

pip install aldryn-style

pip uninstall djangocms-style

pip install aldryn-bootstrap3

Conduct a Range of ip Network Address Ping using Python

Intoduction

I would like to conduct a range of ip network address ping using python 3.5 script. It is easy. I will show you the python script and its screen dump result as below.

Python program script

# network ping program run for python3
# Import modules
import subprocess
import ipaddress

# Prompt the user to input a network address
net_addr = input(“Enter a network address in CIDR format(ex.192.168.1.0/24): “)

# Create the network
ip_net = ipaddress.ip_network(net_addr)

# Get all hosts on that network
all_hosts = list(ip_net.hosts())

# Configure subprocess to hide the console window
info = subprocess.STARTUPINFO()
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = subprocess.SW_HIDE

# For each IP address in the subnet,
# run the ping command with subprocess.popen interface
for i in range(len(all_hosts)):
    output = subprocess.Popen([‘ping’, ‘-n’, ‘1’, ‘-w’, ‘500’, str(all_hosts[i])], stdout=subprocess.PIPE, startupinfo=info).communicate()[0]
    
    if “Destination host unreachable” in output.decode(‘utf-8’):
        print(str(all_hosts[i]), “is Offline”)
    elif “Request timed out” in output.decode(‘utf-8’):
        print(str(all_hosts[i]), “is Offline”)
    else:
        print(str(all_hosts[i]), “is Online”)

Screen dump result as below:

network-ping

Integrate Django with Apache

Introduction

As production run of a Django application, we can use tradition web server tools such as apache, IIS, etc. For example, I will show you to setup django running under apache as below.

Step 1 Install wsgi

Suppose you have already installed python, django, apache, then you need to install wsgi by running command:

sudo apt-get install libapache2-mod-wsgi

Step 2

Edit /etc/apache2/sites-available/000-default.conf as below:

<VirtualHost *:80>
        ServerName www.goldman168.no-ip.org
        #ServerAllas www.localhost
        ServerAdmin goldman.au168@gmail.com

        DocumentRoot /var/www/html/django-survey-master/
        WSGIScriptAlias / /var/www/html/django-survey-master/survey/wsgi.py

        Errorlog /var/www/logs/error.log
        CustomLog /var/www/logs/custom.log combined
</VirtualHost>

Step 3.

Edit /etc/apache2/apache.conf to add the following line to the end:

WSGIPythonPath /var/www/html/django-survey-master

Step 4.

Restart apache service by running command:  /etc/init.d/apache2 restart

Step 5.

Now, you do not need to run the django command (python manage.py runserver) to start the django application, you can browse the django application with link http://localhost/ via apache.